1SLARRE(1) LAPACK auxiliary routine (version 3.2) SLARRE(1)
2
3
4
6 SLARRE - find the desired eigenvalues of a given real symmetric tridi‐
7 agonal matrix T, SLARRE sets any "small" off-diagonal elements to zero,
8 and for each unreduced block T_i, it finds (a) a suitable shift at one
9 end of the block's spectrum,
10
12 SUBROUTINE SLARRE( RANGE, N, VL, VU, IL, IU, D, E, E2, RTOL1, RTOL2,
13 SPLTOL, NSPLIT, ISPLIT, M, W, WERR, WGAP, IBLOCK,
14 INDEXW, GERS, PIVMIN, WORK, IWORK, INFO )
15
16 IMPLICIT NONE
17
18 CHARACTER RANGE
19
20 INTEGER IL, INFO, IU, M, N, NSPLIT
21
22 REAL PIVMIN, RTOL1, RTOL2, SPLTOL, VL, VU
23
24 INTEGER IBLOCK( * ), ISPLIT( * ), IWORK( * ), INDEXW( * )
25
26 REAL D( * ), E( * ), E2( * ), GERS( * ), W( * ),WERR( *
27 ), WGAP( * ), WORK( * )
28
30 To find the desired eigenvalues of a given real symmetric tridiagonal
31 matrix T, SLARRE sets any "small" off-diagonal elements to zero, and
32 for each unreduced block T_i, it finds (a) a suitable shift at one end
33 of the block's spectrum, (b) the base representation, T_i - sigma_i I =
34 L_i D_i L_i^T, and (c) eigenvalues of each L_i D_i L_i^T.
35 The representations and eigenvalues found are then used by SSTEMR to
36 compute the eigenvectors of T.
37 The accuracy varies depending on whether bisection is used to find a
38 few eigenvalues or the dqds algorithm (subroutine SLASQ2) to conpute
39 all and then discard any unwanted one.
40 As an added benefit, SLARRE also outputs the n
41 Gerschgorin intervals for the matrices L_i D_i L_i^T.
42
44 RANGE (input) CHARACTER
45 = 'A': ("All") all eigenvalues will be found.
46 = 'V': ("Value") all eigenvalues in the half-open interval (VL,
47 VU] will be found. = 'I': ("Index") the IL-th through IU-th
48 eigenvalues (of the entire matrix) will be found.
49
50 N (input) INTEGER
51 The order of the matrix. N > 0.
52
53 VL (input/output) REAL
54 VU (input/output) REAL If RANGE='V', the lower and upper
55 bounds for the eigenvalues. Eigenvalues less than or equal to
56 VL, or greater than VU, will not be returned. VL < VU. If
57 RANGE='I' or ='A', SLARRE computes bounds on the desired part
58 of the spectrum.
59
60 IL (input) INTEGER
61 IU (input) INTEGER If RANGE='I', the indices (in ascending
62 order) of the smallest and largest eigenvalues to be returned.
63 1 <= IL <= IU <= N.
64
65 D (input/output) REAL array, dimension (N)
66 On entry, the N diagonal elements of the tridiagonal matrix T.
67 On exit, the N diagonal elements of the diagonal matrices D_i.
68
69 E (input/output) REAL array, dimension (N)
70 On entry, the first (N-1) entries contain the subdiagonal ele‐
71 ments of the tridiagonal matrix T; E(N) need not be set. On
72 exit, E contains the subdiagonal elements of the unit bidiago‐
73 nal matrices L_i. The entries E( ISPLIT( I ) ), 1 <= I <=
74 NSPLIT, contain the base points sigma_i on output.
75
76 E2 (input/output) REAL array, dimension (N)
77 On entry, the first (N-1) entries contain the SQUARES of the
78 subdiagonal elements of the tridiagonal matrix T; E2(N) need
79 not be set. On exit, the entries E2( ISPLIT( I ) ), 1 <= I <=
80 NSPLIT, have been set to zero
81
82 RTOL1 (input) REAL
83 RTOL2 (input) REAL Parameters for bisection. RIGHT-
84 LEFT.LT.MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) ) SPLTOL
85 (input) REAL The threshold for splitting.
86
87 NSPLIT (output) INTEGER
88 The number of blocks T splits into. 1 <= NSPLIT <= N.
89
90 ISPLIT (output) INTEGER array, dimension (N)
91 The splitting points, at which T breaks up into blocks. The
92 first block consists of rows/columns 1 to ISPLIT(1), the second
93 of rows/columns ISPLIT(1)+1 through ISPLIT(2), etc., and the
94 NSPLIT-th consists of rows/columns ISPLIT(NSPLIT-1)+1 through
95 ISPLIT(NSPLIT)=N.
96
97 M (output) INTEGER
98 The total number of eigenvalues (of all L_i D_i L_i^T) found.
99
100 W (output) REAL array, dimension (N)
101 The first M elements contain the eigenvalues. The eigenvalues
102 of each of the blocks, L_i D_i L_i^T, are sorted in ascending
103 order ( SLARRE may use the remaining N-M elements as
104 workspace).
105
106 WERR (output) REAL array, dimension (N)
107 The error bound on the corresponding eigenvalue in W.
108
109 WGAP (output) REAL array, dimension (N)
110 The separation from the right neighbor eigenvalue in W. The
111 gap is only with respect to the eigenvalues of the same block
112 as each block has its own representation tree. Exception: at
113 the right end of a block we store the left gap
114
115 IBLOCK (output) INTEGER array, dimension (N)
116 The indices of the blocks (submatrices) associated with the
117 corresponding eigenvalues in W; IBLOCK(i)=1 if eigenvalue W(i)
118 belongs to the first block from the top, =2 if W(i) belongs to
119 the second block, etc.
120
121 INDEXW (output) INTEGER array, dimension (N)
122 The indices of the eigenvalues within each block (submatrix);
123 for example, INDEXW(i)= 10 and IBLOCK(i)=2 imply that the i-th
124 eigenvalue W(i) is the 10-th eigenvalue in block 2
125
126 GERS (output) REAL array, dimension (2*N)
127 The N Gerschgorin intervals (the i-th Gerschgorin interval is
128 (GERS(2*i-1), GERS(2*i)).
129
130 PIVMIN (output) DOUBLE PRECISION
131 The minimum pivot in the Sturm sequence for T.
132
133 WORK (workspace) REAL array, dimension (6*N)
134 Workspace.
135
136 IWORK (workspace) INTEGER array, dimension (5*N)
137 Workspace.
138
139 INFO (output) INTEGER
140 = 0: successful exit
141 > 0: A problem occured in SLARRE.
142 < 0: One of the called subroutines signaled an internal prob‐
143 lem. Needs inspection of the corresponding parameter IINFO for
144 further information.
145
146 =-1: Problem in SLARRD.
147 = 2: No base representation could be found in MAXTRY iterations.
148 Increasing MAXTRY and recompilation might be a remedy. =-3:
149 Problem in SLARRB when computing the refined root representation
150 for SLASQ2. =-4: Problem in SLARRB when preforming bisection on
151 the desired part of the spectrum. =-5: Problem in SLASQ2.
152 =-6: Problem in SLASQ2. Further Details element growth and con‐
153 sequently define all their eigenvalues to high relative accuracy.
154 =============== Based on contributions by Beresford Parlett, Uni‐
155 versity of California, Berkeley, USA Jim Demmel, University of
156 California, Berkeley, USA Inderjit Dhillon, University of Texas,
157 Austin, USA Osni Marques, LBNL/NERSC, USA Christof Voemel, Uni‐
158 versity of California, Berkeley, USA
159
160
161
162 LAPACK auxiliary routine (versionNo3v.e2m)ber 2008 SLARRE(1)