SUBROUTINE CGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, * WORK, LDWORK, WORK2, INFO) CHARACTER * 1 JOBVL, JOBVR COMPLEX A(LDA,*), W(*), VL(LDVL,*), VR(LDVR,*), WORK(*) INTEGER N, LDA, LDVL, LDVR, LDWORK, INFO REAL WORK2(*) SUBROUTINE CGEEV_64( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, * WORK, LDWORK, WORK2, INFO) CHARACTER * 1 JOBVL, JOBVR COMPLEX A(LDA,*), W(*), VL(LDVL,*), VR(LDVR,*), WORK(*) INTEGER*8 N, LDA, LDVL, LDVR, LDWORK, INFO REAL WORK2(*)
SUBROUTINE GEEV( JOBVL, JOBVR, [N], A, [LDA], W, VL, [LDVL], VR, * [LDVR], [WORK], [LDWORK], [WORK2], [INFO]) CHARACTER(LEN=1) :: JOBVL, JOBVR COMPLEX, DIMENSION(:) :: W, WORK COMPLEX, DIMENSION(:,:) :: A, VL, VR INTEGER :: N, LDA, LDVL, LDVR, LDWORK, INFO REAL, DIMENSION(:) :: WORK2 SUBROUTINE GEEV_64( JOBVL, JOBVR, [N], A, [LDA], W, VL, [LDVL], VR, * [LDVR], [WORK], [LDWORK], [WORK2], [INFO]) CHARACTER(LEN=1) :: JOBVL, JOBVR COMPLEX, DIMENSION(:) :: W, WORK COMPLEX, DIMENSION(:,:) :: A, VL, VR INTEGER(8) :: N, LDA, LDVL, LDVR, LDWORK, INFO REAL, DIMENSION(:) :: WORK2
void cgeev(char jobvl, char jobvr, int n, complex *a, int lda, complex *w, complex *vl, int ldvl, complex *vr, int ldvr, int *info);
void cgeev_64(char jobvl, char jobvr, long n, complex *a, long lda, complex *w, complex *vl, long ldvl, complex *vr, long ldvr, long *info);
The right eigenvector v(j) of A satisfies
A * v(j) = lambda(j) * v(j)
where lambda(j) is its eigenvalue.
The left eigenvector u(j) of A satisfies
u(j)**H * A = lambda(j) * u(j)**H
where u(j)**H denotes the conjugate transpose of u(j).
The computed eigenvectors are normalized to have Euclidean norm equal to 1 and largest component real.
If LDWORK = -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 LDWORK is issued by XERBLA.