*DECK CHIEV 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