lapack calling conventionsA table describing the inputs and outputs to the lapack library
functions listed by their function names is given in this
section. Some general points related to most of the functions are
mentioned first.
LAPACK internally uses column order
arrays, the virtual code library interface exhibits a matrix as a list
of lists with one inner list for each row.
d pertain to vectors or
matrices of real numbers (math), and function names beginning
with z pertain to complex numbers (complex). The
specifications of similarly named functions are otherwise identical.
dgesvxzgesvx(a,b) where
a is an n by n matrix and b is a vector of
length n. If a is non-singular, they return a
vector x such that a x = b.
Otherwise they return an empty list.
dgelsdzgelsd(a,b) where a is an m by n matrix
and b is a vector of length m, with m greater than
n. They return a vector x of length n to minimize
the magnitude of b - a x.
dgesddzgesdd(m,n) but could be less if the input time
series aren't linearly independent. An empty list could be returned
due to lack of convergence.
dgeevxzgeevx(e,v) where e is a list of
eigenvectors and v is a list of eigenvalues, both of which will
contain only complex numbers. (N.B., both functions return complex
results even though dgeevx takes real input.) They could also
return nil due to a lack of convergence.
dpptrfzpptrfdggglmzggglm((A,B),d). The output is a pair of vectors
(x,y) satisfying Ax +
By = d for which the magnitude of y is
minimal. The dimensions all have to be consistent, which means
the number of rows in A and B is the length of d,
the number of columns in A is the length of x, and
the number of columns in B is the length of y.
dgglsezgglse((A,c),(B,d))
where A and B are matrices and c and d are
vectors. The output is a vector x to minimize the magnitude of
Ax - c subject to the constraint that
Bx = d. The dimensions have to be consistent,
which means A has m rows, c has length m,
B has p rows, d has length p, both A and
B have n columns, and the output x has length
n. It is also a requirement that p <= n <=
m + p.
dsyevr(e,v) where e is a list of eigenvectors and
v is a list of eigenvalues. Both contain only real numbers.
This function is fast and accurate but not as storage efficient as
possible. If there is insufficient memory, it automatically invokes
dspev.
dspev(e,v) where e is a list of eigenvectors and
v is a list of eigenvalues. Both contain only real numbers. It
uses roughly half the memory of dsyevr but is not as fast or
accurate.
zheevr(e,v) where e is a list of eigenvectors and
v is a list of eigenvalues. The eigenvectors are complex but the
eigenvalues are real.
zhpev,
and calls it automatically if it runs out of memory.
zhpevzheevr but is slower and more memory efficient because it uses
only packed matrices.