LAPACK -- Linear Algebra PACKage

lapack@cs.utk.edu

Frequently Asked Questions (FAQ)

There have been 477,290 accesses to this library. (Count updated 02/22/97 at 02:08:43)

LAPACK provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers. Dense and banded matrices are handled, but not general sparse matrices. In all areas, similar functionality is provided for real and complex matrices, in both single and double precision.

Release 2.0 of LAPACK introduces new routines, as well as extending the functionality of existing routines. For detailed information on the revisions, please refer to revisions.info.

The original goal of the LAPACK project was to make the widely used EISPACK and LINPACK libraries run efficiently on shared-memory vector and parallel processors. On these machines, LINPACK and EISPACK are inefficient because their memory access patterns disregard the multi-layered memory hierarchies of the machines, thereby spending too much time moving data instead of doing useful floating-point operations. LAPACK addresses this problem by reorganizing the algorithms to use block matrix operations, such as matrix multiplication, in the innermost loops. These block operations can be optimized for each architecture to account for the memory hierarchy, and so provide a transportable way to achieve high efficiency on diverse modern machines. We use the term "transportable" instead of "portable" because, for fastest possible performance, LAPACK requires that highly optimized block matrix operations be already implemented on each machine.

LAPACK routines are written so that as much as possible of the computation is performed by calls to the Basic Linear Algebra Subprograms (BLAS). While LINPACK and EISPACK are based on the vector operation kernels of the Level 1 BLAS, LAPACK was designed at the outset to exploit the Level 3 BLAS -- a set of specifications for Fortran subprograms that do various types of matrix multiplication and the solution of triangular systems with multiple right-hand sides. Because of the coarse granularity of the Level 3 BLAS operations, their use promotes high efficiency on many high-performance computers, particularly if specially coded implementations are provided by the manufacturer.

Highly efficient machine-specific implementations of the BLAS are available for many modern high-performance computers. The BLAS enable LAPACK routines to achieve high performance with transportable software. Although a model Fortran implementation of the BLAS in available from netlib in the BLAS library, it is not expected to perform as well as a specially tuned implementation on most high-performance computers -- on some machines it may give much worse performance -- but it allows users to run LAPACK software on machines that do not offer any other implementation of the BLAS.

# ======================================================================
# LAPACK, Version 1.0         Date:  February 29, 1992
# LAPACK, Version 1.0a        Date:  June 30, 1992
# LAPACK, Version 1.0b        Date:  October 31, 1992
# LAPACK, Version 1.1         Date:  March 31, 1993
# LAPACK, Version 2.0         Date:  September 30, 1994
# ======================================================================
#
#            ( L   A    P    A    C    K )
#            ( L  -A    P   -A    C   -K )
#            ( L   A    P    A   -C   -K )
#            ( L  -A    P   -A   -C    K )
#            ( L   A   -P   -A    C    K )
#            ( L  -A   -P    A    C   -K )
 
# --------------------------
# Available software/reports:
# --------------------------


file lapack/lapack.tar.gz
for  (FOR NON EMAIL USERS ONLY) This is the COMPLETE package
,    (installation, testing, and timing) in tar gzip
,    form (4038816 bytes).  All revisions included.
,    This cannot be retrieved via email.
,    Updated:  September 30, 1994

file lapack/lapack-pc.tar.gz
for  (FOR NON EMAIL USERS ONLY) This is the PC version of LAPACK.
,    All files have been run through a UNIX-to-DOS file converter
,    and then put into tar gzip form (4099755 bytes).

file lapack/lapack_alpha.tar.gz
for  (FOR NON EMAIL USERS ONLY) This tar file contains a README
,    file and the lapack.a for a DEC 3000-500 ALPHA.
,    DEC OSF/1 V1.2.  Refer to the README file for architectural
,    characteristics. (3247960 bytes)
,    This cannot be retrieved via email.

file lapack/lapack_hppa.tar.gz
for  (FOR NON EMAIL USERS ONLY) This tar file contains a README
,    file and the lapack.a for an HP 9000/715.
,    HP-UX 9.01.  Refer to the README file for architectural
,    characteristics. (2200610 bytes)
,    This cannot be retrieved via email.

file lapack/lapack_rs6k.tar.gz
for  (FOR NON EMAIL USERS ONLY) This tar file contains a README
,    file and the lapack.a for an IBM RS/6000.
,    AIX 3.2.5 and XLF 3.1.  Refer to the README file for architectural
,    characteristics. (2129947 bytes)
,    This cannot be retrieved via email.

file lapack/lapack_sgi5.tar.gz
for  (FOR NON EMAIL USERS ONLY) This tar file contains a README
,    file and the lapack.a for a SGI5 (Indy).  IRIX 5.3.
,    Refer to the README file for architectural characteristics.
,    (2845128 bytes)
,    This cannot be retrieved via email.

file lapack/lapack_sun4.tar.gz
for  (FOR NON EMAIL USERS ONLY) This tar file contains a README
,    file and the lapack.a for a SUN4.
,    SunOS 4.1.3 and F77 1.4 (SC 2.0.1).  Refer to the README file for
,    architectural characteristics. (2454338 bytes)
,    This cannot be retrieved via email.

file lapack/lapack_sun4sol2.tar.gz
for  (FOR NON EMAIL USERS ONLY) This tar file contains the
,    lapack.a for a SUN4SOL2.
,    SunOS 5.5.1 and F77 (SC 4.0).
,    (2496553 bytes)
,    This cannot be retrieved via email.

file lapack/testing.tar.gz 
for  (FOR NON EMAIL USERS ONLY) This is a gzip
,    tar file of the testing directory (1406501 bytes).
,    This cannot be retrieved via email.


file lapack/timing.tar.gz
for  (FOR NON EMAIL USERS ONLY) This is a gzip
,    tar file of the timing directory (753478 bytes).
,    This cannot be retrieved via email.


file lapack/manpages.tar.gz
for  (FOR NON EMAIL USERS ONLY) This is a gzip tar
,    file of the manual pages for the LAPACK driver and
,    computational routines.  Also included is an
,    equivalence program, giving conversion equivalence
,    information for LINPACK and EISPACK to LAPACK.
,    (618976 bytes).  This cannot be retrieved via email.


file lapack/revisions.info
for  Text file explaining the changes that were made to the
,    LAPACK software in version 2.0.

file lapack/release_notes 
for  List of known problems, bugs, and compiler errors, as
,    well as ERRATA for the LAPACK Users' Guide and the
,    LAPACK code itself.

lib  lapack/single
for  single precision real LAPACK routines
prec single

lib  lapack/double
for  double precision real LAPACK routines
prec double

lib  lapack/complex
for  single precision complex LAPACK routines
prec complex

lib  lapack/complex16
for  double precision complex LAPACK routines
prec doublecomplex

lib  lapack/util
for  LAPACK utility routines

lib  lapack/testing
for  Subdirectory containing the testing routines for lapack.

lib  lapack/timing
for  Subdirectory containing the timing routines for lapack.

lib  lapack/lawns
for  Subdirectory containing the LAPACK Working Notes
#    To find out what is available and retrieve a postscript copy
#    of these reports, send mail in the form:
#          send index from lapack/lawns
#          send lawnxx from lapack/lawns
#	These reports are kept only at netlib@ornl.gov.

lib  lapack/essl
for  Subdirectory containing CCI (Call Conversion Interface) for
,    LAPACK/ESSL.
,    See lawn82 for more information.

file lapack/index
for  This index

#    For a c++ implementation of LAPACK see directory c++/lapack++
lib     c++/lapack++
for     LAPACK++.  LAPACK extensions for high performance linear
, algebra computations. This version includes support for solving linear
, systems using LU, Cholesky, and QR matrix factorizations.
by      Roldan Pozo <pozo@cs.utk.edu>

#    For a c implementation of LAPACK see directory clapack
lib     clapack
for     CLAPACK.  An f2c'ed conversion of LAPACK.

#    For a distributed-memory implementation of LAPACK see directory scalapack
lib     scalapack
for     ScaLAPACK.  A portable implementation of some of the core
,       routines in LAPACK across PVM, Intel machines, CM-5, and IBM SPs.

# *******************
# Questions/comments?  Direct email to lapack@cs.utk.edu
# *******************

# Jack Dongarra
# Susan Ostrouchov

# ======================================================================

# ***************
# WHAT IS LAPACK?
# ***************

# LAPACK is a transportable library of Fortran 77 subroutines for
# solving the most common problems in numerical linear algebra: systems
# of linear equations, linear least squares problems, eigenvalue problems,
# and singular value problems. It has been designed to be efficient
# on a wide range of modern high-performance computers.
 
# LAPACK is intended to be the successor to LINPACK and EISPACK.
# It extends the functionality of these packages by including
# equilibration, iterative refinement, error bounds, and driver routines
# for linear systems, routines for computing and re-ordering the Schur
# factorization, and condition estimation routines for eigenvalue
# problems.  LAPACK improves on the accuracy of the standard algorithms
# in EISPACK by including high accuracy algorithms for finding singular
# values and eigenvalues of bidiagonal and tridiagonal matrices
# respectively that arise in SVD and symmetric eigenvalue problems.
# The algorithms and software have been restructured to achieve high
# efficiency on vector processors, high-performance ``superscalar''
# workstations, and shared-memory multiprocessors. 
# A comprehensive testing and timing suite is provided along with the
# LAPACK software.

# It is highly recommended that you obtain a copy of the Second Edition of
# the LAPACK Users' Guide published by SIAM.  This second edition will be
# available February, 1994.  This Users' Guide gives a detailed
# description of the philosophy behind LAPACK as well as an explanation of
# its usage.  The LAPACK Users' Guide can be purchased from:
# SIAM; 3600 University City Science Center; Philadelphia, PA 19104-2688;
# 215-382-9800, FAX 215-386-7999.  It will also be available from booksellers.
# To order by email, send email to service@siam.org. 

# The complete LAPACK package can be obtained on magnetic media from NAG 
# for a nominal handling charge.  For further details contact NAG at one
# of the following addresses:
 
# NAG Inc                       NAG Ltd              NAG GmbH
# 1400 Opus Place               Wilkinson House      Schleissheimerstrasse 5
# Suite 200                     Jordan Hill Road     W-8046 Garching bei Munchen
# Downers Grove, IL 60515-5702  Oxford OX2 8DR       Germany 
# USA                           England
# Tel: +1 708 971 2337          Tel: +44 865 511245  Tel: +49 89 3207395
# Fax: +1 708 971 2706          Fax: +44 865 310139  Fax: +49 89 3207396
 
 
# LAPACK has been funded in part by NSF, DOE, and DARPA, with
# developmental support from NAG Ltd., Cray Research, and many friends
# and colleagues around the world.
 
 
#            (           l    l    l    l )
#            (           a   -a    a   -a )
#      1/4 * ( p    p             -p   -p )
#            ( a   -a             -a    a )
#            ( c    c   -c   -c           )
#            ( k   -k   -k    k           )

# ======================================================================

# --------------
# About the BLAS
# --------------
 
# THE BLAS ARE NOT PROVIDED BY NETLIB WHEN LAPACK ROUTINES ARE REQUESTED.
 
# LAPACK routines are written so that as much as possible of the computation 
# is performed by calls to the Basic Linear Algebra Subprograms (BLAS).
# Highly efficient machine-specific implementations of the BLAS are
# available for many modern high-performance computers. The BLAS
# enable LAPACK routines to achieve high performance with portable software.
 
# The BLAS are not strictly speaking part of LAPACK, but Fortran 77 code
# for the BLAS is distributed with LAPACK, or can be obtained separately
# from  netlib:
# send index from blas
# will retrieve more information.  We consider the Fortran version the model 
# implementation and as such is not expected to perform as well as a specially 
# tuned implementation on most high-performance computers --- on some machines 
# it may give much worse performance ---  but it allows users to run LAPACK 
# software on machines that do not offer any other implementation of the BLAS.
  
# -------------
# Naming Scheme:
# -------------
 
# The name of each LAPACK routine is a coded specification of
# its function (within the very tight limits of standard Fortran 77
# 6-character names).
 
# All driver and computational routines have names of the form XYYZZZ,
# where for some driver routines the 6th character is blank.
 
# The first letter, X, indicates the data type as follows:
 
#     S  REAL
#     D  DOUBLE PRECISION
#     C  COMPLEX
#     Z  COMPLEX*16  or DOUBLE COMPLEX
 
# The next two letters, YY, indicate the type of matrix (or of the most
# significant matrix).  Most of these two-letter codes apply to both real
# and complex matrices; a few apply specifically to one or the other.
 
# The last three letters ZZZ indicate the computation performed.
# For example, SGEBRD is a single precision routine that performs a
# bidiagonal reduction (BRD) of a real general matrix.

# ======================================================================