EISPACK
Eigenvalue Calculations
EISPACK
is a C library which
calculates the eigenvalues and eigenvectors of a matrix.
Despite the following documentation, please note that only a FEW
of the EISPACK routines have actually been
converted to C at this time.
A variety of options are available for special matrix formats.
Note that EISPACK "simulates" complex arithmetic. That is,
complex data is stored as pairs of real numbers, and complex
arithmetic is done by carefully manipulating the real numbers.
EISPACK is old, and its functionality has been replaced by
the more modern and efficient LAPACK. There are some advantages,
not all sentimental, to keeping a copy of EISPACK around. For
one thing, the implementation of the LAPACK routines makes it
a trying task to try to comprehend the algorithm by reading the
source code. A single user level routine may refer indirectly to
thirty or forty others.
EISPACK includes a function to compute the singular value decomposition (SVD)
of a rectangular matrix.
The pristine correct original source code for EISPACK is available
through
the NETLIB web site.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
EISPACK is available in
a C version and
a C++ version and
a FORTRAN90 version.
Related Data and Programs:
JACOBI_EIGENVALUE,
a C library which
implements the Jacobi iteration for the iterative determination
of the eigenvalues and eigenvectors of a real symmetric matrix.
TEST_EIGEN,
a C library which
defines various eigenvalue test cases.
TEST_MAT,
a C library which
defines test matrices, some of
which have known eigenvalues and eigenvectors.
Reference:

Hilary Bowdler, Roger Martin, Christian Reinsch, James Wilkinson,
The QR and QL algorithms for Symmetric Matrices: TQL1 and TQL2,
Numerische Mathematik,
Volume 11, Number 4, May 1968, pages 293306.

Gene Golub, Christian Reinsch,
Singular Value Decomposition and Least Squares Solutions,
Numerische Mathematik,
Volume 14, Number 5, April 1970, pages 403420.

Roger Martin, G Peters, James Wilkinson,
HQR, The QR Algorithm for Real Hessenberg Matrices,
Numerische Mathematik,
Volume 14, Number 3, February 1970, pages 219231.

Roger Martin, Christian Reinsch, James Wilkinson,
Householder's Tridiagonalization of a Symmetric Matrix:
TRED1, TRED2 and TRED3,
Numerische Mathematik,
Volume 11, Number 3, March 1968, pages 181195.

Roger Martin, James Wilkinson,
Similarity Reduction of a General Matrix to Hessenberg Form:
ELMHES,
Numerische Mathematik,
Volume 12, Number 5, December 1968, pages 349368.

Beresford Parlett, Christian Reinsch,
Balancing a Matrix for Calculation of Eigenvalues and
Eigenvectors,
Numerische Mathematik,
Volume 13, Number 4, August 1969, pages 293304.

Christian Reinsch,
Algorithm 464:
Eigenvalues of a real symmetric tridiagonal matrix,
Communications of the ACM,
Volume 16, Number 11, November 1973, page 689.

Brian Smith, James Boyle, Jack Dongarra, Burton Garbow,
Yasuhiko Ikebe, Virginia Klema, Cleve Moler,
Matrix Eigensystem Routines, EISPACK Guide,
Lecture Notes in Computer Science, Volume 6,
Springer, 1976,
ISBN13: 9783540075462,
LC: QA193.M37.

James Wilkinson, Christian Reinsch,
Handbook for Automatic Computation,
Volume II, Linear Algebra, Part 2,
Springer, 1971,
ISBN: 0387054146,
LC: QA251.W67.
Source Code:
Examples and Tests:
List of Routines:

BAKVEC determines eigenvectors by reversing the FIGI transformation.

BALBAK determines eigenvectors by undoing the BALANC transformation.

BANDR reduces a symmetric band matrix to symmetric tridiagonal form.

CBABK2 finds eigenvectors by undoing the CBAL transformation.

CDIV emulates complex division, using real arithmetic.

COMBAK determines eigenvectors by undoing the COMHES transformation.

CSROOT computes the complex square root of a complex quantity.

ELMBAK determines eigenvectors by undoing the ELMHES transformation.

I4_MAX returns the maximum of two I4's.

I4_MIN returns the smaller of two I4's.

PYTHAG computes SQRT ( A * A + B * B ) carefully.

R8_EPSILON returns the R8 round off unit.

R8_MAX returns the maximum of two R8's.

R8_MIN returns the minimum of two R8's.

R8_SIGN returns the sign of an R8.

R8MAT_IDENTITY sets an R8MAT to the identity matrix.

R8MAT_MM_NEW multiplies two matrices.

R8MAT_PRINT prints an R8MAT.

R8MAT_PRINT_SOME prints some of an R8MAT.

R8MAT_UNIFORM_01_NEW fills an R8MAT with pseudorandom values scaled to [0,1].

R8VEC_PRINT prints an R8VEC.

REBAK determines eigenvectors by undoing the REDUC transformation.

REBAKB determines eigenvectors by undoing the REDUC2 transformation.

REDUC reduces the eigenvalue problem A*x=lambda*B*x to A*x=lambda*x.

REDUC2 reduces the eigenvalue problem A*B*x=lamdba*x to A*x=lambda*x.

RS computes eigenvalues and eigenvectors of real symmetric matrix.

RSB computes eigenvalues and eigenvectors of a real symmetric band matrix.

RSG computes eigenvalues/vectors, A*x=lambda*B*x, A symmetric, B posdef.

RSGAB computes eigenvalues/vectors, A*B*x=lambda*x, A symmetric, B posdef.

RSGBA computes eigenvalues/vectors, B*A*x=lambda*x, A symmetric, B posdef.

RSP computes eigenvalues and eigenvectors of real symmetric packed matrix.

TIMESTAMP prints the current YMDHMS date as a time stamp.

TQL2 computes all eigenvalues/vectors, real symmetric tridiagonal matrix.

TQLRAT computes all eigenvalues of a real symmetric tridiagonal matrix.

TRBAK1 determines eigenvectors by undoing the TRED1 transformation.

TRBAK3 determines eigenvectors by undoing the TRED3 transformation.

TRED1 transforms a real symmetric matrix to symmetric tridiagonal form.

TRED2 transforms a real symmetric matrix to symmetric tridiagonal form.

TRED3: transform real symmetric packed matrix to symmetric tridiagonal form.
You can go up one level to
the C source codes.
Last revised on 28 January 2018.