1 subroutine qk15i(f,boun,inf,a,b,result,abserr,resabs,resasc,ierr)
71 real a,absc,absc1,absc2,abserr,b,boun,centr,
72 * dinf,r1mach,epmach,fc,fsum,fval1,fval2,fvalt,fv1,
73 * fv2,hlgth,resabs,resasc,resg,resk,reskh,result,tabsc1,tabsc2,
78 dimension fv1(7),fv2(7),xgk(8),wgk(8),wg(8)
96 data xgk(1),xgk(2),xgk(3),xgk(4),xgk(5),xgk(6),xgk(7),
98 * 0.9914553711208126e+00, 0.9491079123427585e+00,
99 * 0.8648644233597691e+00, 0.7415311855993944e+00,
100 * 0.5860872354676911e+00, 0.4058451513773972e+00,
101 * 0.2077849550078985e+00, 0.0000000000000000e+00/
103 data wgk(1),wgk(2),wgk(3),wgk(4),wgk(5),wgk(6),wgk(7),
105 * 0.2293532201052922e-01, 0.6309209262997855e-01,
106 * 0.1047900103222502e+00, 0.1406532597155259e+00,
107 * 0.1690047266392679e+00, 0.1903505780647854e+00,
108 * 0.2044329400752989e+00, 0.2094821410847278e+00/
110 data wg(1),wg(2),wg(3),wg(4),wg(5),wg(6),wg(7),wg(8)/
111 * 0.0000000000000000e+00, 0.1294849661688697e+00,
112 * 0.0000000000000000e+00, 0.2797053914892767e+00,
113 * 0.0000000000000000e+00, 0.3818300505051189e+00,
114 * 0.0000000000000000e+00, 0.4179591836734694e+00/
141 centr = 0.5e+00*(a+b)
142 hlgth = 0.5e+00*(b-a)
143 tabsc1 = boun+dinf*(0.1e+01-centr)/centr
144 call f(tabsc1, ierr, fval1)
145 if (ierr.lt.0)
return
147 call f(-tabsc1, ierr, fval1)
148 if (ierr.lt.0)
return
149 fval1 = fval1 + fvalt
151 fc = (fval1/centr)/centr
163 tabsc1 = boun+dinf*(0.1e+01-absc1)/absc1
164 tabsc2 = boun+dinf*(0.1e+01-absc2)/absc2
165 call f(tabsc1, ierr, fval1)
166 if (ierr.lt.0)
return
167 call f(tabsc2, ierr, fval2)
168 if (ierr.lt.0)
return
170 call f(-tabsc1,ierr,fvalt)
171 if (ierr.lt.0)
return
172 fval1 = fval1 + fvalt
175 call f(-tabsc2,ierr,fvalt)
176 if (ierr.lt.0)
return
177 fval2 = fval2 + fvalt
179 fval1 = (fval1/absc1)/absc1
180 fval2 = (fval2/absc2)/absc2
184 resg = resg+wg(j)*fsum
185 resk = resk+wgk(j)*fsum
186 resabs = resabs+wgk(j)*(
abs(fval1)+
abs(fval2))
189 resasc = wgk(8)*
abs(fc-reskh)
191 resasc = resasc+wgk(j)*(
abs(fv1(j)-reskh)+
abs(fv2(j)-reskh))
194 resasc = resasc*hlgth
195 resabs = resabs*hlgth
196 abserr =
abs((resk-resg)*hlgth)
197 if(resasc.ne.0.0e+00.and.abserr.ne.0.e0) abserr = resasc*
198 * amin1(0.1e+01,(0.2e+03*abserr/resasc)**1.5e+00)
199 if(resabs.gt.uflow/(0.5e+02*epmach)) abserr = amax1
200 * ((epmach*0.5e+02)*resabs,abserr)
subroutine qk15i(f, boun, inf, a, b, result, abserr, resabs, resasc, ierr)