In this appendix, we review the subroutine naming scheme for LAPACK as presented in [1] and indicate by means of a table which subroutines are included in this release. We also list the driver routines.
Each subroutine name in LAPACK is a coded specification of the computation done by the subroutine. All names consist of six characters in the form TXXYYY. The first letter, T, indicates the matrix data type as follows:
S REAL
D DOUBLE PRECISION
C COMPLEX
Z COMPLEX*16 (if available)
The next two letters, XX, indicate the type of matrix. Most of these two-letter codes apply to both real and complex routines; a few apply specifically to one or the other, as indicated below:
BD bidiagonal
DI diagonal
GB general band
GE general (i.e. unsymmetric, in some cases rectangular)
GG general matrices, generalized problem (i.e. a pair of general matrices)
GT general tridiagonal
HB (complex) Hermitian band
HE (complex) Hermitian
HG upper Hessenberg matrix, generalized problem (i.e., a Hessenberg and a
triangular matrix)
HP (complex) Hermitian, packed storage
HS upper Hessenberg
OP (real) orthogonal, packed storage
OR (real) orthogonal
PB symmetric or Hermitian positive definite band
PO symmetric or Hermitian positive definite
PP symmetric or Hermitian positive definite, packed storage
PT symmetric or Hermitian positive definite tridiagonal
SB (real) symmetric band
SP symmetric, packed storage
ST symmetric tridiagonal
SY symmetric
TB triangular band
TG triangular matrices, generalized problem (i.e., a pair of triangular matrices)
TP triangular, packed storage
TR triangular (or in some cases quasi-triangular)
TZ trapezoidal
UN (complex) unitary
UP (complex) unitary, packed storage
The last three characters, YYY, indicate the computation done by a particular subroutine. Included in this release are subroutines to perform the following computations:
BAK back transformation of eigenvectors after balancing
BAL permute and/or balance to isolate eigenvalues
BRD reduce to bidiagonal form by orthogonal transformations
CON estimate condition number
EBZ compute selected eigenvalues by bisection
EDC compute eigenvectors using divide and conquer
EIN compute selected eigenvectors by inverse iteration
EQR compute eigenvalues and/or the Schur form using the QR algorithm
EGR compute selected eigenvalues, and optionally, eigenvectors
using Relatively Robust Representations
EQU equilibrate a matrix to reduce its condition number
EQZ compute generalized eigenvalues and/or generalized Schur form by QZ method
ERF compute eigenvectors using the Pal-Walker-Kahan variant of the QL or QR
algorithm
EVC compute eigenvectors from Schur factorization
EXC swap adjacent diagonal blocks in a quasi-upper triangular matrix
GBR generate the orthogonal/unitary matrix from xGEBRD
GHR generate the orthogonal/unitary matrix from xGEHRD
GLQ generate the orthogonal/unitary matrix from xGELQF
GQL generate the orthogonal/unitary matrix from xGEQLF
GQR generate the orthogonal/unitary matrix from xGEQRF
GRQ generate the orthogonal/unitary matrix from xGERQF
GST reduce a symmetric-definite generalized eigenvalue problem to standard form
GTR generate the orthogonal/unitary matrix from xxxTRD
HRD reduce to upper Hessenberg form by orthogonal transformations
LQF compute an LQ factorization without pivoting
MBR multiply by the orthogonal/unitary matrix from xGEBRD
MHR multiply by the orthogonal/unitary matrix from xGEHRD
MLQ multiply by the orthogonal/unitary matrix from xGELQF
MQL multiply by the orthogonal/unitary matrix from xGEQLF
MQR multiply by the orthogonal/unitary matrix from xGEQRF
MRQ multiply by the orthogonal/unitary matrix from xGERQF
MRZ multiply by the orthogonal/unitary matrix from xTZRZF
MTR multiply by the orthogonal/unitary matrix from xxxTRD
QLF compute a QL factorization without pivoting
QPF compute a QR factorization with column pivoting
QRF compute a QR factorization without pivoting
RFS refine initial solution returned by TRS routines
RQF compute an RQ factorization without pivoting
RZF compute an RZ factorization without pivoting
SDC compute using divide and conquer SVD
SEN compute a basis and/or reciprocal condition number (sensitivity) of an
invariant subspace
SJA obtain singular values, and optionally vectors, using Jacobi's method
SNA estimate reciprocal condition numbers of eigenvalue/-vector pairs
SQR compute singular values and/or singular vectors using the QR algorithm
SVP preprocessing for GSVD
SYL solve the Sylvester matrix equation
TRD reduce a symmetric matrix to real symmetric tridiagonal form
TRF compute a triangular factorization (LU, Cholesky, etc.)
TRI compute inverse (based on triangular factorization)
TRS solve systems of linear equations (based on triangular factorization)
Given these definitions, the following table indicates the LAPACK
subroutines for the solution of systems of linear equations:
| HE | HP | UN | ||||||||||||
| GE | GG | GB | GT | PO | PP | PB | PT | SY | SP | TR | TP | TB | OR | |
| TRF | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | |||||
| TRS | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | ||
| RFS | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | ||
| TRI | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | |||||||
| CON | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | ||
| EQU | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | |||||||||
| QPF | 181#181 | |||||||||||||
| QRF26#26 | 181#181 | 181#181 | ||||||||||||
| GQR26#26 | 181#181 | |||||||||||||
| MQR26#26 | 181#181 | |||||||||||||
| 26#26- also RQ, QL, LQ, and RZ | ||||||||||||||
The following table indicates the LAPACK
subroutines for finding eigenvalues and eigenvectors
or singular values and singular vectors:
| HE | HP | HB | |||||||||||
| GE | GB | GG | HS | HG | TR | TG | SY | SP | SB | ST | PT | BD | |
| HRD | 181#181 | 181#181 | |||||||||||
| TRD | 181#181 | 181#181 | 181#181 | ||||||||||
| BRD | 181#181 | 181#181 | |||||||||||
| EDC | 181#181 | ||||||||||||
| EQR | 181#181 | 181#181 | 181#181 | ||||||||||
| EQZ | 181#181 | ||||||||||||
| EIN | 181#181 | 181#181 | |||||||||||
| EVC | 181#181 | 181#181 | |||||||||||
| EBZ | 181#181 | ||||||||||||
| ERF | 181#181 | ||||||||||||
| SQR | 181#181 | ||||||||||||
| SDC | 181#181 | ||||||||||||
| SEN | 181#181 | 181#181 | |||||||||||
| SJA | 181#181 | ||||||||||||
| SNA | 181#181 | 181#181 | |||||||||||
| SVP | 181#181 | ||||||||||||
| SYL | 181#181 | 181#181 | |||||||||||
| EXC | 181#181 | 181#181 | |||||||||||
| BAL | 181#181 | 181#181 | |||||||||||
| BAK | 181#181 | 181#181 | |||||||||||
| GST | 181#181 | 181#181 | 181#181 |
Orthogonal/unitary transformation routines have also been provided for the reductions that use elementary transformations.
| UN | UP | |
| OR | OP | |
| GHR | 181#181 | |
| GTR | 181#181 | 181#181 |
| GBR | 181#181 | |
| MHR | 181#181 | |
| MTR | 181#181 | 181#181 |
| MBR | 181#181 | |
| MRZ | 181#181 |
In addition, a number of driver routines are provided with this release.
The naming convention for the driver routines is the same as for the
LAPACK routines, but the last 3 characters YYY have the following
meanings (note an `X' in the last character position indicates a more
expert driver):
SV factor the matrix and solve a system of equations
SVX equilibrate, factor, solve, compute error bounds and do iterative refinement, and
estimate the condition number
GLM solves the generalized linear regression model
LS solve over- or underdetermined linear system using orthogonal factorizations
LSE solves the constrained linear least squares problem
LSX compute a minimum-norm solution using a complete orthogonal factorization
(using QR with column pivoting xGEQPF, xTZRQF, and xLATZM)
LSY compute a minimum-norm solution using a complete orthogonal factorization
(using QR with column pivoting xGEQP3, xTZRZF, and xORMRZ)
LSS solve least squares problem using the SVD
LSD solve least squares problem using the divide and conquer SVD
EV compute all eigenvalues and/or eigenvectors
EVD compute all eigenvalues and/or eigenvectors; if eigenvectors are
desired, it uses a divide and conquer algorithm.
EVX compute selected eigenvalues and eigenvectors
EVR compute selected eigenvalues, and optionally, eigenvectors
using the Relatively Robust Representations
ES compute all eigenvalues, Schur form, and/or Schur vectors
ESX compute all eigenvalues, Schur form, and/or Schur vectors and the conditioning
of selected eigenvalues or eigenvectors
GV compute generalized eigenvalues and/or generalized eigenvectors
GVD compute generalized eigenvalues, and optionally, generalized
eigenvectors using a divide and conquer algorithm
GVX compute selected generalized eigenvalues, and optionally,
generalized eigenvectors
GS compute generalized eigenvalues, Schur form, and/or Schur vectors
SDD compute the divide-and-conquer SVD
SVD compute the SVD and/or singular vectors
The driver routines provided in LAPACK are indicated by the following table:
| HE | HP | HB | ||||||||||
| GE | GG | GB | GT | PO | PP | PB | PT | SY | SP | SB | ST | |
| SV | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | |||
| SVX | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | |||
| GLM | 181#181 | |||||||||||
| LS | 181#181 | |||||||||||
| LSE | 181#181 | |||||||||||
| LSX | 181#181 | |||||||||||
| LSY | 181#181 | |||||||||||
| LSS | 181#181 | |||||||||||
| LSD | 181#181 | |||||||||||
| EV | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | ||||||
| EVD | 181#181 | 181#181 | 181#181 | 181#181 | ||||||||
| EVX | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | 181#181 | ||||||
| EVR | 181#181 | 181#181 | ||||||||||
| ES | 181#181 | 181#181 | ||||||||||
| ESX | 181#181 | 181#181 | ||||||||||
| GV | 181#181 | 181#181 | 181#181 | |||||||||
| GVD | 181#181 | 181#181 | 181#181 | |||||||||
| GVX | 181#181 | 181#181 | 181#181 | |||||||||
| SVD | 181#181 | 181#181 | ||||||||||
| SDD | 181#181 |