5 * Revision 1.1.1.1 1996/04/01 15:01:51 mclareni
10 #if defined(CERNLIB_DOUBLE)
11 FUNCTION DZEROX(A0,B0,EPS,MAXF,F,MODE)
13 #if !defined(CERNLIB_DOUBLE)
14 FUNCTION RZEROX(A0,B0,EPS,MAXF,F,MODE)
18 C J.C.P. Bus and T.J. Dekker, Two Efficient Algorithms with
19 C Guaranteed Convergence for Finding a Zero of a Function,
20 C ACM Trans. Math. Software 1 (1975) 330-345.
22 C (MODE = 1: Algorithm M; MODE = 2: Algorithm R)
23 #include "gen/imp64.inc"
26 #if defined(CERNLIB_DOUBLE)
27 PARAMETER (NAME = 'DZEROX')
29 #if !defined(CERNLIB_DOUBLE)
30 PARAMETER (NAME = 'RZEROX')
34 DIMENSION IM1(2),IM2(2),LMT(2)
36 PARAMETER (Z1 = 1, HALF = Z1/2)
38 DATA IM1 /2,3/, IM2 /-1,3/
40 IF(MODE .NE. 1 .AND. MODE .NE. 2) THEN
42 WRITE(ERRTXT,101) MODE
43 CALL MTLPRT(NAME,'C200.1',ERRTXT)
50 WRITE(ERRTXT,102) A0,B0
51 CALL MTLPRT(NAME,'C200.2',ERRTXT)
62 3 IF(ABS(FC) .LT. ABS(FB)) THEN
77 IF(ABS(HB) .GT. TOL) THEN
78 IF(IE .GT. IM1(MODE)) THEN
97 IF(IE .EQ. IM2(MODE)) P=P+P
98 IF(P .EQ. 0 .OR. P .LE. Q*TOL) THEN
100 ELSEIF(P .LT. HB*Q) THEN
112 IF(MF .GT. MAXF) THEN
113 CALL MTLPRT(NAME,'C200.3','TOO MANY FUNCTION CALLS')
117 IF(FB .EQ. 0 .OR. SIGN(Z1,FC) .EQ. SIGN(Z1,FB)) GO TO 1
118 IF(W .EQ. HB) GO TO 2
122 #if defined(CERNLIB_DOUBLE)
125 #if !defined(CERNLIB_DOUBLE)
130 101 FORMAT('MODE = ',I3,' ILLEGAL')
131 102 FORMAT('F(A) AND F(B) HAVE THE SAME SIGN, A = ',1P,D15.8,
134 #if !defined(CERNLIB_DOUBLE)
135 FUNCTION ZEROX(A0,B0,EPS,MAXF,F,MODE)
136 ZEROX=RZEROX(A0,B0,EPS,MAXF,F,MODE)