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