1ZHEEVR(1)             LAPACK driver routine (version 3.2)            ZHEEVR(1)
2
3
4

NAME

6       ZHEEVR - computes selected eigenvalues and, optionally, eigenvectors of
7       a complex Hermitian matrix A
8

SYNOPSIS

10       SUBROUTINE ZHEEVR( JOBZ, RANGE, UPLO,  N,  A,  LDA,  VL,  VU,  IL,  IU,
11                          ABSTOL,  M,  W,  Z, LDZ, ISUPPZ, WORK, LWORK, RWORK,
12                          LRWORK, IWORK, LIWORK, INFO )
13
14           CHARACTER      JOBZ, RANGE, UPLO
15
16           INTEGER        IL, INFO, IU, LDA, LDZ, LIWORK, LRWORK, LWORK, M, N
17
18           DOUBLE         PRECISION ABSTOL, VL, VU
19
20           INTEGER        ISUPPZ( * ), IWORK( * )
21
22           DOUBLE         PRECISION RWORK( * ), W( * )
23
24           COMPLEX*16     A( LDA, * ), WORK( * ), Z( LDZ, * )
25

PURPOSE

27       ZHEEVR computes selected eigenvalues and, optionally, eigenvectors of a
28       complex  Hermitian  matrix  A.   Eigenvalues  and  eigenvectors  can be
29       selected by specifying either a range of values or a range  of  indices
30       for the desired eigenvalues.
31       ZHEEVR  first reduces the matrix A to tridiagonal form T with a call to
32       ZHETRD.  Then, whenever possible, ZHEEVR calls ZSTEMR to compute eigen‐
33       spectrum  using Relatively Robust Representations.  ZSTEMR computes ei‐
34       genvalues by the dqds algorithm, while orthogonal eigenvectors are com‐
35       puted  from various "good" L D L^T representations (also known as Rela‐
36       tively  Robust  Representations).  Gram-Schmidt  orthogonalization   is
37       avoided as far as possible. More specifically, the various steps of the
38       algorithm are as follows.
39       For each unreduced block (submatrix) of T,
40          (a) Compute T - sigma I  = L D L^T, so that L and D
41              define all the wanted eigenvalues to high relative accuracy.
42              This means that small relative changes in the entries of D and L
43              cause only small relative changes in the eigenvalues and
44              eigenvectors. The standard (unfactored) representation of the
45              tridiagonal matrix T does not have this property in general.
46          (b) Compute the eigenvalues to suitable accuracy.
47              If the eigenvectors are desired, the algorithm attains full
48              accuracy of the computed eigenvalues only right before
49              the corresponding vectors have to be computed, see steps c)  and
50       d).
51          (c) For each cluster of close eigenvalues, select a new
52              shift close to the cluster, find a new factorization, and refine
53              the shifted eigenvalues to suitable accuracy.
54          (d) For each eigenvalue with a large enough relative separation com‐
55       pute
56              the  corresponding  eigenvector  by  forming  a  rank  revealing
57       twisted
58              factorization. Go back to (c) for any clusters that remain.  The
59       desired accuracy of the output can be specified by the input  parameter
60       ABSTOL.
61       For more details, see DSTEMR's documentation and:
62       -  Inderjit  S. Dhillon and Beresford N. Parlett: "Multiple representa‐
63       tions
64         to compute orthogonal eigenvectors of  symmetric  tridiagonal  matri‐
65       ces,"
66         Linear  Algebra  and its Applications, 387(1), pp. 1-28, August 2004.
67       - Inderjit Dhillon and Beresford Parlett: "Orthogonal Eigenvectors and
68         Relative Gaps," SIAM Journal on  Matrix  Analysis  and  Applications,
69       Vol. 25,
70         2004.  Also LAPACK Working Note 154.
71       - Inderjit Dhillon: "A new O(n^2) algorithm for the symmetric
72         tridiagonal eigenvalue/eigenvector problem",
73         Computer Science Division Technical Report No. UCB/CSD-97-971,
74         UC Berkeley, May 1997.
75       Note  1  :  ZHEEVR  calls ZSTEMR when the full spectrum is requested on
76       machines which conform to the ieee-754 floating point standard.  ZHEEVR
77       calls DSTEBZ and ZSTEIN on non-ieee machines and
78       when partial spectrum requests are made.
79       Normal execution of ZSTEMR may create NaNs and infinities and hence may
80       abort due to a floating point exception in environments  which  do  not
81       handle NaNs and infinities in the ieee standard default manner.
82

ARGUMENTS

84       JOBZ    (input) CHARACTER*1
85               = 'N':  Compute eigenvalues only;
86               = 'V':  Compute eigenvalues and eigenvectors.
87
88       RANGE   (input) CHARACTER*1
89               = 'A': all eigenvalues will be found.
90               =  'V':  all eigenvalues in the half-open interval (VL,VU] will
91               be found.  = 'I': the IL-th through IU-th eigenvalues  will  be
92               found.
93
94       UPLO    (input) CHARACTER*1
95               = 'U':  Upper triangle of A is stored;
96               = 'L':  Lower triangle of A is stored.
97
98       N       (input) INTEGER
99               The order of the matrix A.  N >= 0.
100
101       A       (input/output) COMPLEX*16 array, dimension (LDA, N)
102               On  entry,  the Hermitian matrix A.  If UPLO = 'U', the leading
103               N-by-N upper triangular part of A contains the upper triangular
104               part  of the matrix A.  If UPLO = 'L', the leading N-by-N lower
105               triangular part of A contains the lower triangular part of  the
106               matrix  A.   On  exit,  the lower triangle (if UPLO='L') or the
107               upper triangle (if UPLO='U') of A, including the  diagonal,  is
108               destroyed.
109
110       LDA     (input) INTEGER
111               The leading dimension of the array A.  LDA >= max(1,N).
112
113       VL      (input) DOUBLE PRECISION
114               VU       (input)  DOUBLE  PRECISION If RANGE='V', the lower and
115               upper bounds of the interval to be searched for eigenvalues. VL
116               < VU.  Not referenced if RANGE = 'A' or 'I'.
117
118       IL      (input) INTEGER
119               IU      (input) INTEGER If RANGE='I', the indices (in ascending
120               order) of the smallest and largest eigenvalues to be  returned.
121               1  <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.  Not
122               referenced if RANGE = 'A' or 'V'.
123
124       ABSTOL  (input) DOUBLE PRECISION
125               The absolute error tolerance for the eigenvalues.  An  approxi‐
126               mate  eigenvalue is accepted as converged when it is determined
127               to lie in an interval [a,b] of width  less  than  or  equal  to
128               ABSTOL + EPS *   max( |a|,|b| ) , where EPS is the machine pre‐
129               cision.  If ABSTOL is less than or equal to zero, then  EPS*|T|
130               will  be  used  in  its  place,  where |T| is the 1-norm of the
131               tridiagonal matrix obtained by reducing A to tridiagonal  form.
132               See  "Computing  Small  Singular  Values of Bidiagonal Matrices
133               with Guaranteed High Relative Accuracy," by Demmel  and  Kahan,
134               LAPACK  Working  Note  #3.  If high relative accuracy is impor‐
135               tant, set ABSTOL to DLAMCH( 'Safe minimum' ).   Doing  so  will
136               guarantee  that eigenvalues are computed to high relative accu‐
137               racy when possible in future releases.  The current  code  does
138               not  make  any  guarantees  about  high  relative accuracy, but
139               furutre releases will. See J. Barlow and J. Demmel,  "Computing
140               Accurate  Eigensystems of Scaled Diagonally Dominant Matrices",
141               LAPACK Working Note #7, for  a  discussion  of  which  matrices
142               define their eigenvalues to high relative accuracy.
143
144       M       (output) INTEGER
145               The  total number of eigenvalues found.  0 <= M <= N.  If RANGE
146               = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
147
148       W       (output) DOUBLE PRECISION array, dimension (N)
149               The first  M  elements  contain  the  selected  eigenvalues  in
150               ascending order.
151
152       Z       (output) COMPLEX*16 array, dimension (LDZ, max(1,M))
153               If  JOBZ = 'V', then if INFO = 0, the first M columns of Z con‐
154               tain the orthonormal eigenvectors of the matrix A corresponding
155               to  the selected eigenvalues, with the i-th column of Z holding
156               the eigenvector associated with W(i).  If JOBZ = 'N', then Z is
157               not  referenced.   Note:  the  user  must  ensure that at least
158               max(1,M) columns are supplied in the array Z; if RANGE  =  'V',
159               the exact value of M is not known in advance and an upper bound
160               must be used.
161
162       LDZ     (input) INTEGER
163               The leading dimension of the array Z.  LDZ >= 1, and if JOBZ  =
164               'V', LDZ >= max(1,N).
165
166       ISUPPZ  (output) INTEGER array, dimension ( 2*max(1,M) )
167               The  support  of the eigenvectors in Z, i.e., the indices indi‐
168               cating the nonzero elements  in  Z.  The  i-th  eigenvector  is
169               nonzero only in elements ISUPPZ( 2*i-1 ) through ISUPPZ( 2*i ).
170
171       WORK    (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
172               On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
173
174       LWORK   (input) INTEGER
175               The  length of the array WORK.  LWORK >= max(1,2*N).  For opti‐
176               mal efficiency, LWORK >= (NB+1)*N, where NB is the max  of  the
177               blocksize  for ZHETRD and for ZUNMTR as returned by ILAENV.  If
178               LWORK = -1, then a workspace query is assumed; the routine only
179               calculates  the  optimal  sizes  of  the  WORK, RWORK and IWORK
180               arrays, returns these values as the first entries of the  WORK,
181               RWORK  and  IWORK arrays, and no error message related to LWORK
182               or LRWORK or LIWORK is issued by XERBLA.
183
184       RWORK     (workspace/output)   DOUBLE   PRECISION   array,    dimension
185       (MAX(1,LRWORK))
186               On  exit,  if INFO = 0, RWORK(1) returns the optimal (and mini‐
187               mal) LRWORK.   The  length  of  the  array  RWORK.   LRWORK  >=
188               max(1,24*N).   If  LRWORK  =  -1,  then  a  workspace  query is
189               assumed; the routine only calculates the optimal sizes  of  the
190               WORK, RWORK and IWORK arrays, returns these values as the first
191               entries of the WORK, RWORK and IWORK arrays, and no error  mes‐
192               sage related to LWORK or LRWORK or LIWORK is issued by XERBLA.
193
194       IWORK   (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
195               On  exit,  if INFO = 0, IWORK(1) returns the optimal (and mini‐
196               mal) LIWORK.  The dimension of  the  array  IWORK.   LIWORK  >=
197               max(1,10*N).   If  LIWORK  =  -1,  then  a  workspace  query is
198               assumed; the routine only calculates the optimal sizes  of  the
199               WORK, RWORK and IWORK arrays, returns these values as the first
200               entries of the WORK, RWORK and IWORK arrays, and no error  mes‐
201               sage related to LWORK or LRWORK or LIWORK is issued by XERBLA.
202
203       INFO    (output) INTEGER
204               = 0:  successful exit
205               < 0:  if INFO = -i, the i-th argument had an illegal value
206               > 0:  Internal error
207

FURTHER DETAILS

209       Based on contributions by
210          Inderjit Dhillon, IBM Almaden, USA
211          Osni Marques, LBNL/NERSC, USA
212          Ken Stanley, Computer Science Division, University of
213            California at Berkeley, USA
214          Jason Riedy, Computer Science Division, University of
215            California at Berkeley, USA
216
217
218
219 LAPACK driver routine (version 3.N2o)vember 2008                       ZHEEVR(1)
Impressum