FORTRAN 77 Code
SUBROUTINE
& REGULA(F,A,B,Delta,Epsilon,Max,C,YC,D,K,Cond)
PARAMETER(Big=1E5)
INTEGER Cond,K,Max
REAL A,B,C,D,Delta,DX,Epsilon,YC
EXTERNAL F
K=0
YA=F(A)
YB=F(B)
D=B-A
K=0; Cond=0
IF (YA*YB.GE.0) THEN
Cond=1
RETURN
ENDIF
WHILE ((Cond.EQ.0).AND.(K.LT.Max))
DXA=YA*(B-A)/(YB-YA)
DXB=YB*(B-A)/(YB-YA)
IF
ABS(DXA).LT.ABS(DXB) THEN
C=A-DXA
D=ABS(DXA)
ELSE
C=B-DXB
D=ABS(DXB)
ENDIF
YC=F(C)
IF (D.LT.Delta)
Cond=3
IF
(ABS(YC).LT.Epsilon) THEN
A=C
B=C
Cond=4
ELSEIF ((YB*YC).GT.0)
THEN
B=C
YB=YC
ELSE
A=C
YA=YC
ENDIF
K=K+1
WRITE(9,1000)
K,A,C,B
REPEAT
IF (YC.EQ.0) Cond=2
IF (D.LT.Delta).AND.(Cond.NE.2) Cond=3
IF
(Cond.EQ.3).AND.(ABS(YC).LT.Epsilon) Cond=5
IF (ABS(YA).GT.Big).AND.(ABS(YB).GT.Big)
Cond=6
IF
(Cond.EQ.0).AND.(ABS(YC).LT.Epsilon) Cond=4
PAUSE
RETURN
1000 FORMAT(I2,4X,F15.7,4X,F15.7,4X,F15.7)
(c) John H. Mathews 2004