zgeesx - genvalues, the Schur form T, and, optionally, the matrix of Schur vec- tors Z
SUBROUTINE ZGEESX(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER*1 JOBZ, SORTEV, SENSE DOUBLE COMPLEX A(LDA,*), W(*), Z(LDZ,*), WORK(*) INTEGER N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL SELECT LOGICAL BWORK3(*) DOUBLE PRECISION RCONE, RCONV DOUBLE PRECISION WORK2(*) SUBROUTINE ZGEESX_64(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER*1 JOBZ, SORTEV, SENSE DOUBLE COMPLEX A(LDA,*), W(*), Z(LDZ,*), WORK(*) INTEGER*8 N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL*8 SELECT LOGICAL*8 BWORK3(*) DOUBLE PRECISION RCONE, RCONV DOUBLE PRECISION WORK2(*) F95 INTERFACE SUBROUTINE GEESX(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER(LEN=1) :: JOBZ, SORTEV, SENSE COMPLEX(8), DIMENSION(:) :: W, WORK COMPLEX(8), DIMENSION(:,:) :: A, Z INTEGER :: N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL :: SELECT LOGICAL, DIMENSION(:) :: BWORK3 REAL(8) :: RCONE, RCONV REAL(8), DIMENSION(:) :: WORK2 SUBROUTINE GEESX_64(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER(LEN=1) :: JOBZ, SORTEV, SENSE COMPLEX(8), DIMENSION(:) :: W, WORK COMPLEX(8), DIMENSION(:,:) :: A, Z INTEGER(8) :: N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL(8) :: SELECT LOGICAL(8), DIMENSION(:) :: BWORK3 REAL(8) :: RCONE, RCONV REAL(8), DIMENSION(:) :: WORK2 C INTERFACE #include <sunperf.h> void zgeesx(char jobz, char sortev, int(*select)(doublecomplex), char sense, int n, doublecomplex *a, int lda, int *nout, double- complex *w, doublecomplex *z, int ldz, double *rcone, double *rconv, int *info); void zgeesx_64(char jobz, char sortev, long(*select)(doublecomplex), char sense, long n, doublecomplex *a, long lda, long *nout, doublecomplex *w, doublecomplex *z, long ldz, double *rcone, double *rconv, long *info);
Oracle Solaris Studio Performance Library zgeesx(3P) NAME zgeesx - compute for an N-by-N complex nonsymmetric matrix A, the ei- genvalues, the Schur form T, and, optionally, the matrix of Schur vec- tors Z SYNOPSIS SUBROUTINE ZGEESX(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER*1 JOBZ, SORTEV, SENSE DOUBLE COMPLEX A(LDA,*), W(*), Z(LDZ,*), WORK(*) INTEGER N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL SELECT LOGICAL BWORK3(*) DOUBLE PRECISION RCONE, RCONV DOUBLE PRECISION WORK2(*) SUBROUTINE ZGEESX_64(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER*1 JOBZ, SORTEV, SENSE DOUBLE COMPLEX A(LDA,*), W(*), Z(LDZ,*), WORK(*) INTEGER*8 N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL*8 SELECT LOGICAL*8 BWORK3(*) DOUBLE PRECISION RCONE, RCONV DOUBLE PRECISION WORK2(*) F95 INTERFACE SUBROUTINE GEESX(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER(LEN=1) :: JOBZ, SORTEV, SENSE COMPLEX(8), DIMENSION(:) :: W, WORK COMPLEX(8), DIMENSION(:,:) :: A, Z INTEGER :: N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL :: SELECT LOGICAL, DIMENSION(:) :: BWORK3 REAL(8) :: RCONE, RCONV REAL(8), DIMENSION(:) :: WORK2 SUBROUTINE GEESX_64(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER(LEN=1) :: JOBZ, SORTEV, SENSE COMPLEX(8), DIMENSION(:) :: W, WORK COMPLEX(8), DIMENSION(:,:) :: A, Z INTEGER(8) :: N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL(8) :: SELECT LOGICAL(8), DIMENSION(:) :: BWORK3 REAL(8) :: RCONE, RCONV REAL(8), DIMENSION(:) :: WORK2 C INTERFACE #include <sunperf.h> void zgeesx(char jobz, char sortev, int(*select)(doublecomplex), char sense, int n, doublecomplex *a, int lda, int *nout, double- complex *w, doublecomplex *z, int ldz, double *rcone, double *rconv, int *info); void zgeesx_64(char jobz, char sortev, long(*select)(doublecomplex), char sense, long n, doublecomplex *a, long lda, long *nout, doublecomplex *w, doublecomplex *z, long ldz, double *rcone, double *rconv, long *info); PURPOSE zgeesx computes for an N-by-N complex nonsymmetric matrix A, the eigen- values, the Schur form T, and, optionally, the matrix of Schur vectors Z. This gives the Schur factorization A = Z*T*(Z**H). Optionally, it also orders the eigenvalues on the diagonal of the Schur form so that selected eigenvalues are at the top left; computes a reciprocal condition number for the average of the selected eigenvalues (RCONDE); and computes a reciprocal condition number for the right invariant subspace corresponding to the selected eigenvalues (RCONDV). The leading columns of Z form an orthonormal basis for this invariant subspace. For further explanation of the reciprocal condition numbers RCONDE and RCONDV, see Section 4.10 of the LAPACK Users' Guide (where these quan- tities are called s and sep respectively). A complex matrix is in Schur form if it is upper triangular. ARGUMENTS JOBZ (input) = 'N': Schur vectors are not computed; = 'V': Schur vectors are computed. SORTEV (input) Specifies whether or not to order the eigenvalues on the diagonal of the Schur form. = 'N': Eigenvalues are not ordered; = 'S': Eigenvalues are ordered (see SELECT). SELECT (input) LOGICAL FUNCTION of one DOUBLE COMPLEX argument SELECT must be declared EXTERNAL in the calling subroutine. If SORTEV = 'S', SELECT is used to select eigenvalues to order to the top left of the Schur form. If SORTEV = 'N', SELECT is not ref- erenced. An eigenvalue W(j) is selected if SELECT(W(j)) is true. SENSE (input) Determines which reciprocal condition numbers are computed. = 'N': None are computed; = 'E': Computed for average of selected eigenvalues only; = 'V': Computed for selected right invariant subspace only; = 'B': Computed for both. If SENSE = 'E', 'V' or 'B', SORTEV must equal 'S'. N (input) The order of the matrix A. N >= 0. A (input/output) DOUBLE COMPLEX array, dimension(LDA, N) On entry, the N-by-N matrix A. On exit, A is overwritten by its Schur form T. LDA (input) The leading dimension of the array A. LDA >= max(1,N). NOUT (output) If SORTEV = 'N', NOUT = 0. If SORTEV = 'S', NOUT = number of eigenvalues for which SELECT is true. W (output) DOUBLE COMPLEX array, dimension(N) W contains the computed eigenvalues, in the same order that they appear on the diago- nal of the output Schur form T. Z (output) DOUBLE COMPLEX array, dimension(LDZ,N) If JOBZ = 'V', Z con- tains the unitary matrix Z of Schur vectors. If JOBZ = 'N', Z is not referenced. LDZ (input) The leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', LDZ >= N. RCONE (output) If SENSE = 'E' or 'B', RCONE contains the reciprocal condi- tion number for the average of the selected eigenvalues. Not referenced if SENSE = 'N' or 'V'. RCONV (output) If SENSE = 'V' or 'B', RCONV contains the reciprocal condi- tion number for the selected right invariant subspace. Not referenced if SENSE = 'N' or 'E'. WORK (workspace) DOUBLE COMPLEX array, dimension(LDWORK) On exit, if INFO = 0, WORK(1) returns the optimal LDWORK. LDWORK (input) The dimension of the array WORK. LDWORK >= max(1,2*N). Also, if SENSE = 'E' or 'V' or 'B', LDWORK >= 2*NOUT*(N- NOUT), where NOUT is the number of selected eigenvalues com- puted by this routine. Note that 2*NOUT*(N-NOUT) <= N*N/2. For good performance, LDWORK must generally be larger. WORK2 (workspace) DOUBLE PRECISION array, dimension(N) BWORK3 (workspace) LOGICAL array, dimension(N) Not referenced if SORTEV = 'N'. INFO (output) = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value. > 0: if INFO = i, and i is <= N: the QR algorithm failed to compute all the eigenvalues; elements 1:ILO-1 and i+1:N of W contain those eigenvalues which have converged; if JOBZ = 'V', Z contains the transformation which reduces A to its partially converged Schur form. = N+1: the eigenvalues could not be reordered because some eigenvalues were too close to separate (the problem is very ill-conditioned); = N+2: after reordering, roundoff changed values of some complex eigenvalues so that leading eigenvalues in the Schur form no longer satisfy SELECT=.TRUE. This could also be caused by underflow due to scaling. 7 Nov 2015 zgeesx(3P)