40 subroutine xerror ( xmess, nmess, nerr, level )
44 integer ( kind = 4 ) level
45 integer ( kind = 4 ) nerr
46 integer ( kind = 4 ) nmess
47 character ( len = * ) xmess
49 if ( 1 <= level )
then 50 WRITE ( *,
'(1X,A)') xmess(1:nmess)
51 WRITE ( *,
'('' ERROR NUMBER = '',I5,'', MESSAGE LEVEL = '',I5)') &
70 function dqwgts ( x, a, b, alfa, beta, integr )
74 real ( kind = 8 ) dqwgts
75 real ( kind = 8 ) a,alfa,b,beta,bmx,x,xma
76 integer ( kind = 4 ) integr
80 dqwgts = xma ** alfa * bmx ** beta
81 go to (40,10,20,30),integr
82 10 dqwgts = dqwgts* log( xma )
84 20 dqwgts = dqwgts* log( bmx )
86 30 dqwgts = dqwgts* log( xma ) * log( bmx )
103 function dqwgtc ( x, c, p2, p3, p4, kp )
107 real ( kind = 8 ) dqwgtc
108 real ( kind = 8 ) c,p2,p3,p4,x
109 integer ( kind = 4 ) kp
111 dqwgtc = 0.1d+01 / ( x - c )
128 function dqwgtf( x, omega, p2, p3, p4, integr )
132 real ( kind = 8 ) dqwgtf
133 real ( kind = 8 ) dcos,dsin,omega,omx,p2,p3,p4,x
134 integer ( kind = 4 ) integr
138 if ( integr == 1 )
then 192 subroutine dgtsl ( n, c, d, e, b, info )
196 integer ( kind = 4 ) n
198 real ( kind = 8 ) b(n)
199 real ( kind = 8 ) c(n)
200 real ( kind = 8 ) d(n)
201 real ( kind = 8 ) e(n)
202 integer ( kind = 4 ) info
203 integer ( kind = 4 ) k
219 if ( abs( c(k) ) <= abs( c(k+1) ) )
then 243 if ( c(k) == 0.0d+00 )
then 249 c(k+1) = d(k+1) + t * d(k)
250 d(k+1) = e(k+1) + t * e(k)
252 b(k+1) = b(k+1) + t * b(k)
258 if ( c(n) == 0.0d+00 )
then 269 b(n-1) = ( b(n-1) - d(n-1) * b(n) ) / c(n-1)
272 b(k) = ( b(k) - d(k) * b(k+1) - e(k) * b(k+2) ) / c(k)
445 subroutine dqage ( f, a, b, epsabs, epsrel, key, limit, result, abserr, &
446 neval, ier, alist, blist, rlist, elist, iord, last )
450 real ( kind = 8 ) a,abserr,alist,area,area1,area12,area2,a1,a2,b, &
451 blist,b1,b2,defabs,defab1,defab2,elist,epmach, &
452 epsabs,epsrel,errbnd,errmax,error1,error2,erro12,errsum,f, &
453 resabs,result,rlist,uflow
454 integer ( kind = 4 ) ier,iord,iroff1,iroff2,k,key,keyf,last,limit, &
457 dimension alist(limit),blist(limit),elist(limit),iord(limit), &
462 epmach = epsilon( epmach )
463 uflow = tiny( uflow )
478 if(epsabs.le.0.0d+00.and. &
479 epsrel.lt. max( 0.5d+02*epmach,0.5d-28))
then 487 if(key.le.0) keyf = 1
488 if(key.ge.7) keyf = 6
490 if(keyf.eq.1)
call dqk15(f,a,b,result,abserr,defabs,resabs)
491 if(keyf.eq.2)
call dqk21(f,a,b,result,abserr,defabs,resabs)
492 if(keyf.eq.3)
call dqk31(f,a,b,result,abserr,defabs,resabs)
493 if(keyf.eq.4)
call dqk41(f,a,b,result,abserr,defabs,resabs)
494 if(keyf.eq.5)
call dqk51(f,a,b,result,abserr,defabs,resabs)
495 if(keyf.eq.6)
call dqk61(f,a,b,result,abserr,defabs,resabs)
503 errbnd = max( epsabs, epsrel* abs( result ) )
505 if(abserr.le.0.5d+02* epmach * defabs .and. &
506 abserr.gt.errbnd)
then 514 if ( ier .ne. 0 .or. &
515 (abserr .le. errbnd .and. abserr .ne. resabs ) .or. &
516 abserr .eq. 0.0d+00 )
then 519 neval = (10*keyf+1)*(2*neval+1)
545 b1 = 0.5d+00*(alist(maxerr)+blist(maxerr))
549 if(keyf.eq.1)
call dqk15(f,a1,b1,area1,error1,resabs,defab1)
550 if(keyf.eq.2)
call dqk21(f,a1,b1,area1,error1,resabs,defab1)
551 if(keyf.eq.3)
call dqk31(f,a1,b1,area1,error1,resabs,defab1)
552 if(keyf.eq.4)
call dqk41(f,a1,b1,area1,error1,resabs,defab1)
553 if(keyf.eq.5)
call dqk51(f,a1,b1,area1,error1,resabs,defab1)
554 if(keyf.eq.6)
call dqk61(f,a1,b1,area1,error1,resabs,defab1)
556 if(keyf.eq.1)
call dqk15(f,a2,b2,area2,error2,resabs,defab2)
557 if(keyf.eq.2)
call dqk21(f,a2,b2,area2,error2,resabs,defab2)
558 if(keyf.eq.3)
call dqk31(f,a2,b2,area2,error2,resabs,defab2)
559 if(keyf.eq.4)
call dqk41(f,a2,b2,area2,error2,resabs,defab2)
560 if(keyf.eq.5)
call dqk51(f,a2,b2,area2,error2,resabs,defab2)
561 if(keyf.eq.6)
call dqk61(f,a2,b2,area2,error2,resabs,defab2)
568 erro12 = error1+error2
569 errsum = errsum+erro12-errmax
570 area = area+area12-rlist(maxerr)
572 if ( defab1 .ne. error1 .and. defab2 .ne. error2 )
then 574 if( abs( rlist(maxerr)-area12).le.0.1d-04* abs( area12) &
575 .and. erro12.ge.0.99d+00*errmax)
then 579 if(last.gt.10.and.erro12.gt.errmax)
then 585 rlist(maxerr) = area1
587 errbnd = max( epsabs,epsrel* abs( area))
589 if ( errbnd .lt. errsum )
then 593 if(iroff1.ge.6.or.iroff2.ge.20)
then 600 if(last.eq.limit)
then 607 if( max( abs( a1), abs( b2)).le.(0.1d+01+0.1d+03* &
608 epmach)*( abs( a2)+0.1d+04*uflow))
then 616 if(error2.le.error1)
then 620 elist(maxerr) = error1
626 rlist(maxerr) = area2
628 elist(maxerr) = error2
636 call dqpsrt(limit,last,maxerr,errmax,elist,iord,nrmax)
638 if(ier.ne.0.or.errsum.le.errbnd)
then 648 result = result+rlist(k)
653 neval = (10*keyf+1)*(2*neval+1)
804 subroutine dqag ( f, a, b, epsabs, epsrel, key, result, abserr, neval, ier, &
805 limit, lenw, last, iwork, work )
809 integer ( kind = 4 ) lenw
810 integer ( kind = 4 ) limit
813 real ( kind = 8 ) abserr
815 real ( kind = 8 ) epsabs
816 real ( kind = 8 ) epsrel
817 real ( kind = 8 ),
external :: f
818 integer ( kind = 4 ) ier
819 integer ( kind = 4 ) iwork(limit)
820 integer ( kind = 4 ) key
821 integer ( kind = 4 ) last
822 integer ( kind = 4 ) lvl
823 integer ( kind = 4 ) l1
824 integer ( kind = 4 ) l2
825 integer ( kind = 4 ) l3
826 integer ( kind = 4 ) neval
827 real ( kind = 8 ) result
828 real ( kind = 8 ) work(lenw)
837 if(limit.lt.1.or.lenw.lt.limit*4)
go to 10
845 call dqage(f,a,b,epsabs,epsrel,key,limit,result,abserr,neval, &
846 ier,work(1),work(l1),work(l2),work(l3),iwork,last)
854 if(ier.ne.0)
call xerror(
'abnormal return from dqag ',26,ier,lvl)
1053 subroutine dqagie ( f, bound, inf, epsabs, epsrel, limit, result, abserr, &
1054 neval, ier, alist, blist, rlist, elist, iord, last )
1058 real ( kind = 8 ) abseps,abserr,alist,area,area1,area12,area2,a1, &
1059 a2,blist,boun,bound,b1,b2,correc,defabs,defab1,defab2, &
1060 dres,elist,epmach,epsabs,epsrel,erlarg,erlast, &
1061 errbnd,errmax,error1,error2,erro12,errsum,ertest,f,oflow,resabs, &
1062 reseps,result,res3la,rlist,rlist2,small,uflow
1063 integer ( kind = 4 ) id,ier,ierro,inf,iord,iroff1,iroff2, &
1064 iroff3,jupbnd,k,ksgn, &
1065 ktmin,last,limit,maxerr,neval,nres,nrmax,numrl2
1066 logical extrap,noext
1067 dimension alist(limit),blist(limit),elist(limit),iord(limit), &
1068 res3la(3),rlist(limit),rlist2(52)
1072 epmach = epsilon( epmach )
1087 if(epsabs.le.0.0d+00.and.epsrel.lt. max( 0.5d+02*epmach,0.5d-28))
then 1103 if(inf.eq.2) boun = 0.0d+00
1104 call dqk15i(f,boun,inf,0.0d+00,0.1d+01,result,abserr, &
1114 errbnd = max( epsabs,epsrel*dres)
1115 if(abserr.le.1.0d+02*epmach*defabs.and.abserr.gt.errbnd) ier = 2
1116 if(limit.eq.1) ier = 1
1117 if(ier.ne.0.or.(abserr.le.errbnd.and.abserr.ne.resabs).or. &
1118 abserr.eq.0.0d+00)
go to 130
1122 uflow = tiny( uflow )
1123 oflow = huge( oflow )
1141 if(dres.ge.(0.1d+01-0.5d+02*epmach)*defabs) ksgn = 1
1145 do 90 last = 2,limit
1150 b1 = 0.5d+00*(alist(maxerr)+blist(maxerr))
1154 call dqk15i(f,boun,inf,a1,b1,area1,error1,resabs,defab1)
1155 call dqk15i(f,boun,inf,a2,b2,area2,error2,resabs,defab2)
1160 area12 = area1+area2
1161 erro12 = error1+error2
1162 errsum = errsum+erro12-errmax
1163 area = area+area12-rlist(maxerr)
1164 if(defab1.eq.error1.or.defab2.eq.error2)
go to 15
1165 if( abs( rlist(maxerr)-area12).gt.0.1d-04* abs( area12) &
1166 .or.erro12.lt.0.99d+00*errmax)
go to 10
1167 if(extrap) iroff2 = iroff2+1
1168 if(.not.extrap) iroff1 = iroff1+1
1169 10
if(last.gt.10.and.erro12.gt.errmax) iroff3 = iroff3+1
1170 15 rlist(maxerr) = area1
1172 errbnd = max( epsabs,epsrel* abs( area))
1176 if(iroff1+iroff2.ge.10.or.iroff3.ge.20) ier = 2
1177 if(iroff2.ge.5) ierro = 3
1182 if(last.eq.limit) ier = 1
1187 if( max( abs( a1), abs( b2)).le.(0.1d+01+0.1d+03*epmach)* &
1188 ( abs( a2)+0.1d+04*uflow))
then 1194 if(error2.gt.error1)
go to 20
1198 elist(maxerr) = error1
1199 elist(last) = error2
1206 rlist(maxerr) = area2
1208 elist(maxerr) = error2
1209 elist(last) = error1
1215 30
call dqpsrt(limit,last,maxerr,errmax,elist,iord,nrmax)
1216 if(errsum.le.errbnd)
go to 115
1217 if(ier.ne.0)
go to 100
1218 if(last.eq.2)
go to 80
1220 erlarg = erlarg-erlast
1221 if( abs( b1-a1).gt.small) erlarg = erlarg+erro12
1227 if( abs( blist(maxerr)-alist(maxerr)).gt.small)
go to 90
1230 40
if(ierro.eq.3.or.erlarg.le.ertest)
go to 60
1238 if(last.gt.(2+limit/2)) jupbnd = limit+3-last
1241 maxerr = iord(nrmax)
1242 errmax = elist(maxerr)
1243 if( abs( blist(maxerr)-alist(maxerr)).gt.small)
go to 90
1249 60 numrl2 = numrl2+1
1250 rlist2(numrl2) = area
1251 call dqelg(numrl2,rlist2,reseps,abseps,res3la,nres)
1253 if(ktmin.gt.5.and.abserr.lt.0.1d-02*errsum) ier = 5
1254 if(abseps.ge.abserr)
go to 70
1259 ertest = max( epsabs,epsrel* abs( reseps))
1260 if(abserr.le.ertest)
go to 100
1264 70
if(numrl2.eq.1) noext = .true.
1265 if(ier.eq.5)
go to 100
1267 errmax = elist(maxerr)
1270 small = small*0.5d+00
1273 80 small = 0.375d+00
1281 100
if(abserr.eq.oflow)
go to 115
1282 if((ier+ierro).eq.0)
go to 110
1283 if(ierro.eq.3) abserr = abserr+correc
1284 if(ier.eq.0) ier = 3
1285 if(result.ne.0.0d+00.and.area.ne.0.0d+00)
go to 105
1286 if(abserr.gt.errsum)
go to 115
1287 if(area.eq.0.0d+00)
go to 130
1289 105
if(abserr/ abs( result).gt.errsum/ abs( area))
go to 115
1295 if ( ksgn .eq. (-1) .and. &
1296 max( abs( result), abs( area)) .le. defabs*0.1d-01 )
then 1300 if ( 0.1d-01 .gt. (result/area) .or. &
1301 (result/area) .gt. 0.1d+03 .or. &
1302 errsum .gt. abs( area) )
then 1310 115 result = 0.0d+00
1312 result = result+rlist(k)
1318 if(inf.eq.2) neval = 2*neval
1319 if(ier.gt.2) ier=ier-1
1476 subroutine dqagi ( f, bound, inf, epsabs, epsrel, result, abserr, neval, &
1477 ier,limit,lenw,last,iwork,work)
1481 real ( kind = 8 ) abserr,bound,epsabs,epsrel,f,result,work
1482 integer ( kind = 4 ) ier,inf,iwork,last,lenw,limit,lvl,l1,l2,l3,neval
1484 dimension iwork(limit),work(lenw)
1495 if(limit.lt.1.or.lenw.lt.limit*4)
go to 10
1503 call dqagie(f,bound,inf,epsabs,epsrel,limit,result,abserr, &
1504 neval,ier,work(1),work(l1),work(l2),work(l3),iwork,last)
1509 10
if(ier.eq.6) lvl = 1
1512 call xerror(
'abnormal return from dqagi',26,ier,lvl)
1516 end subroutine dqagi 1747 subroutine dqagpe(f,a,b,npts2,points,epsabs,epsrel,limit,result, &
1748 abserr,neval,ier,alist,blist,rlist,elist,pts,iord,level,ndin, &
1753 real ( kind = 8 ) a,abseps,abserr,alist,area,area1,area12,area2,a1, &
1754 a2,b,blist,b1,b2,correc,defabs,defab1,defab2, &
1755 dres,elist,epmach,epsabs,epsrel,erlarg,erlast,errbnd, &
1756 errmax,error1,erro12,error2,errsum,ertest,f,oflow,points,pts, &
1757 resa,resabs,reseps,result,res3la,rlist,rlist2,sgn,temp,uflow
1758 integer ( kind = 4 ) i,id,ier,ierro,ind1,ind2,iord,ip1, &
1759 iroff1,iroff2,iroff3,j, &
1760 jlow,jupbnd,k,ksgn,ktmin,last,levcur,level,levmax,limit,maxerr, &
1761 ndin,neval,nint,nintp1,npts,npts2,nres,nrmax,numrl2
1762 logical extrap,noext
1764 dimension alist(limit),blist(limit),elist(limit),iord(limit), &
1765 level(limit),ndin(npts2),points(npts2),pts(npts2),res3la(3), &
1766 rlist(limit),rlist2(52)
1770 epmach = epsilon( epmach )
1786 if(npts2.lt.2.or.limit.le.npts.or.(epsabs.le.0.0d+00.and. &
1787 epsrel.lt. max( 0.5d+02*epmach,0.5d-28))) ier = 6
1797 if(a.gt.b) sgn = -1.0d+00
1799 if(npts.eq.0)
go to 15
1801 pts(i+1) = points(i)
1803 15 pts(npts+2) = max( a,b)
1806 if(npts.eq.0)
go to 40
1811 if(pts(i).gt.pts(j))
then 1818 if(pts(1).ne. min(a,b).or.pts(nintp1).ne. max( a,b)) ier = 6
1830 call dqk21(f,a1,b1,area1,error1,defabs,resa)
1831 abserr = abserr+error1
1832 result = result+area1
1834 if(error1.eq.resa.and.error1.ne.0.0d+00) ndin(i) = 1
1835 resabs = resabs+defabs
1847 if(ndin(i).eq.1) elist(i) = abserr
1848 errsum = errsum+elist(i)
1856 errbnd = max( epsabs,epsrel*dres)
1857 if(abserr.le.0.1d+03*epmach*resabs.and.abserr.gt.errbnd) ier = 2
1858 if(nint.eq.1)
go to 80
1865 if(elist(ind1).le.elist(ind2))
then 1870 if(ind1.ne.iord(i))
then 1876 if(limit.lt.npts2) ier = 1
1877 80
if(ier.ne.0.or.abserr.le.errbnd)
go to 210
1883 errmax = elist(maxerr)
1898 uflow = tiny( uflow )
1899 oflow = huge( oflow )
1902 if(dres.ge.(0.1d+01-0.5d+02*epmach)*resabs) ksgn = 1
1906 do 160 last = npts2,limit
1910 levcur = level(maxerr)+1
1912 b1 = 0.5d+00*(alist(maxerr)+blist(maxerr))
1916 call dqk21(f,a1,b1,area1,error1,resa,defab1)
1917 call dqk21(f,a2,b2,area2,error2,resa,defab2)
1923 area12 = area1+area2
1924 erro12 = error1+error2
1925 errsum = errsum+erro12-errmax
1926 area = area+area12-rlist(maxerr)
1927 if(defab1.eq.error1.or.defab2.eq.error2)
go to 95
1928 if( abs( rlist(maxerr)-area12).gt.0.1d-04* abs( area12) &
1929 .or.erro12.lt.0.99d+00*errmax)
go to 90
1930 if(extrap) iroff2 = iroff2+1
1931 if(.not.extrap) iroff1 = iroff1+1
1932 90
if(last.gt.10.and.erro12.gt.errmax) iroff3 = iroff3+1
1933 95 level(maxerr) = levcur
1934 level(last) = levcur
1935 rlist(maxerr) = area1
1937 errbnd = max( epsabs,epsrel* abs( area))
1941 if(iroff1+iroff2.ge.10.or.iroff3.ge.20) ier = 2
1942 if(iroff2.ge.5) ierro = 3
1947 if(last.eq.limit) ier = 1
1952 if( max( abs( a1), abs( b2)).le.(0.1d+01+0.1d+03*epmach)* &
1953 ( abs( a2)+0.1d+04*uflow)) ier = 4
1957 if(error2.gt.error1)
go to 100
1961 elist(maxerr) = error1
1962 elist(last) = error2
1964 100 alist(maxerr) = a2
1967 rlist(maxerr) = area2
1969 elist(maxerr) = error2
1970 elist(last) = error1
1976 110
call dqpsrt(limit,last,maxerr,errmax,elist,iord,nrmax)
1977 if(errsum.le.errbnd)
go to 190
1978 if(ier.ne.0)
go to 170
1980 erlarg = erlarg-erlast
1981 if(levcur+1.le.levmax) erlarg = erlarg+erro12
1982 if(extrap)
go to 120
1987 if(level(maxerr)+1.le.levmax)
go to 160
1990 120
if(ierro.eq.3.or.erlarg.le.ertest)
go to 140
1998 if(last.gt.(2+limit/2)) jupbnd = limit+3-last
2001 maxerr = iord(nrmax)
2002 errmax = elist(maxerr)
2003 if(level(maxerr)+1.le.levmax)
go to 160
2009 140 numrl2 = numrl2+1
2010 rlist2(numrl2) = area
2011 if(numrl2.le.2)
go to 155
2012 call dqelg(numrl2,rlist2,reseps,abseps,res3la,nres)
2014 if(ktmin.gt.5.and.abserr.lt.0.1d-02*errsum) ier = 5
2015 if(abseps.ge.abserr)
go to 150
2020 ertest = max( epsabs,epsrel* abs( reseps))
2021 if(abserr.lt.ertest)
go to 170
2025 150
if(numrl2.eq.1) noext = .true.
2026 if(ier.ge.5)
go to 170
2027 155 maxerr = iord(1)
2028 errmax = elist(maxerr)
2039 if(abserr.eq.oflow)
go to 190
2040 if((ier+ierro).eq.0)
go to 180
2041 if(ierro.eq.3) abserr = abserr+correc
2042 if(ier.eq.0) ier = 3
2043 if(result.ne.0.0d+00.and.area.ne.0.0d+00)
go to 175
2044 if(abserr.gt.errsum)
go to 190
2045 if(area.eq.0.0d+00)
go to 210
2047 175
if(abserr/ abs( result).gt.errsum/ abs( area))
go to 190
2051 180
if(ksgn.eq.(-1).and. max( abs( result), abs( area)).le. &
2052 resabs*0.1d-01)
go to 210
2053 if(0.1d-01.gt.(result/area).or.(result/area).gt.0.1d+03.or. &
2054 errsum.gt. abs( area)) ier = 6
2059 190 result = 0.0d+00
2061 result = result+rlist(k)
2065 210
if(ier.gt.2) ier = ier-1
2250 subroutine dqagp ( f, a, b, npts2, points, epsabs, epsrel, result, abserr, &
2251 neval, ier, leniw, lenw, last, iwork, work )
2255 real ( kind = 8 ) a,abserr,b,epsabs,epsrel,f,points,result,work
2256 integer ( kind = 4 ) ier,iwork,last,leniw,lenw,limit,lvl,l1,l2,l3, &
2259 dimension iwork(leniw),points(npts2),work(lenw)
2270 if(leniw.lt.(3*npts2-2).or.lenw.lt.(leniw*2-npts2).or.npts2.lt.2) &
2275 limit = (leniw-npts2)/2
2281 call dqagpe(f,a,b,npts2,points,epsabs,epsrel,limit,result,abserr, &
2282 neval,ier,work(1),work(l1),work(l2),work(l3),work(l4), &
2283 iwork(1),iwork(l1),iwork(l2),last)
2288 10
if(ier.eq.6) lvl = 1
2291 call xerror(
'abnormal return from dqagp',26,ier,lvl)
2295 end subroutine dqagp 2490 subroutine dqagse(f,a,b,epsabs,epsrel,limit,result,abserr,neval, &
2491 ier,alist,blist,rlist,elist,iord,last)
2495 real ( kind = 8 ) a,abseps,abserr,alist,area,area1,area12,area2,a1, &
2496 a2,b,blist,b1,b2,correc,defabs,defab1,defab2, &
2497 dres,elist,epmach,epsabs,epsrel,erlarg,erlast,errbnd,errmax, &
2498 error1,error2,erro12,errsum,ertest,f,oflow,resabs,reseps,result, &
2499 res3la,rlist,rlist2,small,uflow
2500 integer ( kind = 4 ) id,ier,ierro,iord,iroff1,iroff2,iroff3,jupbnd, &
2501 k,ksgn,ktmin,last,limit,maxerr,neval,nres,nrmax,numrl2
2502 logical extrap,noext
2503 dimension alist(limit),blist(limit),elist(limit),iord(limit), &
2504 res3la(3),rlist(limit),rlist2(52)
2508 epmach = epsilon( epmach )
2522 if(epsabs.le.0.0d+00.and.epsrel.lt. max( 0.5d+02*epmach,0.5d-28))
then 2529 uflow = tiny( uflow )
2530 oflow = huge( oflow )
2532 call dqk21(f,a,b,result,abserr,defabs,resabs)
2537 errbnd = max( epsabs,epsrel*dres)
2542 if(abserr.le.1.0d+02*epmach*defabs.and.abserr.gt.errbnd) ier = 2
2543 if(limit.eq.1) ier = 1
2544 if(ier.ne.0.or.(abserr.le.errbnd.and.abserr.ne.resabs).or. &
2545 abserr.eq.0.0d+00)
go to 140
2565 if(dres.ge.(0.1d+01-0.5d+02*epmach)*defabs) ksgn = 1
2569 do 90 last = 2,limit
2574 b1 = 0.5d+00*(alist(maxerr)+blist(maxerr))
2578 call dqk21(f,a1,b1,area1,error1,resabs,defab1)
2579 call dqk21(f,a2,b2,area2,error2,resabs,defab2)
2584 area12 = area1+area2
2585 erro12 = error1+error2
2586 errsum = errsum+erro12-errmax
2587 area = area+area12-rlist(maxerr)
2588 if(defab1.eq.error1.or.defab2.eq.error2)
go to 15
2589 if( abs( rlist(maxerr)-area12).gt.0.1d-04* abs( area12) &
2590 .or.erro12.lt.0.99d+00*errmax)
go to 10
2591 if(extrap) iroff2 = iroff2+1
2592 if(.not.extrap) iroff1 = iroff1+1
2593 10
if(last.gt.10.and.erro12.gt.errmax) iroff3 = iroff3+1
2594 15 rlist(maxerr) = area1
2596 errbnd = max( epsabs,epsrel* abs( area))
2600 if(iroff1+iroff2.ge.10.or.iroff3.ge.20) ier = 2
2601 if(iroff2.ge.5) ierro = 3
2606 if(last.eq.limit) ier = 1
2611 if( max( abs( a1), abs( b2)).le.(0.1d+01+0.1d+03*epmach)* &
2612 ( abs( a2)+0.1d+04*uflow)) ier = 4
2616 if(error2.gt.error1)
go to 20
2620 elist(maxerr) = error1
2621 elist(last) = error2
2623 20 alist(maxerr) = a2
2626 rlist(maxerr) = area2
2628 elist(maxerr) = error2
2629 elist(last) = error1
2635 30
call dqpsrt(limit,last,maxerr,errmax,elist,iord,nrmax)
2636 if(errsum.le.errbnd)
go to 115
2637 if(ier.ne.0)
go to 100
2638 if(last.eq.2)
go to 80
2640 erlarg = erlarg-erlast
2641 if( abs( b1-a1).gt.small) erlarg = erlarg+erro12
2647 if( abs( blist(maxerr)-alist(maxerr)).gt.small)
go to 90
2650 40
if(ierro.eq.3.or.erlarg.le.ertest)
go to 60
2658 if(last.gt.(2+limit/2)) jupbnd = limit+3-last
2660 maxerr = iord(nrmax)
2661 errmax = elist(maxerr)
2662 if( abs( blist(maxerr)-alist(maxerr)).gt.small)
go to 90
2668 60 numrl2 = numrl2+1
2669 rlist2(numrl2) = area
2670 call dqelg(numrl2,rlist2,reseps,abseps,res3la,nres)
2672 if(ktmin.gt.5.and.abserr.lt.0.1d-02*errsum) ier = 5
2673 if(abseps.ge.abserr)
go to 70
2678 ertest = max( epsabs,epsrel* abs( reseps))
2679 if(abserr.le.ertest)
go to 100
2683 70
if(numrl2.eq.1) noext = .true.
2684 if(ier.eq.5)
go to 100
2686 errmax = elist(maxerr)
2689 small = small*0.5d+00
2692 80 small = abs( b-a)*0.375d+00
2700 100
if(abserr.eq.oflow)
go to 115
2701 if(ier+ierro.eq.0)
go to 110
2702 if(ierro.eq.3) abserr = abserr+correc
2703 if(ier.eq.0) ier = 3
2704 if(result.ne.0.0d+00.and.area.ne.0.0d+00)
go to 105
2705 if(abserr.gt.errsum)
go to 115
2706 if(area.eq.0.0d+00)
go to 130
2708 105
if(abserr/ abs( result).gt.errsum/ abs( area))
go to 115
2712 110
if(ksgn.eq.(-1).and. max( abs( result), abs( area)).le. &
2713 defabs*0.1d-01)
go to 130
2714 if(0.1d-01.gt.(result/area).or.(result/area).gt.0.1d+03 &
2715 .or.errsum.gt. abs( area)) ier = 6
2720 115 result = 0.0d+00
2722 result = result+rlist(k)
2725 130
if(ier.gt.2) ier = ier-1
2726 140 neval = 42*last-21
2876 subroutine dqags ( f, a, b, epsabs, epsrel, result, abserr, neval, ier, &
2877 limit, lenw, last, iwork, work )
2881 real ( kind = 8 ) a,abserr,b,epsabs,epsrel,f,result,work
2882 integer ( kind = 4 ) ier,iwork,last,lenw,limit,lvl,l1,l2,l3,neval
2883 dimension iwork(limit),work(lenw)
2894 if(limit.lt.1.or.lenw.lt.limit*4)
go to 10
2902 call dqagse(f,a,b,epsabs,epsrel,limit,result,abserr,neval, &
2903 ier,work(1),work(l1),work(l2),work(l3),iwork,last)
2908 10
if(ier.eq.6) lvl = 1
2909 if(ier.ne.0)
call xerror(
'abnormal return from dqags',26,ier,lvl)
2912 end subroutine dqags 3071 subroutine dqawce(f,a,b,c,epsabs,epsrel,limit,result,abserr,neval, &
3072 ier,alist,blist,rlist,elist,iord,last)
3076 real ( kind = 8 ) a,aa,abserr,alist,area,area1,area12,area2,a1,a2, &
3077 b,bb,blist,b1,b2,c,elist,epmach,epsabs,epsrel, &
3078 errbnd,errmax,error1,erro12,error2,errsum,f,result,rlist,uflow
3079 integer ( kind = 4 ) ier,iord,iroff1,iroff2,k,krule,last,limit,&
3082 dimension alist(limit),blist(limit),rlist(limit),elist(limit), &
3087 epmach = epsilon( epmach )
3088 uflow = tiny( uflow )
3105 (epsabs.le.0.0d+00 .and. epsrel.lt. max( 0.5d+02*epmach,0.5d-28)) )
then 3122 call dqc25c(f,aa,bb,c,result,abserr,krule,neval)
3132 errbnd = max( epsabs,epsrel* abs( result))
3133 if(limit.eq.1) ier = 1
3135 if(abserr.lt. min(0.1d-01* abs( result),errbnd) &
3136 .or.ier.eq.1)
go to 70
3153 do 40 last = 2,limit
3158 b1 = 0.5d+00*(alist(maxerr)+blist(maxerr))
3160 if(c.le.b1.and.c.gt.a1) b1 = 0.5d+00*(c+b2)
3161 if(c.gt.b1.and.c.lt.b2) b1 = 0.5d+00*(a1+c)
3164 call dqc25c(f,a1,b1,c,area1,error1,krule,nev)
3166 call dqc25c(f,a2,b2,c,area2,error2,krule,nev)
3172 area12 = area1+area2
3173 erro12 = error1+error2
3174 errsum = errsum+erro12-errmax
3175 area = area+area12-rlist(maxerr)
3176 if( abs( rlist(maxerr)-area12).lt.0.1d-04* abs( area12) &
3177 .and.erro12.ge.0.99d+00*errmax.and.krule.eq.0) &
3179 if(last.gt.10.and.erro12.gt.errmax.and.krule.eq.0) &
3181 rlist(maxerr) = area1
3183 errbnd = max( epsabs,epsrel* abs( area))
3184 if(errsum.le.errbnd)
go to 15
3188 if(iroff1.ge.6.and.iroff2.gt.20) ier = 2
3192 if(last.eq.limit) ier = 1
3197 if( max( abs( a1), abs( b2)).le.(0.1d+01+0.1d+03*epmach) &
3198 *( abs( a2)+0.1d+04*uflow)) ier = 3
3204 if ( error2 .le. error1 )
then 3208 elist(maxerr) = error1
3209 elist(last) = error2
3214 rlist(maxerr) = area2
3216 elist(maxerr) = error2
3217 elist(last) = error1
3224 call dqpsrt(limit,last,maxerr,errmax,elist,iord,nrmax)
3226 if(ier.ne.0.or.errsum.le.errbnd)
go to 50
3236 result = result+rlist(k)
3240 70
if (aa.eq.b) result=-result
3382 subroutine dqawc ( f, a, b, c, epsabs, epsrel, result, abserr, neval, ier, &
3383 limit, lenw, last, iwork, work )
3387 real ( kind = 8 ) a,abserr,b,c,epsabs,epsrel,f,result,work
3388 integer ( kind = 4 ) ier,iwork,last,lenw,limit,lvl,l1,l2,l3,neval
3389 dimension iwork(limit),work(lenw)
3400 if(limit.lt.1.or.lenw.lt.limit*4)
go to 10
3407 call dqawce(f,a,b,c,epsabs,epsrel,limit,result,abserr,neval,ier, &
3408 work(1),work(l1),work(l2),work(l3),iwork,last)
3413 10
if(ier.eq.6) lvl = 1
3416 call xerror(
'abnormal return from dqawc',26,ier,lvl)
3420 end subroutine dqawc 3632 subroutine dqawfe(f,a,omega,integr,epsabs,limlst,limit,maxp1, &
3633 result,abserr,neval,ier,rslst,erlst,ierlst,lst,alist,blist, &
3634 rlist,elist,iord,nnlog,chebmo)
3638 real ( kind = 8 ) a,abseps,abserr,alist,blist,chebmo,correc,cycle, &
3639 c1,c2,dl,dla,drl,elist,erlst,ep,eps,epsa, &
3640 epsabs,errsum,f,fact,omega,p,pi,p1,psum,reseps,result,res3la, &
3642 integer ( kind = 4 ) ier,ierlst,integr,iord,ktmin,l,last,lst,limit
3643 integer ( kind = 4 ) limlst
3644 integer ( kind = 4 ) ll
3645 integer ( kind = 4 ) maxp1,momcom,nev,neval,nnlog,nres,numrl2
3647 dimension alist(limit),blist(limit),chebmo(maxp1,25),elist(limit), &
3648 erlst(limlst),ierlst(limlst),iord(limit),nnlog(limit),psum(52), &
3649 res3la(3),rlist(limit),rslst(limlst)
3654 data pi / 3.14159265358979323846264338327950d+00 /
3664 if((integr.ne.1.and.integr.ne.2).or.epsabs.le.0.0d+00.or. &
3670 if(omega.ne.0.0d+00)
go to 10
3674 if(integr.eq.1)
then 3675 call dqagie(f,0.0d+00,1,epsabs,0.0d+00,limit, &
3676 result,abserr,neval,ier,alist,blist,rlist,elist,iord,last)
3689 cycle = dl*pi/ abs( omega)
3698 uflow = tiny( uflow )
3700 if(epsabs.gt.uflow/p1) eps = epsabs*p1
3715 call dqawoe(f,c1,c2,omega,integr,epsa,0.0d+00,limit,lst,maxp1, &
3716 rslst(lst),erlst(lst),nev,ierlst(lst),last,alist,blist,rlist, &
3717 elist,iord,nnlog,momcom,chebmo)
3720 errsum = errsum+erlst(lst)
3721 drl = 0.5d+02* abs( rslst(lst))
3725 if((errsum+drl).le.epsabs.and.lst.ge.6)
go to 80
3726 correc = max( correc,erlst(lst))
3727 if(ierlst(lst).ne.0) eps = max( ep,correc*p1)
3728 if(ierlst(lst).ne.0) ier = 7
3729 if(ier.eq.7.and.(errsum+drl).le.correc*0.1d+02.and. &
3732 if(lst.gt.1)
go to 20
3735 20 psum(numrl2) = psum(ll)+rslst(lst)
3736 if(lst.eq.2)
go to 40
3740 if(lst.eq.limlst) ier = 1
3744 call dqelg(numrl2,psum,reseps,abseps,res3la,nres)
3749 if(ktmin.ge.15.and.abserr.le.0.1d-02*(errsum+drl)) ier = 4
3750 if(abseps.gt.abserr.and.lst.ne.3)
go to 30
3759 if((abserr+0.1d+02*correc).le.epsabs.or. &
3760 (abserr.le.epsabs.and.0.1d+02*correc.ge.epsabs))
go to 60
3761 30
if(ier.ne.0.and.ier.ne.7)
go to 60
3769 60 abserr = abserr+0.1d+02*correc
3770 if(ier.eq.0)
go to 999
3771 if(result.ne.0.0d+00.and.psum(numrl2).ne.0.0d+00)
go to 70
3772 if(abserr.gt.errsum)
go to 80
3773 if(psum(numrl2).eq.0.0d+00)
go to 999
3774 70
if(abserr/ abs( result).gt.(errsum+drl)/ abs( psum(numrl2))) &
3776 if(ier.ge.1.and.ier.ne.7) abserr = abserr+drl
3778 80 result = psum(numrl2)
3967 subroutine dqawf ( f, a, omega, integr, epsabs, result, abserr, neval, ier, &
3968 limlst, lst, leniw, maxp1, lenw, iwork, work )
3972 integer ( kind = 4 ) leniw
3973 integer ( kind = 4 ) lenw
3976 real ( kind = 8 ) abserr
3977 real ( kind = 8 ) epsabs
3978 real ( kind = 8 ),
external :: f
3979 integer ( kind = 4 ) ier
3980 integer ( kind = 4 ) integr
3981 integer ( kind = 4 ) iwork(leniw)
3982 integer ( kind = 4 ) last
3983 integer ( kind = 4 ) limit
3984 integer ( kind = 4 ) limlst
3985 integer ( kind = 4 ) ll2
3986 integer ( kind = 4 ) lst
3987 integer ( kind = 4 ) lvl
3988 integer ( kind = 4 ) l1
3989 integer ( kind = 4 ) l2
3990 integer ( kind = 4 ) l3
3991 integer ( kind = 4 ) l4
3992 integer ( kind = 4 ) l5
3993 integer ( kind = 4 ) l6
3994 integer ( kind = 4 ) maxp1
3995 integer ( kind = 4 ) neval
3996 real ( kind = 8 ) omega
3997 real ( kind = 8 ) result
3998 real ( kind = 8 ) work(lenw)
4007 if(limlst.lt.3.or.leniw.lt.(limlst+2).or.maxp1.lt.1.or.lenw.lt. &
4008 (leniw*2+maxp1*25))
go to 10
4012 limit = (leniw-limlst)/2
4020 call dqawfe(f,a,omega,integr,epsabs,limlst,limit,maxp1,result, &
4021 abserr,neval,ier,work(1),work(l1),iwork(1),lst,work(l2), &
4022 work(l3),work(l4),work(l5),iwork(l1),iwork(ll2),work(l6))
4029 if(ier.eq.6) lvl = 1
4030 if(ier.ne.0)
call xerror(
'abnormal return from dqawf',26,ier,lvl)
4033 end subroutine dqawf 4280 subroutine dqawoe ( f, a, b, omega, integr, epsabs, epsrel, limit, icall, &
4281 maxp1, result, abserr, neval, ier, last, alist, blist, rlist, elist, iord, &
4282 nnlog, momcom, chebmo )
4286 real ( kind = 8 ) a,abseps,abserr,alist,area,area1,area12,area2,a1, &
4287 a2,b,blist,b1,b2,chebmo,correc,defab1,defab2,defabs, &
4288 domega,dres,elist,epmach,epsabs,epsrel,erlarg,erlast, &
4289 errbnd,errmax,error1,erro12,error2,errsum,ertest,f,oflow, &
4290 omega,resabs,reseps,result,res3la,rlist,rlist2,small,uflow,width
4291 integer ( kind = 4 ) icall,id,ier,ierro,integr,iord,iroff1,iroff2
4292 integer ( kind = 4 ) iroff3
4293 integer ( kind = 4 ) jupbnd
4294 integer ( kind = 4 ) k,ksgn,ktmin,last,limit,maxerr,maxp1,momcom,nev,neval, &
4295 nnlog,nres,nrmax,nrmom,numrl2
4296 logical extrap,noext,extall
4298 dimension alist(limit),blist(limit),rlist(limit),elist(limit), &
4299 iord(limit),rlist2(52),res3la(3),chebmo(maxp1,25),nnlog(limit)
4302 epmach = epsilon( epmach )
4317 if((integr.ne.1.and.integr.ne.2).or.(epsabs.le.0.0d+00.and. &
4318 epsrel.lt. max( 0.5d+02*epmach,0.5d-28)).or.icall.lt.1.or. &
4320 if(ier.eq.6)
go to 999
4324 domega = abs( omega)
4326 if (icall.gt.1)
go to 5
4328 5
call dqc25f(f,a,b,domega,integr,nrmom,maxp1,0,result,abserr, &
4329 neval,defabs,resabs,momcom,chebmo)
4334 errbnd = max( epsabs,epsrel*dres)
4338 if(abserr.le.0.1d+03*epmach*defabs.and.abserr.gt.errbnd) ier = 2
4339 if(limit.eq.1) ier = 1
4340 if(ier.ne.0.or.abserr.le.errbnd)
go to 200
4344 uflow = tiny( uflow )
4345 oflow = huge( oflow )
4359 small = abs( b-a)*0.75d+00
4363 if(0.5d+00* abs( b-a)*domega.gt.0.2d+01)
go to 10
4367 10
if(0.25d+00* abs( b-a)*domega.le.0.2d+01) extall = .true.
4369 if(dres.ge.(0.1d+01-0.5d+02*epmach)*defabs) ksgn = 1
4373 do 140 last = 2,limit
4377 nrmom = nnlog(maxerr)+1
4379 b1 = 0.5d+00*(alist(maxerr)+blist(maxerr))
4383 call dqc25f(f,a1,b1,domega,integr,nrmom,maxp1,0, &
4384 area1,error1,nev,resabs,defab1,momcom,chebmo)
4386 call dqc25f(f,a2,b2,domega,integr,nrmom,maxp1,1, &
4387 area2,error2,nev,resabs,defab2,momcom,chebmo)
4393 area12 = area1+area2
4394 erro12 = error1+error2
4395 errsum = errsum+erro12-errmax
4396 area = area+area12-rlist(maxerr)
4397 if(defab1.eq.error1.or.defab2.eq.error2)
go to 25
4398 if( abs( rlist(maxerr)-area12).gt.0.1d-04* abs( area12) &
4399 .or.erro12.lt.0.99d+00*errmax)
go to 20
4400 if(extrap) iroff2 = iroff2+1
4401 if(.not.extrap) iroff1 = iroff1+1
4402 20
if(last.gt.10.and.erro12.gt.errmax) iroff3 = iroff3+1
4403 25 rlist(maxerr) = area1
4405 nnlog(maxerr) = nrmom
4407 errbnd = max( epsabs,epsrel* abs( area))
4411 if(iroff1+iroff2.ge.10.or.iroff3.ge.20) ier = 2
4412 if(iroff2.ge.5) ierro = 3
4417 if(last.eq.limit) ier = 1
4422 if( max( abs( a1), abs( b2)).le.(0.1d+01+0.1d+03*epmach) &
4423 *( abs( a2)+0.1d+04*uflow)) ier = 4
4427 if(error2.gt.error1)
go to 30
4431 elist(maxerr) = error1
4432 elist(last) = error2
4434 30 alist(maxerr) = a2
4437 rlist(maxerr) = area2
4439 elist(maxerr) = error2
4440 elist(last) = error1
4446 40
call dqpsrt(limit,last,maxerr,errmax,elist,iord,nrmax)
4447 if(errsum.le.errbnd)
go to 170
4448 if(ier.ne.0)
go to 150
4449 if(last.eq.2.and.extall)
go to 120
4451 if(.not.extall)
go to 50
4452 erlarg = erlarg-erlast
4453 if( abs( b1-a1).gt.small) erlarg = erlarg+erro12
4459 50 width = abs( blist(maxerr)-alist(maxerr))
4460 if(width.gt.small)
go to 140
4467 small = small*0.5d+00
4468 if(0.25d+00*width*domega.gt.0.2d+01)
go to 140
4473 70
if(ierro.eq.3.or.erlarg.le.ertest)
go to 90
4480 if (last.gt.(limit/2+2)) jupbnd = limit+3-last
4483 maxerr = iord(nrmax)
4484 errmax = elist(maxerr)
4485 if( abs( blist(maxerr)-alist(maxerr)).gt.small)
go to 140
4491 90 numrl2 = numrl2+1
4492 rlist2(numrl2) = area
4493 if(numrl2.lt.3)
go to 110
4494 call dqelg(numrl2,rlist2,reseps,abseps,res3la,nres)
4496 if(ktmin.gt.5.and.abserr.lt.0.1d-02*errsum) ier = 5
4497 if(abseps.ge.abserr)
go to 100
4502 ertest = max( epsabs,epsrel* abs( reseps))
4503 if(abserr.le.ertest)
go to 150
4507 100
if(numrl2.eq.1) noext = .true.
4508 if(ier.eq.5)
go to 150
4509 110 maxerr = iord(1)
4510 errmax = elist(maxerr)
4513 small = small*0.5d+00
4516 120 small = small*0.5d+00
4518 rlist2(numrl2) = area
4525 150
if(abserr.eq.oflow.or.nres.eq.0)
go to 170
4526 if(ier+ierro.eq.0)
go to 165
4527 if(ierro.eq.3) abserr = abserr+correc
4528 if(ier.eq.0) ier = 3
4529 if(result.ne.0.0d+00.and.area.ne.0.0d+00)
go to 160
4530 if(abserr.gt.errsum)
go to 170
4531 if(area.eq.0.0d+00)
go to 190
4533 160
if(abserr/ abs( result).gt.errsum/ abs( area))
go to 170
4537 165
if(ksgn.eq.(-1).and. max( abs( result), abs( area)).le. &
4538 defabs*0.1d-01)
go to 190
4539 if(0.1d-01.gt.(result/area).or.(result/area).gt.0.1d+03 &
4540 .or.errsum.ge. abs( area)) ier = 6
4545 170 result = 0.0d+00
4547 result = result+rlist(k)
4550 190
if (ier.gt.2) ier=ier-1
4551 200
if (integr.eq.2.and.omega.lt.0.0d+00) result=-result
4736 subroutine dqawo ( f, a, b, omega, integr, epsabs, epsrel, result, abserr, &
4737 neval, ier, leniw, maxp1, lenw, last, iwork, work )
4741 real ( kind = 8 ) a,abserr,b,epsabs,epsrel,f,omega,result,work
4742 integer ( kind = 4 ) ier,integr,iwork,last,limit,lenw,leniw,lvl,l
4743 integer ( kind = 4 ) l1
4744 integer ( kind = 4 ) l2
4745 integer ( kind = 4 ) l3
4746 integer ( kind = 4 ) l4
4747 integer ( kind = 4 ) maxp1,momcom,neval
4748 dimension iwork(leniw),work(lenw)
4759 if(leniw.lt.2.or.maxp1.lt.1.or.lenw.lt.(leniw*2+maxp1*25)) &
4769 call dqawoe(f,a,b,omega,integr,epsabs,epsrel,limit,1,maxp1,result, &
4770 abserr,neval,ier,last,work(1),work(l1),work(l2),work(l3), &
4771 iwork(1),iwork(l1),momcom,work(l4))
4776 10
if(ier.eq.6) lvl = 0
4777 if(ier.ne.0)
call xerror(
'abnormal return from dqawo',26,ier,lvl)
4780 end subroutine dqawo 4958 subroutine dqawse(f,a,b,alfa,beta,integr,epsabs,epsrel,limit, &
4959 result,abserr,neval,ier,alist,blist,rlist,elist,iord,last)
4963 real ( kind = 8 ) a,abserr,alfa,alist,area,area1,area12,area2,a1, &
4964 a2,b,beta,blist,b1,b2,centre,elist,epmach, &
4965 epsabs,epsrel,errbnd,errmax,error1,erro12,error2,errsum,f, &
4966 resas1,resas2,result,rg,rh,ri,rj,rlist,uflow
4967 integer ( kind = 4 ) ier,integr,iord,iroff1,iroff2,k,last,limit
4968 integer( kind = 4 )maxerr
4969 integer ( kind = 4 ) nev
4970 integer ( kind = 4 ) neval,nrmax
4974 dimension alist(limit),blist(limit),rlist(limit),elist(limit), &
4975 iord(limit),ri(25),rj(25),rh(25),rg(25)
4977 epmach = epsilon( epmach )
4978 uflow = tiny( uflow )
4991 (epsabs.eq.0.0d+00 .and. epsrel .lt. max( 0.5d+02*epmach,0.5d-28) ) .or. &
4992 alfa .le. (-0.1d+01) .or. &
4993 beta .le. (-0.1d+01) .or. &
5005 call dqmomo(alfa,beta,ri,rj,rg,rh,integr)
5009 centre = 0.5d+00*(b+a)
5010 call dqc25s(f,a,b,a,centre,alfa,beta,ri,rj,rg,rh,area1, &
5011 error1,resas1,integr,nev)
5013 call dqc25s(f,a,b,centre,b,alfa,beta,ri,rj,rg,rh,area2, &
5014 error2,resas2,integr,nev)
5017 result = area1+area2
5018 abserr = error1+error2
5022 errbnd = max( epsabs,epsrel* abs( result))
5026 if ( error2 .le. error1 )
then 5048 if(limit.eq.2) ier = 1
5050 if(abserr.le.errbnd.or.ier.eq.1)
then 5064 do 60 last = 3,limit
5069 b1 = 0.5d+00*(alist(maxerr)+blist(maxerr))
5073 call dqc25s(f,a,b,a1,b1,alfa,beta,ri,rj,rg,rh,area1, &
5074 error1,resas1,integr,nev)
5076 call dqc25s(f,a,b,a2,b2,alfa,beta,ri,rj,rg,rh,area2, &
5077 error2,resas2,integr,nev)
5082 area12 = area1+area2
5083 erro12 = error1+error2
5084 errsum = errsum+erro12-errmax
5085 area = area+area12-rlist(maxerr)
5086 if(a.eq.a1.or.b.eq.b2)
go to 30
5087 if(resas1.eq.error1.or.resas2.eq.error2)
go to 30
5091 if( abs( rlist(maxerr)-area12).lt.0.1d-04* abs( area12) &
5092 .and.erro12.ge.0.99d+00*errmax) iroff1 = iroff1+1
5093 if(last.gt.10.and.erro12.gt.errmax) iroff2 = iroff2+1
5094 30 rlist(maxerr) = area1
5099 errbnd = max( epsabs,epsrel* abs( area))
5100 if(errsum.le.errbnd)
go to 35
5105 if(last.eq.limit) ier = 1
5109 if(iroff1.ge.6.or.iroff2.ge.20) ier = 2
5114 if( max( abs( a1), abs( b2)).le.(0.1d+01+0.1d+03*epmach)* &
5115 ( abs( a2)+0.1d+04*uflow)) ier = 3
5119 35
if(error2.gt.error1)
go to 40
5123 elist(maxerr) = error1
5124 elist(last) = error2
5127 40 alist(maxerr) = a2
5130 rlist(maxerr) = area2
5132 elist(maxerr) = error2
5133 elist(last) = error1
5139 50
call dqpsrt(limit,last,maxerr,errmax,elist,iord,nrmax)
5140 if (ier.ne.0.or.errsum.le.errbnd)
go to 70
5149 result = result+rlist(k)
5316 subroutine dqaws ( f, a, b, alfa, beta, integr, epsabs, epsrel, result, &
5317 abserr, neval, ier, limit, lenw, last, iwork, work )
5321 real ( kind = 8 ) a,abserr,alfa,b,beta,epsabs,epsrel,f,result,work
5322 integer ( kind = 4 ) ier,integr,iwork,last,lenw,limit,lvl,l1,l2,l3
5323 integer ( kind = 4 ) neval
5324 dimension iwork(limit),work(lenw)
5335 if(limit.lt.2.or.lenw.lt.limit*4)
go to 10
5343 call dqawse(f,a,b,alfa,beta,integr,epsabs,epsrel,limit,result, &
5344 abserr,neval,ier,work(1),work(l1),work(l2),work(l3),iwork,last)
5349 10
if(ier.eq.6) lvl = 1
5350 if(ier.ne.0)
call xerror(
'abnormal return from dqaws',26,ier,lvl)
5353 end subroutine dqaws 5425 subroutine dqc25c(f,a,b,c,result,abserr,krul,neval)
5429 real ( kind = 8 ) a,abserr,ak22,amom0,amom1,amom2,b,c,cc,centr, &
5430 cheb12,cheb24,f,fval,hlgth,p2,p3,p4,resabs, &
5431 resasc,result,res12,res24,u,x
5432 integer ( kind = 4 ) i,isym,k,kp,krul,neval
5433 dimension x(11),fval(25),cheb12(13),cheb24(25)
5437 data x(1) / 0.991444861373810411144557526928563d0 /
5438 data x(2) / 0.965925826289068286749743199728897d0 /
5439 data x(3) / 0.923879532511286756128183189396788d0 /
5440 data x(4) / 0.866025403784438646763723170752936d0 /
5441 data x(5) / 0.793353340291235164579776961501299d0 /
5442 data x(6) / 0.707106781186547524400844362104849d0 /
5443 data x(7) / 0.608761429008720639416097542898164d0 /
5444 data x(8) / 0.500000000000000000000000000000000d0 /
5445 data x(9) / 0.382683432365089771728459984030399d0 /
5446 data x(10) / 0.258819045102520762348898837624048d0 /
5447 data x(11) / 0.130526192220051591548406227895489d0 /
5451 cc = (0.2d+01*c-b-a)/(b-a)
5452 if( abs( cc).lt.0.11d+01)
go to 10
5457 call dqk15w(f,
dqwgtc,c,p2,p3,p4,kp,a,b,result,abserr, &
5460 if (resasc.eq.abserr) krul = krul+1
5465 10 hlgth = 0.5d+00*(b-a)
5466 centr = 0.5d+00*(b+a)
5468 fval(1) = 0.5d+00*f(hlgth+centr)
5470 fval(25) = 0.5d+00*f(centr-hlgth)
5475 fval(i) = f(u+centr)
5476 fval(isym) = f(centr-u)
5481 call dqcheb(x,fval,cheb12,cheb24)
5486 amom0 = log( abs( (0.1d+01-cc)/(0.1d+01+cc)))
5487 amom1 = 0.2d+01+cc*amom0
5488 res12 = cheb12(1)*amom0+cheb12(2)*amom1
5489 res24 = cheb24(1)*amom0+cheb24(2)*amom1
5492 amom2 = 0.2d+01*cc*amom1-amom0
5494 if((k/2)*2.eq.k) amom2 = amom2-0.4d+01/(ak22-0.1d+01)
5495 res12 = res12+cheb12(k)*amom2
5496 res24 = res24+cheb24(k)*amom2
5502 amom2 = 0.2d+01*cc*amom1-amom0
5504 if((k/2)*2.eq.k) amom2 = amom2-0.4d+01/(ak22-0.1d+01)
5505 res24 = res24+cheb24(k)*amom2
5511 abserr = abs( res24-res12)
5635 subroutine dqc25f(f,a,b,omega,integr,nrmom,maxp1,ksave,result, &
5636 abserr,neval,resabs,resasc,momcom,chebmo)
5640 real ( kind = 8 ) a,abserr,ac,an,an2,as,asap,ass,b,centr,chebmo, &
5641 cheb12,cheb24,conc,cons,cospar,d,d1, &
5642 d2,estc,ests,f,fval,hlgth,oflow,omega,parint,par2,par22, &
5643 p2,p3,p4,resabs,resasc,resc12,resc24,ress12,ress24,result, &
5645 integer ( kind = 4 ) i,iers,integr,isym,j,k,ksave,m,momcom,neval, maxp1,&
5647 dimension chebmo(maxp1,25),cheb12(13),cheb24(25),d(25),d1(25), &
5648 d2(25),fval(25),v(28),x(11)
5652 data x(1) / 0.991444861373810411144557526928563d0 /
5653 data x(2) / 0.965925826289068286749743199728897d0 /
5654 data x(3) / 0.923879532511286756128183189396788d0 /
5655 data x(4) / 0.866025403784438646763723170752936d0 /
5656 data x(5) / 0.793353340291235164579776961501299d0 /
5657 data x(6) / 0.707106781186547524400844362104849d0 /
5658 data x(7) / 0.608761429008720639416097542898164d0 /
5659 data x(8) / 0.500000000000000000000000000000000d0 /
5660 data x(9) / 0.382683432365089771728459984030399d0 /
5661 data x(10) / 0.258819045102520762348898837624048d0 /
5662 data x(11) / 0.130526192220051591548406227895489d0 /
5664 oflow = huge( oflow )
5665 centr = 0.5d+00*(b+a)
5666 hlgth = 0.5d+00*(b-a)
5667 parint = omega*hlgth
5672 if( abs( parint).gt.0.2d+01)
go to 10
5673 call dqk15w(f,
dqwgtf,omega,p2,p3,p4,integr,a,b,result, &
5674 abserr,resabs,resasc)
5681 10 conc = hlgth*dcos(centr*omega)
5682 cons = hlgth*dsin(centr*omega)
5689 if(nrmom.lt.momcom.or.ksave.eq.1)
go to 120
5694 par2 = parint*parint
5695 par22 = par2+0.2d+01
5696 sinpar = dsin(parint)
5697 cospar = dcos(parint)
5701 v(1) = 0.2d+01*sinpar/parint
5702 v(2) = (0.8d+01*cospar+(par2+par2-0.8d+01)*sinpar/parint)/par2
5703 v(3) = (0.32d+02*(par2-0.12d+02)*cospar+(0.2d+01* &
5704 ((par2-0.80d+02)*par2+0.192d+03)*sinpar)/parint)/(par2*par2)
5706 as = 0.24d+02*parint*sinpar
5707 if( abs( parint).gt.0.24d+02)
go to 30
5719 d(k) = -0.2d+01*(an2-0.4d+01)*(par22-an2-an2)
5720 d2(k) = (an-0.1d+01)*(an-0.2d+01)*par2
5721 d1(k+1) = (an+0.3d+01)*(an+0.4d+01)*par2
5722 v(k+3) = as-(an2-0.4d+01)*ac
5727 d(noequ) = -0.2d+01*(an2-0.4d+01)*(par22-an2-an2)
5728 v(noequ+3) = as-(an2-0.4d+01)*ac
5729 v(4) = v(4)-0.56d+02*par2*v(3)
5731 asap = (((((0.210d+03*par2-0.1d+01)*cospar-(0.105d+03*par2 &
5732 -0.63d+02)*ass)/an2-(0.1d+01-0.15d+02*par2)*cospar &
5733 +0.15d+02*ass)/an2-cospar+0.3d+01*ass)/an2-cospar)/an2
5734 v(noequ+3) = v(noequ+3)-0.2d+01*asap*par2*(an-0.1d+01)* &
5740 call dgtsl(noequ,d1,d,d2,v(4),iers)
5749 v(i) = ((an2-0.4d+01)*(0.2d+01*(par22-an2-an2)*v(i-1)-ac) &
5750 +as-par2*(an+0.1d+01)*(an+0.2d+01)*v(i-2))/ &
5751 (par2*(an-0.1d+01)*(an-0.2d+01))
5758 chebmo(m,2*j-1) = v(j)
5763 v(1) = 0.2d+01*(sinpar-parint*cospar)/par2
5764 v(2) = (0.18d+02-0.48d+02/par2)*sinpar/par2 &
5765 +(-0.2d+01+0.48d+02/par2)*cospar/parint
5766 ac = -0.24d+02*parint*cospar
5767 as = -0.8d+01*sinpar
5768 if( abs( parint).gt.0.24d+02)
go to 80
5778 d(k) = -0.2d+01*(an2-0.4d+01)*(par22-an2-an2)
5779 d2(k) = (an-0.1d+01)*(an-0.2d+01)*par2
5780 d1(k+1) = (an+0.3d+01)*(an+0.4d+01)*par2
5781 v(k+2) = ac+(an2-0.4d+01)*as
5786 d(noequ) = -0.2d+01*(an2-0.4d+01)*(par22-an2-an2)
5787 v(noequ+2) = ac+(an2-0.4d+01)*as
5788 v(3) = v(3)-0.42d+02*par2*v(2)
5790 asap = (((((0.105d+03*par2-0.63d+02)*ass+(0.210d+03*par2 &
5791 -0.1d+01)*sinpar)/an2+(0.15d+02*par2-0.1d+01)*sinpar- &
5792 0.15d+02*ass)/an2-0.3d+01*ass-sinpar)/an2-sinpar)/an2
5793 v(noequ+2) = v(noequ+2)-0.2d+01*asap*par2*(an-0.1d+01) &
5799 call dgtsl(noequ,d1,d,d2,v(3),iers)
5808 v(i) = ((an2-0.4d+01)*(0.2d+01*(par22-an2-an2)*v(i-1)+as) &
5809 +ac-par2*(an+0.1d+01)*(an+0.2d+01)*v(i-2)) &
5810 /(par2*(an-0.1d+01)*(an-0.2d+01))
5817 chebmo(m,2*j) = v(j)
5820 120
if (nrmom.lt.momcom) m = nrmom+1
5821 if (momcom.lt.(maxp1-1).and.nrmom.ge.momcom) momcom = momcom+1
5826 fval(1) = 0.5d+00*f(centr+hlgth)
5828 fval(25) = 0.5d+00*f(centr-hlgth)
5831 fval(i) = f(hlgth*x(i-1)+centr)
5832 fval(isym) = f(centr-hlgth*x(i-1))
5834 call dqcheb(x,fval,cheb12,cheb24)
5838 resc12 = cheb12(13)*chebmo(m,13)
5842 resc12 = resc12+cheb12(k)*chebmo(m,k)
5843 ress12 = ress12+cheb12(k+1)*chebmo(m,k+1)
5846 resc24 = cheb24(25)*chebmo(m,25)
5848 resabs = abs( cheb24(25))
5851 resc24 = resc24+cheb24(k)*chebmo(m,k)
5852 ress24 = ress24+cheb24(k+1)*chebmo(m,k+1)
5853 resabs = abs( cheb24(k))+ abs( cheb24(k+1))
5856 estc = abs( resc24-resc12)
5857 ests = abs( ress24-ress12)
5858 resabs = resabs* abs( hlgth)
5859 if(integr.eq.2)
go to 160
5860 result = conc*resc24-cons*ress24
5861 abserr = abs( conc*estc)+ abs( cons*ests)
5863 160 result = conc*ress24+cons*resc24
5864 abserr = abs( conc*ests)+ abs( cons*estc)
5964 subroutine dqc25s(f,a,b,bl,br,alfa,beta,ri,rj,rg,rh,result, &
5965 abserr,resasc,integr,nev)
5969 real ( kind = 8 ) a,abserr,alfa,b,beta,bl,br,centr,cheb12,cheb24, &
5970 dc,f,factor,fix,fval,hlgth,resabs,resasc,result,res12, &
5971 res24,rg,rh,ri,rj,u,x
5972 integer ( kind = 4 ) i,integr,isym,nev
5974 dimension cheb12(13),cheb24(25),fval(25),rg(25),rh(25),ri(25), &
5979 data x(1) / 0.991444861373810411144557526928563d0 /
5980 data x(2) / 0.965925826289068286749743199728897d0 /
5981 data x(3) / 0.923879532511286756128183189396788d0 /
5982 data x(4) / 0.866025403784438646763723170752936d0 /
5983 data x(5) / 0.793353340291235164579776961501299d0 /
5984 data x(6) / 0.707106781186547524400844362104849d0 /
5985 data x(7) / 0.608761429008720639416097542898164d0 /
5986 data x(8) / 0.500000000000000000000000000000000d0 /
5987 data x(9) / 0.382683432365089771728459984030399d0 /
5988 data x(10) / 0.258819045102520762348898837624048d0 /
5989 data x(11) / 0.130526192220051591548406227895489d0 /
5992 if(bl.eq.a.and.(alfa.ne.0.0d+00.or.integr.eq.2.or.integr.eq.4)) &
5994 if(br.eq.b.and.(beta.ne.0.0d+00.or.integr.eq.3.or.integr.eq.4)) &
6001 result,abserr,resabs,resasc)
6012 10 hlgth = 0.5d+00*(br-bl)
6013 centr = 0.5d+00*(br+bl)
6015 fval(1) = 0.5d+00*f(hlgth+centr)*(fix-hlgth)**beta
6016 fval(13) = f(centr)*(fix**beta)
6017 fval(25) = 0.5d+00*f(centr-hlgth)*(fix+hlgth)**beta
6021 fval(i) = f(u+centr)*(fix-u)**beta
6022 fval(isym) = f(centr-u)*(fix+u)**beta
6025 factor = hlgth**(alfa+0.1d+01)
6030 if(integr.gt.2)
go to 70
6031 call dqcheb(x,fval,cheb12,cheb24)
6036 res12 = res12+cheb12(i)*ri(i)
6037 res24 = res24+cheb24(i)*ri(i)
6041 res24 = res24+cheb24(i)*ri(i)
6044 if(integr.eq.1)
go to 130
6050 abserr = abs( (res24-res12)*dc)
6054 res12 = res12+cheb12(i)*rg(i)
6055 res24 = res12+cheb24(i)*rg(i)
6058 res24 = res24+cheb24(i)*rg(i)
6066 70 fval(1) = fval(1)* log(fix-hlgth)
6067 fval(13) = fval(13)* log(fix)
6068 fval(25) = fval(25)* log(fix+hlgth)
6072 fval(i) = fval(i)* log(fix-u)
6073 fval(isym) = fval(isym)* log(fix+u)
6075 call dqcheb(x,fval,cheb12,cheb24)
6080 res12 = res12+cheb12(i)*ri(i)
6081 res24 = res24+cheb24(i)*ri(i)
6085 res24 = res24+cheb24(i)*ri(i)
6087 if(integr.eq.3)
go to 130
6093 abserr = abs( (res24-res12)*dc)
6097 res12 = res12+cheb12(i)*rg(i)
6098 res24 = res24+cheb24(i)*rg(i)
6101 res24 = res24+cheb24(i)*rg(i)
6103 130 result = (result+res24)*factor
6104 abserr = (abserr+ abs( res24-res12))*factor
6113 140 hlgth = 0.5d+00*(br-bl)
6114 centr = 0.5d+00*(br+bl)
6116 fval(1) = 0.5d+00*f(hlgth+centr)*(fix+hlgth)**alfa
6117 fval(13) = f(centr)*(fix**alfa)
6118 fval(25) = 0.5d+00*f(centr-hlgth)*(fix-hlgth)**alfa
6122 fval(i) = f(u+centr)*(fix+u)**alfa
6123 fval(isym) = f(centr-u)*(fix-u)**alfa
6125 factor = hlgth**(beta+0.1d+01)
6130 if(integr.eq.2.or.integr.eq.4)
go to 200
6134 call dqcheb(x,fval,cheb12,cheb24)
6137 res12 = res12+cheb12(i)*rj(i)
6138 res24 = res24+cheb24(i)*rj(i)
6142 res24 = res24+cheb24(i)*rj(i)
6145 if(integr.eq.1)
go to 260
6151 abserr = abs( (res24-res12)*dc)
6155 res12 = res12+cheb12(i)*rh(i)
6156 res24 = res24+cheb24(i)*rh(i)
6160 res24 = res24+cheb24(i)*rh(i)
6168 200 fval(1) = fval(1)* log(hlgth+fix)
6169 fval(13) = fval(13)* log(fix)
6170 fval(25) = fval(25)* log(fix-hlgth)
6174 fval(i) = fval(i)* log(u+fix)
6175 fval(isym) = fval(isym)* log(fix-u)
6177 call dqcheb(x,fval,cheb12,cheb24)
6182 res12 = res12+cheb12(i)*rj(i)
6183 res24 = res24+cheb24(i)*rj(i)
6187 res24 = res24+cheb24(i)*rj(i)
6190 if(integr.eq.2)
go to 260
6193 abserr = abs( (res24-res12)*dc)
6200 res12 = res12+cheb12(i)*rh(i)
6201 res24 = res24+cheb24(i)*rh(i)
6205 res24 = res24+cheb24(i)*rh(i)
6208 260 result = (result+res24)*factor
6209 abserr = (abserr+ abs( res24-res12))*factor
6255 subroutine dqcheb ( x, fval, cheb12, cheb24 )
6259 real ( kind = 8 ) alam,alam1,alam2,cheb12,cheb24,fval,part1,part2, &
6261 integer ( kind = 4 ) i,j
6263 dimension cheb12(13),cheb24(25),fval(25),v(12),x(11)
6267 v(i) = fval(i)-fval(j)
6268 fval(i) = fval(i)+fval(j)
6272 alam2 = x(6)*(v(3)-v(7)-v(11))
6273 cheb12(4) = alam1+alam2
6274 cheb12(10) = alam1-alam2
6275 alam1 = v(2)-v(8)-v(10)
6276 alam2 = v(4)-v(6)-v(12)
6277 alam = x(3)*alam1+x(9)*alam2
6278 cheb24(4) = cheb12(4)+alam
6279 cheb24(22) = cheb12(4)-alam
6280 alam = x(9)*alam1-x(3)*alam2
6281 cheb24(10) = cheb12(10)+alam
6282 cheb24(16) = cheb12(10)-alam
6286 alam1 = v(1)+part1+part2
6287 alam2 = x(2)*v(3)+part3+x(10)*v(11)
6288 cheb12(2) = alam1+alam2
6289 cheb12(12) = alam1-alam2
6290 alam = x(1)*v(2)+x(3)*v(4)+x(5)*v(6)+x(7)*v(8) &
6291 +x(9)*v(10)+x(11)*v(12)
6292 cheb24(2) = cheb12(2)+alam
6293 cheb24(24) = cheb12(2)-alam
6294 alam = x(11)*v(2)-x(9)*v(4)+x(7)*v(6)-x(5)*v(8) &
6295 +x(3)*v(10)-x(1)*v(12)
6296 cheb24(12) = cheb12(12)+alam
6297 cheb24(14) = cheb12(12)-alam
6298 alam1 = v(1)-part1+part2
6299 alam2 = x(10)*v(3)-part3+x(2)*v(11)
6300 cheb12(6) = alam1+alam2
6301 cheb12(8) = alam1-alam2
6302 alam = x(5)*v(2)-x(9)*v(4)-x(1)*v(6) &
6303 -x(11)*v(8)+x(3)*v(10)+x(7)*v(12)
6304 cheb24(6) = cheb12(6)+alam
6305 cheb24(20) = cheb12(6)-alam
6306 alam = x(7)*v(2)-x(3)*v(4)-x(11)*v(6)+x(1)*v(8) &
6307 -x(9)*v(10)-x(5)*v(12)
6308 cheb24(8) = cheb12(8)+alam
6309 cheb24(18) = cheb12(8)-alam
6313 v(i) = fval(i)-fval(j)
6314 fval(i) = fval(i)+fval(j)
6317 alam1 = v(1)+x(8)*v(5)
6319 cheb12(3) = alam1+alam2
6320 cheb12(11) = alam1-alam2
6321 cheb12(7) = v(1)-v(5)
6322 alam = x(2)*v(2)+x(6)*v(4)+x(10)*v(6)
6323 cheb24(3) = cheb12(3)+alam
6324 cheb24(23) = cheb12(3)-alam
6325 alam = x(6)*(v(2)-v(4)-v(6))
6326 cheb24(7) = cheb12(7)+alam
6327 cheb24(19) = cheb12(7)-alam
6328 alam = x(10)*v(2)-x(6)*v(4)+x(2)*v(6)
6329 cheb24(11) = cheb12(11)+alam
6330 cheb24(15) = cheb12(11)-alam
6334 v(i) = fval(i)-fval(j)
6335 fval(i) = fval(i)+fval(j)
6338 cheb12(5) = v(1)+x(8)*v(3)
6339 cheb12(9) = fval(1)-x(8)*fval(3)
6341 cheb24(5) = cheb12(5)+alam
6342 cheb24(21) = cheb12(5)-alam
6343 alam = x(8)*fval(2)-fval(4)
6344 cheb24(9) = cheb12(9)+alam
6345 cheb24(17) = cheb12(9)-alam
6346 cheb12(1) = fval(1)+fval(3)
6347 alam = fval(2)+fval(4)
6348 cheb24(1) = cheb12(1)+alam
6349 cheb24(25) = cheb12(1)-alam
6350 cheb12(13) = v(1)-v(3)
6351 cheb24(13) = cheb12(13)
6352 alam = 0.1d+01/0.6d+01
6355 cheb12(i) = cheb12(i)*alam
6359 cheb12(1) = cheb12(1)*alam
6360 cheb12(13) = cheb12(13)*alam
6363 cheb24(i) = cheb24(i)*alam
6366 cheb24(1) = 0.5d+00*alam*cheb24(1)
6367 cheb24(25) = 0.5d+00*alam*cheb24(25)
6440 subroutine dqelg ( n, epstab, result, abserr, res3la, nres )
6444 real ( kind = 8 ) abserr,delta1,delta2,delta3, &
6445 epmach,epsinf,epstab,error,err1,err2,err3,e0,e1,e1abs,e2,e3, &
6446 oflow,res,result,res3la,ss,tol1,tol2,tol3
6447 integer ( kind = 4 ) i,ib,ib2,ie,indx,k1,k2,k3,limexp,n,newelm
6448 integer ( kind = 4 ) nres
6449 integer ( kind = 4 ) num
6450 dimension epstab(52),res3la(3)
6452 epmach = epsilon( epmach )
6453 oflow = huge( oflow )
6457 if(n.lt.3)
go to 100
6459 epstab(n+2) = epstab(n)
6476 tol2 = max( abs( e2),e1abs)*epmach
6479 tol3 = max( e1abs, abs( e0))*epmach
6480 if(err2.gt.tol2.or.err3.gt.tol3)
go to 10
6491 tol1 = max( e1abs, abs( e3))*epmach
6496 if(err1.le.tol1.or.err2.le.tol2.or.err3.le.tol3)
go to 20
6497 ss = 0.1d+01/delta1+0.1d+01/delta2-0.1d+01/delta3
6498 epsinf = abs( ss*e1)
6504 if(epsinf.gt.0.1d-03)
go to 30
6511 30 res = e1+0.1d+01/ss
6514 error = err2 + abs( res-e2 ) + err3
6516 if ( error .le. abserr )
then 6525 50
if(n.eq.limexp) n = 2*(limexp/2)-1
6527 if((num/2)*2.eq.num) ib = 2
6531 epstab(ib) = epstab(ib2)
6534 if(num.eq.n)
go to 80
6537 epstab(i)= epstab(indx)
6540 80
if(nres.ge.4)
go to 90
6541 res3la(nres) = result
6547 90 abserr = abs( result-res3la(3))+ abs( result-res3la(2)) &
6548 + abs( result-res3la(1))
6549 res3la(1) = res3la(2)
6550 res3la(2) = res3la(3)
6554 abserr = max( abserr, 0.5d+01*epmach* abs( result))
6557 end subroutine dqelg 6640 subroutine dqk15(f,a,b,result,abserr,resabs,resasc)
6644 real ( kind = 8 ) a,absc,abserr,b,centr,dhlgth, &
6645 epmach,f,fc,fsum,fval1,fval2,fv1,fv2,hlgth,resabs,resasc, &
6646 resg,resk,reskh,result,uflow,wg,wgk,xgk
6647 integer ( kind = 4 ) j,jtw,jtwm1
6649 dimension fv1(7),fv2(7),wg(4),wgk(8),xgk(8)
6651 data wg( 1) / 0.129484966168869693270611432679082d0 /
6652 data wg( 2) / 0.279705391489276667901467771423780d0 /
6653 data wg( 3) / 0.381830050505118944950369775488975d0 /
6654 data wg( 4) / 0.417959183673469387755102040816327d0 /
6656 data xgk( 1) / 0.991455371120812639206854697526329d0 /
6657 data xgk( 2) / 0.949107912342758524526189684047851d0 /
6658 data xgk( 3) / 0.864864423359769072789712788640926d0 /
6659 data xgk( 4) / 0.741531185599394439863864773280788d0 /
6660 data xgk( 5) / 0.586087235467691130294144838258730d0 /
6661 data xgk( 6) / 0.405845151377397166906606412076961d0 /
6662 data xgk( 7) / 0.207784955007898467600689403773245d0 /
6663 data xgk( 8) / 0.000000000000000000000000000000000d0 /
6665 data wgk( 1) / 0.022935322010529224963732008058970d0 /
6666 data wgk( 2) / 0.063092092629978553290700663189204d0 /
6667 data wgk( 3) / 0.104790010322250183839876322541518d0 /
6668 data wgk( 4) / 0.140653259715525918745189590510238d0 /
6669 data wgk( 5) / 0.169004726639267902826583426598550d0 /
6670 data wgk( 6) / 0.190350578064785409913256402421014d0 /
6671 data wgk( 7) / 0.204432940075298892414161999234649d0 /
6672 data wgk( 8) / 0.209482141084727828012999174891714d0 /
6674 epmach = epsilon( epmach )
6675 uflow = tiny( uflow )
6676 centr = 0.5d+00*(a+b)
6677 hlgth = 0.5d+00*(b-a)
6678 dhlgth = abs( hlgth)
6690 absc = hlgth*xgk(jtw)
6691 fval1 = f(centr-absc)
6692 fval2 = f(centr+absc)
6696 resg = resg+wg(j)*fsum
6697 resk = resk+wgk(jtw)*fsum
6698 resabs = resabs+wgk(jtw)*( abs( fval1)+ abs( fval2))
6703 absc = hlgth*xgk(jtwm1)
6704 fval1 = f(centr-absc)
6705 fval2 = f(centr+absc)
6709 resk = resk+wgk(jtwm1)*fsum
6710 resabs = resabs+wgk(jtwm1)*( abs( fval1)+ abs( fval2))
6713 reskh = resk*0.5d+00
6714 resasc = wgk(8)* abs( fc-reskh)
6716 resasc = resasc+wgk(j)*( abs( fv1(j)-reskh)+ abs( fv2(j)-reskh))
6720 resabs = resabs*dhlgth
6721 resasc = resasc*dhlgth
6722 abserr = abs( (resk-resg)*hlgth)
6723 if(resasc.ne.0.0d+00.and.abserr.ne.0.0d+00) &
6724 abserr = resasc* min(0.1d+01,(0.2d+03*abserr/resasc)**1.5d+00)
6725 if(resabs.gt.uflow/(0.5d+02*epmach)) abserr = max &
6726 ((epmach*0.5d+02)*resabs,abserr)
6729 end subroutine dqk15 6831 subroutine dqk15i(f,boun,inf,a,b,result,abserr,resabs,resasc)
6835 real ( kind = 8 ) a,absc,absc1,absc2,abserr,b,boun,centr,dinf, &
6836 epmach,f,fc,fsum,fval1,fval2,fv1,fv2,hlgth, &
6837 resabs,resasc,resg,resk,reskh,result,tabsc1,tabsc2,uflow,wg,wgk, &
6839 integer ( kind = 4 ) inf,j
6841 dimension fv1(7),fv2(7),xgk(8),wgk(8),wg(8)
6843 data wg(1) / 0.0d0 /
6844 data wg(2) / 0.129484966168869693270611432679082d0 /
6845 data wg(3) / 0.0d0 /
6846 data wg(4) / 0.279705391489276667901467771423780d0 /
6847 data wg(5) / 0.0d0 /
6848 data wg(6) / 0.381830050505118944950369775488975d0 /
6849 data wg(7) / 0.0d0 /
6850 data wg(8) / 0.417959183673469387755102040816327d0 /
6852 data xgk(1) / 0.991455371120812639206854697526329d0 /
6853 data xgk(2) / 0.949107912342758524526189684047851d0 /
6854 data xgk(3) / 0.864864423359769072789712788640926d0 /
6855 data xgk(4) / 0.741531185599394439863864773280788d0 /
6856 data xgk(5) / 0.586087235467691130294144838258730d0 /
6857 data xgk(6) / 0.405845151377397166906606412076961d0 /
6858 data xgk(7) / 0.207784955007898467600689403773245d0 /
6859 data xgk(8) / 0.000000000000000000000000000000000d0 /
6861 data wgk(1) / 0.022935322010529224963732008058970d0 /
6862 data wgk(2) / 0.063092092629978553290700663189204d0 /
6863 data wgk(3) / 0.104790010322250183839876322541518d0 /
6864 data wgk(4) / 0.140653259715525918745189590510238d0 /
6865 data wgk(5) / 0.169004726639267902826583426598550d0 /
6866 data wgk(6) / 0.190350578064785409913256402421014d0 /
6867 data wgk(7) / 0.204432940075298892414161999234649d0 /
6868 data wgk(8) / 0.209482141084727828012999174891714d0 /
6870 epmach = epsilon( epmach )
6871 uflow = tiny( uflow )
6872 dinf = min( 1, inf )
6873 centr = 0.5d+00*(a+b)
6874 hlgth = 0.5d+00*(b-a)
6875 tabsc1 = boun+dinf*(0.1d+01-centr)/centr
6877 if(inf.eq.2) fval1 = fval1+f(-tabsc1)
6878 fc = (fval1/centr)/centr
6891 tabsc1 = boun+dinf*(0.1d+01-absc1)/absc1
6892 tabsc2 = boun+dinf*(0.1d+01-absc2)/absc2
6895 if(inf.eq.2) fval1 = fval1+f(-tabsc1)
6896 if(inf.eq.2) fval2 = fval2+f(-tabsc2)
6897 fval1 = (fval1/absc1)/absc1
6898 fval2 = (fval2/absc2)/absc2
6902 resg = resg+wg(j)*fsum
6903 resk = resk+wgk(j)*fsum
6904 resabs = resabs+wgk(j)*( abs( fval1)+ abs( fval2))
6907 reskh = resk*0.5d+00
6908 resasc = wgk(8)* abs( fc-reskh)
6911 resasc = resasc+wgk(j)*( abs( fv1(j)-reskh)+ abs( fv2(j)-reskh))
6915 resasc = resasc*hlgth
6916 resabs = resabs*hlgth
6917 abserr = abs( (resk-resg)*hlgth)
6918 if(resasc.ne.0.0d+00.and.abserr.ne.0.d0) abserr = resasc* &
6919 min(0.1d+01,(0.2d+03*abserr/resasc)**1.5d+00)
6920 if(resabs.gt.uflow/(0.5d+02*epmach)) abserr = max &
6921 ((epmach*0.5d+02)*resabs,abserr)
7014 subroutine dqk15w(f,w,p1,p2,p3,p4,kp,a,b,result,abserr, resabs,resasc)
7018 real ( kind = 8 ) a,absc,absc1,absc2,abserr,b,centr,dhlgth, &
7019 epmach,f,fc,fsum,fval1,fval2,fv1,fv2,hlgth, &
7020 p1,p2,p3,p4,resabs,resasc,resg,resk,reskh,result,uflow,w,wg,wgk, &
7022 integer ( kind = 4 ) j,jtw,jtwm1,kp
7025 dimension fv1(7),fv2(7),xgk(8),wgk(8),wg(4)
7027 data xgk(1),xgk(2),xgk(3),xgk(4),xgk(5),xgk(6),xgk(7),xgk(8)/ &
7028 0.9914553711208126d+00, 0.9491079123427585d+00, &
7029 0.8648644233597691d+00, 0.7415311855993944d+00, &
7030 0.5860872354676911d+00, 0.4058451513773972d+00, &
7031 0.2077849550078985d+00, 0.0000000000000000d+00/
7033 data wgk(1),wgk(2),wgk(3),wgk(4),wgk(5),wgk(6),wgk(7),wgk(8)/ &
7034 0.2293532201052922d-01, 0.6309209262997855d-01, &
7035 0.1047900103222502d+00, 0.1406532597155259d+00, &
7036 0.1690047266392679d+00, 0.1903505780647854d+00, &
7037 0.2044329400752989d+00, 0.2094821410847278d+00/
7039 data wg(1),wg(2),wg(3),wg(4)/ &
7040 0.1294849661688697d+00, 0.2797053914892767d+00, &
7041 0.3818300505051889d+00, 0.4179591836734694d+00/
7043 epmach = epsilon( epmach )
7044 uflow = tiny( uflow )
7045 centr = 0.5d+00*(a+b)
7046 hlgth = 0.5d+00*(b-a)
7047 dhlgth = abs( hlgth)
7052 fc = f(centr)*w(centr,p1,p2,p3,p4,kp)
7059 absc = hlgth*xgk(jtw)
7062 fval1 = f(absc1)*w(absc1,p1,p2,p3,p4,kp)
7063 fval2 = f(absc2)*w(absc2,p1,p2,p3,p4,kp)
7067 resg = resg+wg(j)*fsum
7068 resk = resk+wgk(jtw)*fsum
7069 resabs = resabs+wgk(jtw)*( abs( fval1)+ abs( fval2))
7074 absc = hlgth*xgk(jtwm1)
7077 fval1 = f(absc1)*w(absc1,p1,p2,p3,p4,kp)
7078 fval2 = f(absc2)*w(absc2,p1,p2,p3,p4,kp)
7082 resk = resk+wgk(jtwm1)*fsum
7083 resabs = resabs+wgk(jtwm1)*( abs( fval1)+ abs( fval2))
7086 reskh = resk*0.5d+00
7087 resasc = wgk(8)* abs( fc-reskh)
7090 resasc = resasc+wgk(j)*( abs( fv1(j)-reskh)+ abs( fv2(j)-reskh))
7094 resabs = resabs*dhlgth
7095 resasc = resasc*dhlgth
7096 abserr = abs( (resk-resg)*hlgth)
7097 if(resasc.ne.0.0d+00.and.abserr.ne.0.0d+00) &
7098 abserr = resasc* min(0.1d+01,(0.2d+03*abserr/resasc)**1.5d+00)
7099 if(resabs.gt.uflow/(0.5d+02*epmach)) abserr = max( (epmach* &
7100 0.5d+02)*resabs,abserr)
7189 subroutine dqk21(f,a,b,result,abserr,resabs,resasc)
7193 real ( kind = 8 ) a,absc,abserr,b,centr,dhlgth, &
7194 epmach,f,fc,fsum,fval1,fval2,fv1,fv2,hlgth,resabs,resasc, &
7195 resg,resk,reskh,result,uflow,wg,wgk,xgk
7196 integer ( kind = 4 ) j,jtw,jtwm1
7198 dimension fv1(10),fv2(10),wg(5),wgk(11),xgk(11)
7200 data wg( 1) / 0.066671344308688137593568809893332d0 /
7201 data wg( 2) / 0.149451349150580593145776339657697d0 /
7202 data wg( 3) / 0.219086362515982043995534934228163d0 /
7203 data wg( 4) / 0.269266719309996355091226921569469d0 /
7204 data wg( 5) / 0.295524224714752870173892994651338d0 /
7206 data xgk( 1) / 0.995657163025808080735527280689003d0 /
7207 data xgk( 2) / 0.973906528517171720077964012084452d0 /
7208 data xgk( 3) / 0.930157491355708226001207180059508d0 /
7209 data xgk( 4) / 0.865063366688984510732096688423493d0 /
7210 data xgk( 5) / 0.780817726586416897063717578345042d0 /
7211 data xgk( 6) / 0.679409568299024406234327365114874d0 /
7212 data xgk( 7) / 0.562757134668604683339000099272694d0 /
7213 data xgk( 8) / 0.433395394129247190799265943165784d0 /
7214 data xgk( 9) / 0.294392862701460198131126603103866d0 /
7215 data xgk( 10) / 0.148874338981631210884826001129720d0 /
7216 data xgk( 11) / 0.000000000000000000000000000000000d0 /
7218 data wgk( 1) / 0.011694638867371874278064396062192d0 /
7219 data wgk( 2) / 0.032558162307964727478818972459390d0 /
7220 data wgk( 3) / 0.054755896574351996031381300244580d0 /
7221 data wgk( 4) / 0.075039674810919952767043140916190d0 /
7222 data wgk( 5) / 0.093125454583697605535065465083366d0 /
7223 data wgk( 6) / 0.109387158802297641899210590325805d0 /
7224 data wgk( 7) / 0.123491976262065851077958109831074d0 /
7225 data wgk( 8) / 0.134709217311473325928054001771707d0 /
7226 data wgk( 9) / 0.142775938577060080797094273138717d0 /
7227 data wgk( 10) / 0.147739104901338491374841515972068d0 /
7228 data wgk( 11) / 0.149445554002916905664936468389821d0 /
7230 epmach = epsilon( epmach )
7231 uflow = tiny( uflow )
7232 centr = 0.5d+00*(a+b)
7233 hlgth = 0.5d+00*(b-a)
7234 dhlgth = abs( hlgth)
7245 absc = hlgth*xgk(jtw)
7246 fval1 = f(centr-absc)
7247 fval2 = f(centr+absc)
7251 resg = resg+wg(j)*fsum
7252 resk = resk+wgk(jtw)*fsum
7253 resabs = resabs+wgk(jtw)*( abs( fval1)+ abs( fval2))
7258 absc = hlgth*xgk(jtwm1)
7259 fval1 = f(centr-absc)
7260 fval2 = f(centr+absc)
7264 resk = resk+wgk(jtwm1)*fsum
7265 resabs = resabs+wgk(jtwm1)*( abs( fval1)+ abs( fval2))
7268 reskh = resk*0.5d+00
7269 resasc = wgk(11)* abs( fc-reskh)
7272 resasc = resasc+wgk(j)*( abs( fv1(j)-reskh)+ abs( fv2(j)-reskh))
7276 resabs = resabs*dhlgth
7277 resasc = resasc*dhlgth
7278 abserr = abs( (resk-resg)*hlgth)
7279 if(resasc.ne.0.0d+00.and.abserr.ne.0.0d+00) &
7280 abserr = resasc*min(0.1d+01,(0.2d+03*abserr/resasc)**1.5d+00)
7281 if(resabs.gt.uflow/(0.5d+02*epmach)) abserr = max &
7282 ((epmach*0.5d+02)*resabs,abserr)
7285 end subroutine dqk21 7371 subroutine dqk31(f,a,b,result,abserr,resabs,resasc)
7375 real ( kind = 8 ) a,absc,abserr,b,centr,dhlgth, &
7376 epmach,f,fc,fsum,fval1,fval2,fv1,fv2,hlgth,resabs,resasc, &
7377 resg,resk,reskh,result,uflow,wg,wgk,xgk
7378 integer ( kind = 4 ) j,jtw,jtwm1
7381 dimension fv1(15),fv2(15),xgk(16),wgk(16),wg(8)
7383 data wg( 1) / 0.030753241996117268354628393577204d0 /
7384 data wg( 2) / 0.070366047488108124709267416450667d0 /
7385 data wg( 3) / 0.107159220467171935011869546685869d0 /
7386 data wg( 4) / 0.139570677926154314447804794511028d0 /
7387 data wg( 5) / 0.166269205816993933553200860481209d0 /
7388 data wg( 6) / 0.186161000015562211026800561866423d0 /
7389 data wg( 7) / 0.198431485327111576456118326443839d0 /
7390 data wg( 8) / 0.202578241925561272880620199967519d0 /
7392 data xgk( 1) / 0.998002298693397060285172840152271d0 /
7393 data xgk( 2) / 0.987992518020485428489565718586613d0 /
7394 data xgk( 3) / 0.967739075679139134257347978784337d0 /
7395 data xgk( 4) / 0.937273392400705904307758947710209d0 /
7396 data xgk( 5) / 0.897264532344081900882509656454496d0 /
7397 data xgk( 6) / 0.848206583410427216200648320774217d0 /
7398 data xgk( 7) / 0.790418501442465932967649294817947d0 /
7399 data xgk( 8) / 0.724417731360170047416186054613938d0 /
7400 data xgk( 9) / 0.650996741297416970533735895313275d0 /
7401 data xgk( 10) / 0.570972172608538847537226737253911d0 /
7402 data xgk( 11) / 0.485081863640239680693655740232351d0 /
7403 data xgk( 12) / 0.394151347077563369897207370981045d0 /
7404 data xgk( 13) / 0.299180007153168812166780024266389d0 /
7405 data xgk( 14) / 0.201194093997434522300628303394596d0 /
7406 data xgk( 15) / 0.101142066918717499027074231447392d0 /
7407 data xgk( 16) / 0.000000000000000000000000000000000d0 /
7409 data wgk( 1) / 0.005377479872923348987792051430128d0 /
7410 data wgk( 2) / 0.015007947329316122538374763075807d0 /
7411 data wgk( 3) / 0.025460847326715320186874001019653d0 /
7412 data wgk( 4) / 0.035346360791375846222037948478360d0 /
7413 data wgk( 5) / 0.044589751324764876608227299373280d0 /
7414 data wgk( 6) / 0.053481524690928087265343147239430d0 /
7415 data wgk( 7) / 0.062009567800670640285139230960803d0 /
7416 data wgk( 8) / 0.069854121318728258709520077099147d0 /
7417 data wgk( 9) / 0.076849680757720378894432777482659d0 /
7418 data wgk( 10) / 0.083080502823133021038289247286104d0 /
7419 data wgk( 11) / 0.088564443056211770647275443693774d0 /
7420 data wgk( 12) / 0.093126598170825321225486872747346d0 /
7421 data wgk( 13) / 0.096642726983623678505179907627589d0 /
7422 data wgk( 14) / 0.099173598721791959332393173484603d0 /
7423 data wgk( 15) / 0.100769845523875595044946662617570d0 /
7424 data wgk( 16) / 0.101330007014791549017374792767493d0 /
7426 epmach = epsilon( epmach )
7427 uflow = tiny( uflow )
7428 centr = 0.5d+00*(a+b)
7429 hlgth = 0.5d+00*(b-a)
7430 dhlgth = abs( hlgth)
7442 absc = hlgth*xgk(jtw)
7443 fval1 = f(centr-absc)
7444 fval2 = f(centr+absc)
7448 resg = resg+wg(j)*fsum
7449 resk = resk+wgk(jtw)*fsum
7450 resabs = resabs+wgk(jtw)*( abs( fval1)+ abs( fval2))
7455 absc = hlgth*xgk(jtwm1)
7456 fval1 = f(centr-absc)
7457 fval2 = f(centr+absc)
7461 resk = resk+wgk(jtwm1)*fsum
7462 resabs = resabs+wgk(jtwm1)*( abs( fval1)+ abs( fval2))
7465 reskh = resk*0.5d+00
7466 resasc = wgk(16)* abs( fc-reskh)
7469 resasc = resasc+wgk(j)*( abs( fv1(j)-reskh)+ abs( fv2(j)-reskh))
7473 resabs = resabs*dhlgth
7474 resasc = resasc*dhlgth
7475 abserr = abs( (resk-resg)*hlgth)
7476 if(resasc.ne.0.0d+00.and.abserr.ne.0.0d+00) &
7477 abserr = resasc* min(0.1d+01,(0.2d+03*abserr/resasc)**1.5d+00)
7478 if(resabs.gt.uflow/(0.5d+02*epmach)) abserr = max &
7479 ((epmach*0.5d+02)*resabs,abserr)
7482 end subroutine dqk31 7568 subroutine dqk41 ( f, a, b, result, abserr, resabs, resasc )
7572 real ( kind = 8 ) a,absc,abserr,b,centr,dhlgth, &
7573 epmach,f,fc,fsum,fval1,fval2,fv1,fv2,hlgth,resabs,resasc, &
7574 resg,resk,reskh,result,uflow,wg,wgk,xgk
7575 integer ( kind = 4 ) j,jtw,jtwm1
7578 dimension fv1(20),fv2(20),xgk(21),wgk(21),wg(10)
7580 data wg( 1) / 0.017614007139152118311861962351853d0 /
7581 data wg( 2) / 0.040601429800386941331039952274932d0 /
7582 data wg( 3) / 0.062672048334109063569506535187042d0 /
7583 data wg( 4) / 0.083276741576704748724758143222046d0 /
7584 data wg( 5) / 0.101930119817240435036750135480350d0 /
7585 data wg( 6) / 0.118194531961518417312377377711382d0 /
7586 data wg( 7) / 0.131688638449176626898494499748163d0 /
7587 data wg( 8) / 0.142096109318382051329298325067165d0 /
7588 data wg( 9) / 0.149172986472603746787828737001969d0 /
7589 data wg( 10) / 0.152753387130725850698084331955098d0 /
7591 data xgk( 1) / 0.998859031588277663838315576545863d0 /
7592 data xgk( 2) / 0.993128599185094924786122388471320d0 /
7593 data xgk( 3) / 0.981507877450250259193342994720217d0 /
7594 data xgk( 4) / 0.963971927277913791267666131197277d0 /
7595 data xgk( 5) / 0.940822633831754753519982722212443d0 /
7596 data xgk( 6) / 0.912234428251325905867752441203298d0 /
7597 data xgk( 7) / 0.878276811252281976077442995113078d0 /
7598 data xgk( 8) / 0.839116971822218823394529061701521d0 /
7599 data xgk( 9) / 0.795041428837551198350638833272788d0 /
7600 data xgk( 10) / 0.746331906460150792614305070355642d0 /
7601 data xgk( 11) / 0.693237656334751384805490711845932d0 /
7602 data xgk( 12) / 0.636053680726515025452836696226286d0 /
7603 data xgk( 13) / 0.575140446819710315342946036586425d0 /
7604 data xgk( 14) / 0.510867001950827098004364050955251d0 /
7605 data xgk( 15) / 0.443593175238725103199992213492640d0 /
7606 data xgk( 16) / 0.373706088715419560672548177024927d0 /
7607 data xgk( 17) / 0.301627868114913004320555356858592d0 /
7608 data xgk( 18) / 0.227785851141645078080496195368575d0 /
7609 data xgk( 19) / 0.152605465240922675505220241022678d0 /
7610 data xgk( 20) / 0.076526521133497333754640409398838d0 /
7611 data xgk( 21) / 0.000000000000000000000000000000000d0 /
7613 data wgk( 1) / 0.003073583718520531501218293246031d0 /
7614 data wgk( 2) / 0.008600269855642942198661787950102d0 /
7615 data wgk( 3) / 0.014626169256971252983787960308868d0 /
7616 data wgk( 4) / 0.020388373461266523598010231432755d0 /
7617 data wgk( 5) / 0.025882133604951158834505067096153d0 /
7618 data wgk( 6) / 0.031287306777032798958543119323801d0 /
7619 data wgk( 7) / 0.036600169758200798030557240707211d0 /
7620 data wgk( 8) / 0.041668873327973686263788305936895d0 /
7621 data wgk( 9) / 0.046434821867497674720231880926108d0 /
7622 data wgk( 10) / 0.050944573923728691932707670050345d0 /
7623 data wgk( 11) / 0.055195105348285994744832372419777d0 /
7624 data wgk( 12) / 0.059111400880639572374967220648594d0 /
7625 data wgk( 13) / 0.062653237554781168025870122174255d0 /
7626 data wgk( 14) / 0.065834597133618422111563556969398d0 /
7627 data wgk( 15) / 0.068648672928521619345623411885368d0 /
7628 data wgk( 16) / 0.071054423553444068305790361723210d0 /
7629 data wgk( 17) / 0.073030690332786667495189417658913d0 /
7630 data wgk( 18) / 0.074582875400499188986581418362488d0 /
7631 data wgk( 19) / 0.075704497684556674659542775376617d0 /
7632 data wgk( 20) / 0.076377867672080736705502835038061d0 /
7633 data wgk( 21) / 0.076600711917999656445049901530102d0 /
7635 epmach = epsilon( epmach )
7636 uflow = tiny( uflow )
7637 centr = 0.5d+00*(a+b)
7638 hlgth = 0.5d+00*(b-a)
7639 dhlgth = abs( hlgth)
7651 absc = hlgth*xgk(jtw)
7652 fval1 = f(centr-absc)
7653 fval2 = f(centr+absc)
7657 resg = resg+wg(j)*fsum
7658 resk = resk+wgk(jtw)*fsum
7659 resabs = resabs+wgk(jtw)*( abs( fval1)+ abs( fval2))
7664 absc = hlgth*xgk(jtwm1)
7665 fval1 = f(centr-absc)
7666 fval2 = f(centr+absc)
7670 resk = resk+wgk(jtwm1)*fsum
7671 resabs = resabs+wgk(jtwm1)*( abs( fval1)+ abs( fval2))
7674 reskh = resk*0.5d+00
7675 resasc = wgk(21)* abs( fc-reskh)
7678 resasc = resasc+wgk(j)*( abs( fv1(j)-reskh)+ abs( fv2(j)-reskh))
7682 resabs = resabs*dhlgth
7683 resasc = resasc*dhlgth
7684 abserr = abs( (resk-resg)*hlgth)
7685 if(resasc.ne.0.0d+00.and.abserr.ne.0.d+00) &
7686 abserr = resasc* min(0.1d+01,(0.2d+03*abserr/resasc)**1.5d+00)
7687 if(resabs.gt.uflow/(0.5d+02*epmach)) abserr = max &
7688 ((epmach*0.5d+02)*resabs,abserr)
7691 end subroutine dqk41 7774 subroutine dqk51(f,a,b,result,abserr,resabs,resasc)
7778 real ( kind = 8 ) a,absc,abserr,b,centr,dhlgth, &
7779 epmach,f,fc,fsum,fval1,fval2,fv1,fv2,hlgth,resabs,resasc, &
7780 resg,resk,reskh,result,uflow,wg,wgk,xgk
7781 integer ( kind = 4 ) j,jtw,jtwm1
7784 dimension fv1(25),fv2(25),xgk(26),wgk(26),wg(13)
7786 data wg( 1) / 0.011393798501026287947902964113235d0 /
7787 data wg( 2) / 0.026354986615032137261901815295299d0 /
7788 data wg( 3) / 0.040939156701306312655623487711646d0 /
7789 data wg( 4) / 0.054904695975835191925936891540473d0 /
7790 data wg( 5) / 0.068038333812356917207187185656708d0 /
7791 data wg( 6) / 0.080140700335001018013234959669111d0 /
7792 data wg( 7) / 0.091028261982963649811497220702892d0 /
7793 data wg( 8) / 0.100535949067050644202206890392686d0 /
7794 data wg( 9) / 0.108519624474263653116093957050117d0 /
7795 data wg( 10) / 0.114858259145711648339325545869556d0 /
7796 data wg( 11) / 0.119455763535784772228178126512901d0 /
7797 data wg( 12) / 0.122242442990310041688959518945852d0 /
7798 data wg( 13) / 0.123176053726715451203902873079050d0 /
7800 data xgk( 1) / 0.999262104992609834193457486540341d0 /
7801 data xgk( 2) / 0.995556969790498097908784946893902d0 /
7802 data xgk( 3) / 0.988035794534077247637331014577406d0 /
7803 data xgk( 4) / 0.976663921459517511498315386479594d0 /
7804 data xgk( 5) / 0.961614986425842512418130033660167d0 /
7805 data xgk( 6) / 0.942974571228974339414011169658471d0 /
7806 data xgk( 7) / 0.920747115281701561746346084546331d0 /
7807 data xgk( 8) / 0.894991997878275368851042006782805d0 /
7808 data xgk( 9) / 0.865847065293275595448996969588340d0 /
7809 data xgk( 10) / 0.833442628760834001421021108693570d0 /
7810 data xgk( 11) / 0.797873797998500059410410904994307d0 /
7811 data xgk( 12) / 0.759259263037357630577282865204361d0 /
7812 data xgk( 13) / 0.717766406813084388186654079773298d0 /
7813 data xgk( 14) / 0.673566368473468364485120633247622d0 /
7814 data xgk( 15) / 0.626810099010317412788122681624518d0 /
7815 data xgk( 16) / 0.577662930241222967723689841612654d0 /
7816 data xgk( 17) / 0.526325284334719182599623778158010d0 /
7817 data xgk( 18) / 0.473002731445714960522182115009192d0 /
7818 data xgk( 19) / 0.417885382193037748851814394594572d0 /
7819 data xgk( 20) / 0.361172305809387837735821730127641d0 /
7820 data xgk( 21) / 0.303089538931107830167478909980339d0 /
7821 data xgk( 22) / 0.243866883720988432045190362797452d0 /
7822 data xgk( 23) / 0.183718939421048892015969888759528d0 /
7823 data xgk( 24) / 0.122864692610710396387359818808037d0 /
7824 data xgk( 25) / 0.061544483005685078886546392366797d0 /
7825 data xgk( 26) / 0.000000000000000000000000000000000d0 /
7827 data wgk( 1) / 0.001987383892330315926507851882843d0 /
7828 data wgk( 2) / 0.005561932135356713758040236901066d0 /
7829 data wgk( 3) / 0.009473973386174151607207710523655d0 /
7830 data wgk( 4) / 0.013236229195571674813656405846976d0 /
7831 data wgk( 5) / 0.016847817709128298231516667536336d0 /
7832 data wgk( 6) / 0.020435371145882835456568292235939d0 /
7833 data wgk( 7) / 0.024009945606953216220092489164881d0 /
7834 data wgk( 8) / 0.027475317587851737802948455517811d0 /
7835 data wgk( 9) / 0.030792300167387488891109020215229d0 /
7836 data wgk( 10) / 0.034002130274329337836748795229551d0 /
7837 data wgk( 11) / 0.037116271483415543560330625367620d0 /
7838 data wgk( 12) / 0.040083825504032382074839284467076d0 /
7839 data wgk( 13) / 0.042872845020170049476895792439495d0 /
7840 data wgk( 14) / 0.045502913049921788909870584752660d0 /
7841 data wgk( 15) / 0.047982537138836713906392255756915d0 /
7842 data wgk( 16) / 0.050277679080715671963325259433440d0 /
7843 data wgk( 17) / 0.052362885806407475864366712137873d0 /
7844 data wgk( 18) / 0.054251129888545490144543370459876d0 /
7845 data wgk( 19) / 0.055950811220412317308240686382747d0 /
7846 data wgk( 20) / 0.057437116361567832853582693939506d0 /
7847 data wgk( 21) / 0.058689680022394207961974175856788d0 /
7848 data wgk( 22) / 0.059720340324174059979099291932562d0 /
7849 data wgk( 23) / 0.060539455376045862945360267517565d0 /
7850 data wgk( 24) / 0.061128509717053048305859030416293d0 /
7851 data wgk( 25) / 0.061471189871425316661544131965264d0 /
7852 data wgk( 26) / 0.061580818067832935078759824240066d0 /
7854 epmach = epsilon( epmach )
7855 uflow = tiny( uflow )
7856 centr = 0.5d+00*(a+b)
7857 hlgth = 0.5d+00*(b-a)
7858 dhlgth = abs( hlgth)
7870 absc = hlgth*xgk(jtw)
7871 fval1 = f(centr-absc)
7872 fval2 = f(centr+absc)
7876 resg = resg+wg(j)*fsum
7877 resk = resk+wgk(jtw)*fsum
7878 resabs = resabs+wgk(jtw)*( abs( fval1)+ abs( fval2))
7883 absc = hlgth*xgk(jtwm1)
7884 fval1 = f(centr-absc)
7885 fval2 = f(centr+absc)
7889 resk = resk+wgk(jtwm1)*fsum
7890 resabs = resabs+wgk(jtwm1)*( abs( fval1)+ abs( fval2))
7893 reskh = resk*0.5d+00
7894 resasc = wgk(26)* abs( fc-reskh)
7897 resasc = resasc+wgk(j)*( abs( fv1(j)-reskh)+ abs( fv2(j)-reskh))
7901 resabs = resabs*dhlgth
7902 resasc = resasc*dhlgth
7903 abserr = abs( (resk-resg)*hlgth)
7904 if(resasc.ne.0.0d+00.and.abserr.ne.0.0d+00) &
7905 abserr = resasc* min(0.1d+01,(0.2d+03*abserr/resasc)**1.5d+00)
7906 if(resabs.gt.uflow/(0.5d+02*epmach)) abserr = max &
7907 ((epmach*0.5d+02)*resabs,abserr)
7910 end subroutine dqk51 7993 subroutine dqk61(f,a,b,result,abserr,resabs,resasc)
7997 real ( kind = 8 ) a,dabsc,abserr,b,centr,dhlgth, &
7998 epmach,f,fc,fsum,fval1,fval2,fv1,fv2,hlgth,resabs,resasc, &
7999 resg,resk,reskh,result,uflow,wg,wgk,xgk
8000 integer ( kind = 4 ) j,jtw,jtwm1
8003 dimension fv1(30),fv2(30),xgk(31),wgk(31),wg(15)
8005 data wg( 1) / 0.007968192496166605615465883474674d0 /
8006 data wg( 2) / 0.018466468311090959142302131912047d0 /
8007 data wg( 3) / 0.028784707883323369349719179611292d0 /
8008 data wg( 4) / 0.038799192569627049596801936446348d0 /
8009 data wg( 5) / 0.048402672830594052902938140422808d0 /
8010 data wg( 6) / 0.057493156217619066481721689402056d0 /
8011 data wg( 7) / 0.065974229882180495128128515115962d0 /
8012 data wg( 8) / 0.073755974737705206268243850022191d0 /
8013 data wg( 9) / 0.080755895229420215354694938460530d0 /
8014 data wg( 10) / 0.086899787201082979802387530715126d0 /
8015 data wg( 11) / 0.092122522237786128717632707087619d0 /
8016 data wg( 12) / 0.096368737174644259639468626351810d0 /
8017 data wg( 13) / 0.099593420586795267062780282103569d0 /
8018 data wg( 14) / 0.101762389748405504596428952168554d0 /
8019 data wg( 15) / 0.102852652893558840341285636705415d0 /
8021 data xgk( 1) / 0.999484410050490637571325895705811d0 /
8022 data xgk( 2) / 0.996893484074649540271630050918695d0 /
8023 data xgk( 3) / 0.991630996870404594858628366109486d0 /
8024 data xgk( 4) / 0.983668123279747209970032581605663d0 /
8025 data xgk( 5) / 0.973116322501126268374693868423707d0 /
8026 data xgk( 6) / 0.960021864968307512216871025581798d0 /
8027 data xgk( 7) / 0.944374444748559979415831324037439d0 /
8028 data xgk( 8) / 0.926200047429274325879324277080474d0 /
8029 data xgk( 9) / 0.905573307699907798546522558925958d0 /
8030 data xgk( 10) / 0.882560535792052681543116462530226d0 /
8031 data xgk( 11) / 0.857205233546061098958658510658944d0 /
8032 data xgk( 12) / 0.829565762382768397442898119732502d0 /
8033 data xgk( 13) / 0.799727835821839083013668942322683d0 /
8034 data xgk( 14) / 0.767777432104826194917977340974503d0 /
8035 data xgk( 15) / 0.733790062453226804726171131369528d0 /
8036 data xgk( 16) / 0.697850494793315796932292388026640d0 /
8037 data xgk( 17) / 0.660061064126626961370053668149271d0 /
8038 data xgk( 18) / 0.620526182989242861140477556431189d0 /
8039 data xgk( 19) / 0.579345235826361691756024932172540d0 /
8040 data xgk( 20) / 0.536624148142019899264169793311073d0 /
8041 data xgk( 21) / 0.492480467861778574993693061207709d0 /
8042 data xgk( 22) / 0.447033769538089176780609900322854d0 /
8043 data xgk( 23) / 0.400401254830394392535476211542661d0 /
8044 data xgk( 24) / 0.352704725530878113471037207089374d0 /
8045 data xgk( 25) / 0.304073202273625077372677107199257d0 /
8046 data xgk( 26) / 0.254636926167889846439805129817805d0 /
8047 data xgk( 27) / 0.204525116682309891438957671002025d0 /
8048 data xgk( 28) / 0.153869913608583546963794672743256d0 /
8049 data xgk( 29) / 0.102806937966737030147096751318001d0 /
8050 data xgk( 30) / 0.051471842555317695833025213166723d0 /
8051 data xgk( 31) / 0.000000000000000000000000000000000d0 /
8053 data wgk( 1) / 0.001389013698677007624551591226760d0 /
8054 data wgk( 2) / 0.003890461127099884051267201844516d0 /
8055 data wgk( 3) / 0.006630703915931292173319826369750d0 /
8056 data wgk( 4) / 0.009273279659517763428441146892024d0 /
8057 data wgk( 5) / 0.011823015253496341742232898853251d0 /
8058 data wgk( 6) / 0.014369729507045804812451432443580d0 /
8059 data wgk( 7) / 0.016920889189053272627572289420322d0 /
8060 data wgk( 8) / 0.019414141193942381173408951050128d0 /
8061 data wgk( 9) / 0.021828035821609192297167485738339d0 /
8062 data wgk( 10) / 0.024191162078080601365686370725232d0 /
8063 data wgk( 11) / 0.026509954882333101610601709335075d0 /
8064 data wgk( 12) / 0.028754048765041292843978785354334d0 /
8065 data wgk( 13) / 0.030907257562387762472884252943092d0 /
8066 data wgk( 14) / 0.032981447057483726031814191016854d0 /
8067 data wgk( 15) / 0.034979338028060024137499670731468d0 /
8068 data wgk( 16) / 0.036882364651821229223911065617136d0 /
8069 data wgk( 17) / 0.038678945624727592950348651532281d0 /
8070 data wgk( 18) / 0.040374538951535959111995279752468d0 /
8071 data wgk( 19) / 0.041969810215164246147147541285970d0 /
8072 data wgk( 20) / 0.043452539701356069316831728117073d0 /
8073 data wgk( 21) / 0.044814800133162663192355551616723d0 /
8074 data wgk( 22) / 0.046059238271006988116271735559374d0 /
8075 data wgk( 23) / 0.047185546569299153945261478181099d0 /
8076 data wgk( 24) / 0.048185861757087129140779492298305d0 /
8077 data wgk( 25) / 0.049055434555029778887528165367238d0 /
8078 data wgk( 26) / 0.049795683427074206357811569379942d0 /
8079 data wgk( 27) / 0.050405921402782346840893085653585d0 /
8080 data wgk( 28) / 0.050881795898749606492297473049805d0 /
8081 data wgk( 29) / 0.051221547849258772170656282604944d0 /
8082 data wgk( 30) / 0.051426128537459025933862879215781d0 /
8083 data wgk( 31) / 0.051494729429451567558340433647099d0 /
8085 epmach = epsilon( epmach )
8086 uflow = tiny( uflow )
8087 centr = 0.5d+00*(b+a)
8088 hlgth = 0.5d+00*(b-a)
8089 dhlgth = abs( hlgth)
8101 dabsc = hlgth*xgk(jtw)
8102 fval1 = f(centr-dabsc)
8103 fval2 = f(centr+dabsc)
8107 resg = resg+wg(j)*fsum
8108 resk = resk+wgk(jtw)*fsum
8109 resabs = resabs+wgk(jtw)*( abs( fval1)+ abs( fval2))
8114 dabsc = hlgth*xgk(jtwm1)
8115 fval1 = f(centr-dabsc)
8116 fval2 = f(centr+dabsc)
8120 resk = resk+wgk(jtwm1)*fsum
8121 resabs = resabs+wgk(jtwm1)*( abs( fval1)+ abs( fval2))
8124 reskh = resk*0.5d+00
8125 resasc = wgk(31)* abs( fc-reskh)
8128 resasc = resasc+wgk(j)*( abs( fv1(j)-reskh)+ abs( fv2(j)-reskh))
8132 resabs = resabs*dhlgth
8133 resasc = resasc*dhlgth
8134 abserr = abs( (resk-resg)*hlgth)
8135 if(resasc.ne.0.0d+00.and.abserr.ne.0.0d+00) &
8136 abserr = resasc* min(0.1d+01,(0.2d+03*abserr/resasc)**1.5d+00)
8137 if(resabs.gt.uflow/(0.5d+02*epmach)) abserr = max &
8138 ((epmach*0.5d+02)*resabs,abserr)
8141 end subroutine dqk61 8195 subroutine dqmomo(alfa,beta,ri,rj,rg,rh,integr)
8199 real ( kind = 8 ) alfa,alfp1,alfp2,an,anm1,beta,betp1,betp2,ralf, &
8201 integer ( kind = 4 ) i,im1,integr
8202 dimension rg(25),rh(25),ri(25),rj(25)
8204 alfp1 = alfa+0.1d+01
8205 betp1 = beta+0.1d+01
8206 alfp2 = alfa+0.2d+01
8207 betp2 = beta+0.2d+01
8208 ralf = 0.2d+01**alfp1
8209 rbet = 0.2d+01**betp1
8215 ri(2) = ri(1)*alfa/alfp2
8216 rj(2) = rj(1)*beta/betp2
8221 ri(i) = -(ralf+an*(an-alfp2)*ri(i-1))/(anm1*(an+alfp1))
8222 rj(i) = -(rbet+an*(an-betp2)*rj(i-1))/(anm1*(an+betp1))
8227 if(integr.eq.1)
go to 70
8228 if(integr.eq.3)
go to 40
8232 rg(1) = -ri(1)/alfp1
8233 rg(2) = -(ralf+ralf)/(alfp2*alfp2)-rg(1)
8239 rg(i) = -(an*(an-alfp2)*rg(im1)-an*ri(im1)+anm1*ri(i))/ &
8246 if(integr.eq.2)
go to 70
8250 40 rh(1) = -rj(1)/betp1
8251 rh(2) = -(rbet+rbet)/(betp2*betp2)-rh(1)
8257 rh(i) = -(an*(an-betp2)*rh(im1)-an*rj(im1)+ &
8258 anm1*rj(i))/(anm1*(an+betp1))
8393 subroutine dqng ( f, a, b, epsabs, epsrel, result, abserr, neval, ier )
8397 real ( kind = 8 ) a,absc,abserr,b,centr,dhlgth, &
8398 epmach,epsabs,epsrel,f,fcentr,fval,fval1,fval2,fv1,fv2, &
8399 fv3,fv4,hlgth,result,res10,res21,res43,res87,resabs,resasc, &
8400 reskh,savfun,uflow,w10,w21a,w21b,w43a,w43b,w87a,w87b,x1,x2,x3,x4
8401 integer ( kind = 4 ) ier,ipx,k,l,neval
8403 dimension fv1(5),fv2(5),fv3(5),fv4(5),x1(5),x2(5),x3(11),x4(22), &
8404 w10(5),w21a(5),w21b(6),w43a(10),w43b(12),w87a(21),w87b(23), &
8407 data x1( 1) / 0.973906528517171720077964012084452d0 /
8408 data x1( 2) / 0.865063366688984510732096688423493d0 /
8409 data x1( 3) / 0.679409568299024406234327365114874d0 /
8410 data x1( 4) / 0.433395394129247190799265943165784d0 /
8411 data x1( 5) / 0.148874338981631210884826001129720d0 /
8412 data w10( 1) / 0.066671344308688137593568809893332d0 /
8413 data w10( 2) / 0.149451349150580593145776339657697d0 /
8414 data w10( 3) / 0.219086362515982043995534934228163d0 /
8415 data w10( 4) / 0.269266719309996355091226921569469d0 /
8416 data w10( 5) / 0.295524224714752870173892994651338d0 /
8418 data x2( 1) / 0.995657163025808080735527280689003d0 /
8419 data x2( 2) / 0.930157491355708226001207180059508d0 /
8420 data x2( 3) / 0.780817726586416897063717578345042d0 /
8421 data x2( 4) / 0.562757134668604683339000099272694d0 /
8422 data x2( 5) / 0.294392862701460198131126603103866d0 /
8423 data w21a( 1) / 0.032558162307964727478818972459390d0 /
8424 data w21a( 2) / 0.075039674810919952767043140916190d0 /
8425 data w21a( 3) / 0.109387158802297641899210590325805d0 /
8426 data w21a( 4) / 0.134709217311473325928054001771707d0 /
8427 data w21a( 5) / 0.147739104901338491374841515972068d0 /
8428 data w21b( 1) / 0.011694638867371874278064396062192d0 /
8429 data w21b( 2) / 0.054755896574351996031381300244580d0 /
8430 data w21b( 3) / 0.093125454583697605535065465083366d0 /
8431 data w21b( 4) / 0.123491976262065851077958109831074d0 /
8432 data w21b( 5) / 0.142775938577060080797094273138717d0 /
8433 data w21b( 6) / 0.149445554002916905664936468389821d0 /
8435 data x3( 1) / 0.999333360901932081394099323919911d0 /
8436 data x3( 2) / 0.987433402908088869795961478381209d0 /
8437 data x3( 3) / 0.954807934814266299257919200290473d0 /
8438 data x3( 4) / 0.900148695748328293625099494069092d0 /
8439 data x3( 5) / 0.825198314983114150847066732588520d0 /
8440 data x3( 6) / 0.732148388989304982612354848755461d0 /
8441 data x3( 7) / 0.622847970537725238641159120344323d0 /
8442 data x3( 8) / 0.499479574071056499952214885499755d0 /
8443 data x3( 9) / 0.364901661346580768043989548502644d0 /
8444 data x3( 10) / 0.222254919776601296498260928066212d0 /
8445 data x3( 11) / 0.074650617461383322043914435796506d0 /
8446 data w43a( 1) / 0.016296734289666564924281974617663d0 /
8447 data w43a( 2) / 0.037522876120869501461613795898115d0 /
8448 data w43a( 3) / 0.054694902058255442147212685465005d0 /
8449 data w43a( 4) / 0.067355414609478086075553166302174d0 /
8450 data w43a( 5) / 0.073870199632393953432140695251367d0 /
8451 data w43a( 6) / 0.005768556059769796184184327908655d0 /
8452 data w43a( 7) / 0.027371890593248842081276069289151d0 /
8453 data w43a( 8) / 0.046560826910428830743339154433824d0 /
8454 data w43a( 9) / 0.061744995201442564496240336030883d0 /
8455 data w43a( 10) / 0.071387267268693397768559114425516d0 /
8456 data w43b( 1) / 0.001844477640212414100389106552965d0 /
8457 data w43b( 2) / 0.010798689585891651740465406741293d0 /
8458 data w43b( 3) / 0.021895363867795428102523123075149d0 /
8459 data w43b( 4) / 0.032597463975345689443882222526137d0 /
8460 data w43b( 5) / 0.042163137935191811847627924327955d0 /
8461 data w43b( 6) / 0.050741939600184577780189020092084d0 /
8462 data w43b( 7) / 0.058379395542619248375475369330206d0 /
8463 data w43b( 8) / 0.064746404951445885544689259517511d0 /
8464 data w43b( 9) / 0.069566197912356484528633315038405d0 /
8465 data w43b( 10) / 0.072824441471833208150939535192842d0 /
8466 data w43b( 11) / 0.074507751014175118273571813842889d0 /
8467 data w43b( 12) / 0.074722147517403005594425168280423d0 /
8469 data x4( 1) / 0.999902977262729234490529830591582d0 /
8470 data x4( 2) / 0.997989895986678745427496322365960d0 /
8471 data x4( 3) / 0.992175497860687222808523352251425d0 /
8472 data x4( 4) / 0.981358163572712773571916941623894d0 /
8473 data x4( 5) / 0.965057623858384619128284110607926d0 /
8474 data x4( 6) / 0.943167613133670596816416634507426d0 /
8475 data x4( 7) / 0.915806414685507209591826430720050d0 /
8476 data x4( 8) / 0.883221657771316501372117548744163d0 /
8477 data x4( 9) / 0.845710748462415666605902011504855d0 /
8478 data x4( 10) / 0.803557658035230982788739474980964d0 /
8479 data x4( 11) / 0.757005730685495558328942793432020d0 /
8480 data x4( 12) / 0.706273209787321819824094274740840d0 /
8481 data x4( 13) / 0.651589466501177922534422205016736d0 /
8482 data x4( 14) / 0.593223374057961088875273770349144d0 /
8483 data x4( 15) / 0.531493605970831932285268948562671d0 /
8484 data x4( 16) / 0.466763623042022844871966781659270d0 /
8485 data x4( 17) / 0.399424847859218804732101665817923d0 /
8486 data x4( 18) / 0.329874877106188288265053371824597d0 /
8487 data x4( 19) / 0.258503559202161551802280975429025d0 /
8488 data x4( 20) / 0.185695396568346652015917141167606d0 /
8489 data x4( 21) / 0.111842213179907468172398359241362d0 /
8490 data x4( 22) / 0.037352123394619870814998165437704d0 /
8491 data w87a( 1) / 0.008148377384149172900002878448190d0 /
8492 data w87a( 2) / 0.018761438201562822243935059003794d0 /
8493 data w87a( 3) / 0.027347451050052286161582829741283d0 /
8494 data w87a( 4) / 0.033677707311637930046581056957588d0 /
8495 data w87a( 5) / 0.036935099820427907614589586742499d0 /
8496 data w87a( 6) / 0.002884872430211530501334156248695d0 /
8497 data w87a( 7) / 0.013685946022712701888950035273128d0 /
8498 data w87a( 8) / 0.023280413502888311123409291030404d0 /
8499 data w87a( 9) / 0.030872497611713358675466394126442d0 /
8500 data w87a( 10) / 0.035693633639418770719351355457044d0 /
8501 data w87a( 11) / 0.000915283345202241360843392549948d0 /
8502 data w87a( 12) / 0.005399280219300471367738743391053d0 /
8503 data w87a( 13) / 0.010947679601118931134327826856808d0 /
8504 data w87a( 14) / 0.016298731696787335262665703223280d0 /
8505 data w87a( 15) / 0.021081568889203835112433060188190d0 /
8506 data w87a( 16) / 0.025370969769253827243467999831710d0 /
8507 data w87a( 17) / 0.029189697756475752501446154084920d0 /
8508 data w87a( 18) / 0.032373202467202789685788194889595d0 /
8509 data w87a( 19) / 0.034783098950365142750781997949596d0 /
8510 data w87a( 20) / 0.036412220731351787562801163687577d0 /
8511 data w87a( 21) / 0.037253875503047708539592001191226d0 /
8512 data w87b( 1) / 0.000274145563762072350016527092881d0 /
8513 data w87b( 2) / 0.001807124155057942948341311753254d0 /
8514 data w87b( 3) / 0.004096869282759164864458070683480d0 /
8515 data w87b( 4) / 0.006758290051847378699816577897424d0 /
8516 data w87b( 5) / 0.009549957672201646536053581325377d0 /
8517 data w87b( 6) / 0.012329447652244853694626639963780d0 /
8518 data w87b( 7) / 0.015010447346388952376697286041943d0 /
8519 data w87b( 8) / 0.017548967986243191099665352925900d0 /
8520 data w87b( 9) / 0.019938037786440888202278192730714d0 /
8521 data w87b( 10) / 0.022194935961012286796332102959499d0 /
8522 data w87b( 11) / 0.024339147126000805470360647041454d0 /
8523 data w87b( 12) / 0.026374505414839207241503786552615d0 /
8524 data w87b( 13) / 0.028286910788771200659968002987960d0 /
8525 data w87b( 14) / 0.030052581128092695322521110347341d0 /
8526 data w87b( 15) / 0.031646751371439929404586051078883d0 /
8527 data w87b( 16) / 0.033050413419978503290785944862689d0 /
8528 data w87b( 17) / 0.034255099704226061787082821046821d0 /
8529 data w87b( 18) / 0.035262412660156681033782717998428d0 /
8530 data w87b( 19) / 0.036076989622888701185500318003895d0 /
8531 data w87b( 20) / 0.036698604498456094498018047441094d0 /
8532 data w87b( 21) / 0.037120549269832576114119958413599d0 /
8533 data w87b( 22) / 0.037334228751935040321235449094698d0 /
8534 data w87b( 23) / 0.037361073762679023410321241766599d0 /
8536 epmach = epsilon( epmach )
8537 uflow = tiny( uflow )
8545 if(epsabs.le.0.0d+00.and.epsrel.lt. max( 0.5d+02*epmach,0.5d-28)) &
8547 hlgth = 0.5d+00*(b-a)
8548 dhlgth = abs( hlgth)
8549 centr = 0.5d+00*(b+a)
8561 res21 = w21b(6)*fcentr
8562 resabs = w21b(6)* abs( fcentr)
8566 fval1 = f(centr+absc)
8567 fval2 = f(centr-absc)
8569 res10 = res10+w10(k)*fval
8570 res21 = res21+w21a(k)*fval
8571 resabs = resabs+w21a(k)*( abs( fval1)+ abs( fval2))
8582 fval1 = f(centr+absc)
8583 fval2 = f(centr-absc)
8585 res21 = res21+w21b(k)*fval
8586 resabs = resabs+w21b(k)*( abs( fval1)+ abs( fval2))
8594 result = res21*hlgth
8595 resabs = resabs*dhlgth
8596 reskh = 0.5d+00*res21
8597 resasc = w21b(6)* abs( fcentr-reskh)
8600 resasc = resasc+w21a(k)*( abs( fv1(k)-reskh)+ abs( fv2(k)-reskh)) &
8601 +w21b(k)*( abs( fv3(k)-reskh)+ abs( fv4(k)-reskh))
8604 abserr = abs( (res21-res10)*hlgth)
8605 resasc = resasc*dhlgth
8610 25 res43 = w43b(12)*fcentr
8614 res43 = res43+savfun(k)*w43a(k)
8620 fval = f(absc+centr)+f(centr-absc)
8621 res43 = res43+fval*w43b(k)
8627 result = res43*hlgth
8628 abserr = abs( (res43-res21)*hlgth)
8633 45 res87 = w87b(23)*fcentr
8637 res87 = res87+savfun(k)*w87a(k)
8642 res87 = res87+w87b(k)*(f(absc+centr)+f(centr-absc))
8645 result = res87*hlgth
8646 abserr = abs( (res87-res43)*hlgth)
8650 if(resasc.ne.0.0d+00.and.abserr.ne.0.0d+00)
then 8651 abserr = resasc* min(0.1d+01,(0.2d+03*abserr/resasc)**1.5d+00)
8654 if (resabs.gt.uflow/(0.5d+02*epmach))
then 8655 abserr = max((epmach*0.5d+02)*resabs,abserr)
8658 if (abserr.le. max( epsabs,epsrel* abs( result)))
then 8665 80
call xerror(
'abnormal return from dqng ',26,ier,0)
8722 subroutine dqpsrt ( limit, last, maxerr, ermax, elist, iord, nrmax )
8726 real ( kind = 8 ) elist,ermax,errmax,errmin
8727 integer ( kind = 4 ) i,ibeg,ido,iord,isucc,j,jbnd,jupbn,k,last, &
8729 integer ( kind = 4 ) limit
8730 integer ( kind = 4 ) maxerr
8731 integer ( kind = 4 ) nrmax
8732 dimension elist(last),iord(last)
8737 if(last.gt.2)
go to 10
8747 10 errmax = elist(maxerr)
8751 isucc = iord(nrmax-1)
8752 if(errmax.le.elist(isucc))
go to 30
8762 if(last.gt.(limit/2+2)) jupbn = limit+3-last
8763 errmin = elist(last)
8773 if(errmax.ge.elist(isucc))
go to 60
8783 60 iord(i-1) = maxerr
8788 if(errmin.lt.elist(isucc))
go to 80
8799 90 maxerr = iord(nrmax)
8800 ermax = elist(maxerr)
This module contains the relevant code for the double precision QUADPACK integration library...
subroutine dgtsl(n, c, d, e, b, info)
DGTSL solves a general tridiagonal linear system.
subroutine dqpsrt(limit, last, maxerr, ermax, elist, iord, nrmax)
DQPSRT maintains the order of a list of local error estimates.
subroutine dqagie(f, bound, inf, epsabs, epsrel, limit, result, abserr, neval, ier, alist, blist, rlist, elist, iord, last)
DQAGIE estimates an integral over a semi-infinite or infinite interval.
subroutine dqagpe(f, a, b, npts2, points, epsabs, epsrel, limit, result, abserr, neval, ier, alist, blist, rlist, elist, pts, iord, level, ndin, last)
DQAGPE computes a definite integral.
subroutine dqk15i(f, boun, inf, a, b, result, abserr, resabs, resasc)
DQK15I applies a 15 point Gauss-Kronrod quadrature on an infinite interval.
subroutine dqawc(f, a, b, c, epsabs, epsrel, result, abserr, neval, ier, limit, lenw, last, iwork, work)
DQAWC computes a Cauchy principal value.
subroutine dqelg(n, epstab, result, abserr, res3la, nres)
DQELG carries out the Epsilon extrapolation algorithm.
subroutine dqk15w(f, w, p1, p2, p3, p4, kp, a, b, result, abserr, resabs, resasc)
DQK15W applies a 15 point Gauss-Kronrod rule for a weighted integrand.
subroutine dqagp(f, a, b, npts2, points, epsabs, epsrel, result, abserr, neval, ier, leniw, lenw, last, iwork, work)
DQAGP computes a definite integral.
subroutine dqk41(f, a, b, result, abserr, resabs, resasc)
DQK41 carries out a 41 point Gauss-Kronrod quadrature rule.
real(kind=8) function dqwgtf(x, omega, p2, p3, p4, integr)
DQWGTF defines the weight functions used by DQC25F.
subroutine dqk15(f, a, b, result, abserr, resabs, resasc)
DQK15 carries out a 15 point Gauss-Kronrod quadrature rule.
subroutine dqawce(f, a, b, c, epsabs, epsrel, limit, result, abserr, neval, ier, alist, blist, rlist, elist, iord, last)
DQAWCE computes a Cauchy principal value.
subroutine dqawfe(f, a, omega, integr, epsabs, limlst, limit, maxp1, result, abserr, neval, ier, rslst, erlst, ierlst, lst, alist, blist, rlist, elist, iord, nnlog, chebmo)
DQAWFE computes Fourier integrals.
subroutine dqagse(f, a, b, epsabs, epsrel, limit, result, abserr, neval, ier, alist, blist, rlist, elist, iord, last)
DQAGSE estimates the integral of a function.
subroutine dqc25f(f, a, b, omega, integr, nrmom, maxp1, ksave, result, abserr, neval, resabs, resasc, momcom, chebmo)
DQC25F returns integration rules for functions with a COS or SIN factor.
subroutine dqagi(f, bound, inf, epsabs, epsrel, result, abserr, neval, ier, limit, lenw, last, iwork, work)
DQAGI estimates an integral over a semi-infinite or infinite interval.
real(kind=8) function dqwgtc(x, c, p2, p3, p4, kp)
DQWGTC defines the weight function used by DQC25C.
subroutine xerror(xmess, nmess, nerr, level)
XERROR replaces the SLATEC XERROR routine.
subroutine dqawo(f, a, b, omega, integr, epsabs, epsrel, result, abserr, neval, ier, leniw, maxp1, lenw, last, iwork, work)
DQAWO computes the integrals of oscillatory integrands.
subroutine dqc25c(f, a, b, c, result, abserr, krul, neval)
DQC25C returns integration rules for Cauchy Principal Value integrals.
subroutine dqage(f, a, b, epsabs, epsrel, key, limit, result, abserr, neval, ier, alist, blist, rlist, elist, iord, last)
DQAGE estimates a definite integral.
subroutine dqawf(f, a, omega, integr, epsabs, result, abserr, neval, ier, limlst, lst, leniw, maxp1, lenw, iwork, work)
DQAWF computes Fourier integrals over the interval [ A, +Infinity ).
subroutine dqawse(f, a, b, alfa, beta, integr, epsabs, epsrel, limit, result, abserr, neval, ier, alist, blist, rlist, elist, iord, last)
DQAWSE estimates integrals with algebraico-logarithmic end singularities.
subroutine dqk51(f, a, b, result, abserr, resabs, resasc)
DQK51 carries out a 51 point Gauss-Kronrod quadrature rule.
subroutine dqk61(f, a, b, result, abserr, resabs, resasc)
DQK61 carries out a 61 point Gauss-Kronrod quadrature rule.
subroutine dqk31(f, a, b, result, abserr, resabs, resasc)
DQK31 carries out a 31 point Gauss-Kronrod quadrature rule.
subroutine dqaws(f, a, b, alfa, beta, integr, epsabs, epsrel, result, abserr, neval, ier, limit, lenw, last, iwork, work)
DQAWS estimates integrals with algebraico-logarithmic endpoint singularities.
subroutine dqcheb(x, fval, cheb12, cheb24)
DQCHEB computes the Chebyshev series expansion.
real(kind=8) function dqwgts(x, a, b, alfa, beta, integr)
DQWGTS defines the weight functions used by DQC25S.
subroutine dqng(f, a, b, epsabs, epsrel, result, abserr, neval, ier)
DQNG estimates an integral, using non-adaptive integration.
subroutine dqag(f, a, b, epsabs, epsrel, key, result, abserr, neval, ier, limit, lenw, last, iwork, work)
DQAG approximates an integral over a finite interval.
subroutine dqawoe(f, a, b, omega, integr, epsabs, epsrel, limit, icall, maxp1, result, abserr, neval, ier, last, alist, blist, rlist, elist, iord, nnlog, momcom, chebmo)
DQAWOE computes the integrals of oscillatory integrands.
subroutine dqc25s(f, a, b, bl, br, alfa, beta, ri, rj, rg, rh, result, abserr, resasc, integr, nev)
DQC25S returns rules for algebraico-logarithmic end point singularities.
subroutine dqags(f, a, b, epsabs, epsrel, result, abserr, neval, ier, limit, lenw, last, iwork, work)
DQAGS estimates the integral of a function.
subroutine dqk21(f, a, b, result, abserr, resabs, resasc)
DQK21 carries out a 21 point Gauss-Kronrod quadrature rule.
subroutine dqmomo(alfa, beta, ri, rj, rg, rh, integr)
DQMOMO computes modified Chebyshev moments.