# define sgesvd_ sgesvd
# define dgesvd_ dgesvd
# define cgesvd_ cgesvd
# define zgesvd_ zgesvd
SGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK,
LWORK, INFO )
A = U*SIGMA*VT
JOBU (input) CHARACTER*1
JOBVT (input) CHARACTER*1
M (input) INTEGER
N (input) INTEGER
A (input/output) REAL array, dimension (LDA,N)
LDA (input) INTEGER
S (output) REAL array, dimension (min(M,N))
U (output) REAL array, dimension (LDU,UCOL)
LDU (input) INTEGER
VT (output) REAL array, dimension (LDVT,N)
LDVT (input) INTEGER
WORK (workspace/output) REAL array, dimension (LWORK)
LWORK (input) INTEGER
INFO (output) INTEGER
LAPACK
http://www.physics.orst.edu/~rubin/nacphy/lapack/routines/dgesvd.html
http://software.intel.com/sites/products/documentation/hpc/mkl/lapack/mkl_lapack_examples/dgesvd.htm#top
DGESVD computes the singular value decomposition (SVD) of a real M-by-N
matrix A, optionally computing the left and/or right singular vectors. The
SVD is written
A = U * SIGMA * transpose(V)
where SIGMA is an M-by-N matrix which is zero except for its min(m,n) diag-
onal elements, U is an M-by-M orthogonal matrix, and V is an N-by-N orthog-
onal matrix. The diagonal elements of SIGMA are the singular values of A;
they are real and non-negative, and are returned in descending order. The
first min(m,n) columns of U and V are the left and right singular vectors
of A.
Note that the routine returns V**T, not V.
EIGEN
http://eigen.tuxfamily.org/dox/classEigen_1_1JacobiSVD.html#_details
MADNESS
http://harrison2.chem.utk.edu/~rjh/madness/group__linalg.html#ga7f9eff151c422a9285dbb73a5ca84ff3
http://en.wikipedia.org/wiki/Singular_value_decomposition#Reduced_SVDs
# define sgesv_ sgesv
# define dgesv_ dgesv
# define cgesv_ cgesv
# define zgesv_ zgesv
LAPACK
http://www.physics.orst.edu/~rubin/nacphy/lapack/routines/dgesv.html
DGESV 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.
EIGEN
http://eigen.tuxfamily.org/dox/TutorialLinearAlgebra.html#TutorialLinAlgBasicSolve
MADNESS
http://harrison2.chem.utk.edu/~rjh/madness/group__linalg.html#ga9f4e4329d30a3898ad93b2512da8d540
# define sgelss_ sgelss
# define dgelss_ dgelss
# define cgelss_ cgelss
# define zgelss_ zgelss
M (input) INTEGER
N (input) INTEGER
NRHS (input) INTEGER
A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
LDA (input) INTEGER
B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
LDB (input) INTEGER
S (output) DOUBLE PRECISION array, dimension (min(M,N))
RCOND (input) DOUBLE PRECISION
RANK (output) INTEGER
WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK)
LWORK (input) INTEGER
INFO (output) INTEGER
LAPACK
http://www.physics.orst.edu/~rubin/nacphy/lapack/routines/dgelss.html
DGELSS computes the minimum norm solution to a real linear least squares
problem:
Minimize 2-norm(| b - A*x |).
using the singular value decomposition (SVD) of A. A is an M-by-N matrix
which may be rank-deficient.
Several right hand side vectors b and solution vectors x can be handled in
a single call; they are stored as the columns of the M-by-NRHS right hand
side matrix B and the N-by-NRHS solution matrix X.
The effective rank of A is determined by treating as zero those singular
values which are less than RCOND times the largest singular value.
EIGEN
http://eigen.tuxfamily.org/dox/TutorialLinearAlgebra.html#TutorialLinAlgLeastsquares
MADNESS
http://harrison2.chem.utk.edu/~rjh/madness/group__linalg.html#ga720de823d323fd960ce4dff0d19222a3
s/dsyev are used for real symmetric matrices;
c/zheev are used for complex Hermitian.
# define ssyev_ ssyev
# define dsyev_ dsyev
LAPACK
http://www.physics.orst.edu/~rubin/nacphy/lapack/routines/dsyev.html
DSYEV - compute all eigenvalues and, optionally,
eigenvectors of a real symmetric matrix A
EIGEN
http://eigen.tuxfamily.org/dox/TutorialLinearAlgebra.html#TutorialLinAlgEigensolving
MADNESS
http://harrison2.chem.utk.edu/~rjh/madness/group__linalg.html#ga2bea055af972ccd1a6783410caaddaea
# define cheev_ cheev
# define zheev_ zheev
LAPACK
http://www.physics.orst.edu/~rubin/nacphy/lapack/routines/zheev.html
http://www.physics.orst.edu/~rubin/nacphy/lapack/routines/cheevx.html
ZHEEV - compute all eigenvalues and, optionally, eigenvectors of a complex Hermitian matrix A
EIGEN
MADNESS
http://harrison2.chem.utk.edu/~rjh/madness/group__linalg.html#ga2bea055af972ccd1a6783410caaddaea
# define ssygv_ ssygv
# define dsygv_ dsygv
LAPACK
http://www.physics.orst.edu/~rubin/nacphy/lapack/routines/dsygv.html
DSYGV - compute all the eigenvalues, and optionally, the eigenvectors
of a real generalized symmetric-definite eigenproblem, of the form
A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x
EIGEN
MADNESS
http://harrison2.chem.utk.edu/~rjh/madness/group__linalg.html#ga45b1f82b21b21997c5e99314197e3d7a
# define chegv_ chegv
# define zhegv_ zhegv
LAPACK
http://www.physics.orst.edu/~rubin/nacphy/lapack/routines/zhegv.html
ZHEGV - compute all the eigenvalues, and optionally, the eigenvectors of a
complex generalized Hermitian-definite eigenproblem, of the form
A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x
EIGEN
MADNESS
http://www.physics.orst.edu/~rubin/nacphy/lapack/routines/zhegv.html
# define dpotrf_ dpotrf
LAPACK
http://www.netlib.org/lapack/double/dpotrf.f
http://www.physics.orst.edu/~rubin/nacphy/lapack/routines/dpotrf.html
DPOTRF - compute the Cholesky factorization
of a real symmetric positive definite matrix A
http://www.netlib.org/lapack/explore-html/d0/d8a/dpotrf_8f.html
lapack-3.3.0/SRC/cpotrf.f
EIGEN
http://eigen.tuxfamily.org/dox/classEigen_1_1LLT.html
MADNESS
http://harrison2.chem.utk.edu/~rjh/madness/namespacemadness.html#a31340b0c4ec9c440c5b77cd7a8b062d7
no longer used
# define dtrsm_ dtrsm
LAPACK
http://www.math.utah.edu/software/lapack/lapack-blas/dtrsm.html
DTRSM solves one of the matrix equations
op( A )*X = alpha*B, or X*op( A ) = alpha*B,
where alpha is a scalar, X and B are m by n matrices, A is a unit, or
non-unit, upper or lower triangular matrix and op( A ) is one of
op( A ) = A or op( A ) = A'. The matrix X is overwritten on B.
http://www.netlib.org/lapack/explore-html/de/da7/dtrsm_8f.html
lapack-3.3.0/BLAS/SRC/dtrsm.f
EIGEN
MADNESS
http://code.google.com/p/m-a-d-n-e-s-s/source/browse/local/trunk/src/lib/linalg/lapack.cc
ln. 618 no longer used
# define dlamch_ dlamch
# define slamch_ slamch
LAPACK
http://www.netlib.org/lapack/explore-html/d5/dd4/dlamch_8f.html
DLAMCH determines double precision machine parameters
lapack-3.3.0/INSTALL/dlamch.f
EIGEN
MADNESS
http://harrison2.chem.utk.edu/~rjh/madness/group__linalg.html#ga59e5d613749fd9d3de9cf448c8282f85