LAPACK
Linear Algebra Library
LAPACK is a library of FORTRAN90 routines, using complex,
double precision, single precision, or double precision complex
arithmetic, for solving linear systems and performing
eigenvalue analysis.
LAPACK replaces the
LINPACK and
EISPACK libraries.
The LAPACK library is more flexible, has newer algorithms,
and can often run much more efficiently than the older libraries.
However, it should be noted that, internally, the library is
quite complex. When a user calls a single LAPACK routine,
that routine may, in turn, potentially call 30 or more subroutines;
trying to understand the logic of the algorithm, or even
simply collecting all the routines involved in a single call,
can be a painful task. If I was trying to get an understanding
of how to implement the QR or SVD algorithm, for instance,
I would much prefer to read the LINPACK source code rather
than the LAPACK source code! Similarly, it is much easier to
convert the LINPACK source code to the C language, rather
than the LAPACK source code, simply because the coding is
simpler, more straightforward, and does not involve such an
elaborate nesting of subroutines.
On the SGI, the precompiled LAPACK library may be accessed
via a command like:
f90 myprog.f90 -lscs
On the Compaq ALPHA, a precompiled optimized LAPACK library
is available in CXML, the "Compaq Extended Math Library", and
may be linked via a command like:
fort myprog.f90 -lcxml
LAPACK includes routines to
-
Solve a linear system;
-
Solve an under- or over-determined linear system;
-
Compute the determinant;
-
Compute the inverse matrix;
-
Compute the condition number;
-
Compute the singular value decomposition;
-
Compute the QR decomposition;
-
Compute the eigenvalues and eigenvectors of a matrix;
The source code and documentation for LAPACK is available
through the NETLIB web site.
Related Data and Programs:
BLAS1
is a FORTRAN90 library
of vector-vector routines needed by LAPACK.
BLAS2
is a FORTRAN90 library of matrix-vector routines needed by LAPACK.
BLAS3
is a FORTRAN90 library of matrix-matrix routines needed by LAPACK.
EISPACK
is a FORTRAN90 library of routines for the computation of eigenvalues
and eigenvectors.
ESSL
the IBM Engineering and Scientific Subroutine Library,
includes an implementation of some of the LAPACK routines.
LAPACK is also available in
a FORTRAN77 version.
LAPACK_D
is a directory of examples of using the LAPACK routines
for linear algebra problems involving double precision real arithmetic.
LINPACK
is a FORTRAN90 library of routines which
is an earlier standard package of linear system solvers.
LINPLUS
is a FORTRAN90 library of simple linear solvers for a variety of matrix
formats.
PETSC
is a scientific library for use in parallel computation,
which includes an implementation of the LAPACK routines.
SVD_DEMO
is an executable FORTRAN90 program which demonstrates
the singular value decomposition for a simple example.
TEST_EIGEN
is a FORTRAN90 library of routines
that define various eigenvalue test cases.
TEST_MAT
is a FORTRAN90 library of routines which define test matrices, some of
which have known determinants, eigenvalues and eigenvectors,
inverses, and so on.
Reference:
-
Edward Anderson, Zhaojun Bai, Christian Bischof, Susan Blackford,
James Demmel, Jack Dongarra, Jeremy DuCroz, Anne Greenbaum,
Sven Hammarling, Alan McKenney, Danny Sorensen,
LAPACK User's Guide,
Third Edition,
SIAM, 1999,
ISBN: 0898714478,
LC: QA76.73.F25L36
-
Vincent Barker, Susan Blackford, Jack Dongarra, Jeremy Du Croz,
Sven Hammarling, Minka Marinova, Jerzy Wasniewski, Plamen Yalamov,
LAPACK95 User's Guide,
SIAM, 2001,
ISBN13: 978-0-898715-04-0,
LC: QA76.73.F25.L36.
-
Charles Lawson, Richard Hanson, David Kincaid and Fred Krogh,
Algorithm 539,
Basic Linear Algebra Subprograms for Fortran Usage,
ACM Transactions on Mathematical Software,
Volume 5, Number 3, September 1979, pages 308-323.
Source Code:
Examples and Tests:
There are individual example directories for particular
arithmetic models.
-
LAPACK_D
contains examples for double precision real arithmetic.
List of Routines:
-
DBDSDC
-
DBDSQR
-
DDISNA
-
DGBBRD
-
DGBCON
-
DGBEQU
-
DGBS
-
DGBSV
-
DGBSVX
-
DGB2
-
DGBT
-
DGBTRS
-
DGEBAK
-
DGEBAL
-
DGEBD2
-
DGEBRD
-
DGECON
-
DGEEQU
-
DGEES
-
DGEESX
-
DGEEV
-
DGEEVX
-
DGEGS
-
DGEGV
-
DGEHD2
-
DGEHRD
-
DGELQ2
-
DGEL
-
DGELSD
-
DGELS
-
DGELSS
-
DGELSX
-
DGELSY
-
DGEQL2
-
DGEQ
-
DGEQP3
-
DGEQ
-
DGEQR2
-
DGEQ
-
DGES
-
DGERQ2
-
DGER
-
DGESC2
-
DGESDD
-
DGESVD
-
DGESV
-
DGESVX
-
DGETC2
-
DGE2
-
DGET
-
DGETRI
-
DGETRS
-
DGGBAK
-
DGGBAL
-
DGGES
-
DGGESX
-
DGGEV
-
DGGEVX
-
DGGGLM
-
DGGHRD
-
DGGLSE
-
DGGQ
-
DGGR
-
DGGSVD
-
DGGSVP
-
DGTCON
-
DGTS
-
DGTSV
-
DGTSVX
-
DGTT
-
DGTTRS
-
DGTTS2
-
DHGEQZ
-
DHSEIN
-
DHSEQR
-
DLABAD
-
DLABRD
-
DLACON
-
DLACPY
-
DLADIV
-
DLAE2
-
DLAEBZ
-
DLAED0
-
DLAED1
-
DLAED2
-
DLAED3
-
DLAED4
-
DLAED5
-
DLAED6
-
DLAED7
-
DLAED8
-
DLAED9
-
DLAEDA
-
DLAEIN
-
DLAEV2
-
DLAEXC
-
DLAG2
-
DLAGS2
-
DLAG
-
DLAGTM
-
DLAGTS
-
DLAGV2
-
DLAHQR
-
DLAHRD
-
DLAIC1
-
DLALN2
-
DLALS0
-
DLALSA
-
DLALSD
-
DLAMCH
-
DLAMRG
-
DLANGB
-
DLANGE
-
DLANGT
-
DLANHS
-
DLANSB
-
DLANSP
-
DLANST
-
DLANSY
-
DLANTB
-
DLANTP
-
DLANTR
-
DLANV2
-
DLAPLL
-
DLAPMT
-
DLAPY2
-
DLAPY3
-
DLAQGB
-
DLAQGE
-
DLAQP2
-
DLAQPS
-
DLAQSB
-
DLAQSP
-
DLAQSY
-
DLAQTR
-
DLAR1V
-
DLAR2V
-
DLAB
-
DLA
-
DLAG
-
DLAT
-
DLAX
-
DLARGV
-
DLARNV
-
DLARRB
-
DLARRE
-
DLAR
-
DLARRV
-
DLARTG
-
DLARTV
-
DLARUV
-
DLARZB
-
DLARZ
-
DLARZT
-
DLAS2
-
DLASCL
-
DLASD0
-
DLASD1
-
DLASD2
-
DLASD3
-
DLASD4
-
DLASD5
-
DLASD6
-
DLASD7
-
DLASD8
-
DLASD9
-
DLASDA
-
DLASDQ
-
DLASDT
-
DLASET
-
DLASQ1
-
DLASQ2
-
DLASQ3
-
DLASQ4
-
DLASQ5
-
DLASQ6
-
DLASR
-
DLASRT
-
DLASSQ
-
DLASV2
-
DLASWP
-
DLASY2
-
DLAS
-
DLATBS
-
DLAT
-
DLATPS
-
DLATRD
-
DLATRS
-
DLATRZ
-
DLATZM
-
DLAUU2
-
DLAUUM
-
DOPGTR
-
DOPMTR
-
DORG2L
-
DORG2R
-
DORGBR
-
DORGHR
-
DORGL2
-
DORGLQ
-
DORGQL
-
DORGQR
-
DORGR2
-
DORGRQ
-
DORGTR
-
DORM2L
-
DORM2R
-
DORMBR
-
DORMHR
-
DORML2
-
DORMLQ
-
DORMQL
-
DORMQR
-
DORMR2
-
DORMR3
-
DORMRQ
-
DORMRZ
-
DORMTR
-
DPBCON
-
DPBEQU
-
DPBS
-
DPBS
-
DPBSV
-
DPBSVX
-
DPB2
-
DPBT
-
DPBTRS
-
DPOCON
-
DPOEQU
-
DPOS
-
DPOSV
-
DPOSVX
-
DPO2
-
DPOT
-
DPOTRI
-
DPOTRS
-
DPPCON
-
DPPEQU
-
DPPS
-
DPPSV
-
DPPSVX
-
DPPT
-
DPPTRI
-
DPPTRS
-
DPTCON
-
DPTEQR
-
DPTS
-
DPTSV
-
DPTSVX
-
DPTT
-
DPTTRS
-
DPTTS2
-
DRSCL
-
DSBEVD
-
DSBEV
-
DSBEVX
-
DSBGST
-
DSBGVD
-
DSBGV
-
DSBGVX
-
DSBTRD
-
DSECND
-
DSPCON
-
DSPEVD
-
DSPEV
-
DSPEVX
-
DSPGST
-
DSPGVD
-
DSPGV
-
DSPGVX
-
DSPS
-
DSPSV
-
DSPSVX
-
DSPTRD
-
DSPT
-
DSPTRI
-
DSPTRS
-
DSTEBZ
-
DSTEDC
-
DSTEGR
-
DSTEIN
-
DSTEQR
-
DSTE
-
DSTEVD
-
DSTEV
-
DSTEVR
-
DSTEVX
-
DSYCON
-
DSYEVD
-
DSYEV
-
DSYEVR
-
DSYEVX
-
DSYGS2
-
DSYGST
-
DSYGVD
-
DSYGV
-
DSYGVX
-
DSYS
-
DSYSV
-
DSYSVX
-
DSYTD2
-
DSY2
-
DSYTRD
-
DSYT
-
DSYTRI
-
DSYTRS
-
DTBCON
-
DTBS
-
DTBTRS
-
DTGEVC
-
DTGEX2
-
DTGEXC
-
DTGSEN
-
DTGSJA
-
DTGSNA
-
DTGSY2
-
DTGSYL
-
DTPCON
-
DTPS
-
DTPTRI
-
DTPTRS
-
DTRCON
-
DTREVC
-
DTREXC
-
DTRS
-
DTRSEN
-
DTRSNA
-
DTRSYL
-
DTRTI2
-
DTRTRI
-
DTRTRS
-
DTZR
-
DTZR
-
DZSUM1
-
ICMAX1
-
IEEECK
-
ILAENV
-
IZMAX1
-
LSAME
-
LSAMEN
You can go up one level to
the FORTRAN90 source codes.
Last revised on 09 April 2007.