FORTRAN 77 Code

    REAL FUNCTION G(X)
    REAL X
        G=0.9 + X - 0.4*X*X
    RETURN
    END

    SUBROUTINE ITERATE(G,Pterm,Max,Tol,Pnew,Cond,K)
    PARAMETER(Big=1E10,Small=1E-20)
    INTEGER Cond,K,Max
    REAL Pnew,Pterm,Tol
    REAL Dx,Dg,Pold,RelErr,Slope
    K=0
    RelErr=1
    Pnew=G(Pterm)
    WHILE (RelErr.GE.Tol).AND.(K.LE.Max)
     &            .AND.(ABS(Pnew).LT.Big)
        Pold=Pterm
        Pterm=Pnew
        Pnew=G(Pterm)
        Dg=Pnew-Pterm
        RelErr=ABS(Dg)/(ABS(Pnew)+Small)
        K=K+1
        WRITE(9,1000) K,Pnew
    REPEAT
    IF (Dg.EQ.0) THEN
        Slope=0
    ELSE
        Dx=Pterm-Pold
        IF (Dx.NE.0) THEN
            Slope=Dg/Dx
        ELSE
            Slope=6.023E23
        ENDIF
    ENDIF
    IF (ABS(Slope).LT.1) THEN
        Cond=1
        IF (Slope.LT.0) Cond=2
    ELSE
        Cond=3
        IF (Slope.LT.0) Cond=4
    ENDIF
    IF (RelErr.LT.Tol) THEN
        IF ((Cond.EQ.3).OR.(Cond.EQ.4)) Cond=5
    ENDIF
    PAUSE
    RETURN
1000    FORMAT(I2,4X,F15.7)
    END

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(c) John H. Mathews 2004