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

NAME

6       DGGEV - computes 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       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

ARGUMENTS

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