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