1 subroutine qelg(n,epstab,result,abserr,res3la,nres)
51 real abserr,delta1,delta2,delta3,r1mach,
52 * epmach,epsinf,epstab,
error,err1,err2,err3,e0,e1,e1abs,e2,e3,
53 * oflow,res,result,res3la,ss,tol1,tol2,tol3
54 integer i,ib,ib2,ie,indx,k1,k2,k3,limexp,n,newelm,nres,num
89 epstab(n+2) = epstab(n)
104 tol2 = amax1(
abs(e2),e1abs)*epmach
107 tol3 = amax1(e1abs,
abs(e0))*epmach
108 if(err2.gt.tol2.or.err3.gt.tol3) go to 10
123 tol1 = amax1(e1abs,
abs(e3))*epmach
128 if(err1.le.tol1.or.err2.le.tol2.or.err3.le.tol3) go to 20
129 ss = 0.1e+01/delta1+0.1e+01/delta2-0.1e+01/delta3
136 if(epsinf.gt.0.1e-03) go to 30
144 30 res = e1+0.1e+01/ss
148 if(
error.gt.abserr) go to 40
155 50
if(n.eq.limexp) n = 2*(limexp/2)-1
157 if((num/2)*2.eq.num) ib = 2
161 epstab(ib) = epstab(ib2)
164 if(num.eq.n) go to 80
167 epstab(i)= epstab(indx)
170 80
if(nres.ge.4) go to 90
171 res3la(nres) = result
177 90 abserr =
abs(result-res3la(3))+
abs(result-res3la(2))
178 * +
abs(result-res3la(1))
179 res3la(1) = res3la(2)
180 res3la(2) = res3la(3)
182 100 abserr = amax1(abserr,0.5e+01*epmach*
abs(result))
std::string dimension(void) const
void error(const char *fmt,...)
subroutine qelg(n, epstab, result, abserr, res3la, nres)