1CGEEVX(1)             LAPACK driver routine (version 3.2)            CGEEVX(1)
2
3
4

NAME

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

SYNOPSIS

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

PURPOSE

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

ARGUMENTS

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)
Impressum