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