LAPACK

Description

LAPACK is a public domain library of subroutines for solving dense linear algebra problems, including the following:

  • Systems of linear equations

  • Linear least squares problems

  • Eigenvalue problems

  • Singular value decomposition (SVD) problems

LAPACK is the successor to the older LINPACK and EISPACK packages. It extends the functionality of these packages by including equilibration, iterative refinement, error bounds, and driver routines for linear systems, routines for computing and reordering the Schur factorization, and condition estimation routines for eigenvalue problems.

Performance issues are addressed by implementing the most computationally‐intensive algorithms by using the Level 2 and 3 Basic Linear Algebra Subprograms (BLAS).

The LAPACK Fortran programs are described in the LAPACK User’s Guide, which is available at http://www.netlib.org/lapack/lug/.

LAPACK Routines Contained in LibSci

The routines from LAPACK 3.12.1 are contained in LibSci.

Tuning parameters for the block algorithms that are provided in LibSci are set within the LAPACK routine ILAENV. ILAENV is an integer function subprogram that accepts information about the problem type and dimensions, and it returns one integer parameter, such as the optimal block size, the minimum block size for which a block algorithm should be used, or the crossover point (the problem size at which it becomes more efficient to switch to an unblocked algorithm). The setting of tuning parameters occurs without user intervention, but users may call ILAENV directly to discover the values that will be used (for example, to determine how much workspace to provide).

Naming Scheme

The name of each LAPACK routine is a coded specification of its function. All driver and computational routines have five‐ or six‐ character names of the form xyyzz or xyyzzz.

The first letter in each name, x, indicates the data type, as follows:

  • S: REAL (single precision)

  • C: COMPLEX

  • D: DOUBLE PRECISION

  • Z: COMPLEX*16

The next two letters, yy, indicate the type of matrix (or the most‐ significant matrix). Most of these two‐letter codes apply to both real and complex matrices, but a few apply specifically to only one or the other. The matrix types are as follows:

 BD        BiDiagonal
 GB        General Band
 GE        GEneral (nonsymmetric)
 GG        General matrices, Generalized problem
 GT        General Tridiagonal
 HB        Hermitian Band (complex only)
 HE        Hermitian (possibly indefinite) (complex only)
 HG        Hessenberg matrix, Generalized problem
 HP        Hermitian Packed (possibly indefinite) (complex only)
 HS        upper HeSsenberg
 OP        Orthogonal Packed (real only)
 OR        ORthogonal (real only)
 PB        Positive definite Band (symmetric or Hermitian)
 PO        POsitive definite (symmetric or Hermitian)
 PP        Positive definite Packed (symmetric or Hermitian)
 PT        Positive definite Tridiagonal (symmetric or Hermitian)
 SB        Symmetric Band (real only)
 SP        Symmetric Packed (possibly indefinite)
 ST        Symmetric Tridiagonal
 SY        SYmmetric (possibly indefinite)
 TB        Triangular Band
 TG        Triangular matrices, Generalized problem
 TP        Triangular Packed
 TR        TRiangular
 TZ        TrapeZoidal
 UN        UNitary (complex only)
 UP        Unitary Packed (complex only)

The LAPACK auxiliary routines use the special yy designation:

 LA        LAPACK Auxiliary routine

For example, ILAENV is the auxiliary routine that determines the block size for a particular algorithm and problem size.

The last two or three letters, zz or zzz, indicate the computation performed. For example, SGETRF performs a TRiangular Factorization of a Single‐precision (real) GEneral matrix; CGETRF performs the factorization of a Complex GEneral matrix.