1ZHPEVX(1) LAPACK driver routine (version 3.2) ZHPEVX(1)
2
3
4
6 ZHPEVX - computes selected eigenvalues and, optionally, eigenvectors of
7 a complex Hermitian matrix A in packed storage
8
10 SUBROUTINE ZHPEVX( JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, ABSTOL, M,
11 W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO )
12
13 CHARACTER JOBZ, RANGE, UPLO
14
15 INTEGER IL, INFO, IU, LDZ, M, N
16
17 DOUBLE PRECISION ABSTOL, VL, VU
18
19 INTEGER IFAIL( * ), IWORK( * )
20
21 DOUBLE PRECISION RWORK( * ), W( * )
22
23 COMPLEX*16 AP( * ), WORK( * ), Z( LDZ, * )
24
26 ZHPEVX computes selected eigenvalues and, optionally, eigenvectors of a
27 complex Hermitian matrix A in packed storage. Eigenvalues/vectors can
28 be selected by specifying either a range of values or a range of
29 indices for the desired eigenvalues.
30
32 JOBZ (input) CHARACTER*1
33 = 'N': Compute eigenvalues only;
34 = 'V': Compute eigenvalues and eigenvectors.
35
36 RANGE (input) CHARACTER*1
37 = 'A': all eigenvalues will be found;
38 = 'V': all eigenvalues in the half-open interval (VL,VU] will
39 be found; = 'I': the IL-th through IU-th eigenvalues will be
40 found.
41
42 UPLO (input) CHARACTER*1
43 = 'U': Upper triangle of A is stored;
44 = 'L': Lower triangle of A is stored.
45
46 N (input) INTEGER
47 The order of the matrix A. N >= 0.
48
49 AP (input/output) COMPLEX*16 array, dimension (N*(N+1)/2)
50 On entry, the upper or lower triangle of the Hermitian matrix
51 A, packed columnwise in a linear array. The j-th column of A
52 is stored in the array AP as follows: if UPLO = 'U', AP(i +
53 (j-1)*j/2) = A(i,j) for 1<=i<=j; if UPLO = 'L', AP(i +
54 (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n. On exit, AP is over‐
55 written by values generated during the reduction to tridiagonal
56 form. If UPLO = 'U', the diagonal and first superdiagonal of
57 the tridiagonal matrix T overwrite the corresponding elements
58 of A, and if UPLO = 'L', the diagonal and first subdiagonal of
59 T overwrite the corresponding elements of A.
60
61 VL (input) DOUBLE PRECISION
62 VU (input) DOUBLE PRECISION If RANGE='V', the lower and
63 upper bounds of the interval to be searched for eigenvalues. VL
64 < VU. Not referenced if RANGE = 'A' or 'I'.
65
66 IL (input) INTEGER
67 IU (input) INTEGER If RANGE='I', the indices (in ascending
68 order) of the smallest and largest eigenvalues to be returned.
69 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. Not
70 referenced if RANGE = 'A' or 'V'.
71
72 ABSTOL (input) DOUBLE PRECISION
73 The absolute error tolerance for the eigenvalues. An approxi‐
74 mate eigenvalue is accepted as converged when it is determined
75 to lie in an interval [a,b] of width less than or equal to
76 ABSTOL + EPS * max( |a|,|b| ) , where EPS is the machine pre‐
77 cision. If ABSTOL is less than or equal to zero, then EPS*|T|
78 will be used in its place, where |T| is the 1-norm of the
79 tridiagonal matrix obtained by reducing AP to tridiagonal form.
80 Eigenvalues will be computed most accurately when ABSTOL is set
81 to twice the underflow threshold 2*DLAMCH('S'), not zero. If
82 this routine returns with INFO>0, indicating that some eigen‐
83 vectors did not converge, try setting ABSTOL to 2*DLAMCH('S').
84 See "Computing Small Singular Values of Bidiagonal Matrices
85 with Guaranteed High Relative Accuracy," by Demmel and Kahan,
86 LAPACK Working Note #3.
87
88 M (output) INTEGER
89 The total number of eigenvalues found. 0 <= M <= N. If RANGE
90 = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
91
92 W (output) DOUBLE PRECISION array, dimension (N)
93 If INFO = 0, the selected eigenvalues in ascending order.
94
95 Z (output) COMPLEX*16 array, dimension (LDZ, max(1,M))
96 If JOBZ = 'V', then if INFO = 0, the first M columns of Z con‐
97 tain the orthonormal eigenvectors of the matrix A corresponding
98 to the selected eigenvalues, with the i-th column of Z holding
99 the eigenvector associated with W(i). If an eigenvector fails
100 to converge, then that column of Z contains the latest approxi‐
101 mation to the eigenvector, and the index of the eigenvector is
102 returned in IFAIL. If JOBZ = 'N', then Z is not referenced.
103 Note: the user must ensure that at least max(1,M) columns are
104 supplied in the array Z; if RANGE = 'V', the exact value of M
105 is not known in advance and an upper bound must be used.
106
107 LDZ (input) INTEGER
108 The leading dimension of the array Z. LDZ >= 1, and if JOBZ =
109 'V', LDZ >= max(1,N).
110
111 WORK (workspace) COMPLEX*16 array, dimension (2*N)
112
113 RWORK (workspace) DOUBLE PRECISION array, dimension (7*N)
114
115 IWORK (workspace) INTEGER array, dimension (5*N)
116
117 IFAIL (output) INTEGER array, dimension (N)
118 If JOBZ = 'V', then if INFO = 0, the first M elements of IFAIL
119 are zero. If INFO > 0, then IFAIL contains the indices of the
120 eigenvectors that failed to converge. If JOBZ = 'N', then
121 IFAIL is not referenced.
122
123 INFO (output) INTEGER
124 = 0: successful exit
125 < 0: if INFO = -i, the i-th argument had an illegal value
126 > 0: if INFO = i, then i eigenvectors failed to converge.
127 Their indices are stored in array IFAIL.
128
129
130
131 LAPACK driver routine (version 3.N2o)vember 2008 ZHPEVX(1)