1DGEES(1) LAPACK driver routine (version 3.1) DGEES(1)
2
3
4
6 DGEES - for an N-by-N real nonsymmetric matrix A, the eigenvalues, the
7 real Schur form T, and, optionally, the matrix of Schur vectors Z
8
10 SUBROUTINE DGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, WR, WI, VS,
11 LDVS, WORK, LWORK, BWORK, INFO )
12
13 CHARACTER JOBVS, SORT
14
15 INTEGER INFO, LDA, LDVS, LWORK, N, SDIM
16
17 LOGICAL BWORK( * )
18
19 DOUBLE PRECISION A( LDA, * ), VS( LDVS, * ), WI( * ), WORK(
20 * ), WR( * )
21
22 LOGICAL SELECT
23
24 EXTERNAL SELECT
25
27 DGEES computes for an N-by-N real nonsymmetric matrix A, the eigenval‐
28 ues, the real Schur form T, and, optionally, the matrix of Schur vec‐
29 tors Z. This gives the Schur factorization A = Z*T*(Z**T).
30
31 Optionally, it also orders the eigenvalues on the diagonal of the real
32 Schur form so that selected eigenvalues are at the top left. The lead‐
33 ing columns of Z then form an orthonormal basis for the invariant sub‐
34 space corresponding to the selected eigenvalues.
35
36 A matrix is in real Schur form if it is upper quasi-triangular with
37 1-by-1 and 2-by-2 blocks. 2-by-2 blocks will be standardized in the
38 form
39 [ a b ]
40 [ c a ]
41
42 where b*c < 0. The eigenvalues of such a block are a +- sqrt(bc).
43
44
46 JOBVS (input) CHARACTER*1
47 = 'N': Schur vectors are not computed;
48 = 'V': Schur vectors are computed.
49
50 SORT (input) CHARACTER*1
51 Specifies whether or not to order the eigenvalues on the diago‐
52 nal of the Schur form. = 'N': Eigenvalues are not ordered;
53 = 'S': Eigenvalues are ordered (see SELECT).
54
55 SELECT (external procedure) LOGICAL FUNCTION of two DOUBLE PRECISION
56 arguments
57 SELECT must be declared EXTERNAL in the calling subroutine. If
58 SORT = 'S', SELECT is used to select eigenvalues to sort to the
59 top left of the Schur form. If SORT = 'N', SELECT is not ref‐
60 erenced. An eigenvalue WR(j)+sqrt(-1)*WI(j) is selected if
61 SELECT(WR(j),WI(j)) is true; i.e., if either one of a complex
62 conjugate pair of eigenvalues is selected, then both complex
63 eigenvalues are selected. Note that a selected complex eigen‐
64 value may no longer satisfy SELECT(WR(j),WI(j)) = .TRUE. after
65 ordering, since ordering may change the value of complex eigen‐
66 values (especially if the eigenvalue is ill-conditioned); in
67 this case INFO is set to N+2 (see INFO below).
68
69 N (input) INTEGER
70 The order of the matrix A. N >= 0.
71
72 A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
73 On entry, the N-by-N matrix A. On exit, A has been overwritten
74 by its real Schur form T.
75
76 LDA (input) INTEGER
77 The leading dimension of the array A. LDA >= max(1,N).
78
79 SDIM (output) INTEGER
80 If SORT = 'N', SDIM = 0. If SORT = 'S', SDIM = number of ei‐
81 genvalues (after sorting) for which SELECT is true. (Complex
82 conjugate pairs for which SELECT is true for either eigenvalue
83 count as 2.)
84
85 WR (output) DOUBLE PRECISION array, dimension (N)
86 WI (output) DOUBLE PRECISION array, dimension (N) WR and
87 WI contain the real and imaginary parts, respectively, of the
88 computed eigenvalues in the same order that they appear on the
89 diagonal of the output Schur form T. Complex conjugate pairs
90 of eigenvalues will appear consecutively with the eigenvalue
91 having the positive imaginary part first.
92
93 VS (output) DOUBLE PRECISION array, dimension (LDVS,N)
94 If JOBVS = 'V', VS contains the orthogonal matrix Z of Schur
95 vectors. If JOBVS = 'N', VS is not referenced.
96
97 LDVS (input) INTEGER
98 The leading dimension of the array VS. LDVS >= 1; if JOBVS =
99 'V', LDVS >= N.
100
101 WORK (workspace/output) DOUBLE PRECISION array, dimension
102 (MAX(1,LWORK))
103 On exit, if INFO = 0, WORK(1) contains the optimal LWORK.
104
105 LWORK (input) INTEGER
106 The dimension of the array WORK. LWORK >= max(1,3*N). For
107 good performance, LWORK must generally be larger.
108
109 If LWORK = -1, then a workspace query is assumed; the routine
110 only calculates the optimal size of the WORK array, returns
111 this value as the first entry of the WORK array, and no error
112 message related to LWORK is issued by XERBLA.
113
114 BWORK (workspace) LOGICAL array, dimension (N)
115 Not referenced if SORT = 'N'.
116
117 INFO (output) INTEGER
118 = 0: successful exit
119 < 0: if INFO = -i, the i-th argument had an illegal value.
120 > 0: if INFO = i, and i is
121 <= N: the QR algorithm failed to compute all the
122 eigenvalues; elements 1:ILO-1 and i+1:N of WR and WI contain
123 those eigenvalues which have converged; if JOBVS = 'V', VS con‐
124 tains the matrix which reduces A to its partially converged
125 Schur form. = N+1: the eigenvalues could not be reordered
126 because some eigenvalues were too close to separate (the prob‐
127 lem is very ill-conditioned); = N+2: after reordering, roundoff
128 changed values of some complex eigenvalues so that leading ei‐
129 genvalues in the Schur form no longer satisfy SELECT=.TRUE.
130 This could also be caused by underflow due to scaling.
131
132
133
134 LAPACK driver routine (version 3.N1o)vember 2006 DGEES(1)