1SSTEGR(1)         LAPACK computational routine (version 3.1)         SSTEGR(1)
2
3
4

NAME

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

SYNOPSIS

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

PURPOSE

28       SSTEGR computes selected eigenvalues and, optionally, eigenvectors of a
29       real symmetric tridiagonal matrix T. Any such unreduced  matrix  has  a
30       well  defined  set  of  pairwise different real eigenvalues, the corre‐
31       sponding real eigenvectors are pairwise orthogonal.
32
33       The spectrum may be computed either completely or partially by specify‐
34       ing  either  an  interval  (VL,VU]  or a range of indices IL:IU for the
35       desired eigenvalues.
36
37       SSTEGR is a compatability wrapper around the improved  SSTEMR  routine.
38       See SSTEMR for further details.
39
40       One  important  change  is that the ABSTOL parameter no longer provides
41       any benefit and hence is no longer used.
42
43       Note : SSTEGR and SSTEMR work only on machines  which  follow  IEEE-754
44       floating-point standard in their handling of infinities and NaNs.  Nor‐
45       mal execution may create these exceptiona values and  hence  may  abort
46       due  to a floating point exception in environments which do not conform
47       to the IEEE-754 standard.
48
49

ARGUMENTS

51       JOBZ    (input) CHARACTER*1
52               = 'N':  Compute eigenvalues only;
53               = 'V':  Compute eigenvalues and eigenvectors.
54
55       RANGE   (input) CHARACTER*1
56               = 'A': all eigenvalues will be found.
57               = 'V': all eigenvalues in the half-open interval  (VL,VU]  will
58               be  found.   = 'I': the IL-th through IU-th eigenvalues will be
59               found.
60
61       N       (input) INTEGER
62               The order of the matrix.  N >= 0.
63
64       D       (input/output) REAL array, dimension (N)
65               On entry, the N diagonal elements of the tridiagonal matrix  T.
66               On exit, D is overwritten.
67
68       E       (input/output) REAL array, dimension (N)
69               On  entry,  the  (N-1)  subdiagonal elements of the tridiagonal
70               matrix T in elements 1 to N-1 of E. E(N) need  not  be  set  on
71               input,  but  is  used  internally  as workspace.  On exit, E is
72               overwritten.
73
74       VL      (input) REAL
75               VU      (input) REAL If RANGE='V', the lower and  upper  bounds
76               of  the  interval to be searched for eigenvalues. VL < VU.  Not
77               referenced if RANGE = 'A' or 'I'.
78
79       IL      (input) INTEGER
80               IU      (input) INTEGER If RANGE='I', the indices (in ascending
81               order)  of the smallest and largest eigenvalues to be returned.
82               1 <= IL <= IU <= N, if N > 0.  Not referenced if RANGE = 'A' or
83               'V'.
84
85       ABSTOL  (input) REAL
86               Unused.   Was  the  absolute  error tolerance for the eigenval‐
87               ues/eigenvectors in previous versions.
88
89       M       (output) INTEGER
90               The total number of eigenvalues found.  0 <= M <= N.  If  RANGE
91               = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
92
93       W       (output) REAL array, dimension (N)
94               The  first  M  elements  contain  the  selected  eigenvalues in
95               ascending order.
96
97       Z       (output) REAL array, dimension (LDZ, max(1,M) )
98               If JOBZ = 'V', and if INFO = 0, then the first M columns  of  Z
99               contain  the  orthonormal  eigenvectors  of the matrix T corre‐
100               sponding to the selected eigenvalues, with the i-th column of Z
101               holding  the  eigenvector associated with W(i).  If JOBZ = 'N',
102               then Z is not referenced.  Note: the user must ensure  that  at
103               least  max(1,M) columns are supplied in the array Z; if RANGE =
104               'V', the exact value of M is not known in advance and an  upper
105               bound must be used.  Supplying N columns is always safe.
106
107       LDZ     (input) INTEGER
108               The  leading dimension of the array Z.  LDZ >= 1, and if JOBZ =
109               'V', then LDZ >= max(1,N).
110
111       ISUPPZ  (output) INTEGER ARRAY, dimension ( 2*max(1,M) )
112               The support of the eigenvectors in Z, i.e., the  indices  indi‐
113               cating the nonzero elements in Z. The i-th computed eigenvector
114               is nonzero only in elements ISUPPZ( 2*i-1 ) through ISUPPZ( 2*i
115               ).  This  is  relevant  in  the  case when the matrix is split.
116               ISUPPZ is only accessed when JOBZ is 'V' and N > 0.
117
118       WORK    (workspace/output) REAL array, dimension (LWORK)
119               On exit, if INFO = 0, WORK(1) returns the optimal (and minimal)
120               LWORK.
121
122       LWORK   (input) INTEGER
123               The dimension of the array WORK. LWORK >= max(1,18*N) if JOBZ =
124               'V', and LWORK >= max(1,12*N) if JOBZ = 'N'.  If  LWORK  =  -1,
125               then  a workspace query is assumed; the routine only calculates
126               the optimal size of the WORK array, returns this value  as  the
127               first  entry of the WORK array, and no error message related to
128               LWORK is issued by XERBLA.
129
130       IWORK   (workspace/output) INTEGER array, dimension (LIWORK)
131               On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
132
133       LIWORK  (input) INTEGER
134               The dimension of the array IWORK.  LIWORK >= max(1,10*N) if the
135               eigenvectors  are desired, and LIWORK >= max(1,8*N) if only the
136               eigenvalues are to  be  computed.   If  LIWORK  =  -1,  then  a
137               workspace  query  is  assumed;  the routine only calculates the
138               optimal size of the IWORK array,  returns  this  value  as  the
139               first entry of the IWORK array, and no error message related to
140               LIWORK is issued by XERBLA.
141
142       INFO    (output) INTEGER
143               On exit, INFO = 0:  successful exit
144               < 0:  if INFO = -i, the i-th argument had an illegal value
145               > 0:  if INFO = 1X, internal error in SLARRE,  if  INFO  =  2X,
146               internal  error  in SLARRV.  Here, the digit X = ABS( IINFO ) <
147               10, where IINFO is the nonzero error code returned by SLARRE or
148               SLARRV, respectively.
149

FURTHER DETAILS

151       Based on contributions by
152          Inderjit Dhillon, IBM Almaden, USA
153          Osni Marques, LBNL/NERSC, USA
154          Christof Voemel, LBNL/NERSC, USA
155
156
157
158
159 LAPACK computational routine (verNsoivoenmb3e.r1)2006                       SSTEGR(1)
Impressum