Files
piscal/dataassim/math/numrec/f77_sources/rtsec.for
T
2016-02-03 18:52:05 +00:00

30 lines
650 B
Fortran

FUNCTION rtsec(func,x1,x2,xacc)
INTEGER MAXIT
REAL rtsec,x1,x2,xacc,func
EXTERNAL func
PARAMETER (MAXIT=30)
INTEGER j
REAL dx,f,fl,swap,xl
fl=func(x1)
f=func(x2)
if(abs(fl).lt.abs(f))then
rtsec=x1
xl=x2
swap=fl
fl=f
f=swap
else
xl=x1
rtsec=x2
endif
do 11 j=1,MAXIT
dx=(xl-rtsec)*f/(f-fl)
xl=rtsec
fl=f
rtsec=rtsec+dx
f=func(rtsec)
if(abs(dx).lt.xacc.or.f.eq.0.)return
11 continue
pause 'rtsec exceed maximum iterations'
END