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

NAME

6       ZGEGV - i deprecated and has been replaced by routine ZGGEV
7

SYNOPSIS

9       SUBROUTINE ZGEGV( JOBVL,  JOBVR,  N,  A,  LDA, B, LDB, ALPHA, BETA, VL,
10                         LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO )
11
12           CHARACTER     JOBVL, JOBVR
13
14           INTEGER       INFO, LDA, LDB, LDVL, LDVR, LWORK, N
15
16           DOUBLE        PRECISION RWORK( * )
17
18           COMPLEX*16    A( LDA, * ), ALPHA( * ), B( LDB, * ), BETA( * ),  VL(
19                         LDVL, * ), VR( LDVR, * ), WORK( * )
20

PURPOSE

22       This routine is deprecated and has been replaced by routine ZGGEV.
23
24       ZGEGV  computes  the eigenvalues and, optionally, the left and/or right
25       eigenvectors of a complex matrix pair (A,B).
26       Given two square matrices A and B,
27       the generalized nonsymmetric eigenvalue problem (GNEP) is to  find  the
28       eigenvalues  lambda  and  corresponding  (non-zero) eigenvectors x such
29       that
30          A*x = lambda*B*x.
31
32       An alternate form is to  find  the  eigenvalues  mu  and  corresponding
33       eigenvectors y such that
34          mu*A*y = B*y.
35
36       These  two forms are equivalent with mu = 1/lambda and x = y if neither
37       lambda nor mu is zero.  In order to deal with the case that  lambda  or
38       mu  is  zero  or small, two values alpha and beta are returned for each
39       eigenvalue, such that lambda = alpha/beta and
40       mu = beta/alpha.
41
42       The vectors x and y in the above equations are  right  eigenvectors  of
43       the matrix pair (A,B).  Vectors u and v satisfying
44          u**H*A = lambda*u**H*B  or  mu*v**H*A = v**H*B
45       are left eigenvectors of (A,B).
46
47       Note: this routine performs "full balancing" on A and B -- see "Further
48       Details", below.
49

ARGUMENTS

51       JOBVL   (input) CHARACTER*1
52               = 'N':  do not compute the left generalized eigenvectors;
53               = 'V':  compute the left generalized eigenvectors (returned  in
54               VL).
55
56       JOBVR   (input) CHARACTER*1
57               = 'N':  do not compute the right generalized eigenvectors;
58               = 'V':  compute the right generalized eigenvectors (returned in
59               VR).
60
61       N       (input) INTEGER
62               The order of the matrices A, B, VL, and VR.  N >= 0.
63
64       A       (input/output) COMPLEX*16 array, dimension (LDA, N)
65               On entry, the matrix A.  If JOBVL = 'V' or JOBVR = 'V', then on
66               exit  A contains the Schur form of A from the generalized Schur
67               factorization of the pair (A,B) after balancing.  If no  eigenā€
68               vectors  were  computed, then only the diagonal elements of the
69               Schur form will be correct.  See ZGGHRD and ZHGEQZ for details.
70
71       LDA     (input) INTEGER
72               The leading dimension of A.  LDA >= max(1,N).
73
74       B       (input/output) COMPLEX*16 array, dimension (LDB, N)
75               On entry, the matrix B.  If JOBVL = 'V' or JOBVR = 'V', then on
76               exit  B contains the upper triangular matrix obtained from B in
77               the generalized Schur factorization of  the  pair  (A,B)  after
78               balancing.   If  no  eigenvectors  were computed, then only the
79               diagonal elements of B will be correct.  See ZGGHRD and  ZHGEQZ
80               for details.
81
82       LDB     (input) INTEGER
83               The leading dimension of B.  LDB >= max(1,N).
84
85       ALPHA   (output) COMPLEX*16 array, dimension (N)
86               The complex scalars alpha that define the eigenvalues of GNEP.
87
88       BETA    (output) COMPLEX*16 array, dimension (N)
89               The  complex  scalars beta that define the eigenvalues of GNEP.
90               Together, the quantities alpha = ALPHA(j) and  beta  =  BETA(j)
91               represent  the j-th eigenvalue of the matrix pair (A,B), in one
92               of the forms lambda = alpha/beta or  mu  =  beta/alpha.   Since
93               either  lambda or mu may overflow, they should not, in general,
94               be computed.
95
96       VL      (output) COMPLEX*16 array, dimension (LDVL,N)
97               If JOBVL = 'V', the left eigenvectors u(j) are  stored  in  the
98               columns  of  VL,  in the same order as their eigenvalues.  Each
99               eigenvector  is  scaled  so  that  its  largest  component  has
100               abs(real  part)  + abs(imag. part) = 1, except for eigenvectors
101               corresponding to an eigenvalue with alpha = beta = 0, which are
102               set to zero.  Not referenced if JOBVL = 'N'.
103
104       LDVL    (input) INTEGER
105               The leading dimension of the matrix VL. LDVL >= 1, and if JOBVL
106               = 'V', LDVL >= N.
107
108       VR      (output) COMPLEX*16 array, dimension (LDVR,N)
109               If JOBVR = 'V', the right eigenvectors x(j) are stored  in  the
110               columns  of  VR,  in the same order as their eigenvalues.  Each
111               eigenvector  is  scaled  so  that  its  largest  component  has
112               abs(real  part)  + abs(imag. part) = 1, except for eigenvectors
113               corresponding to an eigenvalue with alpha = beta = 0, which are
114               set to zero.  Not referenced if JOBVR = 'N'.
115
116       LDVR    (input) INTEGER
117               The leading dimension of the matrix VR. LDVR >= 1, and if JOBVR
118               = 'V', LDVR >= N.
119
120       WORK    (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
121               On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
122
123       LWORK   (input) INTEGER
124               The dimension of the array WORK.   LWORK  >=  max(1,2*N).   For
125               good  performance,  LWORK must generally be larger.  To compute
126               the optimal value of LWORK, call ILAENV to get blocksizes  (for
127               ZGEQRF,  ZUNMQR,  and ZUNGQR.)  Then compute: NB  -- MAX of the
128               blocksizes for ZGEQRF, ZUNMQR, and ZUNGQR; The optimal LWORK is
129               MAX( 2*N, N*(NB+1) ).
130
131               If  LWORK  = -1, then a workspace query is assumed; the routine
132               only calculates the optimal size of  the  WORK  array,  returns
133               this  value  as the first entry of the WORK array, and no error
134               message related to LWORK is issued by XERBLA.
135
136       RWORK   (workspace/output) DOUBLE PRECISION array, dimension (8*N)
137
138       INFO    (output) INTEGER
139               = 0:  successful exit
140               < 0:  if INFO = -i, the i-th argument had an illegal value.
141               =1,...,N: The QZ iteration failed.  No eigenvectors  have  been
142               calculated,  but  ALPHA(j)  and  BETA(j)  should be correct for
143               j=INFO+1,...,N.  > N:   errors  that  usually  indicate  LAPACK
144               problems:
145               =N+1: error return from ZGGBAL
146               =N+2: error return from ZGEQRF
147               =N+3: error return from ZUNMQR
148               =N+4: error return from ZUNGQR
149               =N+5: error return from ZGGHRD
150               =N+6:  error  return  from ZHGEQZ (other than failed iteration)
151               =N+7: error return from ZTGEVC
152               =N+8: error return from ZGGBAK (computing VL)
153               =N+9: error return from ZGGBAK (computing VR)
154               =N+10: error return from ZLASCL (various calls)
155

FURTHER DETAILS

157       Balancing
158       ---------
159
160       This driver calls ZGGBAL to both permute and scale rows and columns  of
161       A  and  B.   The  permutations PL and PR are chosen so that PL*A*PR and
162       PL*B*R  will  be  upper  triangular  except  for  the  diagonal  blocks
163       A(i:j,i:j)  and B(i:j,i:j), with i and j as close together as possible.
164       The diagonal scaling matrices DL and DR are chosen  so  that  the  pair
165       DL*PL*A*PR*DR, DL*PL*B*PR*DR have elements close to one (except for the
166       elements that start out zero.)
167
168       After the eigenvalues and eigenvectors of the  balanced  matrices  have
169       been  computed,  ZGGBAK  transforms  the eigenvectors back to what they
170       would have been (in perfect arithmetic) if they had not been balanced.
171
172       Contents of A and B on Exit
173       -------- -- - --- - -- ----
174
175       If any eigenvectors are computed  (either  JOBVL='V'  or  JOBVR='V'  or
176       both),  then  on exit the arrays A and B will contain the complex Schur
177       form[*] of the "balanced" versions of A and B.  If no eigenvectors  are
178       computed, then only the diagonal blocks will be correct.
179
180       [*] In other words, upper triangular form.
181
182
183
184
185 LAPACK driver routine (version 3.N1o)vember 2006                        ZGEGV(1)
Impressum