![]() |
LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine zgees | ( | character | jobvs, |
character | sort, | ||
external | select, | ||
integer | n, | ||
complex*16, dimension( lda, * ) | a, | ||
integer | lda, | ||
integer | sdim, | ||
complex*16, dimension( * ) | w, | ||
complex*16, dimension( ldvs, * ) | vs, | ||
integer | ldvs, | ||
complex*16, dimension( * ) | work, | ||
integer | lwork, | ||
double precision, dimension( * ) | rwork, | ||
logical, dimension( * ) | bwork, | ||
integer | info ) |
ZGEES computes the eigenvalues, the Schur form, and, optionally, the matrix of Schur vectors for GE matrices
Download ZGEES + dependencies [TGZ] [ZIP] [TXT]
!> !> ZGEES 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. !> The leading columns of Z then form an orthonormal basis for the !> invariant subspace corresponding to the selected eigenvalues. !> !> A complex matrix is in Schur form if it is upper triangular. !>
[in] | JOBVS | !> JOBVS is CHARACTER*1 !> = 'N': Schur vectors are not computed; !> = 'V': Schur vectors are computed. !> |
[in] | SORT | !> SORT is 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). !> |
[in] | SELECT | !> SELECT is a 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. !> The eigenvalue W(j) is selected if SELECT(W(j)) is true. !> |
[in] | N | !> N is INTEGER !> The order of the matrix A. N >= 0. !> |
[in,out] | A | !> A is COMPLEX*16 array, dimension (LDA,N) !> On entry, the N-by-N matrix A. !> On exit, A has been overwritten by its Schur form T. !> |
[in] | LDA | !> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,N). !> |
[out] | SDIM | !> SDIM is INTEGER !> If SORT = 'N', SDIM = 0. !> If SORT = 'S', SDIM = number of eigenvalues for which !> SELECT is true. !> |
[out] | W | !> W is 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. !> |
[out] | VS | !> VS is 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. !> |
[in] | LDVS | !> LDVS is INTEGER !> The leading dimension of the array VS. LDVS >= 1; if !> JOBVS = 'V', LDVS >= N. !> |
[out] | WORK | !> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) !> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. !> |
[in] | LWORK | !> LWORK is INTEGER !> The dimension of the array WORK. LWORK >= max(1,2*N). !> For good performance, LWORK must generally be larger. !> !> If LWORK = -1, then a workspace query is assumed; the routine !> only calculates the optimal size of the WORK array, returns !> this value as the first entry of the WORK array, and no error !> message related to LWORK is issued by XERBLA. !> |
[out] | RWORK | !> RWORK is DOUBLE PRECISION array, dimension (N) !> |
[out] | BWORK | !> BWORK is LOGICAL array, dimension (N) !> Not referenced if SORT = 'N'. !> |
[out] | INFO | !> INFO is 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 matrix 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. !> |
Definition at line 193 of file zgees.f.