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

NAME

6       DSYEVR - computes selected eigenvalues and, optionally, eigenvectors of
7       a real symmetric matrix A
8

SYNOPSIS

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

PURPOSE

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

ARGUMENTS

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

FURTHER DETAILS

199       Based on contributions by
200          Inderjit Dhillon, IBM Almaden, USA
201          Osni Marques, LBNL/NERSC, USA
202          Ken Stanley, Computer Science Division, University of
203            California at Berkeley, USA
204          Jason Riedy, Computer Science Division, University of
205            California at Berkeley, USA
206
207
208
209 LAPACK driver routine (version 3.N2o)vember 2008                       DSYEVR(1)
Impressum