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)