program integralf IMPLICIT none real*8 t, tmin,dt,intf,tmax integer*4 nt,i,n write(6,*)' tmin,tmax,nt:' read(5,*)tmin,tmax,nt dt=(tmax-tmin)/dble(nt-1) t=tmin-dt n=0 do 1 i=1,nt t=t+dt 1 write(6,600)i,t,intf(t,n),n 600 format(i4,2f12.6,i15) end function intf(t,n) IMPLICIT none real*8 t, intf,accu,iold,inew,ymin,ymax,dy,y,u integer*4 n,i c accuracy in %: accu=0.01d0 iold=0.0d0 n=2 ymin=0.0d0 ymax=1.0d0 100 dy=(ymax-ymin)/dble(n) inew=0 y=ymin-dy/2.0d0 do 1 i=1,n y=y+dy u=-log(y) 1 inew=inew+u*sin(u)/(u+t)**6*dy/y if(dabs((iold-inew)/inew*100.0d0).gt.accu)then n=n+n iold=inew goto 100 endif intf=inew return end