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