ZGEESX(3)             LAPACK driver routine (version 3.1)            ZGEESX(3)



NAME
       ZGEESX  - 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 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
       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 diago-
               nal of the Schur form.  = 'N': Eigenvalues are not ordered;
               = 'S': Eigenvalues are ordered (see SELECT).

       SELECT   (external  procedure) LOGICAL FUNCTION of one COMPLEX*16 argu-
       ment
               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))  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 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  vec-
               tors.  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 refer-
               enced 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 refer-
               enced if SENSE = 'N' or 'E'.

       WORK    (workspace/output) COMPLEX*16 array, dimension (MAX(1,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. Note also that an
               error is only returned if LWORK < max(1,2*N), but  if  SENSE  =
               'E'  or 'V' or 'B' this may not be large enough.  For good per-
               formance, LWORK must generally be larger.

               If LWORK = -1, then a workspace query is assumed;  the  routine
               only  calculates  upper  bound on the optimal size of the array
               WORK, returns this value as the first entry of the WORK  array,
               and no error message related to LWORK is issued by XERBLA.

       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 prob-
               lem 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.



 LAPACK driver routine (version 3.N1o)vember 2006                       ZGEESX(3)