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.


The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.


EISPACK is available in a C version and a C++ version and a FORTRAN77 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.


  1. 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 293-306.
  2. Gene Golub, Christian Reinsch,
    Singular Value Decomposition and Least Squares Solutions,
    Numerische Mathematik,
    Volume 14, Number 5, April 1970, pages 403-420.
  3. Roger Martin, G Peters, James Wilkinson,
    HQR, The QR Algorithm for Real Hessenberg Matrices,
    Numerische Mathematik,
    Volume 14, Number 3, February 1970, pages 219-231.
  4. 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 181-195.
  5. Roger Martin, James Wilkinson,
    Similarity Reduction of a General Matrix to Hessenberg Form: ELMHES,
    Numerische Mathematik,
    Volume 12, Number 5, December 1968, pages 349-368.
  6. Beresford Parlett, Christian Reinsch,
    Balancing a Matrix for Calculation of Eigenvalues and Eigenvectors,
    Numerische Mathematik,
    Volume 13, Number 4, August 1969, pages 293-304.
  7. Christian Reinsch,
    Algorithm 464: Eigenvalues of a real symmetric tridiagonal matrix,
    Communications of the ACM,
    Volume 16, Number 11, November 1973, page 689.
  8. 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: 978-3540075462,
    LC: QA193.M37.
  9. 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:

EISPACK_PRB1 is a test program that demonstrates the use of a number of EISPACK routines.

List of Routines:

You can go up one level to the C++ source codes.

Last revised on 09 November 2012.