ZGEESX(l) ) ZGEESX(l)
ZGEESX - compute for an N-by-N complex nonsymmetric matrix A, the eigenvalues, the Schur
form T, and, optionally, the matrix of Schur vectors Z
SUBROUTINE ZGEESX( JOBVS, SORT, SELECT, SENSE, N, A, LDA, SDIM, W, VS, LDVS, RCONDE,
RCONDV, WORK, LWORK, RWORK, BWORK, INFO )
CHARACTER JOBVS, SENSE, SORT
INTEGER INFO, LDA, LDVS, LWORK, N, SDIM
DOUBLE PRECISION RCONDE, RCONDV
LOGICAL BWORK( * )
DOUBLE PRECISION RWORK( * )
COMPLEX*16 A( LDA, * ), VS( LDVS, * ), W( * ), WORK( * )
ZGEESX computes for an N-by-N complex nonsymmetric matrix A, the eigenvalues, 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 eigenval-
ues (RCONDV). The leading columns of Z form an orthonormal basis for this invariant sub-
For further explanation of the reciprocal condition numbers RCONDE and RCONDV, see Section
4.10 of the LAPACK Users' Guide (where these quantities are called s and sep respec-
A complex matrix is in Schur form if it is upper triangular.
JOBVS (input) CHARACTER*1
= 'N': Schur vectors are not computed;
= 'V': Schur vectors are computed.
SORT (input) CHARACTER*1
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*16 argument
SELECT must be declared EXTERNAL in the calling subroutine. If SORT = 'S', SELECT
is used to select eigenvalues to order to the top left of the Schur form. If SORT
= 'N', SELECT is not referenced. An eigenvalue W(j) is selected if SELECT(W(j))
SENSE (input) CHARACTER*1
Determines which reciprocal condition numbers are computed. = 'N': None are com-
= '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', SORT must equal 'S'.
N (input) INTEGER
The order of the matrix A. N >= 0.
A (input/output) COMPLEX*16 array, dimension (LDA, N)
On entry, the N-by-N matrix A. On exit, A is overwritten by its Schur form T.
LDA (input) INTEGER
The leading dimension of the array A. LDA >= max(1,N).
SDIM (output) INTEGER
If SORT = 'N', SDIM = 0. If SORT = 'S', SDIM = number of eigenvalues for which
SELECT is true.
W (output) COMPLEX*16 array, dimension (N)
W contains the computed eigenvalues, in the same order that they appear on the
diagonal of the output Schur form T.
VS (output) COMPLEX*16 array, dimension (LDVS,N)
If JOBVS = 'V', VS contains the unitary matrix Z of Schur vectors. If JOBVS =
'N', VS is not referenced.
LDVS (input) INTEGER
The leading dimension of the array VS. LDVS >= 1, and if JOBVS = 'V', LDVS >= N.
RCONDE (output) DOUBLE PRECISION
If SENSE = 'E' or 'B', RCONDE contains the reciprocal condition number for the
average of the selected eigenvalues. Not referenced if SENSE = 'N' or 'V'.
RCONDV (output) DOUBLE PRECISION
If SENSE = 'V' or 'B', RCONDV contains the reciprocal condition number for the
selected right invariant subspace. Not referenced if SENSE = 'N' or 'E'.
WORK (workspace/output) COMPLEX*16 array, dimension (LWORK)
On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
LWORK (input) INTEGER
The dimension of the array WORK. LWORK >= max(1,2*N). Also, if SENSE = 'E' or
'V' or 'B', LWORK >= 2*SDIM*(N-SDIM), where SDIM is the number of selected eigen-
values computed by this routine. Note that 2*SDIM*(N-SDIM) <= N*N/2. For good
performance, LWORK must generally be larger.
RWORK (workspace) DOUBLE PRECISION array, dimension (N)
BWORK (workspace) LOGICAL array, dimension (N)
Not referenced if SORT = 'N'.
INFO (output) INTEGER
= 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 JOBVS = 'V', VS 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-con-
ditioned); = N+2: after reordering, roundoff changed values of some complex eigen-
values so that leading eigenvalues in the Schur form no longer satisfy
SELECT=.TRUE. This could also be caused by underflow due to scaling.
LAPACK version 3.0 15 June 2000 ZGEESX(l)