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

NAME

6       SSTEVR - computes selected eigenvalues and, optionally, eigenvectors of
7       a real symmetric tridiagonal matrix T
8

SYNOPSIS

10       SUBROUTINE SSTEVR( JOBZ, RANGE, N, D, E, VL, VU, IL, IU, ABSTOL, M,  W,
11                          Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO )
12
13           CHARACTER      JOBZ, RANGE
14
15           INTEGER        IL, INFO, IU, LDZ, LIWORK, LWORK, M, N
16
17           REAL           ABSTOL, VL, VU
18
19           INTEGER        ISUPPZ( * ), IWORK( * )
20
21           REAL           D( * ), E( * ), W( * ), WORK( * ), Z( LDZ, * )
22

PURPOSE

24       SSTEVR computes selected eigenvalues and, optionally, eigenvectors of a
25       real symmetric tridiagonal matrix T.  Eigenvalues and eigenvectors  can
26       be  selected  by  specifying  either  a  range  of values or a range of
27       indices for the desired eigenvalues.
28       Whenever possible, SSTEVR calls SSTEMR to compute the
29       eigenspectrum using Relatively Robust Representations.  SSTEMR computes
30       eigenvalues  by  the  dqds algorithm, while orthogonal eigenvectors are
31       computed from various "good" L D L^T  representations  (also  known  as
32       Relatively  Robust  Representations). Gram-Schmidt orthogonalization is
33       avoided as far as possible. More specifically, the various steps of the
34       algorithm are as follows. For the i-th unreduced block of T,
35          (a) Compute T - sigma_i = L_i D_i L_i^T, such that L_i D_i L_i^T
36               is a relatively robust representation,
37          (b) Compute the eigenvalues, lambda_j, of L_i D_i L_i^T to high
38              relative accuracy by the dqds algorithm,
39          (c) If there is a cluster of close eigenvalues, "choose" sigma_i
40              close to the cluster, and go to step (a),
41          (d) Given the approximate eigenvalue lambda_j of L_i D_i L_i^T,
42              compute the corresponding eigenvector by forming a
43              rank-revealing twisted factorization.
44       The desired accuracy of the output can be specified by the input param‐
45       eter ABSTOL.
46       For more details, see "A new O(n^2) algorithm for the symmetric  tridi‐
47       agonal  eigenvalue/eigenvector  problem", by Inderjit Dhillon, Computer
48       Science Division Technical Report No. UCB//CSD-97-971, UC Berkeley, May
49       1997.
50       Note  1  :  SSTEVR  calls SSTEMR when the full spectrum is requested on
51       machines which conform to the ieee-754 floating point standard.  SSTEVR
52       calls SSTEBZ and SSTEIN on non-ieee machines and
53       when partial spectrum requests are made.
54       Normal execution of SSTEMR may create NaNs and infinities and hence may
55       abort due to a floating point exception in environments  which  do  not
56       handle NaNs and infinities in the ieee standard default manner.
57

ARGUMENTS

59       JOBZ    (input) CHARACTER*1
60               = 'N':  Compute eigenvalues only;
61               = 'V':  Compute eigenvalues and eigenvectors.
62
63       RANGE   (input) CHARACTER*1
64               = 'A': all eigenvalues will be found.
65               =  'V':  all eigenvalues in the half-open interval (VL,VU] will
66               be found.  = 'I': the IL-th through IU-th eigenvalues  will  be
67               found.
68
69       N       (input) INTEGER
70               The order of the matrix.  N >= 0.
71
72       D       (input/output) REAL array, dimension (N)
73               On  entry, the n diagonal elements of the tridiagonal matrix A.
74               On exit, D may be multiplied by a  constant  factor  chosen  to
75               avoid over/underflow in computing the eigenvalues.
76
77       E       (input/output) REAL array, dimension (max(1,N-1))
78               On  entry,  the  (n-1)  subdiagonal elements of the tridiagonal
79               matrix A in elements 1 to N-1 of E.  On exit, E may  be  multi‐
80               plied  by  a  constant factor chosen to avoid over/underflow in
81               computing the eigenvalues.
82
83       VL      (input) REAL
84               VU      (input) REAL If RANGE='V', the lower and  upper  bounds
85               of  the  interval to be searched for eigenvalues. VL < VU.  Not
86               referenced if RANGE = 'A' or 'I'.
87
88       IL      (input) INTEGER
89               IU      (input) INTEGER If RANGE='I', the indices (in ascending
90               order)  of the smallest and largest eigenvalues to be returned.
91               1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.   Not
92               referenced if RANGE = 'A' or 'V'.
93
94       ABSTOL  (input) REAL
95               The  absolute error tolerance for the eigenvalues.  An approxi‐
96               mate eigenvalue is accepted as converged when it is  determined
97               to  lie  in  an  interval  [a,b] of width less than or equal to
98               ABSTOL + EPS *   max( |a|,|b| ) , where EPS is the machine pre‐
99               cision.  If ABSTOL is less than or equal to zero, then  EPS*|T|
100               will be used in its place, where  |T|  is  the  1-norm  of  the
101               tridiagonal  matrix obtained by reducing A to tridiagonal form.
102               See "Computing Small Singular  Values  of  Bidiagonal  Matrices
103               with  Guaranteed  High Relative Accuracy," by Demmel and Kahan,
104               LAPACK Working Note #3.  If high relative  accuracy  is  impor‐
105               tant,  set  ABSTOL  to SLAMCH( 'Safe minimum' ).  Doing so will
106               guarantee that eigenvalues are computed to high relative  accu‐
107               racy  when  possible in future releases.  The current code does
108               not make any  guarantees  about  high  relative  accuracy,  but
109               future  releases  will. See J. Barlow and J. Demmel, "Computing
110               Accurate Eigensystems of Scaled Diagonally Dominant  Matrices",
111               LAPACK  Working  Note  #7,  for  a discussion of which matrices
112               define their eigenvalues to high relative accuracy.
113
114       M       (output) INTEGER
115               The total number of eigenvalues found.  0 <= M <= N.  If  RANGE
116               = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
117
118       W       (output) REAL array, dimension (N)
119               The  first  M  elements  contain  the  selected  eigenvalues in
120               ascending order.
121
122       Z       (output) REAL array, dimension (LDZ, max(1,M) )
123               If JOBZ = 'V', then if INFO = 0, the first M columns of Z  con‐
124               tain the orthonormal eigenvectors of the matrix A corresponding
125               to the selected eigenvalues, with the i-th column of Z  holding
126               the  eigenvector  associated  with  W(i).   Note: the user must
127               ensure that at least max(1,M) columns are supplied in the array
128               Z; if RANGE = 'V', the exact value of M is not known in advance
129               and an upper bound must be used.
130
131       LDZ     (input) INTEGER
132               The leading dimension of the array Z.  LDZ >= 1, and if JOBZ  =
133               'V', LDZ >= max(1,N).
134
135       ISUPPZ  (output) INTEGER array, dimension ( 2*max(1,M) )
136               The  support  of the eigenvectors in Z, i.e., the indices indi‐
137               cating the nonzero elements  in  Z.  The  i-th  eigenvector  is
138               nonzero only in elements ISUPPZ( 2*i-1 ) through ISUPPZ( 2*i ).
139
140       WORK    (workspace/output) REAL array, dimension (MAX(1,LWORK))
141               On exit, if INFO = 0, WORK(1) returns the optimal (and minimal)
142               LWORK.
143
144       LWORK   (input) INTEGER
145               The dimension of the array WORK.  LWORK >= 20*N.   If  LWORK  =
146               -1,  then a workspace query is assumed; the routine only calcu‐
147               lates the optimal sizes of the WORK and IWORK  arrays,  returns
148               these values as the first entries of the WORK and IWORK arrays,
149               and no error message related to LWORK or LIWORK  is  issued  by
150               XERBLA.
151
152       IWORK   (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
153               On  exit,  if INFO = 0, IWORK(1) returns the optimal (and mini‐
154               mal) LIWORK.
155
156       LIWORK  (input) INTEGER
157               The dimension of the array IWORK.  LIWORK >= 10*N.  If LIWORK =
158               -1,  then a workspace query is assumed; the routine only calcu‐
159               lates the optimal sizes of the WORK and IWORK  arrays,  returns
160               these values as the first entries of the WORK and IWORK arrays,
161               and no error message related to LWORK or LIWORK  is  issued  by
162               XERBLA.
163
164       INFO    (output) INTEGER
165               = 0:  successful exit
166               < 0:  if INFO = -i, the i-th argument had an illegal value
167               > 0:  Internal error
168

FURTHER DETAILS

170       Based on contributions by
171          Inderjit Dhillon, IBM Almaden, USA
172          Osni Marques, LBNL/NERSC, USA
173          Ken Stanley, Computer Science Division, University of
174            California at Berkeley, USA
175          Jason Riedy, Computer Science Division, University of
176            California at Berkeley, USA
177
178
179
180 LAPACK driver routine (version 3.N2o)vember 2008                       SSTEVR(1)
Impressum