ZGEESX(l)	     LAPACK driver routine (version 1.1)	    ZGEESX(l)

NAME
  ZGEESX - compute for an N-by-N complex nonsymmetric matrix A,	the eigen-
  values, 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 recipro-
  cal 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 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 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 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 eigen-
	  values 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 eigenvalues 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 eigen-
	  values 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.


Back to the listing of expert driver routines