Mercurial > octave-nkf
comparison libcruft/arpack/src/dsconv.f @ 12274:9f5d2ef078e8 release-3-4-x
import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 28 Jan 2011 14:04:33 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
12273:83133b5bf392 | 12274:9f5d2ef078e8 |
---|---|
1 c----------------------------------------------------------------------- | |
2 c\BeginDoc | |
3 c | |
4 c\Name: dsconv | |
5 c | |
6 c\Description: | |
7 c Convergence testing for the symmetric Arnoldi eigenvalue routine. | |
8 c | |
9 c\Usage: | |
10 c call dsconv | |
11 c ( N, RITZ, BOUNDS, TOL, NCONV ) | |
12 c | |
13 c\Arguments | |
14 c N Integer. (INPUT) | |
15 c Number of Ritz values to check for convergence. | |
16 c | |
17 c RITZ Double precision array of length N. (INPUT) | |
18 c The Ritz values to be checked for convergence. | |
19 c | |
20 c BOUNDS Double precision array of length N. (INPUT) | |
21 c Ritz estimates associated with the Ritz values in RITZ. | |
22 c | |
23 c TOL Double precision scalar. (INPUT) | |
24 c Desired relative accuracy for a Ritz value to be considered | |
25 c "converged". | |
26 c | |
27 c NCONV Integer scalar. (OUTPUT) | |
28 c Number of "converged" Ritz values. | |
29 c | |
30 c\EndDoc | |
31 c | |
32 c----------------------------------------------------------------------- | |
33 c | |
34 c\BeginLib | |
35 c | |
36 c\Routines called: | |
37 c arscnd ARPACK utility routine for timing. | |
38 c dlamch LAPACK routine that determines machine constants. | |
39 c | |
40 c\Author | |
41 c Danny Sorensen Phuong Vu | |
42 c Richard Lehoucq CRPC / Rice University | |
43 c Dept. of Computational & Houston, Texas | |
44 c Applied Mathematics | |
45 c Rice University | |
46 c Houston, Texas | |
47 c | |
48 c\SCCS Information: @(#) | |
49 c FILE: sconv.F SID: 2.4 DATE OF SID: 4/19/96 RELEASE: 2 | |
50 c | |
51 c\Remarks | |
52 c 1. Starting with version 2.4, this routine no longer uses the | |
53 c Parlett strategy using the gap conditions. | |
54 c | |
55 c\EndLib | |
56 c | |
57 c----------------------------------------------------------------------- | |
58 c | |
59 subroutine dsconv (n, ritz, bounds, tol, nconv) | |
60 c | |
61 c %----------------------------------------------------% | |
62 c | Include files for debugging and timing information | | |
63 c %----------------------------------------------------% | |
64 c | |
65 include 'debug.h' | |
66 include 'stat.h' | |
67 c | |
68 c %------------------% | |
69 c | Scalar Arguments | | |
70 c %------------------% | |
71 c | |
72 integer n, nconv | |
73 Double precision | |
74 & tol | |
75 c | |
76 c %-----------------% | |
77 c | Array Arguments | | |
78 c %-----------------% | |
79 c | |
80 Double precision | |
81 & ritz(n), bounds(n) | |
82 c | |
83 c %---------------% | |
84 c | Local Scalars | | |
85 c %---------------% | |
86 c | |
87 integer i | |
88 Double precision | |
89 & temp, eps23 | |
90 c | |
91 c %-------------------% | |
92 c | External routines | | |
93 c %-------------------% | |
94 c | |
95 Double precision | |
96 & dlamch | |
97 external dlamch | |
98 | |
99 c %---------------------% | |
100 c | Intrinsic Functions | | |
101 c %---------------------% | |
102 c | |
103 intrinsic abs | |
104 c | |
105 c %-----------------------% | |
106 c | Executable Statements | | |
107 c %-----------------------% | |
108 c | |
109 call arscnd (t0) | |
110 c | |
111 eps23 = dlamch('Epsilon-Machine') | |
112 eps23 = eps23**(2.0D+0 / 3.0D+0) | |
113 c | |
114 nconv = 0 | |
115 do 10 i = 1, n | |
116 c | |
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 %-----------------------------------------------------% | |
121 c | |
122 temp = max( eps23, abs(ritz(i)) ) | |
123 if ( bounds(i) .le. tol*temp ) then | |
124 nconv = nconv + 1 | |
125 end if | |
126 c | |
127 10 continue | |
128 c | |
129 call arscnd (t1) | |
130 tsconv = tsconv + (t1 - t0) | |
131 c | |
132 return | |
133 c | |
134 c %---------------% | |
135 c | End of dsconv | | |
136 c %---------------% | |
137 c | |
138 end |