1ZHBGVX(1) LAPACK driver routine (version 3.1) ZHBGVX(1)
2
3
4
6 ZHBGVX - all the eigenvalues, and optionally, the eigenvectors of a
7 complex generalized Hermitian-definite banded eigenproblem, of the form
8 A*x=(lambda)*B*x
9
11 SUBROUTINE ZHBGVX( JOBZ, RANGE, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, Q,
12 LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK,
13 RWORK, IWORK, IFAIL, INFO )
14
15 CHARACTER JOBZ, RANGE, UPLO
16
17 INTEGER IL, INFO, IU, KA, KB, LDAB, LDBB, LDQ, LDZ, M, N
18
19 DOUBLE PRECISION ABSTOL, VL, VU
20
21 INTEGER IFAIL( * ), IWORK( * )
22
23 DOUBLE PRECISION RWORK( * ), W( * )
24
25 COMPLEX*16 AB( LDAB, * ), BB( LDBB, * ), Q( LDQ, * ), WORK( *
26 ), Z( LDZ, * )
27
29 ZHBGVX computes all the eigenvalues, and optionally, the eigenvectors
30 of a complex generalized Hermitian-definite banded eigenproblem, of the
31 form A*x=(lambda)*B*x. Here A and B are assumed to be Hermitian and
32 banded, and B is also positive definite. Eigenvalues and eigenvectors
33 can be selected by specifying either all eigenvalues, a range of values
34 or a range of indices for the desired eigenvalues.
35
36
38 JOBZ (input) CHARACTER*1
39 = 'N': Compute eigenvalues only;
40 = 'V': Compute eigenvalues and eigenvectors.
41
42 RANGE (input) CHARACTER*1
43 = 'A': all eigenvalues will be found;
44 = 'V': all eigenvalues in the half-open interval (VL,VU] will
45 be found; = 'I': the IL-th through IU-th eigenvalues will be
46 found.
47
48 UPLO (input) CHARACTER*1
49 = 'U': Upper triangles of A and B are stored;
50 = 'L': Lower triangles of A and B are stored.
51
52 N (input) INTEGER
53 The order of the matrices A and B. N >= 0.
54
55 KA (input) INTEGER
56 The number of superdiagonals of the matrix A if UPLO = 'U', or
57 the number of subdiagonals if UPLO = 'L'. KA >= 0.
58
59 KB (input) INTEGER
60 The number of superdiagonals of the matrix B if UPLO = 'U', or
61 the number of subdiagonals if UPLO = 'L'. KB >= 0.
62
63 AB (input/output) COMPLEX*16 array, dimension (LDAB, N)
64 On entry, the upper or lower triangle of the Hermitian band
65 matrix A, stored in the first ka+1 rows of the array. The j-th
66 column of A is stored in the j-th column of the array AB as
67 follows: if UPLO = 'U', AB(ka+1+i-j,j) = A(i,j) for max(1,j-
68 ka)<=i<=j; if UPLO = 'L', AB(1+i-j,j) = A(i,j) for
69 j<=i<=min(n,j+ka).
70
71 On exit, the contents of AB are destroyed.
72
73 LDAB (input) INTEGER
74 The leading dimension of the array AB. LDAB >= KA+1.
75
76 BB (input/output) COMPLEX*16 array, dimension (LDBB, N)
77 On entry, the upper or lower triangle of the Hermitian band
78 matrix B, stored in the first kb+1 rows of the array. The j-th
79 column of B is stored in the j-th column of the array BB as
80 follows: if UPLO = 'U', BB(kb+1+i-j,j) = B(i,j) for max(1,j-
81 kb)<=i<=j; if UPLO = 'L', BB(1+i-j,j) = B(i,j) for
82 j<=i<=min(n,j+kb).
83
84 On exit, the factor S from the split Cholesky factorization B =
85 S**H*S, as returned by ZPBSTF.
86
87 LDBB (input) INTEGER
88 The leading dimension of the array BB. LDBB >= KB+1.
89
90 Q (output) COMPLEX*16 array, dimension (LDQ, N)
91 If JOBZ = 'V', the n-by-n matrix used in the reduction of A*x =
92 (lambda)*B*x to standard form, i.e. C*x = (lambda)*x, and con‐
93 sequently C to tridiagonal form. If JOBZ = 'N', the array Q is
94 not referenced.
95
96 LDQ (input) INTEGER
97 The leading dimension of the array Q. If JOBZ = 'N', LDQ >= 1.
98 If JOBZ = 'V', LDQ >= max(1,N).
99
100 VL (input) DOUBLE PRECISION
101 VU (input) DOUBLE PRECISION If RANGE='V', the lower and
102 upper bounds of the interval to be searched for eigenvalues. VL
103 < VU. Not referenced if RANGE = 'A' or 'I'.
104
105 IL (input) INTEGER
106 IU (input) INTEGER If RANGE='I', the indices (in ascending
107 order) of the smallest and largest eigenvalues to be returned.
108 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not
109 referenced if RANGE = 'A' or 'V'.
110
111 ABSTOL (input) DOUBLE PRECISION
112 The absolute error tolerance for the eigenvalues. An approxi‐
113 mate eigenvalue is accepted as converged when it is determined
114 to lie in an interval [a,b] of width less than or equal to
115
116 ABSTOL + EPS * max( |a|,|b| ) ,
117
118 where EPS is the machine precision. If ABSTOL is less than or
119 equal to zero, then EPS*|T| will be used in its place, where
120 |T| is the 1-norm of the tridiagonal matrix obtained by reduc‐
121 ing AP to tridiagonal form.
122
123 Eigenvalues will be computed most accurately when ABSTOL is set
124 to twice the underflow threshold 2*DLAMCH('S'), not zero. If
125 this routine returns with INFO>0, indicating that some eigen‐
126 vectors did not converge, try setting ABSTOL to 2*DLAMCH('S').
127
128 M (output) INTEGER
129 The total number of eigenvalues found. 0 <= M <= N. If RANGE
130 = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
131
132 W (output) DOUBLE PRECISION array, dimension (N)
133 If INFO = 0, the eigenvalues in ascending order.
134
135 Z (output) COMPLEX*16 array, dimension (LDZ, N)
136 If JOBZ = 'V', then if INFO = 0, Z contains the matrix Z of
137 eigenvectors, with the i-th column of Z holding the eigenvector
138 associated with W(i). The eigenvectors are normalized so that
139 Z**H*B*Z = I. If JOBZ = 'N', then Z is not referenced.
140
141 LDZ (input) INTEGER
142 The leading dimension of the array Z. LDZ >= 1, and if JOBZ =
143 'V', LDZ >= N.
144
145 WORK (workspace) COMPLEX*16 array, dimension (N)
146
147 RWORK (workspace) DOUBLE PRECISION array, dimension (7*N)
148
149 IWORK (workspace) INTEGER array, dimension (5*N)
150
151 IFAIL (output) INTEGER array, dimension (N)
152 If JOBZ = 'V', then if INFO = 0, the first M elements of IFAIL
153 are zero. If INFO > 0, then IFAIL contains the indices of the
154 eigenvectors that failed to converge. If JOBZ = 'N', then
155 IFAIL is not referenced.
156
157 INFO (output) INTEGER
158 = 0: successful exit
159 < 0: if INFO = -i, the i-th argument had an illegal value
160 > 0: if INFO = i, and i is:
161 <= N: then i eigenvectors failed to converge. Their indices
162 are stored in array IFAIL. > N: if INFO = N + i, for 1 <= i
163 <= N, then ZPBSTF
164 returned INFO = i: B is not positive definite. The factoriza‐
165 tion of B could not be completed and no eigenvalues or eigen‐
166 vectors were computed.
167
169 Based on contributions by
170 Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
171
172
173
174
175 LAPACK driver routine (version 3.N1o)vember 2006 ZHBGVX(1)