18 lines
458 B
Fortran
18 lines
458 B
Fortran
SUBROUTINE qtrap(func,a,b,s)
|
|
INTEGER JMAX
|
|
REAL a,b,func,s,EPS
|
|
EXTERNAL func
|
|
PARAMETER (EPS=1.e-6, JMAX=20)
|
|
CU USES trapzd
|
|
INTEGER j
|
|
REAL olds
|
|
olds=-1.e30
|
|
do 11 j=1,JMAX
|
|
call trapzd(func,a,b,s,j)
|
|
if (abs(s-olds).lt.EPS*abs(olds)) return
|
|
if (s.eq.0..and.olds.eq.0..and.j.gt.6) return
|
|
olds=s
|
|
11 continue
|
|
pause 'too many steps in qtrap'
|
|
END
|