1DLARRE(1) LAPACK auxiliary routine (version 3.2) DLARRE(1)
2
3
4
6 DLARRE - find the desired eigenvalues of a given real symmetric tridi‐
7 agonal matrix T, DLARRE 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 DLARRE( 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 DOUBLE PRECISION PIVMIN, RTOL1, RTOL2, SPLTOL, VL, VU
23
24 INTEGER IBLOCK( * ), ISPLIT( * ), IWORK( * ), INDEXW( * )
25
26 DOUBLE PRECISION D( * ), E( * ), E2( * ), GERS( * ), W( *
27 ),WERR( * ), WGAP( * ), WORK( * )
28
30 To find the desired eigenvalues of a given real symmetric tridiagonal
31 matrix T, DLARRE 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 DSTEMR 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 DLASQ2) to conpute
39 all and then discard any unwanted one.
40 As an added benefit, DLARRE 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) DOUBLE PRECISION
54 VU (input/output) DOUBLE PRECISION If RANGE='V', the lower
55 and upper bounds for the eigenvalues. Eigenvalues less than or
56 equal to VL, or greater than VU, will not be returned. VL <
57 VU. If RANGE='I' or ='A', DLARRE computes bounds on the
58 desired part 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION
83 RTOL2 (input) DOUBLE PRECISION Parameters for bisection.
84 RIGHT-LEFT.LT.MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) )
85 SPLTOL (input) DOUBLE PRECISION 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) DOUBLE PRECISION 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 ( DLARRE may use the remaining N-M elements as
104 workspace).
105
106 WERR (output) DOUBLE PRECISION array, dimension (N)
107 The error bound on the corresponding eigenvalue in W.
108
109 WGAP (output) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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 DLARRE.
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 DLARRD.
147 = 2: No base representation could be found in MAXTRY iterations.
148 Increasing MAXTRY and recompilation might be a remedy. =-3:
149 Problem in DLARRB when computing the refined root representation
150 for DLASQ2. =-4: Problem in DLARRB when preforming bisection on
151 the desired part of the spectrum. =-5: Problem in DLASQ2.
152 =-6: Problem in DLASQ2. 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 DLARRE(1)