1ZGGEV(1) LAPACK driver routine (version 3.2) ZGGEV(1)
2
3
4
6 ZGGEV - computes for a pair of N-by-N complex nonsymmetric matrices
7 (A,B), the generalized eigenvalues, and optionally, the left and/or
8 right generalized eigenvectors
9
11 SUBROUTINE ZGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA, VL,
12 LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO )
13
14 CHARACTER JOBVL, JOBVR
15
16 INTEGER INFO, LDA, LDB, LDVL, LDVR, LWORK, N
17
18 DOUBLE PRECISION RWORK( * )
19
20 COMPLEX*16 A( LDA, * ), ALPHA( * ), B( LDB, * ), BETA( * ), VL(
21 LDVL, * ), VR( LDVR, * ), WORK( * )
22
24 ZGGEV computes for a pair of N-by-N complex nonsymmetric matrices
25 (A,B), the generalized eigenvalues, and optionally, the left and/or
26 right generalized eigenvectors. A generalized eigenvalue for a pair of
27 matrices (A,B) is a scalar lambda or a ratio alpha/beta = lambda, such
28 that A - lambda*B is singular. It is usually represented as the pair
29 (alpha,beta), as there is a reasonable interpretation for beta=0, and
30 even for both being zero.
31 The right generalized eigenvector v(j) corresponding to the generalized
32 eigenvalue lambda(j) of (A,B) satisfies
33 A * v(j) = lambda(j) * B * v(j).
34 The left generalized eigenvector u(j) corresponding to the generalized
35 eigenvalues lambda(j) of (A,B) satisfies
36 u(j)**H * A = lambda(j) * u(j)**H * B
37 where u(j)**H is the conjugate-transpose of u(j).
38
40 JOBVL (input) CHARACTER*1
41 = 'N': do not compute the left generalized eigenvectors;
42 = 'V': compute the left generalized eigenvectors.
43
44 JOBVR (input) CHARACTER*1
45 = 'N': do not compute the right generalized eigenvectors;
46 = 'V': compute the right generalized eigenvectors.
47
48 N (input) INTEGER
49 The order of the matrices A, B, VL, and VR. N >= 0.
50
51 A (input/output) COMPLEX*16 array, dimension (LDA, N)
52 On entry, the matrix A in the pair (A,B). On exit, A has been
53 overwritten.
54
55 LDA (input) INTEGER
56 The leading dimension of A. LDA >= max(1,N).
57
58 B (input/output) COMPLEX*16 array, dimension (LDB, N)
59 On entry, the matrix B in the pair (A,B). On exit, B has been
60 overwritten.
61
62 LDB (input) INTEGER
63 The leading dimension of B. LDB >= max(1,N).
64
65 ALPHA (output) COMPLEX*16 array, dimension (N)
66 BETA (output) COMPLEX*16 array, dimension (N) On exit,
67 ALPHA(j)/BETA(j), j=1,...,N, will be the generalized eigenval‐
68 ues. Note: the quotients ALPHA(j)/BETA(j) may easily over- or
69 underflow, and BETA(j) may even be zero. Thus, the user should
70 avoid naively computing the ratio alpha/beta. However, ALPHA
71 will be always less than and usually comparable with norm(A) in
72 magnitude, and BETA always less than and usually comparable
73 with norm(B).
74
75 VL (output) COMPLEX*16 array, dimension (LDVL,N)
76 If JOBVL = 'V', the left generalized eigenvectors u(j) are
77 stored one after another in the columns of VL, in the same
78 order as their eigenvalues. Each eigenvector is scaled so the
79 largest component has abs(real part) + abs(imag. part) = 1.
80 Not referenced if JOBVL = 'N'.
81
82 LDVL (input) INTEGER
83 The leading dimension of the matrix VL. LDVL >= 1, and if JOBVL
84 = 'V', LDVL >= N.
85
86 VR (output) COMPLEX*16 array, dimension (LDVR,N)
87 If JOBVR = 'V', the right generalized eigenvectors v(j) are
88 stored one after another in the columns of VR, in the same
89 order as their eigenvalues. Each eigenvector is scaled so the
90 largest component has abs(real part) + abs(imag. part) = 1.
91 Not referenced if JOBVR = 'N'.
92
93 LDVR (input) INTEGER
94 The leading dimension of the matrix VR. LDVR >= 1, and if JOBVR
95 = 'V', LDVR >= N.
96
97 WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
98 On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
99
100 LWORK (input) INTEGER
101 The dimension of the array WORK. LWORK >= max(1,2*N). For
102 good performance, LWORK must generally be larger. If LWORK =
103 -1, then a workspace query is assumed; the routine only calcu‐
104 lates the optimal size of the WORK array, returns this value as
105 the first entry of the WORK array, and no error message related
106 to LWORK is issued by XERBLA.
107
108 RWORK (workspace/output) DOUBLE PRECISION array, dimension (8*N)
109
110 INFO (output) INTEGER
111 = 0: successful exit
112 < 0: if INFO = -i, the i-th argument had an illegal value.
113 =1,...,N: The QZ iteration failed. No eigenvectors have been
114 calculated, but ALPHA(j) and BETA(j) should be correct for
115 j=INFO+1,...,N. > N: =N+1: other then QZ iteration failed in
116 DHGEQZ,
117 =N+2: error return from DTGEVC.
118
119
120
121 LAPACK driver routine (version 3.N2o)vember 2008 ZGGEV(1)