1
c-----------------------------------------------------------------------
7
c Convergence testing for the symmetric Arnoldi eigenvalue routine.
11
c ( N, RITZ, BOUNDS, TOL, NCONV )
15
c Number of Ritz values to check for convergence.
17
c RITZ Double precision array of length N. (INPUT)
18
c The Ritz values to be checked for convergence.
20
c BOUNDS Double precision array of length N. (INPUT)
21
c Ritz estimates associated with the Ritz values in RITZ.
23
c TOL Double precision scalar. (INPUT)
24
c Desired relative accuracy for a Ritz value to be considered
27
c NCONV Integer scalar. (OUTPUT)
28
c Number of "converged" Ritz values.
32
c-----------------------------------------------------------------------
37
c second ARPACK utility routine for timing.
38
c dlamch LAPACK routine that determines machine constants.
41
c Danny Sorensen Phuong Vu
42
c Richard Lehoucq CRPC / Rice University
43
c Dept. of Computational & Houston, Texas
48
c\SCCS Information: @(#)
49
c FILE: sconv.F SID: 2.4 DATE OF SID: 4/19/96 RELEASE: 2
52
c 1. Starting with version 2.4, this routine no longer uses the
53
c Parlett strategy using the gap conditions.
57
c-----------------------------------------------------------------------
59
subroutine dsconv (n, ritz, bounds, tol, nconv)
61
c %----------------------------------------------------%
62
c | Include files for debugging and timing information |
63
c %----------------------------------------------------%
68
c %------------------%
69
c | Scalar Arguments |
70
c %------------------%
91
c %-------------------%
92
c | External routines |
93
c %-------------------%
99
c %---------------------%
100
c | Intrinsic Functions |
101
c %---------------------%
105
c %-----------------------%
106
c | Executable Statements |
107
c %-----------------------%
111
eps23 = dlamch('Epsilon-Machine')
112
eps23 = eps23**(2.0D+0 / 3.0D+0)
117
c %-----------------------------------------------------%
118
c | The i-th Ritz value is considered "converged" |
119
c | when: bounds(i) .le. TOL*max(eps23, abs(ritz(i))) |
120
c %-----------------------------------------------------%
122
temp = max( eps23, abs(ritz(i)) )
123
if ( bounds(i) .le. tol*temp ) then
130
tsconv = tsconv + (t1 - t0)