IMTQL2(3)

SYNOPSIS
SUBROUTINE IMTQL2 (NM, N, D, E, Z, IERR)

NAME
imtql2 - Compute the eigenvalues and eigenvectors of a symmetric tridiagonal matrix using the implicit QL method.

LIBRARY
SLATEC (EISPACK)

CATEGORY
D4A5, D4C2A

TYPE
SINGLE PRECISION (IMTQL2-S)

KEYWORDS
EIGENVALUES, EIGENVECTORS, EISPACK

AUTHOR
Smith, B. T., et al.

DESCRIPTION
This subroutine is a translation of the ALGOL procedure IMTQL2, NUM. MATH. 12, 377-383(1968) by Martin and Wilkinson, as modified in NUM. MATH. 15, 450(1970) by Dubrulle. HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 241-248(1971). This subroutine finds the eigenvalues and eigenvectors of a SYMMETRIC TRIDIAGONAL matrix by the implicit QL method. The eigenvectors of a FULL SYMMETRIC matrix can also be found if TRED2 has been used to reduce this full matrix to tridiagonal form. On INPUT NM must be set to the row dimension of the two-dimensional array parameter, Z, as declared in the calling program dimension statement. NM is an INTEGER variable. N is the order of the matrix. N is an INTEGER variable. N must be less than or equal to NM. D contains the diagonal elements of the symmetric tridiagonal matrix. D is a one-dimensional REAL array, dimensioned D(N). E contains the subdiagonal elements of the symmetric tridiagonal matrix in its last N-1 positions. E(1) is arbitrary. E is a one-dimensional REAL array, dimensioned E(N). Z contains the transformation matrix produced in the reduction by TRED2, if performed. This transformation matrix is necessary if you want to obtain the eigenvectors of the full symmetric matrix. If the eigenvectors of the symmetric tridiagonal matrix are desired, Z must contain the identity matrix. Z is a two-dimensional REAL array, dimensioned Z(NM,N). On OUTPUT D contains the eigenvalues in ascending order. If an error exit is made, the eigenvalues are correct but unordered for indices 1, 2, ..., IERR-1. E has been destroyed. Z contains orthonormal eigenvectors of the full symmetric or symmetric tridiagonal matrix, depending on what it contained on input. If an error exit is made, Z contains the eigenvectors associated with the stored eigenvalues. IERR is an INTEGER flag set to Zero for normal return, J if the J-th eigenvalue has not been determined after 30 iterations. The eigenvalues and eigenvectors should be correct for indices 1, 2, ..., IERR-1, but the eigenvalues are not ordered. Calls PYTHAG(A,B) for sqrt(A**2 + B**2). Questions and comments should be directed to B. S. Garbow, APPLIED MATHEMATICS DIVISION, ARGONNE NATIONAL LABORATORY ------------------------------------------------------------------

REFERENCES
B. T. Smith, J. M. Boyle, J. J. Dongarra, B. S. Garbow, Y. Ikebe, V. C. Klema and C. B. Moler, Matrix Eigen- system Routines - EISPACK Guide, Springer-Verlag, 1976.

ROUTINES CALLED
PYTHAG

REVISION HISTORY (YYMMDD)
760101 DATE WRITTEN
890831 Modified array declarations. (WRB)
890831 REVISION DATE from Version 3.2
891214 Prologue converted to Version 4.0 format. (BAB)
920501 Reformatted the REFERENCES section. (WRB)