## 17.2 LAPACK

A LAPACK magasabb számításokhoz (pl. összetett egyenletrendszerek megoldása, szingularitási problémák stb.). szükséges Fortran segédprogramok gyûjteménye. A LAPACK mára már kiváltotta a régebbi LINPACK illetve EISPACK programokat. A LAPACK megírásánál törekedtek a BLAS minél hatékonyabb felhasználására.

### Routine-ok

Talán a legelterjedtebb LAPACK routine-ok az egyenlet megoldó segédprogramok:
• xGESV - AX=B típusú egyenlet megoldása, ha A tetszõleges mátrix
• xPOSV - AX=B típusú egyenlet megoldása, ha A szimmetrikus pozítiv definít mátrix
Természetesen még sokféle segédprogram van, a különféle igényeknek megfelelõen.

A forráskód és a végrehajtási parancssor (korlátozottan) ezen a linken érhetõ el: http://www.netlib.org/lapack. A LAPACK Felhasználói Kézikönyv teljes verziója is megtekinthetõ a Neten (angol nyelven).

### Dokumentáció

A BLAShoz hasonlóan a LAPACK segédprogramjai is majdnem teljesen maguktól értetõdõek. A bemeneti és kimeneti paraméterek részletes leírásait az egyes fájlokhoz csatoltan megtaláljuk (ún. header (fej) rész). Például nézzük meg SGESV segédprogram angol nyelvû, eredeti leírását. (A szakirodalom angol nyelvû, ezért szinte bizonyos, hogy csak angol nyelven juthatunk hozzá.)
```      SUBROUTINE SGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO )
*
*  -- LAPACK driver routine (version 2.0) --
*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
*     Courant Institute, Argonne National Lab, and Rice University
*     March 31, 1993
*
*     .. Scalar Arguments ..
INTEGER            INFO, LDA, LDB, N, NRHS
*     ..
*     .. Array Arguments ..
INTEGER            IPIV( * )
REAL               A( LDA, * ), B( LDB, * )
*     ..
*
*  Purpose
*  =======
*
*  SGESV computes the solution to a real system of linear equations
*     A * X = B,
*  where A is an N-by-N matrix and X and B are N-by-NRHS matrices.
*
*  The LU decomposition with partial pivoting and row interchanges is
*  used to factor A as
*     A = P * L * U,
*  where P is a permutation matrix, L is unit lower triangular, and U is
*  upper triangular.  The factored form of A is then used to solve the
*  system of equations A * X = B.
*
*  Arguments
*  =========
*
*  N       (input) INTEGER
*          The number of linear equations, i.e., the order of the
*          matrix A.  N >= 0.
*
*  NRHS    (input) INTEGER
*          The number of right hand sides, i.e., the number of columns
*          of the matrix B.  NRHS >= 0.
*
*  A       (input/output) REAL array, dimension (LDA,N)
*          On entry, the N-by-N coefficient matrix A.
*          On exit, the factors L and U from the factorization
*          A = P*L*U; the unit diagonal elements of L are not stored.
*
*  LDA     (input) INTEGER
*          The leading dimension of the array A.  LDA >= max(1,N).
*
*  IPIV    (output) INTEGER array, dimension (N)
*          The pivot indices that define the permutation matrix P;
*          row i of the matrix was interchanged with row IPIV(i).
*
*  B       (input/output) REAL array, dimension (LDB,NRHS)
*          On entry, the N-by-NRHS matrix of right hand side matrix B.
*          On exit, if INFO = 0, the N-by-NRHS solution matrix X.
*
*  LDB     (input) INTEGER
*          The leading dimension of the array B.  LDB >= max(1,N).
*
*  INFO    (output) INTEGER
*          = 0:  successful exit
*          < 0:  if INFO = -i, the i-th argument had an illegal value
*          > 0:  if INFO = i, U(i,i) is exactly zero.  The factorization
*                has been completed, but the factor U is exactly
*                singular, so the solution could not be computed.
*
*  =====================================================================```