LAPACK (Linear Algebra Package) is a software library under the BSD license, which includes algorithms from the field of numerical linear algebra. The library was originally written in Fortran 77, but was changed with the release of version 3.2 to Fortran 90. The library includes routines for the efficient solution of linear systems of equations, linear least squares problems and eigenvalue problems. To this end, the numerical methods of linear algebra can be used, inter alia, QR decomposition, Householder transformation, singular value decomposition.
As an auxiliary library use the routines in LAPACK for elementary linear algebra operations, the software package Basic Linear Algebra Subprograms ( BLAS ). In the version Lapack95 properties of Fortran 95 are used to simplify the interface.
LAPACK is a refinement of the earlier library LINPACK, which was tailored specifically to the then usual vector computers. In Lapack the elementary linear algebra has been outsourced and used with a defined interface Basic Linear Algebra Subprograms ( BLAS ). In Blas eg modern caching techniques to be effectively implemented. Ports of Blas can be tailored to newer or more specialized architectures, their advantages are immediately usable in Lapack. Lapack has originated in the 1960s package EISPACK largely replaced.
Also Lapack itself is ported for important architectures. Such ports are currently ScaLAPACK for MIMD architectures (multiple instruction multiple data stream) and PLapack for abstract parallel architectures.
Lapack can be used from multiple languages , despite the programming in Fortran:
- CLAPACK for C was created by automatic porting with f2c.
- LAPACK is a wrapper for C .
- Armadillo is a wrapper for C .
- JLapack for Java was created with f2j.
- HBlas is a port of Haskell.
- LACAML is a port to OCaml.