Files
2016-02-03 18:52:05 +00:00

29 lines
621 B
Fortran

SUBROUTINE midexp(funk,aa,bb,s,n)
INTEGER n
REAL aa,bb,s,funk
EXTERNAL funk
INTEGER it,j
REAL ddel,del,sum,tnm,x,func,a,b
func(x)=funk(-log(x))/x
b=exp(-aa)
a=0.
if (n.eq.1) then
s=(b-a)*func(0.5*(a+b))
else
it=3**(n-2)
tnm=it
del=(b-a)/(3.*tnm)
ddel=del+del
x=a+0.5*del
sum=0.
do 11 j=1,it
sum=sum+func(x)
x=x+ddel
sum=sum+func(x)
x=x+del
11 continue
s=(s+(b-a)*sum/tnm)/3.
endif
return
END