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

NAME

6       CGEEVX  -  for an N-by-N complex nonsymmetric matrix A, the eigenvalues
7       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.
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

ARGUMENTS

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