chseqr - compute the eigenvalues of a complex upper Hessenberg matrix H, and, optionally, the matrices T and Z from the Schur decomposition H = Z T Z**H, where T is an upper triangular matrix (the Schur form), and Z is the unitary matrix of Schur vectors
SUBROUTINE CHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, WORK, * LWORK, INFO) CHARACTER * 1 JOB, COMPZ COMPLEX H(LDH,*), W(*), Z(LDZ,*), WORK(*) INTEGER N, ILO, IHI, LDH, LDZ, LWORK, INFO
SUBROUTINE CHSEQR_64( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, * WORK, LWORK, INFO) CHARACTER * 1 JOB, COMPZ COMPLEX H(LDH,*), W(*), Z(LDZ,*), WORK(*) INTEGER*8 N, ILO, IHI, LDH, LDZ, LWORK, INFO
SUBROUTINE HSEQR( JOB, COMPZ, N, ILO, IHI, H, [LDH], W, Z, [LDZ], * [WORK], [LWORK], [INFO]) CHARACTER(LEN=1) :: JOB, COMPZ COMPLEX, DIMENSION(:) :: W, WORK COMPLEX, DIMENSION(:,:) :: H, Z INTEGER :: N, ILO, IHI, LDH, LDZ, LWORK, INFO
SUBROUTINE HSEQR_64( JOB, COMPZ, N, ILO, IHI, H, [LDH], W, Z, [LDZ], * [WORK], [LWORK], [INFO]) CHARACTER(LEN=1) :: JOB, COMPZ COMPLEX, DIMENSION(:) :: W, WORK COMPLEX, DIMENSION(:,:) :: H, Z INTEGER(8) :: N, ILO, IHI, LDH, LDZ, LWORK, INFO
#include <sunperf.h>
void chseqr(char job, char compz, int n, int ilo, int ihi, complex *h, int ldh, complex *w, complex *z, int ldz, int *info);
void chseqr_64(char job, char compz, long n, long ilo, long ihi, complex *h, long ldh, complex *w, complex *z, long ldz, long *info);
chseqr computes the eigenvalues of a complex upper Hessenberg matrix H, and, optionally, the matrices T and Z from the Schur decomposition H = Z T Z**H, where T is an upper triangular matrix (the Schur form), and Z is the unitary matrix of Schur vectors.
Optionally Z may be postmultiplied into an input unitary matrix Q, so that this routine can give the Schur factorization of a matrix A which has been reduced to the Hessenberg form H by the unitary matrix Q: A = Q*H*Q**H = (QZ)*T*(QZ)**H.
= 'E': compute eigenvalues only;
= 'S': compute eigenvalues and the Schur form T.
= 'N': no Schur vectors are computed;
= 'I': Z is initialized to the unit matrix and the matrix Z of Schur vectors of H is returned; = 'V': Z must contain an unitary matrix Q on entry, and the product Q*Z is returned.
W(i)
= H(i,i).
If COMPZ = 'I': on entry, Z need not be set, and on exit, Z contains the unitary matrix Z of the Schur vectors of H. If COMPZ = 'V': on entry Z must contain an N-by-N matrix Q, which is assumed to be equal to the unit matrix except for the submatrix Z(ILO:IHI,ILO:IHI); on exit Z contains Q*Z. Normally Q is the unitary matrix generated by CUNGHR after the call to CGEHRD which formed the Hessenberg matrix H.
max(1,N)
if COMPZ = 'I' or 'V'; LDZ > = 1 otherwise.
WORK(1)
returns the optimal LWORK.
If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA.
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
> 0: if INFO = i, CHSEQR failed to compute all the eigenvalues in a total of 30*(IHI-ILO+1) iterations; elements 1:ilo-1 and i+1:n of W contain those eigenvalues which have been successfully computed.