LAPACK
| Initial release | 1992 |
|---|---|
| Stable release | 3.4.0 / November 11, 2011 |
| Written in | Fortran 90 |
| Type | Software library |
| License | BSD-new |
| Website | http://www.netlib.org/lapack/ |
LAPACK (Linear Algebra PACKage) is a 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 can be seen as the successor to the linear equations and linear least-squares routines of LINPACK and the eigenvalue routines of EISPACK. LINPACK was designed to run on the then-modern vector computers with shared memory. LAPACK, in contrast, depends upon the Basic Linear Algebra Subprograms (BLAS) in order 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.
Contents |
[edit] 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:
- Lapack95 uses features of Fortran 95 to simplify the interface of the routines
- clapack for C (especially useful if there is no Fortran compiler available, as it is already preprocessed with f2c)
- LAPACK++ for C++
- Ch LAPACK for C/C++ interpreter Ch
- Armadillo for C++
- IT++ for C++
- CPPLAPACK for C++
- SciPy for Python
- jlapack for Java
- CSLapack for C#. CSLapack is the translation of Fortran to C# of the LAPACK numerical subroutines.
- Linalg for Ruby
- LACAML for OCaml
- hmatrix for Haskell
- The accelerate framework from Apple inc. on Mac OS X and iOS provides C and Objective-C interfaces
- F# MathProvider project on CodePlex
[edit] 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:
pis a one-letter code denoting the type of numerical constants used.S,Dstand for real floating point arithmetic respectively in single and double precision, whileCandZstand for complex arithmetic with respectively single and double precision. The newer version LAPACK95 use generic subroutines in order to overcome the need to explicitly specify the data type.mmis a two-letter code denoting the kind of matrix expected by the algorithm. The codes for the different kind of matrices are reported below; the actual data are stored in a different format depending on the specific kind; e.g., when the codeDIis given, the subroutine expects a vector of lengthncontaining the elements on the diagonal, while when the codeGEis given, the subroutine expects an n×n array containing the entries of the matrix.aaais a one- to three-letter code describing the actual algorithm implemented in the subroutine, e.g.SVdenotes a subroutine to solve linear system, whileRdenotes a rank-1 update.
For example, the subroutine to solve a linear system with a general (non-structured) matrix using real double-precision arithmetic is called DGESV.
Details on this scheme can be found in the Naming scheme section in LAPACK Users' Guide.
[edit] See also
[edit] References
- ^ "LAPACK 3.2 Release Notes". 16 November 2008. http://www.netlib.org/lapack/lapack-3.2.html.
[edit] Further reading
- Anderson, E.; Bai, Z.; Bischof, C.; Blackford, S.; Demmel, J.; Dongarra, J.; Du Croz, J.; Greenbaum, A.; Hammarling, S.; McKenney, A.; Sorensen, D. (1999). LAPACK Users' Guide (Third ed.). Philadelphia, PA: Society for Industrial and Applied Mathematics. ISBN 0898714478. http://www.netlib.org/lapack/lug/.
[edit] External links
- Elemental: a modern replacement for PLAPACK and ScaLAPACK
- LAPACK homepage on Netlib.org
- LAPACK Users' Guide
- LAPACK++ Homepage
- libflame: a modern replacement for LAPACK that is MultiGPU ready
- NEW LAPACK++ Homepage (versions 1.9 and above) on Sourceforge.net
- CSLapack Homepage
- Sun Performance Library optimized LAPACK for Solaris OS on SPARC/x86/x64 and Linux
- OS Reviews article on LAPACK
- PLAPACK
- How to use LAPACK with C
- cvmlib An easy to use C++ wrapper with bindings to generic LAPACK or AMD or Intel implementations
- LAPACK & BLAS precompiled binaries for Win32 platform
- Offering Lapack over the WEB
- MPACK Multi-precision version of the library
|
||||||||||||||