1 SUBROUTINE dqk21(F,A,B,RESULT,ABSERR,RESABS,RESASC,IERR)
52 DOUBLE PRECISION A,ABSC,ABSERR,B,CENTR,DABS,DHLGTH,DMAX1,DMIN1,
53 * D1MACH,EPMACH,FC,FSUM,FVAL1,FVAL2,FV1,FV2,HLGTH,RESABS,RESASC,
54 * RESG,RESK,RESKH,RESULT,UFLOW,WG,WGK,XGK
58 dimension fv1(10),fv2(10),wg(5),wgk(11),xgk(11)
79 DATA wg( 1) / 0.0666713443 0868813759 3568809893 332 d0 /
80 DATA wg( 2) / 0.1494513491 5058059314 5776339657 697 d0 /
81 DATA wg( 3) / 0.2190863625 1598204399 5534934228 163 d0 /
82 DATA wg( 4) / 0.2692667193 0999635509 1226921569 469 d0 /
83 DATA wg( 5) / 0.2955242247 1475287017 3892994651 338 d0 /
85 DATA xgk( 1) / 0.9956571630 2580808073 5527280689 003 d0 /
86 DATA xgk( 2) / 0.9739065285 1717172007 7964012084 452 d0 /
87 DATA xgk( 3) / 0.9301574913 5570822600 1207180059 508 d0 /
88 DATA xgk( 4) / 0.8650633666 8898451073 2096688423 493 d0 /
89 DATA xgk( 5) / 0.7808177265 8641689706 3717578345 042 d0 /
90 DATA xgk( 6) / 0.6794095682 9902440623 4327365114 874 d0 /
91 DATA xgk( 7) / 0.5627571346 6860468333 9000099272 694 d0 /
92 DATA xgk( 8) / 0.4333953941 2924719079 9265943165 784 d0 /
93 DATA xgk( 9) / 0.2943928627 0146019813 1126603103 866 d0 /
94 DATA xgk( 10) / 0.1488743389 8163121088 4826001129 720 d0 /
95 DATA xgk( 11) / 0.0000000000 0000000000 0000000000 000 d0 /
97 DATA wgk( 1) / 0.0116946388 6737187427 8064396062 192 d0 /
98 DATA wgk( 2) / 0.0325581623 0796472747 8818972459 390 d0 /
99 DATA wgk( 3) / 0.0547558965 7435199603 1381300244 580 d0 /
100 DATA wgk( 4) / 0.0750396748 1091995276 7043140916 190 d0 /
101 DATA wgk( 5) / 0.0931254545 8369760553 5065465083 366 d0 /
102 DATA wgk( 6) / 0.1093871588 0229764189 9210590325 805 d0 /
103 DATA wgk( 7) / 0.1234919762 6206585107 7958109831 074 d0 /
104 DATA wgk( 8) / 0.1347092173 1147332592 8054001771 707 d0 /
105 DATA wgk( 9) / 0.1427759385 7706008079 7094273138 717 d0 /
106 DATA wgk( 10) / 0.1477391049 0133849137 4841515972 068 d0 /
107 DATA wgk( 11) / 0.1494455540 0291690566 4936468389 821 d0 /
133 centr = 0.5d+00*(a+b)
134 hlgth = 0.5d+00*(b-a)
142 CALL f(centr,ierr,fc)
143 IF (ierr .LT. 0)
RETURN
148 absc = hlgth*xgk(jtw)
149 CALL f(centr-absc,ierr,fval1)
150 IF (ierr .LT. 0)
RETURN
151 CALL f(centr+absc,ierr,fval2)
152 IF (ierr .LT. 0)
RETURN
156 resg = resg+wg(j)*fsum
157 resk = resk+wgk(jtw)*fsum
158 resabs = resabs+wgk(jtw)*(dabs(fval1)+dabs(fval2))
162 absc = hlgth*xgk(jtwm1)
163 CALL f(centr-absc,ierr,fval1)
164 IF (ierr .LT. 0)
RETURN
165 CALL f(centr+absc,ierr,fval2)
166 IF (ierr .LT. 0)
RETURN
170 resk = resk+wgk(jtwm1)*fsum
171 resabs = resabs+wgk(jtwm1)*(dabs(fval1)+dabs(fval2))
174 resasc = wgk(11)*dabs(fc-reskh)
176 resasc = resasc+wgk(j)*(dabs(fv1(j)-reskh)+dabs(fv2(j)-reskh))
179 resabs = resabs*dhlgth
180 resasc = resasc*dhlgth
181 abserr = dabs((resk-resg)*hlgth)
182 IF(resasc.NE.0.0d+00.AND.abserr.NE.0.0d+00)
183 * abserr = resasc*dmin1(0.1d+01,(0.2d+03*abserr/resasc)**1.5d+00)
184 IF(resabs.GT.uflow/(0.5d+02*epmach)) abserr = dmax1
185 * ((epmach*0.5d+02)*resabs,abserr)
subroutine dqk21(F, A, B, RESULT, ABSERR, RESABS, RESASC, IERR)