1CTREVC(1)                LAPACK routine (version 3.1)                CTREVC(1)
2
3
4

NAME

6       CTREVC - some or all of the right and/or left eigenvectors of a complex
7       upper triangular matrix T
8

SYNOPSIS

10       SUBROUTINE CTREVC( SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR, LDVR,
11                          MM, M, WORK, RWORK, INFO )
12
13           CHARACTER      HOWMNY, SIDE
14
15           INTEGER        INFO, LDT, LDVL, LDVR, M, MM, N
16
17           LOGICAL        SELECT( * )
18
19           REAL           RWORK( * )
20
21           COMPLEX        T( LDT, * ), VL( LDVL, * ), VR( LDVR, * ), WORK( * )
22

PURPOSE

24       CTREVC  computes some or all of the right and/or left eigenvectors of a
25       complex upper triangular matrix T.  Matrices of this type are  produced
26       by  the Schur factorization of a complex general matrix:  A = Q*T*Q**H,
27       as computed by CHSEQR.
28
29       The right eigenvector x and the left eigenvector y of  T  corresponding
30       to an eigenvalue w are defined by:
31
32                    T*x = w*x,     (y**H)*T = w*(y**H)
33
34       where y**H denotes the conjugate transpose of the vector y.  The eigen‐
35       values are not input to this routine, but are read  directly  from  the
36       diagonal of T.
37
38       This  routine  returns the matrices X and/or Y of right and left eigen‐
39       vectors of T, or the products Q*X and/or  Q*Y,  where  Q  is  an  input
40       matrix.   If  Q  is the unitary factor that reduces a matrix A to Schur
41       form T, then Q*X and Q*Y are the matrices of right and  left  eigenvec‐
42       tors of A.
43
44

ARGUMENTS

46       SIDE    (input) CHARACTER*1
47               = 'R':  compute right eigenvectors only;
48               = 'L':  compute left eigenvectors only;
49               = 'B':  compute both right and left eigenvectors.
50
51       HOWMNY  (input) CHARACTER*1
52               = 'A':  compute all right and/or left eigenvectors;
53               =  'B':  compute all right and/or left eigenvectors, backtrans‐
54               formed using the matrices supplied in  VR  and/or  VL;  =  'S':
55               compute  selected  right and/or left eigenvectors, as indicated
56               by the logical array SELECT.
57
58       SELECT  (input) LOGICAL array, dimension (N)
59               If HOWMNY = 'S', SELECT specifies the eigenvectors to  be  com‐
60               puted.  The eigenvector corresponding to the j-th eigenvalue is
61               computed if SELECT(j) = .TRUE..  Not referenced if HOWMNY = 'A'
62               or 'B'.
63
64       N       (input) INTEGER
65               The order of the matrix T. N >= 0.
66
67       T       (input/output) COMPLEX array, dimension (LDT,N)
68               The  upper triangular matrix T.  T is modified, but restored on
69               exit.
70
71       LDT     (input) INTEGER
72               The leading dimension of the array T. LDT >= max(1,N).
73
74       VL      (input/output) COMPLEX array, dimension (LDVL,MM)
75               On entry, if SIDE = 'L' or 'B' and HOWMNY = 'B', VL  must  con‐
76               tain  an N-by-N matrix Q (usually the unitary matrix Q of Schur
77               vectors returned by CHSEQR).  On exit, if SIDE = 'L' or 'B', VL
78               contains: if HOWMNY = 'A', the matrix Y of left eigenvectors of
79               T; if HOWMNY = 'B', the matrix Q*Y; if HOWMNY = 'S',  the  left
80               eigenvectors  of T specified by SELECT, stored consecutively in
81               the columns of VL, in the same order as their eigenvalues.  Not
82               referenced if SIDE = 'R'.
83
84       LDVL    (input) INTEGER
85               The  leading dimension of the array VL.  LDVL >= 1, and if SIDE
86               = 'L' or 'B', LDVL >= N.
87
88       VR      (input/output) COMPLEX array, dimension (LDVR,MM)
89               On entry, if SIDE = 'R' or 'B' and HOWMNY = 'B', VR  must  con‐
90               tain  an N-by-N matrix Q (usually the unitary matrix Q of Schur
91               vectors returned by CHSEQR).  On exit, if SIDE = 'R' or 'B', VR
92               contains:  if  HOWMNY = 'A', the matrix X of right eigenvectors
93               of T; if HOWMNY = 'B', the matrix Q*X; if  HOWMNY  =  'S',  the
94               right  eigenvectors  of  T specified by SELECT, stored consecu‐
95               tively in the columns of VR, in the same order as their  eigen‐
96               values.  Not referenced if SIDE = 'L'.
97
98       LDVR    (input) INTEGER
99               The  leading dimension of the array VR.  LDVR >= 1, and if SIDE
100               = 'R' or 'B'; LDVR >= N.
101
102       MM      (input) INTEGER
103               The number of columns in the arrays VL and/or VR. MM >= M.
104
105       M       (output) INTEGER
106               The number of columns in the arrays VL and/or VR actually  used
107               to store the eigenvectors.  If HOWMNY = 'A' or 'B', M is set to
108               N.  Each selected eigenvector occupies one column.
109
110       WORK    (workspace) COMPLEX array, dimension (2*N)
111
112       RWORK   (workspace) REAL array, dimension (N)
113
114       INFO    (output) INTEGER
115               = 0:  successful exit
116               < 0:  if INFO = -i, the i-th argument had an illegal value
117

FURTHER DETAILS

119       The algorithm used in this program is basically backward (forward) sub‐
120       stitution,  with  scaling  to make the the code robust against possible
121       overflow.
122
123       Each eigenvector is normalized so that the element of largest magnitude
124       has  magnitude 1; here the magnitude of a complex number (x,y) is taken
125       to be |x| + |y|.
126
127
128
129
130 LAPACK routine (version 3.1)    November 2006                       CTREVC(1)
Impressum