LAPACK

LAPACK
Initial release 1992 (1992)
Stable release 3.6.0 / 13 November 2015 (2015-11-13)
Written in Fortran 90
Type Software library
License BSD-new
Website www.netlib.org/lapack/

LAPACK (Linear Algebra Package) is a standard software library for numerical linear algebra. It provides routines for solving systems of linear equations and linear least squares, eigenvalue problems, and singular value decomposition. It also includes routines to implement the associated matrix factorizations such as LU, QR, Cholesky and Schur decomposition. LAPACK was originally written in FORTRAN 77, but moved to Fortran 90 in version 3.2 (2008).[1] The routines handle both real and complex matrices in both single and double precision.

LAPACK was designed as the successor to the linear equations and linear least-squares routines of LINPACK and the eigenvalue routines of EISPACK. LINPACK, written in the 1970s and 1980s, was designed to run on the then-modern vector computers with shared memory. LAPACK, in contrast, was designed to effectively exploit the caches on modern cache-based architectures, and thus can run orders of magnitude faster than LINPACK on such machines, given a well-tuned BLAS implementation. LAPACK has also been extended to run on distributed-memory systems in later packages such as ScaLAPACK and PLAPACK.

LAPACK is licensed under a three-clause BSD style license, a permissive free software license with few restrictions.

Naming scheme

Subroutines in LAPACK have a characteristic naming convention which makes the identifiers short but rather obscure. This was necessary as the first Fortran standards only supported identifiers up to six characters long, so the names had to be shortened to fit into this limit.

A LAPACK subroutine name is in the form pmmaaa, where:

For example, the subroutine to solve a linear system with a general (non-structured) matrix using real double-precision arithmetic is called DGESV.

Matrix types in the LAPACK naming scheme
Name Description
BD Bidiagonal matrix
DI Diagonal matrix
GB Band matrix
GE Matrix (i.e., unsymmetric, in some cases rectangular)
GG general matrices, generalized problem (i.e., a pair of general matrices)
GT Tridiagonal Matrix General Matrix
HB (complex) Hermitian matrix Band matrix
HE (complex) Hermitian matrix
HG upper Hessenberg matrix, generalized problem (i.e. a Hessenberg and a Triangular matrix)
HP (complex) Hermitian matrix, Packed storage matrix
HS upper Hessenberg matrix
OP (real) Orthogonal matrix, Packed storage matrix
OR (real) Orthogonal matrix
PB Symmetric matrix or Hermitian matrix positive definite band
PO Symmetric matrix or Hermitian matrix positive definite
PP Symmetric matrix or Hermitian matrix positive definite, Packed storage matrix
PT Symmetric matrix or Hermitian matrix positive definite Tridiagonal matrix
SB (real) Symmetric matrix Band matrix
SP Symmetric matrix, Packed storage matrix
ST (real) Symmetric matrix Tridiagonal matrix
SY Symmetric matrix
TB Triangular matrix Band matrix
TG triangular matrices, generalized problem (i.e., a pair of triangular matrices)
TP Triangular matrix, Packed storage matrix
TR Triangular matrix (or in some cases quasi-triangular)
TZ Trapezoidal matrix
UN (complex) Unitary matrix
UP (complex) Unitary matrix, Packed storage matrix

Details on this scheme can be found in the Naming scheme section in LAPACK Users' Guide.

Use with other programming languages

Many programming environments today support the use of libraries with C binding. The LAPACK routines can be used like C functions if a few restrictions are observed.

Several alternative language bindings are also available:

See also

References

  1. "LAPACK 3.2 Release Notes". 16 November 2008.

Further reading

External links

This article is issued from Wikipedia - version of the Wednesday, January 20, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.