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

NAME

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

SYNOPSIS

10       SUBROUTINE ZSTEGR( 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           DOUBLE         PRECISION ABSTOL, VL, VU
20
21           INTEGER        ISUPPZ( * ), IWORK( * )
22
23           DOUBLE         PRECISION D( * ), E( * ), W( * ), WORK( * )
24
25           COMPLEX*16     Z( LDZ, * )
26

PURPOSE

28       ZSTEGR 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       ZSTEGR is a compatability wrapper around the improved  ZSTEMR  routine.
38       See DSTEMR 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 : ZSTEGR and ZSTEMR 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION
75               VU      (input) DOUBLE PRECISION If RANGE='V',  the  lower  and
76               upper bounds of the interval to be searched for eigenvalues. VL
77               < VU.  Not 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) DOUBLE PRECISION
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) DOUBLE PRECISION array, dimension (N)
94               The  first  M  elements  contain  the  selected  eigenvalues in
95               ascending order.
96
97       Z       (output) COMPLEX*16 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) DOUBLE PRECISION 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 DLARRE,  if  INFO  =  2X,
146               internal  error  in ZLARRV.  Here, the digit X = ABS( IINFO ) <
147               10, where IINFO is the nonzero error code returned by DLARRE or
148               ZLARRV, 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                       ZSTEGR(1)
Impressum