1
c-----------------------------------------------------------------------
7
c Compute the eigenvalues of the current symmetric tridiagonal matrix
8
c and the corresponding error bounds given the current residual norm.
12
c ( RNORM, N, H, LDH, EIG, BOUNDS, WORKL, IERR )
15
c RNORM Double precision scalar. (INPUT)
16
c RNORM contains the residual norm corresponding to the current
17
c symmetric tridiagonal matrix H.
20
c Size of the symmetric tridiagonal matrix H.
22
c H Double precision N by 2 array. (INPUT)
23
c H contains the symmetric tridiagonal matrix with the
24
c subdiagonal in the first column starting at H(2,1) and the
25
c main diagonal in second column.
27
c LDH Integer. (INPUT)
28
c Leading dimension of H exactly as declared in the calling
31
c EIG Double precision array of length N. (OUTPUT)
32
c On output, EIG contains the N eigenvalues of H possibly
33
c unsorted. The BOUNDS arrays are returned in the
34
c same sorted order as EIG.
36
c BOUNDS Double precision array of length N. (OUTPUT)
37
c On output, BOUNDS contains the error estimates corresponding
38
c to the eigenvalues EIG. This is equal to RNORM times the
39
c last components of the eigenvectors corresponding to the
42
c WORKL Double precision work array of length 3*N. (WORKSPACE)
43
c Private (replicated) array on each PE or array allocated on
46
c IERR Integer. (OUTPUT)
47
c Error exit flag from dstqrb.
51
c-----------------------------------------------------------------------
59
c dstqrb ARPACK routine that computes the eigenvalues and the
60
c last components of the eigenvectors of a symmetric
61
c and tridiagonal matrix.
62
c second ARPACK utility routine for timing.
63
c dvout ARPACK utility routine that prints vectors.
64
c dcopy Level 1 BLAS that copies one vector to another.
67
c Danny Sorensen Phuong Vu
68
c Richard Lehoucq CRPC / Rice University
69
c Dept. of Computational & Houston, Texas
75
c xx/xx/92: Version ' 2.4'
77
c\SCCS Information: @(#)
78
c FILE: seigt.F SID: 2.4 DATE OF SID: 8/27/96 RELEASE: 2
85
c-----------------------------------------------------------------------
88
& ( rnorm, n, h, ldh, eig, bounds, workl, ierr )
90
c %----------------------------------------------------%
91
c | Include files for debugging and timing information |
92
c %----------------------------------------------------%
97
c %------------------%
98
c | Scalar Arguments |
99
c %------------------%
105
c %-----------------%
106
c | Array Arguments |
107
c %-----------------%
110
& eig(n), bounds(n), h(ldh,2), workl(3*n)
118
parameter (zero = 0.0D+0)
126
c %----------------------%
127
c | External Subroutines |
128
c %----------------------%
130
external dcopy, dstqrb, dvout, second
132
c %-----------------------%
133
c | Executable Statements |
134
c %-----------------------%
136
c %-------------------------------%
137
c | Initialize timing statistics |
138
c | & message level for debugging |
139
c %-------------------------------%
144
if (msglvl .gt. 0) then
145
call dvout (logfil, n, h(1,2), ndigit,
146
& '_seigt: main diagonal of matrix H')
148
call dvout (logfil, n-1, h(2,1), ndigit,
149
& '_seigt: sub diagonal of matrix H')
153
call dcopy (n, h(1,2), 1, eig, 1)
154
call dcopy (n-1, h(2,1), 1, workl, 1)
155
call dstqrb (n, eig, workl, bounds, workl(n+1), ierr)
156
if (ierr .ne. 0) go to 9000
157
if (msglvl .gt. 1) then
158
call dvout (logfil, n, bounds, ndigit,
159
& '_seigt: last row of the eigenvector matrix for H')
162
c %-----------------------------------------------%
163
c | Finally determine the error bounds associated |
164
c | with the n Ritz values of H. |
165
c %-----------------------------------------------%
168
bounds(k) = rnorm*abs(bounds(k))
172
tseigt = tseigt + (t1 - t0)