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

NAME

6       DGGEV - for a pair of N-by-N real nonsymmetric matrices (A,B)
7

SYNOPSIS

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

PURPOSE

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

ARGUMENTS

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