LAPACK (" L inear A lgebra Pack age") 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). The routines handle both real and complex matrices in both single and double precision . LAPACK relies on an underlying BLAS implementation to provide efficient and portable computational building blocks for its routines.
6-534: 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 the instruction-level parallelism of modern superscalar processors , and thus can run orders of magnitude faster than LINPACK on such machines, given
12-459: A few restrictions are observed. Additionally, many other software libraries and tools for scientific and numerical computing are built on top of LAPACK, such as R , MATLAB , and SciPy . Several alternative language bindings are also available: As with BLAS, LAPACK is sometimes forked or rewritten to provide better performance on specific systems. Some of the implementations are: Since LAPACK typically calls underlying BLAS routines to perform
18-538: A well-tuned BLAS implementation. LAPACK has also been extended to run on distributed memory systems in later packages such as ScaLAPACK and PLAPACK. Netlib LAPACK is licensed under a three-clause BSD style license, a permissive free software license with few restrictions. Subroutines in LAPACK have a naming convention which makes the identifiers very compact. This was necessary as the first Fortran standards only supported identifiers up to six characters long, so
24-438: The bulk of its computations, simply linking to a better-tuned BLAS implementation can be enough to significantly improve performance. As a result, LAPACK is not reimplemented as often as BLAS is. These projects provide a similar functionality to LAPACK, but with a main interface differing from that of LAPACK: LINPACK LINPACK is a software library for performing numerical linear algebra on digital computers . It
30-492: 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 . Many programming environments today support the use of libraries with C binding (LAPACKE, a standardised C interface, has been part of LAPACK since version 3.4.0), allowing LAPACK routines to be used directly so long as
36-557: Was written in Fortran by Jack Dongarra , Jim Bunch, Cleve Moler , and Gilbert Stewart, and was intended for use on supercomputers in the 1970s and early 1980s. It has been largely superseded by LAPACK , which runs more efficiently on modern architectures. LINPACK makes use of the BLAS (Basic Linear Algebra Subprograms) libraries for performing basic vector and matrix operations. The LINPACK benchmarks appeared initially as part of
#211788