chiev.f
SUBROUTINE CHIEV (A, LDA, N, E, V, LDV, WORK, JOB, INFO)
C***BEGIN PROLOGUE CHIEV
C***PURPOSE Compute the eigenvalues and, optionally, the eigenvectors
C of a complex Hermitian matrix.
C***LIBRARY SLATEC
C***CATEGORY D4A3
C***TYPE COMPLEX (SSIEV-S, CHIEV-C)
C***KEYWORDS COMPLEX HERMITIAN, EIGENVALUES, EIGENVECTORS, MATRIX,
C SYMMETRIC
C***AUTHOR Kahaner, D. K., (NBS)
C Moler, C. B., (U. of New Mexico)
C Stewart, G. W., (U. of Maryland)
C***DESCRIPTION
C
C David Kahaner, Cleve Moler, G. W. Stewart,
C N.B.S. U.N.M. N.B.S./U.MD.
C
C Abstract
C CHIEV computes the eigenvalues and, optionally,
C the eigenvectors of a complex Hermitian matrix.
C
C Call Sequence Parameters-
C (the values of parameters marked with * (star) will be changed
C by CHIEV.)
C
C A* COMPLEX(LDA,N)
C complex Hermitian input matrix.
C Only the upper triangle of A need be
C filled in. Elements on diagonal must be real.
C
C LDA INTEGER
C set by the user to
C the leading dimension of the complex array A.
C
C N INTEGER
C set by the user to
C the order of the matrices A and V, and
C the number of elements in E.
C
C E* REAL(N)
C on return from CHIEV E contains the eigenvalues of A.
C See also INFO below.
C
C V* COMPLEX(LDV,N)
C on return from CHIEV if the user has set JOB
C = 0 V is not referenced.
C = nonzero the N eigenvectors of A are stored in the
C first N columns of V. See also INFO below.
C
C LDV INTEGER
C set by the user to
C the leading dimension of the array V if JOB is also
C set nonzero. In that case N must be .LE. LDV.
C If JOB is set to zero LDV is not referenced.
C
C WORK* REAL(4N)
C temporary storage vector. Contents changed by CHIEV.
C
C JOB INTEGER
C set by the user to
C = 0 eigenvalues only to be calculated by CHIEV.
C Neither V nor LDV are referenced.
C = nonzero eigenvalues and vectors to be calculated.
C In this case A and V must be distinct arrays
C also if LDA .GT. LDV CHIEV changes all the
C elements of A thru column N. If LDA < LDV
C CHIEV changes all the elements of V through
C column N. If LDA = LDV only A(I,J) and V(I,
C J) for I,J = 1,...,N are changed by CHIEV.
C
C INFO* INTEGER
C on return from CHIEV the value of INFO is
C = 0 normal return, calculation successful.
C = K if the eigenvalue iteration fails to converge,
C eigenvalues (and eigenvectors if requested)
C 1 through K-1 are correct.
C
C Error Messages
C No. 1 recoverable N is greater than LDA
C No. 2 recoverable N is less than one.
C No. 3 recoverable JOB is nonzero and N is greater than LDV
C No. 4 warning LDA > LDV, elements of A other than the
C N by N input elements have been changed
C No. 5 warning LDA < LDV, elements of V other than the
C N by N output elements have been changed
C No. 6 recoverable nonreal element on diagonal of A.
C
C***REFERENCES (NONE)
C***ROUTINES CALLED HTRIBK, HTRIDI, IMTQL2, SCOPY, SCOPYM, TQLRAT,
C XERMSG
C***REVISION HISTORY (YYMMDD)
C 800808 DATE WRITTEN
C 890531 Changed all specific intrinsics to generic. (WRB)
C 890531 REVISION DATE from Version 3.2
C 891214 Prologue converted to Version 4.0 format. (BAB)
C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
C***END PROLOGUE CHIEV