FORTRAN 77 Code
REAL FUNCTION
F(X)
F = SIN(X)/COS(X)
RETURN
END
SUBROUTINE
BISEC(F,A,B,Delta,C,D,Cond,KL,KR)
PARAMETER(Big=1E5)
INTEGER Cond,K,KL,KR,Max
REAL A,B,C,D,Delta,YA,YB,YC
EXTERNAL F
K=0
KL=0
KR=0
YA=F(A)
YB=F(B)
D=B-A
Cond=0
Max=1+INT((ALOG(D)-ALOG(Delta))/ALOG(2.0))
IF (YA*YB.GE.0) THEN
Cond=1
RETURN
ENDIF
WHILE (Cond.EQ.0).AND.(K.LT.Max)
C=(A+B)/2.0
YC=F(C)
IF
(YC.EQ.0) THEN
A=C
B=C
Cond=2
ELSEIF
((YB*YC).GT.0) THEN
B=C
YB=YC
KR=KR+1
ELSE
A=C
YA=YC
KL=KL+1
ENDIF
K=K+1
WRITE(9,1000)
K,A,C,B
REPEAT
D=B-A
IF (D.LT.Delta) THEN
IF (Cond.NE.2)
Cond=3
IF
((ABS(YA).GT.Big).AND.(ABS(YB).GT.Big)) Cond=4
ENDIF
PAUSE
RETURN
(c) John H. Mathews 2004