1ZHPEVX(1)             LAPACK driver routine (version 3.1)            ZHPEVX(1)
2
3
4

NAME

6       ZHPEVX  -  selected eigenvalues and, optionally, eigenvectors of a com‐
7       plex Hermitian matrix A in packed storage
8

SYNOPSIS

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

PURPOSE

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
31

ARGUMENTS

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