5 * Revision 1.1.1.1 1995/10/24 10:20:59 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.38 by S.Giani
12 SUBROUTINE RTMI(X,F,FCT,XLI,XRI,EPS,IEND,IER)
14 C *** NVE 16-MAR-1988 CERN GENEVA ***
16 C ORIGIN : H.FESEFELDT (27-OCT-1983)
17 C COPIED FROM R01UTL.SSP.S 23.4.82
20 C --- PREPARE ITERATION ---
34 IF(SIGN(1.,FL)+SIGN(1.,FR))25,3,25
36 C BASIC ASSUMPTION FL*FR LESS THAN 0 IS SATISFIED.
37 C GENERATE TOLERANCE FOR FUNCTION VALUES.
42 C START ITERATION LOOP
45 C START BISECTION LOOP
51 5 IF(SIGN(1.,F)+SIGN(1.,FR))7,6,7
53 C INTERCHANGE XL AND XR IN ORDER TO GET THE SAME SIGN IN F AND FR
68 C TEST ON SATISFACTORY ACCURACY IN BISECTION LOOP
73 11 IF(ABS(XR-XL)-TOL)12,12,13
74 12 IF(ABS(FR-FL)-TOLF)14,14,13
76 C END OF BISECTION LOOP
78 C NO CONVERGENCE AFTER IEND ITERATION STEPS FOLLOWED BY IEND
79 C SUCCESSIVE STEPS OF BISECTION OR STEADILY INCREASING FUNCTION
80 C VALUES AT RIGHT BOUNDS. ERROR RETURN.
82 14 IF(ABS(FR)-ABS(FL))16,16,15
87 C COMPUTATION OF ITERATED X-VALUE BY INVERSE PARABOLIC INTERPOLATION
89 DX=(X-XL)*FL*(1.+F*(A-TOL)/(A*(FR-FL)))/TOL
97 C TEST ON SATISFACTORY ACCURACY IN ITERATION LOOP
102 20 IF(ABS(DX)-TOL)21,21,22
103 21 IF(ABS(F)-TOLF)16,16,22
105 C PREPARATION OF NEXT BISECTION LOOP
106 22 IF(SIGN(1.,F)+SIGN(1.,FL))24,23,24
115 C END OF ITERATION LOOP
118 C ERROR RETURN IN CASE OF WRONG INPUT DATA