1CGEEVX(1) LAPACK driver routine (version 3.2) CGEEVX(1)
2
3
4
6 CGEEVX - computes for an N-by-N complex nonsymmetric matrix A, the ei‐
7 genvalues and, optionally, the left and/or right eigenvectors
8
10 SUBROUTINE CGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, W, VL, LDVL,
11 VR, LDVR, ILO, IHI, SCALE, ABNRM, RCONDE, RCONDV,
12 WORK, LWORK, RWORK, INFO )
13
14 CHARACTER BALANC, JOBVL, JOBVR, SENSE
15
16 INTEGER IHI, ILO, INFO, LDA, LDVL, LDVR, LWORK, N
17
18 REAL ABNRM
19
20 REAL RCONDE( * ), RCONDV( * ), RWORK( * ), SCALE( * )
21
22 COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ), W( * ),
23 WORK( * )
24
26 CGEEVX computes for an N-by-N complex nonsymmetric matrix A, the eigen‐
27 values and, optionally, the left and/or right eigenvectors. Optionally
28 also, it computes a balancing transformation to improve the condition‐
29 ing of the eigenvalues and eigenvectors (ILO, IHI, SCALE, and ABNRM),
30 reciprocal condition numbers for the eigenvalues (RCONDE), and recipro‐
31 cal condition numbers for the right
32 eigenvectors (RCONDV).
33 The right eigenvector v(j) of A satisfies
34 A * v(j) = lambda(j) * v(j)
35 where lambda(j) is its eigenvalue.
36 The left eigenvector u(j) of A satisfies
37 u(j)**H * A = lambda(j) * u(j)**H
38 where u(j)**H denotes the conjugate transpose of u(j).
39 The computed eigenvectors are normalized to have Euclidean norm equal
40 to 1 and largest component real.
41 Balancing a matrix means permuting the rows and columns to make it more
42 nearly upper triangular, and applying a diagonal similarity transforma‐
43 tion D * A * D**(-1), where D is a diagonal matrix, to make its rows
44 and columns closer in norm and the condition numbers of its eigenvalues
45 and eigenvectors smaller. The computed reciprocal condition numbers
46 correspond to the balanced matrix. Permuting rows and columns will not
47 change the condition numbers (in exact arithmetic) but diagonal scaling
48 will. For further explanation of balancing, see section 4.10.2 of the
49 LAPACK Users' Guide.
50
52 BALANC (input) CHARACTER*1
53 Indicates how the input matrix should be diagonally scaled
54 and/or permuted to improve the conditioning of its eigenvalues.
55 = 'N': Do not diagonally scale or permute;
56 = 'P': Perform permutations to make the matrix more nearly
57 upper triangular. Do not diagonally scale; = 'S': Diagonally
58 scale the matrix, ie. replace A by D*A*D**(-1), where D is a
59 diagonal matrix chosen to make the rows and columns of A more
60 equal in norm. Do not permute; = 'B': Both diagonally scale and
61 permute A. Computed reciprocal condition numbers will be for
62 the matrix after balancing and/or permuting. Permuting does not
63 change condition numbers (in exact arithmetic), but balancing
64 does.
65
66 JOBVL (input) CHARACTER*1
67 = 'N': left eigenvectors of A are not computed;
68 = 'V': left eigenvectors of A are computed. If SENSE = 'E' or
69 'B', JOBVL must = 'V'.
70
71 JOBVR (input) CHARACTER*1
72 = 'N': right eigenvectors of A are not computed;
73 = 'V': right eigenvectors of A are computed. If SENSE = 'E' or
74 'B', JOBVR must = 'V'.
75
76 SENSE (input) CHARACTER*1
77 Determines which reciprocal condition numbers are computed. =
78 'N': None are computed;
79 = 'E': Computed for eigenvalues only;
80 = 'V': Computed for right eigenvectors only;
81 = 'B': Computed for eigenvalues and right eigenvectors. If
82 SENSE = 'E' or 'B', both left and right eigenvectors must also
83 be computed (JOBVL = 'V' and JOBVR = 'V').
84
85 N (input) INTEGER
86 The order of the matrix A. N >= 0.
87
88 A (input/output) COMPLEX array, dimension (LDA,N)
89 On entry, the N-by-N matrix A. On exit, A has been overwrit‐
90 ten. If JOBVL = 'V' or JOBVR = 'V', A contains the Schur form
91 of the balanced version of the matrix A.
92
93 LDA (input) INTEGER
94 The leading dimension of the array A. LDA >= max(1,N).
95
96 W (output) COMPLEX array, dimension (N)
97 W contains the computed eigenvalues.
98
99 VL (output) COMPLEX array, dimension (LDVL,N)
100 If JOBVL = 'V', the left eigenvectors u(j) are stored one after
101 another in the columns of VL, in the same order as their eigen‐
102 values. If JOBVL = 'N', VL is not referenced. u(j) = VL(:,j),
103 the j-th column of VL.
104
105 LDVL (input) INTEGER
106 The leading dimension of the array VL. LDVL >= 1; if JOBVL =
107 'V', LDVL >= N.
108
109 VR (output) COMPLEX array, dimension (LDVR,N)
110 If JOBVR = 'V', the right eigenvectors v(j) are stored one
111 after another in the columns of VR, in the same order as their
112 eigenvalues. If JOBVR = 'N', VR is not referenced. v(j) =
113 VR(:,j), the j-th column of VR.
114
115 LDVR (input) INTEGER
116 The leading dimension of the array VR. LDVR >= 1; if JOBVR =
117 'V', LDVR >= N.
118
119 ILO (output) INTEGER
120 IHI (output) INTEGER ILO and IHI are integer values deter‐
121 mined when A was balanced. The balanced A(i,j) = 0 if I > J
122 and J = 1,...,ILO-1 or I = IHI+1,...,N.
123
124 SCALE (output) REAL array, dimension (N)
125 Details of the permutations and scaling factors applied when
126 balancing A. If P(j) is the index of the row and column inter‐
127 changed with row and column j, and D(j) is the scaling factor
128 applied to row and column j, then SCALE(J) = P(J), for J =
129 1,...,ILO-1 = D(J), for J = ILO,...,IHI = P(J) for J =
130 IHI+1,...,N. The order in which the interchanges are made is N
131 to IHI+1, then 1 to ILO-1.
132
133 ABNRM (output) REAL
134 The one-norm of the balanced matrix (the maximum of the sum of
135 absolute values of elements of any column).
136
137 RCONDE (output) REAL array, dimension (N)
138 RCONDE(j) is the reciprocal condition number of the j-th eigen‐
139 value.
140
141 RCONDV (output) REAL array, dimension (N)
142 RCONDV(j) is the reciprocal condition number of the j-th right
143 eigenvector.
144
145 WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
146 On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
147
148 LWORK (input) INTEGER
149 The dimension of the array WORK. If SENSE = 'N' or 'E', LWORK
150 >= max(1,2*N), and if SENSE = 'V' or 'B', LWORK >= N*N+2*N.
151 For good performance, LWORK must generally be larger. If LWORK
152 = -1, then a workspace query is assumed; the routine only cal‐
153 culates the optimal size of the WORK array, returns this value
154 as the first entry of the WORK array, and no error message
155 related to LWORK is issued by XERBLA.
156
157 RWORK (workspace) REAL array, dimension (2*N)
158
159 INFO (output) INTEGER
160 = 0: successful exit
161 < 0: if INFO = -i, the i-th argument had an illegal value.
162 > 0: if INFO = i, the QR algorithm failed to compute all the
163 eigenvalues, and no eigenvectors or condition numbers have been
164 computed; elements 1:ILO-1 and i+1:N of W contain eigenvalues
165 which have converged.
166
167
168
169 LAPACK driver routine (version 3.N2o)vember 2008 CGEEVX(1)