1ZSTEGR(1) LAPACK computational routine (version 3.2) ZSTEGR(1)
2
3
4
6 ZSTEGR - computes selected eigenvalues and, optionally, eigenvectors of
7 a real symmetric tridiagonal matrix T
8
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
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 The spectrum may be computed either completely or partially by specify‐
33 ing either an interval (VL,VU] or a range of indices IL:IU for the
34 desired eigenvalues.
35 ZSTEGR is a compatability wrapper around the improved ZSTEMR routine.
36 See DSTEMR for further details.
37 One important change is that the ABSTOL parameter no longer provides
38 any benefit and hence is no longer used.
39 Note : ZSTEGR and ZSTEMR work only on machines which follow IEEE-754
40 floating-point standard in their handling of infinities and NaNs. Nor‐
41 mal execution may create these exceptiona values and hence may abort
42 due to a floating point exception in environments which do not conform
43 to the IEEE-754 standard.
44
46 JOBZ (input) CHARACTER*1
47 = 'N': Compute eigenvalues only;
48 = 'V': Compute eigenvalues and eigenvectors.
49
50 RANGE (input) CHARACTER*1
51 = 'A': all eigenvalues will be found.
52 = 'V': all eigenvalues in the half-open interval (VL,VU] will
53 be found. = 'I': the IL-th through IU-th eigenvalues will be
54 found.
55
56 N (input) INTEGER
57 The order of the matrix. N >= 0.
58
59 D (input/output) DOUBLE PRECISION array, dimension (N)
60 On entry, the N diagonal elements of the tridiagonal matrix T.
61 On exit, D is overwritten.
62
63 E (input/output) DOUBLE PRECISION array, dimension (N)
64 On entry, the (N-1) subdiagonal elements of the tridiagonal
65 matrix T in elements 1 to N-1 of E. E(N) need not be set on
66 input, but is used internally as workspace. On exit, E is
67 overwritten.
68
69 VL (input) DOUBLE PRECISION
70 VU (input) DOUBLE PRECISION If RANGE='V', the lower and
71 upper bounds of the interval to be searched for eigenvalues. VL
72 < VU. Not referenced if RANGE = 'A' or 'I'.
73
74 IL (input) INTEGER
75 IU (input) INTEGER If RANGE='I', the indices (in ascending
76 order) of the smallest and largest eigenvalues to be returned.
77 1 <= IL <= IU <= N, if N > 0. Not referenced if RANGE = 'A' or
78 'V'.
79
80 ABSTOL (input) DOUBLE PRECISION
81 Unused. Was the absolute error tolerance for the eigenval‐
82 ues/eigenvectors in previous versions.
83
84 M (output) INTEGER
85 The total number of eigenvalues found. 0 <= M <= N. If RANGE
86 = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
87
88 W (output) DOUBLE PRECISION array, dimension (N)
89 The first M elements contain the selected eigenvalues in
90 ascending order.
91
92 Z (output) COMPLEX*16 array, dimension (LDZ, max(1,M) )
93 If JOBZ = 'V', and if INFO = 0, then the first M columns of Z
94 contain the orthonormal eigenvectors of the matrix T corre‐
95 sponding to the selected eigenvalues, with the i-th column of Z
96 holding the eigenvector associated with W(i). If JOBZ = 'N',
97 then Z is not referenced. Note: the user must ensure that at
98 least max(1,M) columns are supplied in the array Z; if RANGE =
99 'V', the exact value of M is not known in advance and an upper
100 bound must be used. Supplying N columns is always safe.
101
102 LDZ (input) INTEGER
103 The leading dimension of the array Z. LDZ >= 1, and if JOBZ =
104 'V', then LDZ >= max(1,N).
105
106 ISUPPZ (output) INTEGER ARRAY, dimension ( 2*max(1,M) )
107 The support of the eigenvectors in Z, i.e., the indices indi‐
108 cating the nonzero elements in Z. The i-th computed eigenvector
109 is nonzero only in elements ISUPPZ( 2*i-1 ) through ISUPPZ( 2*i
110 ). This is relevant in the case when the matrix is split.
111 ISUPPZ is only accessed when JOBZ is 'V' and N > 0.
112
113 WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK)
114 On exit, if INFO = 0, WORK(1) returns the optimal (and minimal)
115 LWORK.
116
117 LWORK (input) INTEGER
118 The dimension of the array WORK. LWORK >= max(1,18*N) if JOBZ =
119 'V', and LWORK >= max(1,12*N) if JOBZ = 'N'. If LWORK = -1,
120 then a workspace query is assumed; the routine only calculates
121 the optimal size of the WORK array, returns this value as the
122 first entry of the WORK array, and no error message related to
123 LWORK is issued by XERBLA.
124
125 IWORK (workspace/output) INTEGER array, dimension (LIWORK)
126 On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
127
128 LIWORK (input) INTEGER
129 The dimension of the array IWORK. LIWORK >= max(1,10*N) if the
130 eigenvectors are desired, and LIWORK >= max(1,8*N) if only the
131 eigenvalues are to be computed. If LIWORK = -1, then a
132 workspace query is assumed; the routine only calculates the
133 optimal size of the IWORK array, returns this value as the
134 first entry of the IWORK array, and no error message related to
135 LIWORK is issued by XERBLA.
136
137 INFO (output) INTEGER
138 On exit, INFO = 0: successful exit
139 < 0: if INFO = -i, the i-th argument had an illegal value
140 > 0: if INFO = 1X, internal error in DLARRE, if INFO = 2X,
141 internal error in ZLARRV. Here, the digit X = ABS( IINFO ) <
142 10, where IINFO is the nonzero error code returned by DLARRE or
143 ZLARRV, respectively.
144
146 Based on contributions by
147 Inderjit Dhillon, IBM Almaden, USA
148 Osni Marques, LBNL/NERSC, USA
149 Christof Voemel, LBNL/NERSC, USA
150
151
152
153 LAPACK computational routine (verNsoivoenmb3e.r2)2008 ZSTEGR(1)