cgeesx - genvalues, the Schur form T, and, optionally, the matrix of Schur vec- tors Z
SUBROUTINE CGEESX(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER*1 JOBZ, SORTEV, SENSE COMPLEX A(LDA,*), W(*), Z(LDZ,*), WORK(*) INTEGER N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL SELECT LOGICAL BWORK3(*) REAL RCONE, RCONV REAL WORK2(*) SUBROUTINE CGEESX_64(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER*1 JOBZ, SORTEV, SENSE COMPLEX A(LDA,*), W(*), Z(LDZ,*), WORK(*) INTEGER*8 N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL*8 SELECT LOGICAL*8 BWORK3(*) REAL RCONE, RCONV REAL 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, DIMENSION(:) :: W, WORK COMPLEX, DIMENSION(:,:) :: A, Z INTEGER :: N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL :: SELECT LOGICAL, DIMENSION(:) :: BWORK3 REAL :: RCONE, RCONV REAL, 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, DIMENSION(:) :: W, WORK COMPLEX, DIMENSION(:,:) :: A, Z INTEGER(8) :: N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL(8) :: SELECT LOGICAL(8), DIMENSION(:) :: BWORK3 REAL :: RCONE, RCONV REAL, DIMENSION(:) :: WORK2 C INTERFACE #include <sunperf.h> void cgeesx(char jobz, char sortev, int(*select)(complex), char sense, int n, complex *a, int lda, int *nout, complex *w, complex *z, int ldz, float *rcone, float *rconv, int *info); void cgeesx_64(char jobz, char sortev, long(*select)(complex), char sense, long n, complex *a, long lda, long *nout, complex *w, complex *z, long ldz, float *rcone, float *rconv, long *info);
Oracle Solaris Studio Performance Library cgeesx(3P) NAME cgeesx - 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 CGEESX(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER*1 JOBZ, SORTEV, SENSE COMPLEX A(LDA,*), W(*), Z(LDZ,*), WORK(*) INTEGER N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL SELECT LOGICAL BWORK3(*) REAL RCONE, RCONV REAL WORK2(*) SUBROUTINE CGEESX_64(JOBZ, SORTEV, SELECT, SENSE, N, A, LDA, NOUT, W, Z, LDZ, RCONE, RCONV, WORK, LDWORK, WORK2, BWORK3, INFO) CHARACTER*1 JOBZ, SORTEV, SENSE COMPLEX A(LDA,*), W(*), Z(LDZ,*), WORK(*) INTEGER*8 N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL*8 SELECT LOGICAL*8 BWORK3(*) REAL RCONE, RCONV REAL 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, DIMENSION(:) :: W, WORK COMPLEX, DIMENSION(:,:) :: A, Z INTEGER :: N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL :: SELECT LOGICAL, DIMENSION(:) :: BWORK3 REAL :: RCONE, RCONV REAL, 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, DIMENSION(:) :: W, WORK COMPLEX, DIMENSION(:,:) :: A, Z INTEGER(8) :: N, LDA, NOUT, LDZ, LDWORK, INFO LOGICAL(8) :: SELECT LOGICAL(8), DIMENSION(:) :: BWORK3 REAL :: RCONE, RCONV REAL, DIMENSION(:) :: WORK2 C INTERFACE #include <sunperf.h> void cgeesx(char jobz, char sortev, int(*select)(complex), char sense, int n, complex *a, int lda, int *nout, complex *w, complex *z, int ldz, float *rcone, float *rconv, int *info); void cgeesx_64(char jobz, char sortev, long(*select)(complex), char sense, long n, complex *a, long lda, long *nout, complex *w, complex *z, long ldz, float *rcone, float *rconv, long *info); PURPOSE cgeesx 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 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) 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) COMPLEX array, dimension(N) W contains the computed eigenval- ues, in the same order that they appear on the diagonal of the output Schur form T. Z (output) COMPLEX array, dimension(LDZ,N) If JOBZ = 'V', Z contains 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) 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) REAL 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 cgeesx(3P)