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

NAME

6       CHSEIN  -  inverse iteration to find specified right and/or left eigen‐
7       vectors of a complex upper Hessenberg matrix H
8

SYNOPSIS

10       SUBROUTINE CHSEIN( SIDE, EIGSRC, INITV, SELECT, N, H, LDH, W, VL, LDVL,
11                          VR, LDVR, MM, M, WORK, RWORK, IFAILL, IFAILR, INFO )
12
13           CHARACTER      EIGSRC, INITV, SIDE
14
15           INTEGER        INFO, LDH, LDVL, LDVR, M, MM, N
16
17           LOGICAL        SELECT( * )
18
19           INTEGER        IFAILL( * ), IFAILR( * )
20
21           REAL           RWORK( * )
22
23           COMPLEX        H(  LDH,  * ), VL( LDVL, * ), VR( LDVR, * ), W( * ),
24                          WORK( * )
25

PURPOSE

27       CHSEIN uses inverse iteration  to  find  specified  right  and/or  left
28       eigenvectors of a complex upper Hessenberg matrix H.
29
30       The right eigenvector x and the left eigenvector y of the matrix H cor‐
31       responding to an eigenvalue w are defined by:
32
33                    H * x = w * x,     y**h * H = w * y**h
34
35       where y**h denotes the conjugate transpose of the vector y.
36
37

ARGUMENTS

39       SIDE    (input) CHARACTER*1
40               = 'R': compute right eigenvectors only;
41               = 'L': compute left eigenvectors only;
42               = 'B': compute both right and left eigenvectors.
43
44       EIGSRC  (input) CHARACTER*1
45               Specifies the source of eigenvalues supplied in W:
46               = 'Q': the eigenvalues were found using CHSEQR; thus, if H  has
47               zero subdiagonal elements, and so is block-triangular, then the
48               j-th eigenvalue can be assumed to be an eigenvalue of the block
49               containing the j-th row/column.  This property allows CHSEIN to
50               perform inverse iteration on just one diagonal block.   =  'N':
51               no assumptions are made on the correspondence between eigenval‐
52               ues and diagonal blocks.  In this case, CHSEIN must always per‐
53               form inverse iteration using the whole matrix H.
54
55       INITV   (input) CHARACTER*1
56               = 'N': no initial vectors are supplied;
57               =  'U':  user-supplied initial vectors are stored in the arrays
58               VL and/or VR.
59
60       SELECT  (input) LOGICAL array, dimension (N)
61               Specifies the eigenvectors to be computed. To select the eigen‐
62               vector  corresponding to the eigenvalue W(j), SELECT(j) must be
63               set to .TRUE..
64
65       N       (input) INTEGER
66               The order of the matrix H.  N >= 0.
67
68       H       (input) COMPLEX array, dimension (LDH,N)
69               The upper Hessenberg matrix H.
70
71       LDH     (input) INTEGER
72               The leading dimension of the array H.  LDH >= max(1,N).
73
74       W       (input/output) COMPLEX array, dimension (N)
75               On entry, the eigenvalues of H.  On exit, the real parts  of  W
76               may  have  been  altered  since close eigenvalues are perturbed
77               slightly in searching for independent eigenvectors.
78
79       VL      (input/output) COMPLEX array, dimension (LDVL,MM)
80               On entry, if INITV = 'U' and SIDE = 'L' or 'B', VL must contain
81               starting  vectors for the inverse iteration for the left eigen‐
82               vectors; the starting vector for each eigenvector  must  be  in
83               the  same  column  in which the eigenvector will be stored.  On
84               exit, if SIDE = 'L' or 'B', the left eigenvectors specified  by
85               SELECT  will  be  stored consecutively in the columns of VL, in
86               the same order as their eigenvalues.  If SIDE = 'R', VL is  not
87               referenced.
88
89       LDVL    (input) INTEGER
90               The  leading  dimension  of  the array VL.  LDVL >= max(1,N) if
91               SIDE = 'L' or 'B'; LDVL >= 1 otherwise.
92
93       VR      (input/output) COMPLEX array, dimension (LDVR,MM)
94               On entry, if INITV = 'U' and SIDE = 'R' or 'B', VR must contain
95               starting vectors for the inverse iteration for the right eigen‐
96               vectors; the starting vector for each eigenvector  must  be  in
97               the  same  column  in which the eigenvector will be stored.  On
98               exit, if SIDE = 'R' or 'B', the right eigenvectors specified by
99               SELECT  will  be  stored consecutively in the columns of VR, in
100               the same order as their eigenvalues.  If SIDE = 'L', VR is  not
101               referenced.
102
103       LDVR    (input) INTEGER
104               The  leading  dimension  of  the array VR.  LDVR >= max(1,N) if
105               SIDE = 'R' or 'B'; LDVR >= 1 otherwise.
106
107       MM      (input) INTEGER
108               The number of columns in the arrays VL and/or VR. MM >= M.
109
110       M       (output) INTEGER
111               The number of columns in the arrays VL and/or  VR  required  to
112               store  the  eigenvectors  (=  the  number of .TRUE. elements in
113               SELECT).
114
115       WORK    (workspace) COMPLEX array, dimension (N*N)
116
117       RWORK   (workspace) REAL array, dimension (N)
118
119       IFAILL  (output) INTEGER array, dimension (MM)
120               If SIDE = 'L' or 'B', IFAILL(i) = j > 0 if the left eigenvector
121               in the i-th column of VL (corresponding to the eigenvalue w(j))
122               failed to converge; IFAILL(i) = 0 if the eigenvector  converged
123               satisfactorily.  If SIDE = 'R', IFAILL is not referenced.
124
125       IFAILR  (output) INTEGER array, dimension (MM)
126               If  SIDE = 'R' or 'B', IFAILR(i) = j > 0 if the right eigenvec‐
127               tor in the i-th column of VR (corresponding to  the  eigenvalue
128               w(j)) failed to converge; IFAILR(i) = 0 if the eigenvector con‐
129               verged satisfactorily.  If SIDE = 'L',  IFAILR  is  not  refer‐
130               enced.
131
132       INFO    (output) INTEGER
133               = 0:  successful exit
134               < 0:  if INFO = -i, the i-th argument had an illegal value
135               > 0:  if INFO = i, i is the number of eigenvectors which failed
136               to converge; see IFAILL and IFAILR for further details.
137

FURTHER DETAILS

139       Each eigenvector is normalized so that the element of largest magnitude
140       has  magnitude 1; here the magnitude of a complex number (x,y) is taken
141       to be |x|+|y|.
142
143
144
145
146 LAPACK routine (version 3.1)    November 2006                       CHSEIN(1)
Impressum