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