1ZHSEIN(1)                LAPACK routine (version 3.2)                ZHSEIN(1)
2
3
4

NAME

6       ZHSEIN  -  uses  inverse  iteration to find specified right and/or left
7       eigenvectors of a complex upper Hessenberg matrix H
8

SYNOPSIS

10       SUBROUTINE ZHSEIN( 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           DOUBLE         PRECISION RWORK( * )
22
23           COMPLEX*16     H(  LDH,  * ), VL( LDVL, * ), VR( LDVR, * ), W( * ),
24                          WORK( * )
25

PURPOSE

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

ARGUMENTS

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

FURTHER DETAILS

135       Each eigenvector is normalized so that the element of largest magnitude
136       has magnitude 1; here the magnitude of a complex number (x,y) is  taken
137       to be |x|+|y|.
138
139
140
141 LAPACK routine (version 3.2)    November 2008                       ZHSEIN(1)
Impressum