215 pi = 3.14159265358979323846264338327950288419716939937510d+00
219 subroutine qag ( f, a, b, epsabs, epsrel, key, result, abserr, neval, ier )
297 integer,
parameter :: limit = 500
301 real(r_kind) alist(limit)
303 real(r_kind) blist(limit)
304 real(r_kind) elist(limit)
307 real(r_kind),
external :: f
314 real(r_kind) rlist(limit)
316 call qage ( f, a, b, epsabs, epsrel, key, limit, result, abserr, neval, &
317 ier, alist, blist, rlist, elist, iord, last )
321 subroutine qage ( f, a, b, epsabs, epsrel, key, limit, result, abserr, neval, &
322 ier, alist, blist, rlist, elist, iord, last )
429 real(r_kind) alist(limit)
437 real(r_kind) blist(limit)
444 real(r_kind) elist(limit)
453 real(r_kind),
external :: f
466 real(r_kind) rlist(limit)
481 if ( epsabs < 0.0d+00 .and. epsrel < 0.0d+00 )
then
489 keyf = max( keyf, 1 )
490 keyf = min( keyf, 6 )
495 if ( keyf == 1 )
then
496 call qk15 ( f, a, b, result, abserr, defabs, resabs )
497 else if ( keyf == 2 )
then
498 call qk21 ( f, a, b, result, abserr, defabs, resabs )
499 else if ( keyf == 3 )
then
500 call qk31 ( f, a, b, result, abserr, defabs, resabs )
501 else if ( keyf == 4 )
then
502 call qk41 ( f, a, b, result, abserr, defabs, resabs )
503 else if ( keyf == 5 )
then
504 call qk51 ( f, a, b, result, abserr, defabs, resabs )
505 else if ( keyf == 6 )
then
506 call qk61 ( f, a, b, result, abserr, defabs, resabs )
516 errbnd = max( epsabs, epsrel * abs( result ) )
518 if ( abserr <= 5.0d+01 * epsilon( defabs ) * defabs .and. &
519 abserr > errbnd )
then
523 if ( limit == 1 )
then
528 ( abserr <= errbnd .and. abserr /= resabs ) .or. &
529 abserr == 0.0d+00 )
then
531 if ( keyf /= 1 )
then
532 neval = (10*keyf+1) * (2*neval+1)
534 neval = 30 * neval + 15
556 b1 = 0.5d+00 * ( alist(maxerr) + blist(maxerr) )
560 if ( keyf == 1 )
then
561 call qk15 ( f, a1, b1, area1, error1, resabs, defab1 )
562 else if ( keyf == 2 )
then
563 call qk21 ( f, a1, b1, area1, error1, resabs, defab1 )
564 else if ( keyf == 3 )
then
565 call qk31 ( f, a1, b1, area1, error1, resabs, defab1 )
566 else if ( keyf == 4 )
then
567 call qk41 ( f, a1, b1, area1, error1, resabs, defab1)
568 else if ( keyf == 5 )
then
569 call qk51 ( f, a1, b1, area1, error1, resabs, defab1 )
570 else if ( keyf == 6 )
then
571 call qk61 ( f, a1, b1, area1, error1, resabs, defab1 )
574 if ( keyf == 1 )
then
575 call qk15 ( f, a2, b2, area2, error2, resabs, defab2 )
576 else if ( keyf == 2 )
then
577 call qk21 ( f, a2, b2, area2, error2, resabs, defab2 )
578 else if ( keyf == 3 )
then
579 call qk31 ( f, a2, b2, area2, error2, resabs, defab2 )
580 else if ( keyf == 4 )
then
581 call qk41 ( f, a2, b2, area2, error2, resabs, defab2 )
582 else if ( keyf == 5 )
then
583 call qk51 ( f, a2, b2, area2, error2, resabs, defab2 )
584 else if ( keyf == 6 )
then
585 call qk61 ( f, a2, b2, area2, error2, resabs, defab2 )
592 area12 = area1 + area2
593 erro12 = error1 + error2
594 errsum = errsum + erro12 - errmax
595 area = area + area12 - rlist(maxerr)
597 if ( defab1 /= error1 .and. defab2 /= error2 )
then
599 if ( abs( rlist(maxerr) - area12 ) <= 1.0d-05 * abs( area12 ) &
600 .and. erro12 >= 9.9d-01 * errmax )
then
604 if ( last > 10 .and. erro12 > errmax )
then
610 rlist(maxerr) = area1
612 errbnd = max( epsabs, epsrel * abs( area ) )
616 if ( errsum > errbnd )
then
618 if ( iroff1 >= 6 .or. iroff2 >= 20 )
then
625 if ( last == limit )
then
632 if ( max( abs( a1 ), abs( b2 ) ) <= ( 1.0d+00 + c * 1.0d+03 * &
633 epsilon( a1 ) ) * ( abs( a2 ) + 1.0d+04 * tiny( a2 ) ) )
then
641 if ( error2 <= error1 )
then
645 elist(maxerr) = error1
651 rlist(maxerr) = area2
653 elist(maxerr) = error2
661 call qsort ( limit, last, maxerr, errmax, elist, iord, nrmax )
663 if ( ier /= 0 .or. errsum <= errbnd )
then
671 result = sum( rlist(1:last) )
675 if ( keyf /= 1 )
then
676 neval = ( 10 * keyf + 1 ) * ( 2 * neval + 1 )
678 neval = 30 * neval + 15
683 subroutine qagi ( f, bound, inf, epsabs, epsrel, result, abserr, neval, ier )
808 integer,
parameter :: limit = 500
812 real(r_kind) alist(limit)
819 real(r_kind) blist(limit)
829 real(r_kind) elist(limit)
842 real(r_kind),
external :: f
865 real(r_kind) res3la(3)
866 real(r_kind) rlist(limit)
867 real(r_kind) rlist2(52)
883 if ( epsabs < 0.0d+00 .and. epsrel < 0.0d+00 )
then
901 call qk15i ( f, boun, inf, 0.0d+00, 1.0d+00, result, abserr, defabs, resabs )
910 errbnd = max( epsabs, epsrel * dres )
912 if ( abserr <= 100.0d+00 * epsilon( defabs ) * defabs .and. &
913 abserr > errbnd )
then
917 if ( limit == 1 )
then
921 if ( ier /= 0 .or. (abserr <= errbnd .and. abserr /= resabs ) .or. &
922 abserr == 0.0d+00 )
go to 130
931 abserr = huge( abserr )
943 if ( dres >= ( 1.0d+00 - 5.0d+01 * epsilon( defabs ) ) * defabs )
then
954 b1 = 5.0d-01 * ( alist(maxerr) + blist(maxerr) )
958 call qk15i ( f, boun, inf, a1, b1, area1, error1, resabs, defab1 )
959 call qk15i ( f, boun, inf, a2, b2, area2, error2, resabs, defab2 )
964 area12 = area1 + area2
965 erro12 = error1 + error2
966 errsum = errsum + erro12 - errmax
967 area = area + area12 - rlist(maxerr)
969 if ( defab1 /= error1 .and. defab2 /= error2 )
then
971 if ( abs( rlist(maxerr) - area12 ) <= 1.0d-05 * abs( area12 ) &
972 .and. erro12 >= 9.9d-01 * errmax )
then
978 if ( .not. extrap )
then
984 if ( last > 10 .and. erro12 > errmax )
then
990 rlist(maxerr) = area1
992 errbnd = max( epsabs, epsrel * abs( area ) )
996 if ( iroff1 + iroff2 >= 10 .or. iroff3 >= 20 )
then
1000 if ( iroff2 >= 5 )
then
1006 if ( last == limit )
then
1013 if ( max( abs(a1), abs(b2) ) <= (1.0d+00 + 1.0d+03 * epsilon( a1 ) ) * &
1014 ( abs(a2) + 1.0d+03 * tiny( a2 ) ))
then
1020 if ( error2 <= error1 )
then
1024 elist(maxerr) = error1
1025 elist(last) = error2
1030 rlist(maxerr) = area2
1032 elist(maxerr) = error2
1033 elist(last) = error1
1040 call qsort ( limit, last, maxerr, errmax, elist, iord, nrmax )
1042 if ( errsum <= errbnd )
go to 115
1044 if ( ier /= 0 )
then
1048 if ( last == 2 )
then
1060 erlarg = erlarg-erlast
1062 if ( abs(b1-a1) > small )
then
1063 erlarg = erlarg+erro12
1069 if ( .not. extrap )
then
1071 if ( abs(blist(maxerr)-alist(maxerr)) > small )
then
1080 if ( ierro == 3 .or. erlarg <= ertest )
go to 60
1089 if ( last > (2+limit/2) )
then
1090 jupbnd = limit + 3 - last
1094 maxerr = iord(nrmax)
1095 errmax = elist(maxerr)
1096 if ( abs( blist(maxerr) - alist(maxerr) ) > small )
then
1107 rlist2(numrl2) = area
1108 call qextr ( numrl2, rlist2, reseps, abseps, res3la, nres )
1111 if ( ktmin > 5.and.abserr < 1.0d-03*errsum )
then
1115 if ( abseps < abserr )
then
1121 ertest = max( epsabs, epsrel*abs(reseps) )
1123 if ( abserr <= ertest )
then
1131 if ( numrl2 == 1 )
then
1135 if ( ier == 5 )
then
1140 errmax = elist(maxerr)
1143 small = small*5.0d-01
1152 if ( abserr == huge( abserr ) )
go to 115
1154 if ( (ier+ierro) == 0 )
go to 110
1156 if ( ierro == 3 )
then
1157 abserr = abserr+correc
1160 if ( ier == 0 )
then
1164 if ( result /= 0.0d+00 .and. area /= 0.0d+00)
go to 105
1165 if ( abserr > errsum)
go to 115
1166 if ( area == 0.0d+00)
go to 130
1171 if ( abserr / abs(result) > errsum / abs(area) )
go to 115
1177 if ( ksgn == (-1) .and. &
1178 max( abs(result), abs(area) ) <= defabs * 1.0d-02)
go to 130
1180 if ( 1.0d-02 > (result/area) .or. &
1181 (result/area) > 1.0d+02 .or. &
1182 errsum > abs(area))
then
1192 result = sum( rlist(1:last) )
1198 if ( inf == 2 )
then
1208 subroutine qagp ( f, a, b, npts2, points, epsabs, epsrel, result, abserr, &
1352 integer,
parameter :: limit = 500
1357 real(r_kind) alist(limit)
1365 real(r_kind) blist(limit)
1373 real(r_kind) elist(limit)
1386 real(r_kind),
external :: f
1406 integer level(limit)
1418 real(r_kind) points(40)
1419 real(r_kind) pts(40)
1424 real(r_kind) res3la(3)
1425 real(r_kind) rlist(limit)
1426 real(r_kind) rlist2(52)
1444 if ( npts2 < 2 )
then
1447 else if ( limit <= npts .or. (epsabs < 0.0d+00.and. &
1448 epsrel < 0.0d+00) )
then
1465 pts(i+1) = points(i)
1468 pts(npts+2) = max( a,b)
1472 if ( npts /= 0 )
then
1477 if ( pts(i) > pts(j) )
then
1478 call r_swap ( pts(i), pts(j) )
1483 if ( pts(1) /= min( a, b ) .or. pts(nint+1) /= max( a,b) )
then
1497 call qk21 ( f, a1, b1, area1, error1, defabs, resa )
1498 abserr = abserr+error1
1499 result = result+area1
1502 if ( error1 == resa .and. error1 /= 0.0d+00 )
then
1506 resabs = resabs + defabs
1520 if ( ndin(i) == 1 )
then
1523 errsum = errsum + elist(i)
1530 dres = abs( result )
1531 errbnd = max( epsabs, epsrel * dres )
1533 if ( abserr <= 1.0d+02 * epsilon( resabs ) * resabs .and. &
1534 abserr > errbnd )
then
1538 if ( nint /= 1 )
then
1547 if ( elist(ind1) <= elist(ind2) )
then
1553 if ( ind1 /= iord(i) )
then
1560 if ( limit < npts2 )
then
1566 if ( ier /= 0 .or. abserr <= errbnd )
then
1574 errmax = elist(maxerr)
1589 abserr = huge( abserr )
1591 if ( dres >= ( 1.0d+00 - 0.5d+00 * epsilon( resabs ) ) * resabs )
then
1597 do last = npts2, limit
1601 levcur = level(maxerr)+1
1603 b1 = 0.5d+00 * ( alist(maxerr) + blist(maxerr) )
1607 call qk21 ( f, a1, b1, area1, error1, resa, defab1 )
1608 call qk21 ( f, a2, b2, area2, error2, resa, defab2 )
1614 area12 = area1+area2
1615 erro12 = error1+error2
1616 errsum = errsum+erro12-errmax
1617 area = area+area12-rlist(maxerr)
1619 if ( defab1 /= error1 .and. defab2 /= error2 )
then
1621 if ( abs(rlist(maxerr)-area12) <= 1.0d-05*abs(area12) .and. &
1622 erro12 >= 9.9d-01*errmax )
then
1632 if ( last > 10 .and. erro12 > errmax )
then
1638 level(maxerr) = levcur
1639 level(last) = levcur
1640 rlist(maxerr) = area1
1642 errbnd = max( epsabs, epsrel * abs( area ) )
1646 if ( iroff1 + iroff2 >= 10 .or. iroff3 >= 20 )
then
1650 if ( iroff2 >= 5 )
then
1657 if ( last == limit )
then
1664 if ( max( abs(a1),abs(b2)) <= (1.0d+00+1.0d+03* epsilon( a1 ) )* &
1665 ( abs(a2) + 1.0d+03 * tiny( a2 ) ) )
then
1671 if ( error2 <= error1 )
then
1675 elist(maxerr) = error1
1676 elist(last) = error2
1681 rlist(maxerr) = area2
1683 elist(maxerr) = error2
1684 elist(last) = error1
1691 call qsort ( limit, last, maxerr, errmax, elist, iord, nrmax )
1693 if ( errsum <= errbnd )
go to 190
1695 if ( ier /= 0 )
then
1703 erlarg = erlarg - erlast
1705 if ( levcur+1 <= levmax )
then
1706 erlarg = erlarg + erro12
1712 if ( .not. extrap )
then
1714 if ( level(maxerr)+1 <= levmax )
then
1727 if ( ierro /= 3 .and. erlarg > ertest )
then
1731 if ( last > (2+limit/2) )
then
1732 jupbnd = limit+3-last
1736 maxerr = iord(nrmax)
1737 errmax = elist(maxerr)
1738 if ( level(maxerr)+1 <= levmax )
go to 160
1747 rlist2(numrl2) = area
1748 if ( numrl2 <= 2 )
go to 155
1749 call qextr ( numrl2, rlist2, reseps, abseps, res3la, nres )
1752 if ( ktmin > 5 .and. abserr < 1.0d-03*errsum )
then
1756 if ( abseps < abserr )
then
1762 ertest = max( epsabs,epsrel*abs(reseps))
1764 if ( abserr < ertest )
then
1772 if ( numrl2 == 1 )
then
1776 if ( ier >= 5 )
then
1783 errmax = elist(maxerr)
1795 if ( abserr == huge( abserr ) )
go to 190
1796 if ( (ier+ierro) == 0 )
go to 180
1798 if ( ierro == 3 )
then
1799 abserr = abserr+correc
1802 if ( ier == 0 )
then
1806 if ( result /= 0.0d+00.and.area /= 0.0d+00 )
go to 175
1807 if ( abserr > errsum )
go to 190
1808 if ( area == 0.0d+00 )
go to 210
1813 if ( abserr/abs(result) > errsum/abs(area) )
go to 190
1819 if ( ksgn == (-1) .and. max( abs(result),abs(area)) <= &
1820 resabs*1.0d-02 )
go to 210
1822 if ( 1.0d-02 > (result/area) .or. (result/area) > 1.0d+02 .or. &
1823 errsum > abs(area) )
then
1833 result = sum( rlist(1:last) )
1843 result = result * sign
1847 subroutine qags ( f, a, b, epsabs, epsrel, result, abserr, neval, ier )
1975 integer,
parameter :: limit = 500
1980 real(r_kind) alist(limit)
1988 real(r_kind) blist(limit)
1996 real(r_kind) elist(limit)
2009 real(r_kind),
external :: f
2031 real(r_kind) res3la(3)
2032 real(r_kind) rlist(limit)
2033 real(r_kind) rlist2(52)
2052 if ( epsabs < 0.0d+00 .and. epsrel < 0.0d+00 )
then
2060 call qk21 ( f, a, b, result, abserr, defabs, resabs )
2064 dres = abs( result )
2065 errbnd = max( epsabs, epsrel * dres )
2071 if ( abserr <= 1.0d+02 * epsilon( defabs ) * defabs .and. &
2072 abserr > errbnd )
then
2076 if ( limit == 1 )
then
2080 if ( ier /= 0 .or. (abserr <= errbnd .and. abserr /= resabs ) .or. &
2081 abserr == 0.0d+00 )
go to 140
2090 abserr = huge( abserr )
2101 if ( dres >= (1.0d+00-5.0d+01* epsilon( defabs ) )*defabs )
then
2112 b1 = 5.0d-01*(alist(maxerr)+blist(maxerr))
2116 call qk21 ( f, a1, b1, area1, error1, resabs, defab1 )
2117 call qk21 ( f, a2, b2, area2, error2, resabs, defab2 )
2122 area12 = area1+area2
2123 erro12 = error1+error2
2124 errsum = errsum+erro12-errmax
2125 area = area+area12-rlist(maxerr)
2127 if ( defab1 == error1 .or. defab2 == error2 )
go to 15
2129 if ( abs( rlist(maxerr) - area12) > 1.0d-05 * abs(area12) &
2130 .or. erro12 < 9.9d-01 * errmax )
go to 10
2140 if ( last > 10.and.erro12 > errmax ) iroff3 = iroff3+1
2144 rlist(maxerr) = area1
2146 errbnd = max( epsabs,epsrel*abs(area))
2150 if ( iroff1+iroff2 >= 10 .or. iroff3 >= 20 )
then
2154 if ( iroff2 >= 5 ) ierro = 3
2159 if ( last == limit )
then
2166 if ( max( abs(a1),abs(b2)) <= (1.0d+00+1.0d+03* epsilon( a1 ) )* &
2167 (abs(a2)+1.0d+03* tiny( a2 ) ) )
then
2173 if ( error2 <= error1 )
then
2177 elist(maxerr) = error1
2178 elist(last) = error2
2183 rlist(maxerr) = area2
2185 elist(maxerr) = error2
2186 elist(last) = error1
2193 call qsort ( limit, last, maxerr, errmax, elist, iord, nrmax )
2195 if ( errsum <= errbnd )
go to 115
2197 if ( ier /= 0 )
then
2201 if ( last == 2 )
go to 80
2202 if ( noext )
go to 90
2204 erlarg = erlarg-erlast
2206 if ( abs(b1-a1) > small )
then
2207 erlarg = erlarg+erro12
2210 if ( extrap )
go to 40
2215 if ( abs(blist(maxerr)-alist(maxerr)) > small )
go to 90
2225 if ( ierro /= 3 .and. erlarg > ertest )
then
2230 if ( last > (2+limit/2) )
then
2231 jupbnd = limit+3-last
2235 maxerr = iord(nrmax)
2236 errmax = elist(maxerr)
2237 if ( abs(blist(maxerr)-alist(maxerr)) > small )
go to 90
2248 rlist2(numrl2) = area
2249 call qextr ( numrl2, rlist2, reseps, abseps, res3la, nres )
2252 if ( ktmin > 5 .and. abserr < 1.0d-03 * errsum )
then
2256 if ( abseps < abserr )
then
2262 ertest = max( epsabs,epsrel*abs(reseps))
2264 if ( abserr <= ertest )
then
2272 if ( numrl2 == 1 )
then
2276 if ( ier == 5 )
then
2281 errmax = elist(maxerr)
2284 small = small*5.0d-01
2290 small = abs(b-a)*3.75d-01
2301 if ( abserr == huge( abserr ) )
go to 115
2302 if ( ier+ierro == 0 )
go to 110
2304 if ( ierro == 3 )
then
2305 abserr = abserr+correc
2308 if ( ier == 0 ) ier = 3
2309 if ( result /= 0.0d+00.and.area /= 0.0d+00 )
go to 105
2310 if ( abserr > errsum )
go to 115
2311 if ( area == 0.0d+00 )
go to 130
2316 if ( abserr/abs(result) > errsum/abs(area) )
go to 115
2322 if ( ksgn == (-1).and.max( abs(result),abs(area)) <= &
2323 defabs*1.0d-02 )
go to 130
2325 if ( 1.0d-02 > (result/area) .or. (result/area) > 1.0d+02 &
2326 .or. errsum > abs(area) )
then
2336 result = sum( rlist(1:last) )
2342 if ( ier > 2 ) ier = ier-1
2350 subroutine qawc ( f, a, b, c, epsabs, epsrel, result, abserr, neval, ier )
2435 integer,
parameter :: limit = 500
2439 real(r_kind) alist(limit)
2441 real(r_kind) blist(limit)
2442 real(r_kind) elist(limit)
2446 real(r_kind),
external :: f
2452 real(r_kind) rlist(limit)
2454 call qawce ( f, a, b, c, epsabs, epsrel, limit, result, abserr, neval, ier, &
2455 alist, blist, rlist, elist, iord, last )
2459 subroutine qawce ( f, a, b, c, epsabs, epsrel, limit, result, abserr, neval, &
2460 ier, alist, blist, rlist, elist, iord, last )
2592 real(r_kind) alist(limit)
2601 real(r_kind) blist(limit)
2605 real(r_kind) elist(limit)
2614 real(r_kind),
external :: f
2626 real(r_kind) rlist(limit)
2644 else if ( c == b )
then
2647 else if ( epsabs < 0.0d+00 .and. epsrel < 0.0d+00 )
then
2663 call qc25c ( f, aa, bb, c, result, abserr, krule, neval )
2673 errbnd = max( epsabs, epsrel*abs(result) )
2675 if ( limit == 1 )
then
2680 if ( abserr < min( 1.0d-02*abs(result),errbnd) )
then
2702 b1 = 5.0d-01*(alist(maxerr)+blist(maxerr))
2704 if ( c <= b1 .and. c > a1 ) b1 = 5.0d-01*(c+b2)
2705 if ( c > b1 .and. c < b2 ) b1 = 5.0d-01*(a1+c)
2709 call qc25c ( f, a1, b1, c, area1, error1, krule, nev )
2712 call qc25c ( f, a2, b2, c, area2, error2, krule, nev )
2718 area12 = area1+area2
2719 erro12 = error1+error2
2720 errsum = errsum+erro12-errmax
2721 area = area+area12-rlist(maxerr)
2723 if ( abs(rlist(maxerr)-area12) < 1.0d-05*abs(area12) &
2724 .and.erro12 >= 9.9d-01*errmax .and. krule == 0 ) &
2727 if ( last > 10.and.erro12 > errmax .and. krule == 0 )
then
2731 rlist(maxerr) = area1
2733 errbnd = max( epsabs,epsrel*abs(area))
2735 if ( errsum > errbnd )
then
2739 if ( iroff1 >= 6 .and. iroff2 > 20 )
then
2746 if ( last == limit )
then
2753 if ( max( abs(a1), abs(b2) ) <= ( 1.0d+00 + 1.0d+03 * epsilon( a1 ) ) &
2754 *(abs(a2)+1.0d+03* tiny( a2 ) ))
then
2762 if ( error2 <= error1 )
then
2766 elist(maxerr) = error1
2767 elist(last) = error2
2772 rlist(maxerr) = area2
2774 elist(maxerr) = error2
2775 elist(last) = error1
2782 call qsort ( limit, last, maxerr, errmax, elist, iord, nrmax )
2784 if ( ier /= 0 .or. errsum <= errbnd )
then
2792 result = sum( rlist(1:last) )
2804 subroutine qawf ( f, a, omega, integr, epsabs, result, abserr, neval, ier )
2895 integer,
parameter :: limit = 500
2896 integer,
parameter :: limlst = 50
2897 integer,
parameter :: maxp1 = 21
2901 real(r_kind) alist(limit)
2902 real(r_kind) blist(limit)
2903 real(r_kind) chebmo(maxp1,25)
2904 real(r_kind) elist(limit)
2906 real(r_kind) erlst(limlst)
2907 real(r_kind),
external :: f
2911 integer ierlst(limlst)
2915 integer nnlog(limit)
2918 real(r_kind) rlist(limit)
2919 real(r_kind) rslst(limlst)
2927 if ( limlst < 3 .or. maxp1 < 1 )
then
2931 call qawfe ( f, a, omega, integr, epsabs, limlst, limit, maxp1, result, &
2932 abserr, neval, ier, rslst, erlst, ierlst, lst, alist, blist, rlist, &
2933 elist, iord, nnlog, chebmo )
2937 subroutine qawfe ( f, a, omega, integr, epsabs, limlst, limit, maxp1, &
2938 result, abserr, neval, ier, rslst, erlst, ierlst, lst, alist, blist, &
2939 rlist, elist, iord, nnlog, chebmo )
3145 real(r_kind) alist(limit)
3146 real(r_kind) blist(limit)
3147 real(r_kind) chebmo(maxp1,25)
3155 real(r_kind) elist(limit)
3160 real(r_kind) erlst(limlst)
3162 real(r_kind),
external :: f
3165 integer ierlst(limlst)
3175 integer nnlog(limit)
3179 real(r_kind),
parameter :: p = 0.9d+00
3180 real(r_kind),
parameter :: pi = 3.1415926535897932d+00
3182 real(r_kind) psum(52)
3185 real(r_kind) res3la(3)
3186 real(r_kind) rlist(limit)
3187 real(r_kind) rslst(limlst)
3201 if ( (integr /= 1 .and. integr /= 2 ) .or. &
3202 epsabs <= 0.0d+00 .or. &
3208 if ( omega == 0.0d+00 )
then
3210 if ( integr == 1 )
then
3211 call qagi ( f, 0.0d+00, 1, epsabs, 0.0d+00, result, abserr, neval, ier )
3231 cycle = dl * pi / abs( omega )
3242 if ( epsabs > tiny( epsabs ) / p1 )
then
3259 call qfour ( f, c1, c2, omega, integr, epsa, 0.0d+00, limit, lst, maxp1, &
3260 rslst(lst), erlst(lst), nev, ierlst(lst), alist, blist, rlist, elist, &
3261 iord, nnlog, momcom, chebmo )
3265 errsum = errsum + erlst(lst)
3266 drl = 5.0d+01 * abs(rslst(lst))
3270 if ((errsum+drl) <= epsabs.and.lst >= 6)
go to 80
3272 correc = max( correc,erlst(lst))
3274 if ( ierlst(lst) /= 0 )
then
3275 eps = max( ep,correc*p1)
3279 if ( ier == 7 .and. (errsum+drl) <= correc*1.0d+01.and. lst > 5)
go to 80
3283 if ( lst <= 1 )
then
3288 psum(numrl2) = psum(ll)+rslst(lst)
3290 if ( lst == 2 )
then
3296 if ( lst == limlst )
then
3302 call qextr ( numrl2, psum, reseps, abseps, res3la, nres )
3308 if ( ktmin >= 15 .and. abserr <= 1.0d-03 * (errsum+drl) )
then
3312 if ( abseps <= abserr .or. lst == 3 )
then
3322 if ( ( abserr + 1.0d+01 * correc ) <= epsabs )
then
3326 if ( abserr <= epsabs .and. 1.0d+01 * correc >= epsabs )
then
3332 if ( ier /= 0 .and. ier /= 7 )
then
3348 abserr = abserr + 1.0d+01 * correc
3350 if ( ier == 0 )
then
3354 if ( result /= 0.0d+00 .and. psum(numrl2) /= 0.0d+00)
go to 70
3356 if ( abserr > errsum )
go to 80
3358 if ( psum(numrl2) == 0.0d+00 )
then
3364 if ( abserr / abs(result) <= (errsum+drl)/abs(psum(numrl2)) )
then
3366 if ( ier >= 1 .and. ier /= 7 )
then
3367 abserr = abserr + drl
3376 result = psum(numrl2)
3377 abserr = errsum + drl
3381 subroutine qawo ( f, a, b, omega, integr, epsabs, epsrel, result, abserr, &
3489 integer,
parameter :: limit = 500
3490 integer,
parameter :: maxp1 = 21
3494 real(r_kind) alist(limit)
3496 real(r_kind) blist(limit)
3497 real(r_kind) chebmo(maxp1,25)
3498 real(r_kind) elist(limit)
3501 real(r_kind),
external :: f
3507 integer nnlog(limit)
3510 real(r_kind) rlist(limit)
3512 call qfour ( f, a, b, omega, integr, epsabs, epsrel, limit, 1, maxp1, &
3513 result, abserr, neval, ier, alist, blist, rlist, elist, iord, nnlog, &
3518 subroutine qaws ( f, a, b, alfa, beta, integr, epsabs, epsrel, result, &
3519 abserr, neval, ier )
3612 integer,
parameter :: limit = 500
3617 real(r_kind) alist(limit)
3619 real(r_kind) blist(limit)
3621 real(r_kind) elist(limit)
3624 real(r_kind),
external :: f
3631 real(r_kind) rlist(limit)
3633 call qawse ( f, a, b, alfa, beta, integr, epsabs, epsrel, limit, result, &
3634 abserr, neval, ier, alist, blist, rlist, elist, iord, last )
3638 subroutine qawse ( f, a, b, alfa, beta, integr, epsabs, epsrel, limit, &
3639 result, abserr, neval, ier, alist, blist, rlist, elist, iord, last )
3777 real(r_kind) alist(limit)
3786 real(r_kind) blist(limit)
3790 real(r_kind) elist(limit)
3799 real(r_kind),
external :: f
3817 real(r_kind) rlist(limit)
3831 (epsabs < 0.0d+00 .and. epsrel < 0.0d+00) .or. &
3832 alfa <= (-1.0d+00) .or. &
3833 beta <= (-1.0d+00) .or. &
3843 call qmomo ( alfa, beta, ri, rj, rg, rh, integr )
3847 centre = 5.0d-01 * ( b + a )
3849 call qc25s ( f, a, b, a, centre, alfa, beta, ri, rj, rg, rh, area1, &
3850 error1, resas1, integr, nev )
3854 call qc25s ( f, a, b, centre, b, alfa, beta, ri, rj, rg, rh, area2, &
3855 error2, resas2, integr, nev )
3859 result = area1+area2
3860 abserr = error1+error2
3864 errbnd = max( epsabs, epsrel * abs( result ) )
3868 if ( error2 <= error1 )
then
3891 if ( limit == 2 )
then
3896 if ( abserr <= errbnd )
then
3913 b1 = 5.0d-01 * (alist(maxerr)+blist(maxerr))
3917 call qc25s ( f, a, b, a1, b1, alfa, beta, ri, rj, rg, rh, area1, &
3918 error1, resas1, integr, nev )
3922 call qc25s ( f, a, b, a2, b2, alfa, beta, ri, rj, rg, rh, area2, &
3923 error2, resas2, integr, nev )
3930 area12 = area1+area2
3931 erro12 = error1+error2
3932 errsum = errsum+erro12-errmax
3933 area = area+area12-rlist(maxerr)
3937 if ( a /= a1 .and. b /= b2 )
then
3939 if ( resas1 /= error1 .and. resas2 /= error2 )
then
3941 if ( abs(rlist(maxerr)-area12) < 1.0d-05*abs(area12) &
3942 .and.erro12 >= 9.9d-01*errmax)
then
3946 if ( last > 10.and.erro12 > errmax )
then
3954 rlist(maxerr) = area1
3959 errbnd = max( epsabs, epsrel * abs( area ) )
3961 if ( errsum > errbnd )
then
3966 if ( last == limit )
then
3972 if ( iroff1 >= 6 .or. iroff2 >= 20 )
then
3979 if ( max( abs(a1),abs(b2)) <= (1.0d+00+1.0d+03* epsilon( a1 ) )* &
3980 (abs(a2)+1.0d+03* tiny( a2) ))
then
3988 if ( error2 <= error1 )
then
3992 elist(maxerr) = error1
3993 elist(last) = error2
3998 rlist(maxerr) = area2
4000 elist(maxerr) = error2
4001 elist(last) = error1
4008 call qsort ( limit, last, maxerr, errmax, elist, iord, nrmax )
4010 if (ier /= 0 .or. errsum <= errbnd )
then
4018 result = sum( rlist(1:last) )
4024 subroutine qc25c ( f, a, b, c, result, abserr, krul, neval )
4099 real(r_kind) cheb12(13)
4100 real(r_kind) cheb24(25)
4101 real(r_kind),
external :: f
4102 real(r_kind) fval(25)
4113 real(r_kind),
external :: qwgtc
4120 real(r_kind),
parameter,
dimension ( 11 ) :: x = (/ &
4121 9.914448613738104d-01, 9.659258262890683d-01, &
4122 9.238795325112868d-01, 8.660254037844386d-01, &
4123 7.933533402912352d-01, 7.071067811865475d-01, &
4124 6.087614290087206d-01, 5.000000000000000d-01, &
4125 3.826834323650898d-01, 2.588190451025208d-01, &
4126 1.305261922200516d-01 /)
4130 cc = ( 2.0d+00 * c - b - a ) / ( b - a )
4134 if ( abs( cc ) >= 1.1d+00 )
then
4136 call qk15w ( f,
qwgtc, c, p2, p3, p4, kp, a, b, result, abserr, &
4139 if ( resasc == abserr )
then
4147 hlgth = 5.0d-01 * ( b - a )
4148 centr = 5.0d-01 * ( b + a )
4150 fval(1) = 5.0d-01 * f(hlgth+centr)
4152 fval(25) = 5.0d-01 * f(centr-hlgth)
4157 fval(i) = f(u+centr)
4158 fval(isym) = f(centr-u)
4163 call qcheb ( x, fval, cheb12, cheb24 )
4168 amom0 = log( abs( ( 1.0d+00 - cc ) / ( 1.0d+00 + cc ) ) )
4169 amom1 = 2.0d+00 + cc * amom0
4170 res12 = cheb12(1) * amom0 + cheb12(2) * amom1
4171 res24 = cheb24(1) * amom0 + cheb24(2) * amom1
4174 amom2 = 2.0d+00 * cc * amom1 - amom0
4175 ak22 = ( k - 2 ) * ( k - 2 )
4176 if ( ( k / 2 ) * 2 == k )
then
4177 amom2 = amom2 - 4.0d+00 / ( ak22 - 1.0d+00 )
4179 res12 = res12 + cheb12(k) * amom2
4180 res24 = res24 + cheb24(k) * amom2
4186 amom2 = 2.0d+00 * cc * amom1 - amom0
4187 ak22 = ( k - 2 ) * ( k - 2 )
4188 if ( ( k / 2 ) * 2 == k )
then
4189 amom2 = amom2 - 4.0d+00 / ( ak22 - 1.0d+00 )
4191 res24 = res24 + cheb24(k) * amom2
4197 abserr = abs( res24 - res12 )
4201 subroutine qc25o ( f, a, b, omega, integr, nrmom, maxp1, ksave, result, &
4202 abserr, neval, resabs, resasc, momcom, chebmo )
4339 real(r_kind) chebmo(maxp1,25)
4340 real(r_kind) cheb12(13)
4341 real(r_kind) cheb24(25)
4351 real(r_kind),
external :: f
4352 real(r_kind) fval(25)
4363 integer,
parameter :: nmac = 28
4374 real(r_kind),
external :: qwgto
4384 real(r_kind),
dimension ( 11 ) :: x = (/ &
4385 9.914448613738104d-01, 9.659258262890683d-01, &
4386 9.238795325112868d-01, 8.660254037844386d-01, &
4387 7.933533402912352d-01, 7.071067811865475d-01, &
4388 6.087614290087206d-01, 5.000000000000000d-01, &
4389 3.826834323650898d-01, 2.588190451025208d-01, &
4390 1.305261922200516d-01 /)
4392 centr = 5.0d-01*(b+a)
4393 hlgth = 5.0d-01*(b-a)
4394 parint = omega * hlgth
4402 if ( abs( parint ) <= 2.0d+00 )
then
4404 call qk15w ( f,
qwgto, omega, p2, p3, p4, integr, a, b, result, &
4405 abserr, resabs, resasc )
4414 conc = hlgth * cos(centr*omega)
4415 cons = hlgth * sin(centr*omega)
4416 resasc = huge( resasc )
4422 if ( nrmom < momcom .or. ksave == 1 )
go to 140
4427 par2 = parint*parint
4428 par22 = par2+2.0d+00
4429 sinpar = sin(parint)
4430 cospar = cos(parint)
4434 v(1) = 2.0d+00*sinpar/parint
4435 v(2) = (8.0d+00*cospar+(par2+par2-8.0d+00)*sinpar/ parint)/par2
4436 v(3) = (3.2d+01*(par2-1.2d+01)*cospar+(2.0d+00* &
4437 ((par2-8.0d+01)*par2+1.92d+02)*sinpar)/ &
4440 as = 2.4d+01*parint*sinpar
4442 if ( abs( parint ) > 2.4d+01 )
then
4456 d(k) = -2.0d+00*(an2-4.0d+00)*(par22-an2-an2)
4457 d2(k) = (an-1.0d+00)*(an-2.0d+00)*par2
4458 d1(k) = (an+3.0d+00)*(an+4.0d+00)*par2
4459 v(k+3) = as-(an2-4.0d+00)*ac
4464 d(noequ) = -2.0d+00*(an2-4.0d+00)*(par22-an2-an2)
4465 v(noequ+3) = as-(an2-4.0d+00)*ac
4466 v(4) = v(4)-5.6d+01*par2*v(3)
4468 asap = (((((2.10d+02*par2-1.0d+00)*cospar-(1.05d+02*par2 &
4469 -6.3d+01)*ass)/an2-(1.0d+00-1.5d+01*par2)*cospar &
4470 +1.5d+01*ass)/an2-cospar+3.0d+00*ass)/an2-cospar)/an2
4471 v(noequ+3) = v(noequ+3)-2.0d+00*asap*par2*(an-1.0d+00)* &
4477 d3(1:noequ) = 0.0d+00
4483 if ( abs(d1(i)) > abs(d(i)) )
then
4497 d(i+1) = d(i+1)-d2(i)*d1(i)/d(i)
4498 d2(i+1) = d2(i+1)-d3(i)*d1(i)/d(i)
4499 v(i+4) = v(i+4)-v(i+3)*d1(i)/d(i)
4503 v(noequ+3) = v(noequ+3)/d(noequ)
4504 v(noequ+2) = (v(noequ+2)-d2(noeq1)*v(noequ+3))/d(noeq1)
4508 v(k+3) = (v(k+3)-d3(k)*v(k+5)-d2(k)*v(k+4))/d(k)
4521 v(i) = ((an2-4.0d+00)*(2.0d+00*(par22-an2-an2)*v(i-1)-ac) &
4522 +as-par2*(an+1.0d+00)*(an+2.0d+00)*v(i-2))/ &
4523 (par2*(an-1.0d+00)*(an-2.0d+00))
4530 chebmo(m,2*j-1) = v(j)
4535 v(1) = 2.0d+00*(sinpar-parint*cospar)/par2
4536 v(2) = (1.8d+01-4.8d+01/par2)*sinpar/par2 &
4537 +(-2.0d+00+4.8d+01/par2)*cospar/parint
4538 ac = -2.4d+01*parint*cospar
4539 as = -8.0d+00*sinpar
4543 if ( abs(parint) <= 2.4d+01 )
then
4547 chebmo(m,2*k) = -sinpar/(an*(2.0d+00*an-2.0d+00)) &
4548 -2.5d-01*parint*(v(k+1)/an-v(k)/(an-1.0d+00))
4559 v(i) = ((an2-4.0d+00)*(2.0d+00*(par22-an2-an2)*v(i-1)+as) &
4560 +ac-par2*(an+1.0d+00)*(an+2.0d+00)*v(i-2)) &
4561 /(par2*(an-1.0d+00)*(an-2.0d+00))
4563 chebmo(m,2*i) = v(i)
4570 if ( nrmom < momcom )
then
4574 if ( momcom < maxp1 - 1 .and. nrmom >= momcom )
then
4581 fval(1) = 5.0d-01*f(centr+hlgth)
4583 fval(25) = 5.0d-01*f(centr-hlgth)
4587 fval(i) = f(hlgth*x(i-1)+centr)
4588 fval(isym) = f(centr-hlgth*x(i-1))
4591 call qcheb ( x, fval, cheb12, cheb24 )
4595 resc12 = cheb12(13) * chebmo(m,13)
4597 estc = abs( cheb24(25)*chebmo(m,25))+abs((cheb12(13)- &
4598 cheb24(13))*chebmo(m,13) )
4603 resc12 = resc12+cheb12(k)*chebmo(m,k)
4604 ress12 = ress12+cheb12(k+1)*chebmo(m,k+1)
4605 estc = estc+abs((cheb12(k)-cheb24(k))*chebmo(m,k))
4606 ests = ests+abs((cheb12(k+1)-cheb24(k+1))*chebmo(m,k+1))
4610 resc24 = cheb24(25)*chebmo(m,25)
4612 resabs = abs(cheb24(25))
4617 resc24 = resc24+cheb24(k)*chebmo(m,k)
4618 ress24 = ress24+cheb24(k+1)*chebmo(m,k+1)
4619 resabs = resabs+abs(cheb24(k))+abs(cheb24(k+1))
4622 estc = estc+abs(cheb24(k)*chebmo(m,k))
4623 ests = ests+abs(cheb24(k+1)*chebmo(m,k+1))
4630 resabs = resabs * abs( hlgth )
4632 if ( integr == 1 )
then
4633 result = conc * resc24-cons*ress24
4634 abserr = abs( conc * estc ) + abs( cons * ests )
4636 result = conc*ress24+cons*resc24
4637 abserr = abs(conc*ests)+abs(cons*estc)
4642 subroutine qc25s ( f, a, b, bl, br, alfa, beta, ri, rj, rg, rh, result, &
4643 abserr, resasc, integr, neval )
4734 real(r_kind) cheb12(13)
4735 real(r_kind) cheb24(25)
4737 real(r_kind),
external :: f
4740 real(r_kind) fval(25)
4746 real(r_kind),
external :: qwgts
4757 real(r_kind),
dimension ( 11 ) :: x = (/ &
4758 9.914448613738104d-01, 9.659258262890683d-01, &
4759 9.238795325112868d-01, 8.660254037844386d-01, &
4760 7.933533402912352d-01, 7.071067811865475d-01, &
4761 6.087614290087206d-01, 5.000000000000000d-01, &
4762 3.826834323650898d-01, 2.588190451025208d-01, &
4763 1.305261922200516d-01 /)
4767 if ( bl == a .and. (alfa /= 0.0d+00 .or. integr == 2 .or. integr == 4)) &
4770 if ( br == b .and. (beta /= 0.0d+00 .or. integr == 3 .or. integr == 4)) &
4775 call qk15w ( f,
qwgts, a, b, alfa, beta, integr, bl, br, result, abserr, &
4788 hlgth = 5.0d-01*(br-bl)
4789 centr = 5.0d-01*(br+bl)
4791 fval(1) = 5.0d-01*f(hlgth+centr)*(fix-hlgth)**beta
4792 fval(13) = f(centr)*(fix**beta)
4793 fval(25) = 5.0d-01*f(centr-hlgth)*(fix+hlgth)**beta
4798 fval(i) = f(u+centr)*(fix-u)**beta
4799 fval(isym) = f(centr-u)*(fix+u)**beta
4802 factor = hlgth**(alfa+1.0d+00)
4808 if ( integr > 2 )
go to 70
4810 call qcheb ( x, fval, cheb12, cheb24 )
4815 res12 = res12+cheb12(i)*ri(i)
4816 res24 = res24+cheb24(i)*ri(i)
4820 res24 = res24 + cheb24(i) * ri(i)
4823 if ( integr == 1 )
go to 130
4829 abserr = abs((res24-res12)*dc)
4834 res12 = res12+cheb12(i)*rg(i)
4835 res24 = res24+cheb24(i)*rg(i)
4839 res24 = res24+cheb24(i)*rg(i)
4849 fval(1) = fval(1) * log( fix - hlgth )
4850 fval(13) = fval(13) * log( fix )
4851 fval(25) = fval(25) * log( fix + hlgth )
4856 fval(i) = fval(i) * log( fix - u )
4857 fval(isym) = fval(isym) * log( fix + u )
4860 call qcheb ( x, fval, cheb12, cheb24 )
4865 res12 = res12+cheb12(i)*ri(i)
4866 res24 = res24+cheb24(i)*ri(i)
4870 res24 = res24+cheb24(i)*ri(i)
4873 if ( integr == 3 )
go to 130
4879 abserr = abs((res24-res12)*dc)
4884 res12 = res12+cheb12(i)*rg(i)
4885 res24 = res24+cheb24(i)*rg(i)
4889 res24 = res24+cheb24(i)*rg(i)
4894 result = (result+res24)*factor
4895 abserr = (abserr+abs(res24-res12))*factor
4905 hlgth = 5.0d-01*(br-bl)
4906 centr = 5.0d-01*(br+bl)
4908 fval(1) = 5.0d-01*f(hlgth+centr)*(fix+hlgth)**alfa
4909 fval(13) = f(centr)*(fix**alfa)
4910 fval(25) = 5.0d-01*f(centr-hlgth)*(fix-hlgth)**alfa
4915 fval(i) = f(u+centr)*(fix+u)**alfa
4916 fval(isym) = f(centr-u)*(fix-u)**alfa
4919 factor = hlgth**(beta+1.0d+00)
4925 if ( integr == 2 .or. integr == 4 )
go to 200
4929 call qcheb ( x, fval, cheb12, cheb24 )
4932 res12 = res12+cheb12(i)*rj(i)
4933 res24 = res24+cheb24(i)*rj(i)
4937 res24 = res24+cheb24(i)*rj(i)
4940 if ( integr == 1 )
go to 260
4946 abserr = abs((res24-res12)*dc)
4951 res12 = res12+cheb12(i)*rh(i)
4952 res24 = res24+cheb24(i)*rh(i)
4956 res24 = res24+cheb24(i)*rh(i)
4966 fval(1) = fval(1) * log( hlgth + fix )
4967 fval(13) = fval(13) * log( fix )
4968 fval(25) = fval(25) * log( fix - hlgth )
4973 fval(i) = fval(i) * log(u+fix)
4974 fval(isym) = fval(isym) * log(fix-u)
4977 call qcheb ( x, fval, cheb12, cheb24 )
4982 res12 = res12+cheb12(i)*rj(i)
4983 res24 = res24+cheb24(i)*rj(i)
4987 res24 = res24+cheb24(i)*rj(i)
4990 if ( integr == 2 )
go to 260
4994 abserr = abs((res24-res12)*dc)
5001 res12 = res12+cheb12(i)*rh(i)
5002 res24 = res24+cheb24(i)*rh(i)
5006 res24 = res24+cheb24(i)*rh(i)
5011 result = (result+res24)*factor
5012 abserr = (abserr+abs(res24-res12))*factor
5018 subroutine qcheb ( x, fval, cheb12, cheb24 )
5064 real(r_kind) cheb12(13)
5065 real(r_kind) cheb24(25)
5066 real(r_kind) fval(25)
5077 v(i) = fval(i)-fval(j)
5078 fval(i) = fval(i)+fval(j)
5082 alam2 = x(6)*(v(3)-v(7)-v(11))
5083 cheb12(4) = alam1+alam2
5084 cheb12(10) = alam1-alam2
5085 alam1 = v(2)-v(8)-v(10)
5086 alam2 = v(4)-v(6)-v(12)
5087 alam = x(3)*alam1+x(9)*alam2
5088 cheb24(4) = cheb12(4)+alam
5089 cheb24(22) = cheb12(4)-alam
5090 alam = x(9)*alam1-x(3)*alam2
5091 cheb24(10) = cheb12(10)+alam
5092 cheb24(16) = cheb12(10)-alam
5096 alam1 = v(1)+part1+part2
5097 alam2 = x(2)*v(3)+part3+x(10)*v(11)
5098 cheb12(2) = alam1+alam2
5099 cheb12(12) = alam1-alam2
5100 alam = x(1)*v(2)+x(3)*v(4)+x(5)*v(6)+x(7)*v(8) &
5101 +x(9)*v(10)+x(11)*v(12)
5102 cheb24(2) = cheb12(2)+alam
5103 cheb24(24) = cheb12(2)-alam
5104 alam = x(11)*v(2)-x(9)*v(4)+x(7)*v(6)-x(5)*v(8) &
5105 +x(3)*v(10)-x(1)*v(12)
5106 cheb24(12) = cheb12(12)+alam
5107 cheb24(14) = cheb12(12)-alam
5108 alam1 = v(1)-part1+part2
5109 alam2 = x(10)*v(3)-part3+x(2)*v(11)
5110 cheb12(6) = alam1+alam2
5111 cheb12(8) = alam1-alam2
5112 alam = x(5)*v(2)-x(9)*v(4)-x(1)*v(6) &
5113 -x(11)*v(8)+x(3)*v(10)+x(7)*v(12)
5114 cheb24(6) = cheb12(6)+alam
5115 cheb24(20) = cheb12(6)-alam
5116 alam = x(7)*v(2)-x(3)*v(4)-x(11)*v(6)+x(1)*v(8) &
5117 -x(9)*v(10)-x(5)*v(12)
5118 cheb24(8) = cheb12(8)+alam
5119 cheb24(18) = cheb12(8)-alam
5123 v(i) = fval(i)-fval(j)
5124 fval(i) = fval(i)+fval(j)
5127 alam1 = v(1)+x(8)*v(5)
5129 cheb12(3) = alam1+alam2
5130 cheb12(11) = alam1-alam2
5131 cheb12(7) = v(1)-v(5)
5132 alam = x(2)*v(2)+x(6)*v(4)+x(10)*v(6)
5133 cheb24(3) = cheb12(3)+alam
5134 cheb24(23) = cheb12(3)-alam
5135 alam = x(6)*(v(2)-v(4)-v(6))
5136 cheb24(7) = cheb12(7)+alam
5137 cheb24(19) = cheb12(7)-alam
5138 alam = x(10)*v(2)-x(6)*v(4)+x(2)*v(6)
5139 cheb24(11) = cheb12(11)+alam
5140 cheb24(15) = cheb12(11)-alam
5144 v(i) = fval(i)-fval(j)
5145 fval(i) = fval(i)+fval(j)
5148 cheb12(5) = v(1)+x(8)*v(3)
5149 cheb12(9) = fval(1)-x(8)*fval(3)
5151 cheb24(5) = cheb12(5)+alam
5152 cheb24(21) = cheb12(5)-alam
5153 alam = x(8)*fval(2)-fval(4)
5154 cheb24(9) = cheb12(9)+alam
5155 cheb24(17) = cheb12(9)-alam
5156 cheb12(1) = fval(1)+fval(3)
5157 alam = fval(2)+fval(4)
5158 cheb24(1) = cheb12(1)+alam
5159 cheb24(25) = cheb12(1)-alam
5160 cheb12(13) = v(1)-v(3)
5161 cheb24(13) = cheb12(13)
5162 alam = 1.0d+00/6.0d+00
5165 cheb12(i) = cheb12(i)*alam
5169 cheb12(1) = cheb12(1)*alam
5170 cheb12(13) = cheb12(13)*alam
5173 cheb24(i) = cheb24(i)*alam
5176 cheb24(1) = 0.5d+00 * alam*cheb24(1)
5177 cheb24(25) = 0.5d+00 * alam*cheb24(25)
5181 subroutine qextr ( n, epstab, result, abserr, res3la, nres )
5246 real(r_kind) epstab(52)
5271 real(r_kind) res3la(3)
5278 abserr = huge( abserr )
5281 if ( n < 3 )
go to 100
5283 epstab(n+2) = epstab(n)
5285 epstab(n) = huge( epstab(n) )
5300 tol2 = max( abs(e2),e1abs)* epsilon( e2 )
5303 tol3 = max( e1abs,abs(e0))* epsilon( e0 )
5308 if ( err2 <= tol2 .and. err3 <= tol3 )
then
5318 tol1 = max( e1abs,abs(e3))* epsilon( e3 )
5323 if ( err1 <= tol1 .or. err2 <= tol2 .or. err3 <= tol3 )
go to 20
5325 ss = 1.0d+00/delta1+1.0d+00/delta2-1.0d+00/delta3
5326 epsinf = abs( ss*e1 )
5331 if ( epsinf > 1.0d-04 )
go to 30
5345 error = err2+abs(res-e2)+err3
5347 if ( error <= abserr )
then
5356 if ( n == limexp )
then
5360 if ( (num/2)*2 == num )
then
5370 epstab(ib) = epstab(ib2)
5374 if ( num /= n )
then
5379 epstab(i)= epstab(indx)
5385 if ( nres < 4 )
then
5386 res3la(nres) = result
5387 abserr = huge( abserr )
5389 abserr = abs(result-res3la(3))+abs(result-res3la(2)) &
5390 +abs(result-res3la(1))
5391 res3la(1) = res3la(2)
5392 res3la(2) = res3la(3)
5398 abserr = max( abserr,0.5d+00* epsilon( result ) *abs(result))
5402 subroutine qfour ( f, a, b, omega, integr, epsabs, epsrel, limit, icall, &
5403 maxp1, result, abserr, neval, ier, alist, blist, rlist, elist, iord, &
5404 nnlog, momcom, chebmo )
5618 real(r_kind) alist(limit)
5626 real(r_kind) blist(limit)
5629 real(r_kind) chebmo(maxp1,25)
5636 real(r_kind) elist(limit)
5650 real(r_kind),
external :: f
5669 integer nnlog(limit)
5679 real(r_kind) res3la(3)
5680 real(r_kind) rlist(limit)
5681 real(r_kind) rlist2(52)
5703 if ( (integr /= 1.and.integr /= 2) .or. (epsabs < 0.0d+00.and. &
5704 epsrel < 0.0d+00) .or. icall < 1 .or. maxp1 < 1 )
then
5711 domega = abs( omega )
5714 if ( icall <= 1 )
then
5718 call qc25o ( f, a, b, domega, integr, nrmom, maxp1, 0, result, abserr, &
5719 neval, defabs, resabs, momcom, chebmo )
5724 errbnd = max( epsabs,epsrel*dres)
5728 if ( abserr <= 1.0d+02* epsilon( defabs ) *defabs .and. &
5729 abserr > errbnd ) ier = 2
5731 if ( limit == 1 )
then
5735 if ( ier /= 0 .or. abserr <= errbnd )
go to 200
5743 abserr = huge( abserr )
5752 small = abs(b-a)*7.5d-01
5757 if ( 5.0d-01*abs(b-a)*domega <= 2.0d+00)
then
5763 if ( 2.5d-01 * abs(b-a) * domega <= 2.0d+00 )
then
5767 if ( dres >= (1.0d+00-5.0d+01* epsilon( defabs ) )*defabs )
then
5775 do 140 last = 2, limit
5779 nrmom = nnlog(maxerr)+1
5781 b1 = 5.0d-01*(alist(maxerr)+blist(maxerr))
5786 call qc25o ( f, a1, b1, domega, integr, nrmom, maxp1, 0, area1, &
5787 error1, nev, resabs, defab1, momcom, chebmo )
5791 call qc25o ( f, a2, b2, domega, integr, nrmom, maxp1, 1, area2, &
5792 error2, nev, resabs, defab2, momcom, chebmo )
5799 area12 = area1+area2
5800 erro12 = error1+error2
5801 errsum = errsum+erro12-errmax
5802 area = area+area12-rlist(maxerr)
5803 if ( defab1 == error1 .or. defab2 == error2 )
go to 25
5804 if ( abs(rlist(maxerr)-area12) > 1.0d-05*abs(area12) &
5805 .or. erro12 < 9.9d-01*errmax )
go to 20
5806 if ( extrap ) iroff2 = iroff2+1
5808 if ( .not.extrap )
then
5814 if ( last > 10.and.erro12 > errmax ) iroff3 = iroff3+1
5818 rlist(maxerr) = area1
5820 nnlog(maxerr) = nrmom
5822 errbnd = max( epsabs,epsrel*abs(area))
5826 if ( iroff1+iroff2 >= 10 .or. iroff3 >= 20 ) ier = 2
5828 if ( iroff2 >= 5) ierro = 3
5833 if ( last == limit )
then
5840 if ( max( abs(a1),abs(b2)) <= (1.0d+00+1.0d+03* epsilon( a1 ) ) &
5841 *(abs(a2)+1.0d+03* tiny( a2 ) ))
then
5847 if ( error2 <= error1 )
then
5851 elist(maxerr) = error1
5852 elist(last) = error2
5857 rlist(maxerr) = area2
5859 elist(maxerr) = error2
5860 elist(last) = error1
5869 call qsort ( limit, last, maxerr, errmax, elist, iord, nrmax )
5871 if ( errsum <= errbnd )
then
5875 if ( ier /= 0 )
go to 150
5876 if ( last == 2 .and. extall )
go to 120
5877 if ( noext )
go to 140
5878 if ( .not. extall )
go to 50
5879 erlarg = erlarg-erlast
5880 if ( abs(b1-a1) > small ) erlarg = erlarg+erro12
5881 if ( extrap )
go to 70
5888 width = abs(blist(maxerr)-alist(maxerr))
5889 if ( width > small )
go to 140
5890 if ( extall )
go to 60
5896 small = small*5.0d-01
5897 if ( 2.5d-01*width*domega > 2.0d+00 )
go to 140
5908 if ( ierro == 3 .or. erlarg <= ertest )
go to 90
5916 if ( last > (limit/2+2) )
then
5917 jupbnd = limit+3-last
5923 maxerr = iord(nrmax)
5924 errmax = elist(maxerr)
5925 if ( abs(blist(maxerr)-alist(maxerr)) > small )
go to 140
5934 rlist2(numrl2) = area
5935 if ( numrl2 < 3 )
go to 110
5936 call qextr ( numrl2, rlist2, reseps, abseps, res3la, nres )
5939 if ( ktmin > 5.and.abserr < 1.0d-03*errsum )
then
5943 if ( abseps >= abserr )
go to 100
5948 ertest = max( epsabs, epsrel*abs(reseps))
5949 if ( abserr <= ertest )
go to 150
5955 if ( numrl2 == 1 ) noext = .true.
5956 if ( ier == 5 )
go to 150
5961 errmax = elist(maxerr)
5964 small = small*5.0d-01
5970 small = small * 5.0d-01
5972 rlist2(numrl2) = area
5985 if ( abserr == huge( abserr ) .or. nres == 0 )
go to 170
5986 if ( ier+ierro == 0 )
go to 165
5987 if ( ierro == 3 ) abserr = abserr+correc
5988 if ( ier == 0 ) ier = 3
5989 if ( result /= 0.0d+00.and.area /= 0.0d+00 )
go to 160
5990 if ( abserr > errsum )
go to 170
5991 if ( area == 0.0d+00 )
go to 190
5996 if ( abserr/abs(result) > errsum/abs(area) )
go to 170
6002 if ( ksgn == (-1) .and. max( abs(result),abs(area)) <= &
6003 defabs*1.0d-02 )
go to 190
6005 if ( 1.0d-02 > (result/area) .or. (result/area) > 1.0d+02 &
6006 .or. errsum >= abs(area) ) ier = 6
6014 result = sum( rlist(1:last) )
6020 if (ier > 2) ier=ier-1
6024 if ( integr == 2 .and. omega < 0.0d+00 )
then
6030 subroutine qk15 ( f, a, b, result, abserr, resabs, resasc )
6106 real(r_kind),
external :: f
6127 data xgk(1),xgk(2),xgk(3),xgk(4),xgk(5),xgk(6),xgk(7),xgk(8)/ &
6128 9.914553711208126d-01, 9.491079123427585d-01, &
6129 8.648644233597691d-01, 7.415311855993944d-01, &
6130 5.860872354676911d-01, 4.058451513773972d-01, &
6131 2.077849550078985d-01, 0.0d+00 /
6132 data wgk(1),wgk(2),wgk(3),wgk(4),wgk(5),wgk(6),wgk(7),wgk(8)/ &
6133 2.293532201052922d-02, 6.309209262997855d-02, &
6134 1.047900103222502d-01, 1.406532597155259d-01, &
6135 1.690047266392679d-01, 1.903505780647854d-01, &
6136 2.044329400752989d-01, 2.094821410847278d-01/
6137 data wg(1),wg(2),wg(3),wg(4)/ &
6138 1.294849661688697d-01, 2.797053914892767d-01, &
6139 3.818300505051189d-01, 4.179591836734694d-01/
6141 centr = 5.0d-01*(a+b)
6142 hlgth = 5.0d-01*(b-a)
6155 absc = hlgth*xgk(jtw)
6156 fval1 = f(centr-absc)
6157 fval2 = f(centr+absc)
6161 resg = resg+wg(j)*fsum
6162 resk = resk+wgk(jtw)*fsum
6163 resabs = resabs+wgk(jtw)*(abs(fval1)+abs(fval2))
6168 absc = hlgth*xgk(jtwm1)
6169 fval1 = f(centr-absc)
6170 fval2 = f(centr+absc)
6174 resk = resk+wgk(jtwm1)*fsum
6175 resabs = resabs+wgk(jtwm1)*(abs(fval1)+abs(fval2))
6178 reskh = resk * 5.0d-01
6179 resasc = wgk(8)*abs(fc-reskh)
6182 resasc = resasc+wgk(j)*(abs(fv1(j)-reskh)+abs(fv2(j)-reskh))
6186 resabs = resabs*dhlgth
6187 resasc = resasc*dhlgth
6188 abserr = abs((resk-resg)*hlgth)
6190 if ( resasc /= 0.0d+00.and.abserr /= 0.0d+00 )
then
6191 abserr = resasc*min( 1.0d+00,(2.0d+02*abserr/resasc)**1.5d+00)
6194 if ( resabs > tiny( resabs ) / (5.0d+01* epsilon( resabs ) ) )
then
6195 abserr = max(( epsilon( resabs ) *5.0d+01)*resabs,abserr)
6200 subroutine qk15i ( f, boun, inf, a, b, result, abserr, resabs, resasc )
6280 real(r_kind),
external :: f
6318 data xgk(1),xgk(2),xgk(3),xgk(4),xgk(5),xgk(6),xgk(7),xgk(8)/ &
6319 9.914553711208126d-01, 9.491079123427585d-01, &
6320 8.648644233597691d-01, 7.415311855993944d-01, &
6321 5.860872354676911d-01, 4.058451513773972d-01, &
6322 2.077849550078985d-01, 0.0000000000000000d+00/
6324 data wgk(1),wgk(2),wgk(3),wgk(4),wgk(5),wgk(6),wgk(7),wgk(8)/ &
6325 2.293532201052922d-02, 6.309209262997855d-02, &
6326 1.047900103222502d-01, 1.406532597155259d-01, &
6327 1.690047266392679d-01, 1.903505780647854d-01, &
6328 2.044329400752989d-01, 2.094821410847278d-01/
6330 data wg(1),wg(2),wg(3),wg(4),wg(5),wg(6),wg(7),wg(8)/ &
6331 0.0000000000000000d+00, 1.294849661688697d-01, &
6332 0.0000000000000000d+00, 2.797053914892767d-01, &
6333 0.0000000000000000d+00, 3.818300505051189d-01, &
6334 0.0000000000000000d+00, 4.179591836734694d-01/
6336 dinf = min( 1, inf )
6338 centr = 5.0d-01*(a+b)
6339 hlgth = 5.0d-01*(b-a)
6340 tabsc1 = boun+dinf*(1.0d+00-centr)/centr
6342 if ( inf == 2 ) fval1 = fval1+f(-tabsc1)
6343 fc = (fval1/centr)/centr
6357 tabsc1 = boun+dinf*(1.0d+00-absc1)/absc1
6358 tabsc2 = boun+dinf*(1.0d+00-absc2)/absc2
6362 if ( inf == 2 )
then
6363 fval1 = fval1+f(-tabsc1)
6364 fval2 = fval2+f(-tabsc2)
6367 fval1 = (fval1/absc1)/absc1
6368 fval2 = (fval2/absc2)/absc2
6372 resg = resg+wg(j)*fsum
6373 resk = resk+wgk(j)*fsum
6374 resabs = resabs+wgk(j)*(abs(fval1)+abs(fval2))
6377 reskh = resk * 5.0d-01
6378 resasc = wgk(8) * abs(fc-reskh)
6381 resasc = resasc + wgk(j)*(abs(fv1(j)-reskh)+abs(fv2(j)-reskh))
6384 result = resk * hlgth
6385 resasc = resasc * hlgth
6386 resabs = resabs * hlgth
6387 abserr = abs( ( resk - resg ) * hlgth )
6389 if ( resasc /= 0.0d+00.and.abserr /= 0.0d+00)
then
6390 abserr = resasc* min( 1.0d+00,(2.0d+02*abserr/resasc)**1.5d+00)
6393 if ( resabs > tiny( resabs ) / ( 5.0d+01 * epsilon( resabs ) ) )
then
6394 abserr = max(( epsilon( resabs ) *5.0d+01)*resabs,abserr)
6399 subroutine qk15w ( f, w, p1, p2, p3, p4, kp, a, b, result, abserr, resabs, &
6474 real(r_kind),
external :: f
6496 real(r_kind),
external :: w
6497 real(r_kind),
dimension ( 4 ) :: wg = (/ &
6498 1.294849661688697d-01, 2.797053914892767d-01, &
6499 3.818300505051889d-01, 4.179591836734694d-01 /)
6517 data xgk(1),xgk(2),xgk(3),xgk(4),xgk(5),xgk(6),xgk(7),xgk(8)/ &
6518 9.914553711208126d-01, 9.491079123427585d-01, &
6519 8.648644233597691d-01, 7.415311855993944d-01, &
6520 5.860872354676911d-01, 4.058451513773972d-01, &
6521 2.077849550789850d-01, 0.000000000000000d+00/
6523 data wgk(1),wgk(2),wgk(3),wgk(4),wgk(5),wgk(6),wgk(7),wgk(8)/ &
6524 2.293532201052922d-02, 6.309209262997855d-02, &
6525 1.047900103222502d-01, 1.406532597155259d-01, &
6526 1.690047266392679d-01, 1.903505780647854d-01, &
6527 2.044329400752989d-01, 2.094821410847278d-01/
6529 centr = 5.0d-01*(a+b)
6530 hlgth = 5.0d-01*(b-a)
6536 fc = f(centr)*w(centr,p1,p2,p3,p4,kp)
6543 absc = hlgth*xgk(jtw)
6546 fval1 = f(absc1)*w(absc1,p1,p2,p3,p4,kp)
6547 fval2 = f(absc2)*w(absc2,p1,p2,p3,p4,kp)
6551 resg = resg+wg(j)*fsum
6552 resk = resk+wgk(jtw)*fsum
6553 resabs = resabs+wgk(jtw)*(abs(fval1)+abs(fval2))
6558 absc = hlgth*xgk(jtwm1)
6561 fval1 = f(absc1)*w(absc1,p1,p2,p3,p4,kp)
6562 fval2 = f(absc2)*w(absc2,p1,p2,p3,p4,kp)
6566 resk = resk+wgk(jtwm1)*fsum
6567 resabs = resabs+wgk(jtwm1)*(abs(fval1)+abs(fval2))
6570 reskh = resk*5.0d-01
6571 resasc = wgk(8)*abs(fc-reskh)
6574 resasc = resasc+wgk(j)*(abs(fv1(j)-reskh)+abs(fv2(j)-reskh))
6578 resabs = resabs*dhlgth
6579 resasc = resasc*dhlgth
6580 abserr = abs((resk-resg)*hlgth)
6582 if ( resasc /= 0.0d+00.and.abserr /= 0.0d+00)
then
6583 abserr = resasc*min( 1.0d+00,(2.0d+02*abserr/resasc)**1.5d+00)
6586 if ( resabs > tiny( resabs ) /(5.0d+01* epsilon( resabs ) ) )
then
6587 abserr = max( ( epsilon( resabs ) * 5.0d+01)*resabs,abserr)
6592 subroutine qk21 ( f, a, b, result, abserr, resabs, resasc )
6643 real(r_kind),
external :: f
6648 real(r_kind) fv1(10)
6649 real(r_kind) fv2(10)
6661 real(r_kind) wgk(11)
6662 real(r_kind) xgk(11)
6678 data xgk(1),xgk(2),xgk(3),xgk(4),xgk(5),xgk(6),xgk(7),xgk(8), &
6679 xgk(9),xgk(10),xgk(11)/ &
6680 9.956571630258081d-01, 9.739065285171717d-01, &
6681 9.301574913557082d-01, 8.650633666889845d-01, &
6682 7.808177265864169d-01, 6.794095682990244d-01, &
6683 5.627571346686047d-01, 4.333953941292472d-01, &
6684 2.943928627014602d-01, 1.488743389816312d-01, &
6685 0.000000000000000d+00/
6687 data wgk(1),wgk(2),wgk(3),wgk(4),wgk(5),wgk(6),wgk(7),wgk(8), &
6688 wgk(9),wgk(10),wgk(11)/ &
6689 1.169463886737187d-02, 3.255816230796473d-02, &
6690 5.475589657435200d-02, 7.503967481091995d-02, &
6691 9.312545458369761d-02, 1.093871588022976d-01, &
6692 1.234919762620659d-01, 1.347092173114733d-01, &
6693 1.427759385770601d-01, 1.477391049013385d-01, &
6694 1.494455540029169d-01/
6696 data wg(1),wg(2),wg(3),wg(4),wg(5)/ &
6697 6.667134430868814d-02, 1.494513491505806d-01, &
6698 2.190863625159820d-01, 2.692667193099964d-01, &
6699 2.955242247147529d-01/
6713 centr = 5.0d-01*(a+b)
6714 hlgth = 5.0d-01*(b-a)
6727 absc = hlgth*xgk(jtw)
6728 fval1 = f(centr-absc)
6729 fval2 = f(centr+absc)
6733 resg = resg+wg(j)*fsum
6734 resk = resk+wgk(jtw)*fsum
6735 resabs = resabs+wgk(jtw)*(abs(fval1)+abs(fval2))
6740 absc = hlgth*xgk(jtwm1)
6741 fval1 = f(centr-absc)
6742 fval2 = f(centr+absc)
6746 resk = resk+wgk(jtwm1)*fsum
6747 resabs = resabs+wgk(jtwm1)*(abs(fval1)+abs(fval2))
6750 reskh = resk*5.0d-01
6751 resasc = wgk(11)*abs(fc-reskh)
6754 resasc = resasc+wgk(j)*(abs(fv1(j)-reskh)+abs(fv2(j)-reskh))
6758 resabs = resabs*dhlgth
6759 resasc = resasc*dhlgth
6760 abserr = abs((resk-resg)*hlgth)
6762 if ( resasc /= 0.0d+00.and.abserr /= 0.0d+00)
then
6763 abserr = resasc*min( 1.0d+00,(2.0d+02*abserr/resasc)**1.5d+00)
6766 if ( resabs > tiny( resabs ) /(5.0d+01* epsilon( resabs ) ))
then
6767 abserr = max(( epsilon( resabs ) *5.0d+01)*resabs,abserr)
6772 subroutine qk31 ( f, a, b, result, abserr, resabs, resasc )
6824 real(r_kind),
external :: f
6829 real(r_kind) fv1(15)
6830 real(r_kind) fv2(15)
6842 real(r_kind) wgk(16)
6843 real(r_kind) xgk(16)
6859 data xgk(1),xgk(2),xgk(3),xgk(4),xgk(5),xgk(6),xgk(7),xgk(8), &
6860 xgk(9),xgk(10),xgk(11),xgk(12),xgk(13),xgk(14),xgk(15),xgk(16)/ &
6861 9.980022986933971d-01, 9.879925180204854d-01, &
6862 9.677390756791391d-01, 9.372733924007059d-01, &
6863 8.972645323440819d-01, 8.482065834104272d-01, &
6864 7.904185014424659d-01, 7.244177313601700d-01, &
6865 6.509967412974170d-01, 5.709721726085388d-01, &
6866 4.850818636402397d-01, 3.941513470775634d-01, &
6867 2.991800071531688d-01, 2.011940939974345d-01, &
6868 1.011420669187175d-01, 0.0d+00 /
6869 data wgk(1),wgk(2),wgk(3),wgk(4),wgk(5),wgk(6),wgk(7),wgk(8), &
6870 wgk(9),wgk(10),wgk(11),wgk(12),wgk(13),wgk(14),wgk(15),wgk(16)/ &
6871 5.377479872923349d-03, 1.500794732931612d-02, &
6872 2.546084732671532d-02, 3.534636079137585d-02, &
6873 4.458975132476488d-02, 5.348152469092809d-02, &
6874 6.200956780067064d-02, 6.985412131872826d-02, &
6875 7.684968075772038d-02, 8.308050282313302d-02, &
6876 8.856444305621177d-02, 9.312659817082532d-02, &
6877 9.664272698362368d-02, 9.917359872179196d-02, &
6878 1.007698455238756d-01, 1.013300070147915d-01/
6879 data wg(1),wg(2),wg(3),wg(4),wg(5),wg(6),wg(7),wg(8)/ &
6880 3.075324199611727d-02, 7.036604748810812d-02, &
6881 1.071592204671719d-01, 1.395706779261543d-01, &
6882 1.662692058169939d-01, 1.861610000155622d-01, &
6883 1.984314853271116d-01, 2.025782419255613d-01/
6897 centr = 5.0d-01*(a+b)
6898 hlgth = 5.0d-01*(b-a)
6911 absc = hlgth*xgk(jtw)
6912 fval1 = f(centr-absc)
6913 fval2 = f(centr+absc)
6917 resg = resg+wg(j)*fsum
6918 resk = resk+wgk(jtw)*fsum
6919 resabs = resabs+wgk(jtw)*(abs(fval1)+abs(fval2))
6924 absc = hlgth*xgk(jtwm1)
6925 fval1 = f(centr-absc)
6926 fval2 = f(centr+absc)
6930 resk = resk+wgk(jtwm1)*fsum
6931 resabs = resabs+wgk(jtwm1)*(abs(fval1)+abs(fval2))
6934 reskh = resk*5.0d-01
6935 resasc = wgk(16)*abs(fc-reskh)
6938 resasc = resasc+wgk(j)*(abs(fv1(j)-reskh)+abs(fv2(j)-reskh))
6942 resabs = resabs*dhlgth
6943 resasc = resasc*dhlgth
6944 abserr = abs((resk-resg)*hlgth)
6946 if ( resasc /= 0.0d+00.and.abserr /= 0.0d+00) &
6947 abserr = resasc*min( 1.0d+00,(2.0d+02*abserr/resasc)**1.5d+00)
6949 if ( resabs > tiny( resabs ) /(5.0d+01* epsilon( resabs ) ))
then
6950 abserr = max(( epsilon( resabs ) *5.0d+01)*resabs,abserr)
6955 subroutine qk41 ( f, a, b, result, abserr, resabs, resasc )
7018 real(r_kind),
external :: f
7023 real(r_kind) fv1(20)
7024 real(r_kind) fv2(20)
7036 real(r_kind) wgk(21)
7037 real(r_kind) xgk(21)
7053 data xgk(1),xgk(2),xgk(3),xgk(4),xgk(5),xgk(6),xgk(7),xgk(8), &
7054 xgk(9),xgk(10),xgk(11),xgk(12),xgk(13),xgk(14),xgk(15),xgk(16), &
7055 xgk(17),xgk(18),xgk(19),xgk(20),xgk(21)/ &
7056 9.988590315882777d-01, 9.931285991850949d-01, &
7057 9.815078774502503d-01, 9.639719272779138d-01, &
7058 9.408226338317548d-01, 9.122344282513259d-01, &
7059 8.782768112522820d-01, 8.391169718222188d-01, &
7060 7.950414288375512d-01, 7.463319064601508d-01, &
7061 6.932376563347514d-01, 6.360536807265150d-01, &
7062 5.751404468197103d-01, 5.108670019508271d-01, &
7063 4.435931752387251d-01, 3.737060887154196d-01, &
7064 3.016278681149130d-01, 2.277858511416451d-01, &
7065 1.526054652409227d-01, 7.652652113349733d-02, &
7067 data wgk(1),wgk(2),wgk(3),wgk(4),wgk(5),wgk(6),wgk(7),wgk(8), &
7068 wgk(9),wgk(10),wgk(11),wgk(12),wgk(13),wgk(14),wgk(15),wgk(16), &
7069 wgk(17),wgk(18),wgk(19),wgk(20),wgk(21)/ &
7070 3.073583718520532d-03, 8.600269855642942d-03, &
7071 1.462616925697125d-02, 2.038837346126652d-02, &
7072 2.588213360495116d-02, 3.128730677703280d-02, &
7073 3.660016975820080d-02, 4.166887332797369d-02, &
7074 4.643482186749767d-02, 5.094457392372869d-02, &
7075 5.519510534828599d-02, 5.911140088063957d-02, &
7076 6.265323755478117d-02, 6.583459713361842d-02, &
7077 6.864867292852162d-02, 7.105442355344407d-02, &
7078 7.303069033278667d-02, 7.458287540049919d-02, &
7079 7.570449768455667d-02, 7.637786767208074d-02, &
7080 7.660071191799966d-02/
7081 data wg(1),wg(2),wg(3),wg(4),wg(5),wg(6),wg(7),wg(8),wg(9),wg(10)/ &
7082 1.761400713915212d-02, 4.060142980038694d-02, &
7083 6.267204833410906d-02, 8.327674157670475d-02, &
7084 1.019301198172404d-01, 1.181945319615184d-01, &
7085 1.316886384491766d-01, 1.420961093183821d-01, &
7086 1.491729864726037d-01, 1.527533871307259d-01/
7088 centr = 5.0d-01*(a+b)
7089 hlgth = 5.0d-01*(b-a)
7102 absc = hlgth*xgk(jtw)
7103 fval1 = f(centr-absc)
7104 fval2 = f(centr+absc)
7108 resg = resg+wg(j)*fsum
7109 resk = resk+wgk(jtw)*fsum
7110 resabs = resabs+wgk(jtw)*(abs(fval1)+abs(fval2))
7115 absc = hlgth*xgk(jtwm1)
7116 fval1 = f(centr-absc)
7117 fval2 = f(centr+absc)
7121 resk = resk+wgk(jtwm1)*fsum
7122 resabs = resabs+wgk(jtwm1)*(abs(fval1)+abs(fval2))
7125 reskh = resk*5.0d-01
7126 resasc = wgk(21)*abs(fc-reskh)
7129 resasc = resasc+wgk(j)*(abs(fv1(j)-reskh)+abs(fv2(j)-reskh))
7133 resabs = resabs*dhlgth
7134 resasc = resasc*dhlgth
7135 abserr = abs((resk-resg)*hlgth)
7137 if ( resasc /= 0.0d+00.and.abserr /= 0.0d+00) &
7138 abserr = resasc*min( 1.0d+00,(2.0d+02*abserr/resasc)**1.5d+00)
7140 if ( resabs > tiny( resabs ) /(5.0d+01* epsilon( resabs ) ))
then
7141 abserr = max(( epsilon( resabs ) *5.0d+01)*resabs,abserr)
7146 subroutine qk51 ( f, a, b, result, abserr, resabs, resasc )
7208 real(r_kind),
external :: f
7213 real(r_kind) fv1(25)
7214 real(r_kind) fv2(25)
7226 real(r_kind) wgk(26)
7227 real(r_kind) xgk(26)
7243 data xgk(1),xgk(2),xgk(3),xgk(4),xgk(5),xgk(6),xgk(7),xgk(8), &
7244 xgk(9),xgk(10),xgk(11),xgk(12),xgk(13),xgk(14)/ &
7245 9.992621049926098d-01, 9.955569697904981d-01, &
7246 9.880357945340772d-01, 9.766639214595175d-01, &
7247 9.616149864258425d-01, 9.429745712289743d-01, &
7248 9.207471152817016d-01, 8.949919978782754d-01, &
7249 8.658470652932756d-01, 8.334426287608340d-01, &
7250 7.978737979985001d-01, 7.592592630373576d-01, &
7251 7.177664068130844d-01, 6.735663684734684d-01/
7252 data xgk(15),xgk(16),xgk(17),xgk(18),xgk(19),xgk(20),xgk(21), &
7253 xgk(22),xgk(23),xgk(24),xgk(25),xgk(26)/ &
7254 6.268100990103174d-01, 5.776629302412230d-01, &
7255 5.263252843347192d-01, 4.730027314457150d-01, &
7256 4.178853821930377d-01, 3.611723058093878d-01, &
7257 3.030895389311078d-01, 2.438668837209884d-01, &
7258 1.837189394210489d-01, 1.228646926107104d-01, &
7259 6.154448300568508d-02, 0.0d+00 /
7260 data wgk(1),wgk(2),wgk(3),wgk(4),wgk(5),wgk(6),wgk(7),wgk(8), &
7261 wgk(9),wgk(10),wgk(11),wgk(12),wgk(13),wgk(14)/ &
7262 1.987383892330316d-03, 5.561932135356714d-03, &
7263 9.473973386174152d-03, 1.323622919557167d-02, &
7264 1.684781770912830d-02, 2.043537114588284d-02, &
7265 2.400994560695322d-02, 2.747531758785174d-02, &
7266 3.079230016738749d-02, 3.400213027432934d-02, &
7267 3.711627148341554d-02, 4.008382550403238d-02, &
7268 4.287284502017005d-02, 4.550291304992179d-02/
7269 data wgk(15),wgk(16),wgk(17),wgk(18),wgk(19),wgk(20),wgk(21), &
7270 wgk(22),wgk(23),wgk(24),wgk(25),wgk(26)/ &
7271 4.798253713883671d-02, 5.027767908071567d-02, &
7272 5.236288580640748d-02, 5.425112988854549d-02, &
7273 5.595081122041232d-02, 5.743711636156783d-02, &
7274 5.868968002239421d-02, 5.972034032417406d-02, &
7275 6.053945537604586d-02, 6.112850971705305d-02, &
7276 6.147118987142532d-02, 6.158081806783294d-02/
7277 data wg(1),wg(2),wg(3),wg(4),wg(5),wg(6),wg(7),wg(8),wg(9),wg(10), &
7278 wg(11),wg(12),wg(13)/ &
7279 1.139379850102629d-02, 2.635498661503214d-02, &
7280 4.093915670130631d-02, 5.490469597583519d-02, &
7281 6.803833381235692d-02, 8.014070033500102d-02, &
7282 9.102826198296365d-02, 1.005359490670506d-01, &
7283 1.085196244742637d-01, 1.148582591457116d-01, &
7284 1.194557635357848d-01, 1.222424429903100d-01, &
7285 1.231760537267155d-01/
7287 centr = 5.0d-01*(a+b)
7288 hlgth = 5.0d-01*(b-a)
7301 absc = hlgth*xgk(jtw)
7302 fval1 = f(centr-absc)
7303 fval2 = f(centr+absc)
7307 resg = resg+wg(j)*fsum
7308 resk = resk+wgk(jtw)*fsum
7309 resabs = resabs+wgk(jtw)*(abs(fval1)+abs(fval2))
7314 absc = hlgth*xgk(jtwm1)
7315 fval1 = f(centr-absc)
7316 fval2 = f(centr+absc)
7320 resk = resk+wgk(jtwm1)*fsum
7321 resabs = resabs+wgk(jtwm1)*(abs(fval1)+abs(fval2))
7324 reskh = resk*5.0d-01
7325 resasc = wgk(26)*abs(fc-reskh)
7328 resasc = resasc+wgk(j)*(abs(fv1(j)-reskh)+abs(fv2(j)-reskh))
7332 resabs = resabs*dhlgth
7333 resasc = resasc*dhlgth
7334 abserr = abs((resk-resg)*hlgth)
7336 if ( resasc /= 0.0d+00.and.abserr /= 0.0d+00)
then
7337 abserr = resasc*min( 1.0d+00,(2.0d+02*abserr/resasc)**1.5d+00)
7340 if ( resabs > tiny( resabs ) / (5.0d+01* epsilon( resabs ) ) )
then
7341 abserr = max(( epsilon( resabs ) *5.0d+01)*resabs,abserr)
7346 subroutine qk61 ( f, a, b, result, abserr, resabs, resasc )
7408 real(r_kind),
external :: f
7413 real(r_kind) fv1(30)
7414 real(r_kind) fv2(30)
7426 real(r_kind) wgk(31)
7427 real(r_kind) xgk(31)
7443 data xgk(1),xgk(2),xgk(3),xgk(4),xgk(5),xgk(6),xgk(7),xgk(8), &
7445 9.994844100504906d-01, 9.968934840746495d-01, &
7446 9.916309968704046d-01, 9.836681232797472d-01, &
7447 9.731163225011263d-01, 9.600218649683075d-01, &
7448 9.443744447485600d-01, 9.262000474292743d-01, &
7449 9.055733076999078d-01, 8.825605357920527d-01/
7450 data xgk(11),xgk(12),xgk(13),xgk(14),xgk(15),xgk(16),xgk(17), &
7451 xgk(18),xgk(19),xgk(20)/ &
7452 8.572052335460611d-01, 8.295657623827684d-01, &
7453 7.997278358218391d-01, 7.677774321048262d-01, &
7454 7.337900624532268d-01, 6.978504947933158d-01, &
7455 6.600610641266270d-01, 6.205261829892429d-01, &
7456 5.793452358263617d-01, 5.366241481420199d-01/
7457 data xgk(21),xgk(22),xgk(23),xgk(24),xgk(25),xgk(26),xgk(27), &
7458 xgk(28),xgk(29),xgk(30),xgk(31)/ &
7459 4.924804678617786d-01, 4.470337695380892d-01, &
7460 4.004012548303944d-01, 3.527047255308781d-01, &
7461 3.040732022736251d-01, 2.546369261678898d-01, &
7462 2.045251166823099d-01, 1.538699136085835d-01, &
7463 1.028069379667370d-01, 5.147184255531770d-02, &
7465 data wgk(1),wgk(2),wgk(3),wgk(4),wgk(5),wgk(6),wgk(7),wgk(8), &
7467 1.389013698677008d-03, 3.890461127099884d-03, &
7468 6.630703915931292d-03, 9.273279659517763d-03, &
7469 1.182301525349634d-02, 1.436972950704580d-02, &
7470 1.692088918905327d-02, 1.941414119394238d-02, &
7471 2.182803582160919d-02, 2.419116207808060d-02/
7472 data wgk(11),wgk(12),wgk(13),wgk(14),wgk(15),wgk(16),wgk(17), &
7473 wgk(18),wgk(19),wgk(20)/ &
7474 2.650995488233310d-02, 2.875404876504129d-02, &
7475 3.090725756238776d-02, 3.298144705748373d-02, &
7476 3.497933802806002d-02, 3.688236465182123d-02, &
7477 3.867894562472759d-02, 4.037453895153596d-02, &
7478 4.196981021516425d-02, 4.345253970135607d-02/
7479 data wgk(21),wgk(22),wgk(23),wgk(24),wgk(25),wgk(26),wgk(27), &
7480 wgk(28),wgk(29),wgk(30),wgk(31)/ &
7481 4.481480013316266d-02, 4.605923827100699d-02, &
7482 4.718554656929915d-02, 4.818586175708713d-02, &
7483 4.905543455502978d-02, 4.979568342707421d-02, &
7484 5.040592140278235d-02, 5.088179589874961d-02, &
7485 5.122154784925877d-02, 5.142612853745903d-02, &
7486 5.149472942945157d-02/
7487 data wg(1),wg(2),wg(3),wg(4),wg(5),wg(6),wg(7),wg(8)/ &
7488 7.968192496166606d-03, 1.846646831109096d-02, &
7489 2.878470788332337d-02, 3.879919256962705d-02, &
7490 4.840267283059405d-02, 5.749315621761907d-02, &
7491 6.597422988218050d-02, 7.375597473770521d-02/
7492 data wg(9),wg(10),wg(11),wg(12),wg(13),wg(14),wg(15)/ &
7493 8.075589522942022d-02, 8.689978720108298d-02, &
7494 9.212252223778613d-02, 9.636873717464426d-02, &
7495 9.959342058679527d-02, 1.017623897484055d-01, &
7496 1.028526528935588d-01/
7498 centr = 5.0d-01*(b+a)
7499 hlgth = 5.0d-01*(b-a)
7512 absc = hlgth*xgk(jtw)
7513 fval1 = f(centr-absc)
7514 fval2 = f(centr+absc)
7518 resg = resg+wg(j)*fsum
7519 resk = resk+wgk(jtw)*fsum
7520 resabs = resabs+wgk(jtw)*(abs(fval1)+abs(fval2))
7525 absc = hlgth*xgk(jtwm1)
7526 fval1 = f(centr-absc)
7527 fval2 = f(centr+absc)
7531 resk = resk+wgk(jtwm1)*fsum
7532 resabs = resabs+wgk(jtwm1)*(abs(fval1)+abs(fval2))
7535 reskh = resk * 5.0d-01
7536 resasc = wgk(31)*abs(fc-reskh)
7539 resasc = resasc+wgk(j)*(abs(fv1(j)-reskh)+abs(fv2(j)-reskh))
7543 resabs = resabs*dhlgth
7544 resasc = resasc*dhlgth
7545 abserr = abs((resk-resg)*hlgth)
7547 if ( resasc /= 0.0d+00 .and. abserr /= 0.0d+00)
then
7548 abserr = resasc*min( 1.0d+00,(2.0d+02*abserr/resasc)**1.5d+00)
7551 if ( resabs > tiny( resabs ) / (5.0d+01* epsilon( resabs ) ))
then
7552 abserr = max( ( epsilon( resabs ) *5.0d+01)*resabs, abserr )
7558 subroutine qmomo ( alfa, beta, ri, rj, rg, rh, integr )
7632 alfp1 = alfa+1.0d+00
7633 betp1 = beta+1.0d+00
7634 alfp2 = alfa+2.0d+00
7635 betp2 = beta+2.0d+00
7636 ralf = 2.0d+00**alfp1
7637 rbet = 2.0d+00**betp1
7643 ri(2) = ri(1)*alfa/alfp2
7644 rj(2) = rj(1)*beta/betp2
7649 ri(i) = -(ralf+an*(an-alfp2)*ri(i-1))/(anm1*(an+alfp1))
7650 rj(i) = -(rbet+an*(an-betp2)*rj(i-1))/(anm1*(an+betp1))
7655 if ( integr == 1 )
go to 70
7656 if ( integr == 3 )
go to 40
7660 rg(1) = -ri(1)/alfp1
7661 rg(2) = -(ralf+ralf)/(alfp2*alfp2)-rg(1)
7667 rg(i) = -(an*(an-alfp2)*rg(im1)-an*ri(im1)+anm1*ri(i))/ &
7674 if ( integr == 2 )
go to 70
7680 rh(1) = -rj(1) / betp1
7681 rh(2) = -(rbet+rbet)/(betp2*betp2)-rh(1)
7687 rh(i) = -(an*(an-betp2)*rh(im1)-an*rj(im1)+ &
7688 anm1*rj(i))/(anm1*(an+betp1))
7708 subroutine qng ( f, a, b, epsabs, epsrel, result, abserr, neval, ier )
7795 real(r_kind),
external :: f
7818 real(r_kind) savfun(21)
7820 real(r_kind) w21a(5)
7821 real(r_kind) w21b(6)
7822 real(r_kind) w43a(10)
7823 real(r_kind) w43b(12)
7824 real(r_kind) w87a(21)
7825 real(r_kind) w87b(23)
7848 data x1(1),x1(2),x1(3),x1(4),x1(5)/ &
7849 9.739065285171717d-01, 8.650633666889845d-01, &
7850 6.794095682990244d-01, 4.333953941292472d-01, &
7851 1.488743389816312d-01/
7852 data x2(1),x2(2),x2(3),x2(4),x2(5)/ &
7853 9.956571630258081d-01, 9.301574913557082d-01, &
7854 7.808177265864169d-01, 5.627571346686047d-01, &
7855 2.943928627014602d-01/
7856 data x3(1),x3(2),x3(3),x3(4),x3(5),x3(6),x3(7),x3(8),x3(9),x3(10), &
7858 9.993333609019321d-01, 9.874334029080889d-01, &
7859 9.548079348142663d-01, 9.001486957483283d-01, &
7860 8.251983149831142d-01, 7.321483889893050d-01, &
7861 6.228479705377252d-01, 4.994795740710565d-01, &
7862 3.649016613465808d-01, 2.222549197766013d-01, &
7863 7.465061746138332d-02/
7864 data x4(1),x4(2),x4(3),x4(4),x4(5),x4(6),x4(7),x4(8),x4(9),x4(10), &
7865 x4(11),x4(12),x4(13),x4(14),x4(15),x4(16),x4(17),x4(18),x4(19), &
7866 x4(20),x4(21),x4(22)/ 9.999029772627292d-01, &
7867 9.979898959866787d-01, 9.921754978606872d-01, &
7868 9.813581635727128d-01, 9.650576238583846d-01, &
7869 9.431676131336706d-01, 9.158064146855072d-01, &
7870 8.832216577713165d-01, 8.457107484624157d-01, &
7871 8.035576580352310d-01, 7.570057306854956d-01, &
7872 7.062732097873218d-01, 6.515894665011779d-01, &
7873 5.932233740579611d-01, 5.314936059708319d-01, &
7874 4.667636230420228d-01, 3.994248478592188d-01, &
7875 3.298748771061883d-01, 2.585035592021616d-01, &
7876 1.856953965683467d-01, 1.118422131799075d-01, &
7877 3.735212339461987d-02/
7878 data w10(1),w10(2),w10(3),w10(4),w10(5)/ &
7879 6.667134430868814d-02, 1.494513491505806d-01, &
7880 2.190863625159820d-01, 2.692667193099964d-01, &
7881 2.955242247147529d-01/
7882 data w21a(1),w21a(2),w21a(3),w21a(4),w21a(5)/ &
7883 3.255816230796473d-02, 7.503967481091995d-02, &
7884 1.093871588022976d-01, 1.347092173114733d-01, &
7885 1.477391049013385d-01/
7886 data w21b(1),w21b(2),w21b(3),w21b(4),w21b(5),w21b(6)/ &
7887 1.169463886737187d-02, 5.475589657435200d-02, &
7888 9.312545458369761d-02, 1.234919762620659d-01, &
7889 1.427759385770601d-01, 1.494455540029169d-01/
7890 data w43a(1),w43a(2),w43a(3),w43a(4),w43a(5),w43a(6),w43a(7), &
7891 w43a(8),w43a(9),w43a(10)/ 1.629673428966656d-02, &
7892 3.752287612086950d-02, 5.469490205825544d-02, &
7893 6.735541460947809d-02, 7.387019963239395d-02, &
7894 5.768556059769796d-03, 2.737189059324884d-02, &
7895 4.656082691042883d-02, 6.174499520144256d-02, &
7896 7.138726726869340d-02/
7897 data w43b(1),w43b(2),w43b(3),w43b(4),w43b(5),w43b(6),w43b(7), &
7898 w43b(8),w43b(9),w43b(10),w43b(11),w43b(12)/ &
7899 1.844477640212414d-03, 1.079868958589165d-02, &
7900 2.189536386779543d-02, 3.259746397534569d-02, &
7901 4.216313793519181d-02, 5.074193960018458d-02, &
7902 5.837939554261925d-02, 6.474640495144589d-02, &
7903 6.956619791235648d-02, 7.282444147183321d-02, &
7904 7.450775101417512d-02, 7.472214751740301d-02/
7905 data w87a(1),w87a(2),w87a(3),w87a(4),w87a(5),w87a(6),w87a(7), &
7906 w87a(8),w87a(9),w87a(10),w87a(11),w87a(12),w87a(13),w87a(14), &
7907 w87a(15),w87a(16),w87a(17),w87a(18),w87a(19),w87a(20),w87a(21)/ &
7908 8.148377384149173d-03, 1.876143820156282d-02, &
7909 2.734745105005229d-02, 3.367770731163793d-02, &
7910 3.693509982042791d-02, 2.884872430211531d-03, &
7911 1.368594602271270d-02, 2.328041350288831d-02, &
7912 3.087249761171336d-02, 3.569363363941877d-02, &
7913 9.152833452022414d-04, 5.399280219300471d-03, &
7914 1.094767960111893d-02, 1.629873169678734d-02, &
7915 2.108156888920384d-02, 2.537096976925383d-02, &
7916 2.918969775647575d-02, 3.237320246720279d-02, &
7917 3.478309895036514d-02, 3.641222073135179d-02, &
7918 3.725387550304771d-02/
7919 data w87b(1),w87b(2),w87b(3),w87b(4),w87b(5),w87b(6),w87b(7), &
7920 w87b(8),w87b(9),w87b(10),w87b(11),w87b(12),w87b(13),w87b(14), &
7921 w87b(15),w87b(16),w87b(17),w87b(18),w87b(19),w87b(20),w87b(21), &
7922 w87b(22),w87b(23)/ 2.741455637620724d-04, &
7923 1.807124155057943d-03, 4.096869282759165d-03, &
7924 6.758290051847379d-03, 9.549957672201647d-03, &
7925 1.232944765224485d-02, 1.501044734638895d-02, &
7926 1.754896798624319d-02, 1.993803778644089d-02, &
7927 2.219493596101229d-02, 2.433914712600081d-02, &
7928 2.637450541483921d-02, 2.828691078877120d-02, &
7929 3.005258112809270d-02, 3.164675137143993d-02, &
7930 3.305041341997850d-02, 3.425509970422606d-02, &
7931 3.526241266015668d-02, 3.607698962288870d-02, &
7932 3.669860449845609d-02, 3.712054926983258d-02, &
7933 3.733422875193504d-02, 3.736107376267902d-02/
7941 if ( epsabs < 0.0d+00 .and. epsrel < 0.0d+00 )
then
7946 hlgth = 5.0d-01*(b-a)
7948 centr = 5.0d-01*(b+a)
7960 res21 = w21b(6) * fcentr
7961 resabs = w21b(6) * abs(fcentr)
7965 fval1 = f(centr+absc)
7966 fval2 = f(centr-absc)
7968 res10 = res10+w10(k)*fval
7969 res21 = res21+w21a(k)*fval
7970 resabs = resabs+w21a(k)*(abs(fval1)+abs(fval2))
7981 fval1 = f(centr+absc)
7982 fval2 = f(centr-absc)
7983 fval = fval1 + fval2
7984 res21 = res21 + w21b(k) * fval
7985 resabs = resabs + w21b(k) * (abs(fval1)+abs(fval2))
7993 result = res21*hlgth
7994 resabs = resabs*dhlgth
7995 reskh = 5.0d-01*res21
7996 resasc = w21b(6)*abs(fcentr-reskh)
7999 resasc = resasc+w21a(k)*(abs(fv1(k)-reskh)+abs(fv2(k)-reskh)) &
8000 +w21b(k)*(abs(fv3(k)-reskh)+abs(fv4(k)-reskh))
8003 abserr = abs((res21-res10)*hlgth)
8004 resasc = resasc*dhlgth
8008 else if ( l == 2 )
then
8010 res43 = w43b(12)*fcentr
8014 res43 = res43+savfun(k) * w43a(k)
8020 fval = f(absc+centr)+f(centr-absc)
8021 res43 = res43+fval*w43b(k)
8027 result = res43 * hlgth
8028 abserr = abs((res43-res21)*hlgth)
8032 else if ( l == 3 )
then
8034 res87 = w87b(23) * fcentr
8038 res87 = res87 + savfun(k) * w87a(k)
8042 absc = hlgth * x4(k)
8043 res87 = res87+w87b(k)*(f(absc+centr)+f(centr-absc))
8046 result = res87 * hlgth
8047 abserr = abs( ( res87-res43) * hlgth )
8051 if ( resasc /= 0.0d+00.and.abserr /= 0.0d+00 )
then
8052 abserr = resasc * min( 1.0d+00,(2.0d+02*abserr/resasc)**1.5d+00)
8055 if ( resabs > tiny( resabs ) / ( 5.0d+01 * epsilon( resabs ) ) )
then
8056 abserr = max(( epsilon( resabs ) *5.0d+01) * resabs, abserr )
8059 if ( abserr <= max( epsabs, epsrel*abs(result)))
then
8063 if ( ier == 0 )
then
8071 subroutine qsort ( limit, last, maxerr, ermax, elist, iord, nrmax )
8121 real(r_kind) elist(last)
8139 if ( last <= 2 )
then
8150 errmax = elist(maxerr)
8154 isucc = iord(nrmax-1)
8156 if ( errmax <= elist(isucc) )
then
8171 if ( last > (limit/2+2) )
then
8172 jupbn = limit+3-last
8175 errmin = elist(last)
8185 if ( errmax >= elist(isucc) )
go to 60
8202 if ( errmin < elist(isucc) )
go to 80
8218 maxerr = iord(nrmax)
8219 ermax = elist(maxerr)
8295 qwgtc = 1.0d+00 / ( x - c )
8299 real(r_kind) function qwgto ( x, omega, integr )
8335 if ( integr == 1 )
then
8336 qwgto = cos( omega * x )
8337 else if ( integr == 2 )
then
8338 qwgto = sin( omega * x )
8343 real(r_kind) function qwgts ( x, a, b, alfa, beta, integr )
8381 if ( integr == 1 )
then
8382 qwgts = ( x - a )**alfa * ( b - x )**beta
8383 else if ( integr == 2 )
then
8384 qwgts = ( x - a )**alfa * ( b - x )**beta * log( x - a )
8385 else if ( integr == 3 )
then
8386 qwgts = ( x - a )**alfa * ( b - x )**beta * log( b - x )
8387 else if ( integr == 4 )
then
8388 qwgts = ( x - a )**alfa * ( b - x )**beta * log( x - a ) * log( b - x )