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
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);
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.
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.
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.