Previous: zgees Up: ../lapack-z.html Next: zgeev

# zgeesx

```
NAME
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

SYNOPSIS
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(
* )

LOGICAL        SELECT

EXTERNAL       SELECT

PURPOSE
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 factoriza-
tion 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 quantities are called s and sep respec-
tively).

A complex matrix is in Schur form if it is upper triangular.

ARGUMENTS
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 variable
SELECT must be declared EXTERNAL in the calling sub-
routine.  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)) is true.

SENSE   (input) CHARACTER*1
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 sub-
space 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 refer-
enced.

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 recipro-
cal 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 recipro-
cal condition number for the selected right invari-
ant 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 eigenvalues computed by this routine.
Note that 2*SDIM*(N-SDIM) <= N*N/2.  For good per-
formance, 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-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.
```