qagie.f 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469
  1. *DECK QAGIE
  2. SUBROUTINE QAGIE (F, BOUND, INF, EPSABS, EPSREL, LIMIT, RESULT,
  3. + ABSERR, NEVAL, IER, ALIST, BLIST, RLIST, ELIST, IORD, LAST)
  4. C***BEGIN PROLOGUE QAGIE
  5. C***PURPOSE The routine calculates an approximation result to a given
  6. C integral I = Integral of F over (BOUND,+INFINITY)
  7. C or I = Integral of F over (-INFINITY,BOUND)
  8. C or I = Integral of F over (-INFINITY,+INFINITY),
  9. C hopefully satisfying following claim for accuracy
  10. C ABS(I-RESULT).LE.MAX(EPSABS,EPSREL*ABS(I))
  11. C***LIBRARY SLATEC (QUADPACK)
  12. C***CATEGORY H2A3A1, H2A4A1
  13. C***TYPE SINGLE PRECISION (QAGIE-S, DQAGIE-D)
  14. C***KEYWORDS AUTOMATIC INTEGRATOR, EXTRAPOLATION, GENERAL-PURPOSE,
  15. C GLOBALLY ADAPTIVE, INFINITE INTERVALS, QUADPACK,
  16. C QUADRATURE, TRANSFORMATION
  17. C***AUTHOR Piessens, Robert
  18. C Applied Mathematics and Programming Division
  19. C K. U. Leuven
  20. C de Doncker, Elise
  21. C Applied Mathematics and Programming Division
  22. C K. U. Leuven
  23. C***DESCRIPTION
  24. C
  25. C Integration over infinite intervals
  26. C Standard fortran subroutine
  27. C
  28. C F - Real
  29. C Function subprogram defining the integrand
  30. C function F(X). The actual name for F needs to be
  31. C declared E X T E R N A L in the driver program.
  32. C
  33. C BOUND - Real
  34. C Finite bound of integration range
  35. C (has no meaning if interval is doubly-infinite)
  36. C
  37. C INF - Real
  38. C Indicating the kind of integration range involved
  39. C INF = 1 corresponds to (BOUND,+INFINITY),
  40. C INF = -1 to (-INFINITY,BOUND),
  41. C INF = 2 to (-INFINITY,+INFINITY).
  42. C
  43. C EPSABS - Real
  44. C Absolute accuracy requested
  45. C EPSREL - Real
  46. C Relative accuracy requested
  47. C If EPSABS.LE.0
  48. C and EPSREL.LT.MAX(50*REL.MACH.ACC.,0.5D-28),
  49. C the routine will end with IER = 6.
  50. C
  51. C LIMIT - Integer
  52. C Gives an upper bound on the number of subintervals
  53. C in the partition of (A,B), LIMIT.GE.1
  54. C
  55. C ON RETURN
  56. C RESULT - Real
  57. C Approximation to the integral
  58. C
  59. C ABSERR - Real
  60. C Estimate of the modulus of the absolute error,
  61. C which should equal or exceed ABS(I-RESULT)
  62. C
  63. C NEVAL - Integer
  64. C Number of integrand evaluations
  65. C
  66. C IER - Integer
  67. C IER = 0 Normal and reliable termination of the
  68. C routine. It is assumed that the requested
  69. C accuracy has been achieved.
  70. C - IER.GT.0 Abnormal termination of the routine. The
  71. C estimates for result and error are less
  72. C reliable. It is assumed that the requested
  73. C accuracy has not been achieved.
  74. C ERROR MESSAGES
  75. C IER = 1 Maximum number of subdivisions allowed
  76. C has been achieved. One can allow more
  77. C subdivisions by increasing the value of
  78. C LIMIT (and taking the according dimension
  79. C adjustments into account). However, if
  80. C this yields no improvement it is advised
  81. C to analyze the integrand in order to
  82. C determine the integration difficulties.
  83. C If the position of a local difficulty can
  84. C be determined (e.g. SINGULARITY,
  85. C DISCONTINUITY within the interval) one
  86. C will probably gain from splitting up the
  87. C interval at this point and calling the
  88. C integrator on the subranges. If possible,
  89. C an appropriate special-purpose integrator
  90. C should be used, which is designed for
  91. C handling the type of difficulty involved.
  92. C = 2 The occurrence of roundoff error is
  93. C detected, which prevents the requested
  94. C tolerance from being achieved.
  95. C The error may be under-estimated.
  96. C = 3 Extremely bad integrand behaviour occurs
  97. C at some points of the integration
  98. C interval.
  99. C = 4 The algorithm does not converge.
  100. C Roundoff error is detected in the
  101. C extrapolation table.
  102. C It is assumed that the requested tolerance
  103. C cannot be achieved, and that the returned
  104. C result is the best which can be obtained.
  105. C = 5 The integral is probably divergent, or
  106. C slowly convergent. It must be noted that
  107. C divergence can occur with any other value
  108. C of IER.
  109. C = 6 The input is invalid, because
  110. C (EPSABS.LE.0 and
  111. C EPSREL.LT.MAX(50*REL.MACH.ACC.,0.5D-28),
  112. C RESULT, ABSERR, NEVAL, LAST, RLIST(1),
  113. C ELIST(1) and IORD(1) are set to zero.
  114. C ALIST(1) and BLIST(1) are set to 0
  115. C and 1 respectively.
  116. C
  117. C ALIST - Real
  118. C Vector of dimension at least LIMIT, the first
  119. C LAST elements of which are the left
  120. C end points of the subintervals in the partition
  121. C of the transformed integration range (0,1).
  122. C
  123. C BLIST - Real
  124. C Vector of dimension at least LIMIT, the first
  125. C LAST elements of which are the right
  126. C end points of the subintervals in the partition
  127. C of the transformed integration range (0,1).
  128. C
  129. C RLIST - Real
  130. C Vector of dimension at least LIMIT, the first
  131. C LAST elements of which are the integral
  132. C approximations on the subintervals
  133. C
  134. C ELIST - Real
  135. C Vector of dimension at least LIMIT, the first
  136. C LAST elements of which are the moduli of the
  137. C absolute error estimates on the subintervals
  138. C
  139. C IORD - Integer
  140. C Vector of dimension LIMIT, the first K
  141. C elements of which are pointers to the
  142. C error estimates over the subintervals,
  143. C such that ELIST(IORD(1)), ..., ELIST(IORD(K))
  144. C form a decreasing sequence, with K = LAST
  145. C If LAST.LE.(LIMIT/2+2), and K = LIMIT+1-LAST
  146. C otherwise
  147. C
  148. C LAST - Integer
  149. C Number of subintervals actually produced
  150. C in the subdivision process
  151. C
  152. C***REFERENCES (NONE)
  153. C***ROUTINES CALLED QELG, QK15I, QPSRT, R1MACH
  154. C***REVISION HISTORY (YYMMDD)
  155. C 800101 DATE WRITTEN
  156. C 890531 Changed all specific intrinsics to generic. (WRB)
  157. C 890831 Modified array declarations. (WRB)
  158. C 890831 REVISION DATE from Version 3.2
  159. C 891214 Prologue converted to Version 4.0 format. (BAB)
  160. C***END PROLOGUE QAGIE
  161. C
  162. REAL ABSEPS,ABSERR,ALIST,AREA,AREA1,AREA12,AREA2,A1,
  163. 1 A2,BLIST,BOUN,BOUND,B1,B2,CORREC,DEFABS,DEFAB1,DEFAB2,
  164. 2 DRES,R1MACH,ELIST,EPMACH,EPSABS,EPSREL,ERLARG,ERLAST,
  165. 3 ERRBND,ERRMAX,ERROR1,ERROR2,ERRO12,ERRSUM,ERTEST,F,OFLOW,RESABS,
  166. 4 RESEPS,RESULT,RES3LA,RLIST,RLIST2,SMALL,UFLOW
  167. INTEGER ID,IER,IERRO,INF,IORD,IROFF1,IROFF2,IROFF3,JUPBND,K,KSGN,
  168. 1 KTMIN,LAST,LIMIT,MAXERR,NEVAL,NRES,NRMAX,NUMRL2
  169. LOGICAL EXTRAP,NOEXT
  170. C
  171. DIMENSION ALIST(*),BLIST(*),ELIST(*),IORD(*),
  172. 1 RES3LA(3),RLIST(*),RLIST2(52)
  173. C
  174. EXTERNAL F
  175. C
  176. C THE DIMENSION OF RLIST2 IS DETERMINED BY THE VALUE OF
  177. C LIMEXP IN SUBROUTINE QELG.
  178. C
  179. C
  180. C LIST OF MAJOR VARIABLES
  181. C -----------------------
  182. C
  183. C ALIST - LIST OF LEFT END POINTS OF ALL SUBINTERVALS
  184. C CONSIDERED UP TO NOW
  185. C BLIST - LIST OF RIGHT END POINTS OF ALL SUBINTERVALS
  186. C CONSIDERED UP TO NOW
  187. C RLIST(I) - APPROXIMATION TO THE INTEGRAL OVER
  188. C (ALIST(I),BLIST(I))
  189. C RLIST2 - ARRAY OF DIMENSION AT LEAST (LIMEXP+2),
  190. C CONTAINING THE PART OF THE EPSILON TABLE
  191. C WHICH IS STILL NEEDED FOR FURTHER COMPUTATIONS
  192. C ELIST(I) - ERROR ESTIMATE APPLYING TO RLIST(I)
  193. C MAXERR - POINTER TO THE INTERVAL WITH LARGEST ERROR
  194. C ESTIMATE
  195. C ERRMAX - ELIST(MAXERR)
  196. C ERLAST - ERROR ON THE INTERVAL CURRENTLY SUBDIVIDED
  197. C (BEFORE THAT SUBDIVISION HAS TAKEN PLACE)
  198. C AREA - SUM OF THE INTEGRALS OVER THE SUBINTERVALS
  199. C ERRSUM - SUM OF THE ERRORS OVER THE SUBINTERVALS
  200. C ERRBND - REQUESTED ACCURACY MAX(EPSABS,EPSREL*
  201. C ABS(RESULT))
  202. C *****1 - VARIABLE FOR THE LEFT SUBINTERVAL
  203. C *****2 - VARIABLE FOR THE RIGHT SUBINTERVAL
  204. C LAST - INDEX FOR SUBDIVISION
  205. C NRES - NUMBER OF CALLS TO THE EXTRAPOLATION ROUTINE
  206. C NUMRL2 - NUMBER OF ELEMENTS CURRENTLY IN RLIST2. IF AN
  207. C APPROPRIATE APPROXIMATION TO THE COMPOUNDED
  208. C INTEGRAL HAS BEEN OBTAINED, IT IS PUT IN
  209. C RLIST2(NUMRL2) AFTER NUMRL2 HAS BEEN INCREASED
  210. C BY ONE.
  211. C SMALL - LENGTH OF THE SMALLEST INTERVAL CONSIDERED UP
  212. C TO NOW, MULTIPLIED BY 1.5
  213. C ERLARG - SUM OF THE ERRORS OVER THE INTERVALS LARGER
  214. C THAN THE SMALLEST INTERVAL CONSIDERED UP TO NOW
  215. C EXTRAP - LOGICAL VARIABLE DENOTING THAT THE ROUTINE
  216. C IS ATTEMPTING TO PERFORM EXTRAPOLATION. I.E.
  217. C BEFORE SUBDIVIDING THE SMALLEST INTERVAL WE
  218. C TRY TO DECREASE THE VALUE OF ERLARG.
  219. C NOEXT - LOGICAL VARIABLE DENOTING THAT EXTRAPOLATION
  220. C IS NO LONGER ALLOWED (TRUE-VALUE)
  221. C
  222. C MACHINE DEPENDENT CONSTANTS
  223. C ---------------------------
  224. C
  225. C EPMACH IS THE LARGEST RELATIVE SPACING.
  226. C UFLOW IS THE SMALLEST POSITIVE MAGNITUDE.
  227. C OFLOW IS THE LARGEST POSITIVE MAGNITUDE.
  228. C
  229. C***FIRST EXECUTABLE STATEMENT QAGIE
  230. EPMACH = R1MACH(4)
  231. C
  232. C TEST ON VALIDITY OF PARAMETERS
  233. C -----------------------------
  234. C
  235. IER = 0
  236. NEVAL = 0
  237. LAST = 0
  238. RESULT = 0.0E+00
  239. ABSERR = 0.0E+00
  240. ALIST(1) = 0.0E+00
  241. BLIST(1) = 0.1E+01
  242. RLIST(1) = 0.0E+00
  243. ELIST(1) = 0.0E+00
  244. IORD(1) = 0
  245. IF(EPSABS.LE.0.0E+00.AND.EPSREL.LT.MAX(0.5E+02*EPMACH,0.5E-14))
  246. 1 IER = 6
  247. IF(IER.EQ.6) GO TO 999
  248. C
  249. C
  250. C FIRST APPROXIMATION TO THE INTEGRAL
  251. C -----------------------------------
  252. C
  253. C DETERMINE THE INTERVAL TO BE MAPPED ONTO (0,1).
  254. C IF INF = 2 THE INTEGRAL IS COMPUTED AS I = I1+I2, WHERE
  255. C I1 = INTEGRAL OF F OVER (-INFINITY,0),
  256. C I2 = INTEGRAL OF F OVER (0,+INFINITY).
  257. C
  258. BOUN = BOUND
  259. IF(INF.EQ.2) BOUN = 0.0E+00
  260. CALL QK15I(F,BOUN,INF,0.0E+00,0.1E+01,RESULT,ABSERR,
  261. 1 DEFABS,RESABS)
  262. C
  263. C TEST ON ACCURACY
  264. C
  265. LAST = 1
  266. RLIST(1) = RESULT
  267. ELIST(1) = ABSERR
  268. IORD(1) = 1
  269. DRES = ABS(RESULT)
  270. ERRBND = MAX(EPSABS,EPSREL*DRES)
  271. IF(ABSERR.LE.1.0E+02*EPMACH*DEFABS.AND.ABSERR.GT.
  272. 1 ERRBND) IER = 2
  273. IF(LIMIT.EQ.1) IER = 1
  274. IF(IER.NE.0.OR.(ABSERR.LE.ERRBND.AND.ABSERR.NE.RESABS).OR.
  275. 1 ABSERR.EQ.0.0E+00) GO TO 130
  276. C
  277. C INITIALIZATION
  278. C --------------
  279. C
  280. UFLOW = R1MACH(1)
  281. OFLOW = R1MACH(2)
  282. RLIST2(1) = RESULT
  283. ERRMAX = ABSERR
  284. MAXERR = 1
  285. AREA = RESULT
  286. ERRSUM = ABSERR
  287. ABSERR = OFLOW
  288. NRMAX = 1
  289. NRES = 0
  290. KTMIN = 0
  291. NUMRL2 = 2
  292. EXTRAP = .FALSE.
  293. NOEXT = .FALSE.
  294. IERRO = 0
  295. IROFF1 = 0
  296. IROFF2 = 0
  297. IROFF3 = 0
  298. KSGN = -1
  299. IF(DRES.GE.(0.1E+01-0.5E+02*EPMACH)*DEFABS) KSGN = 1
  300. C
  301. C MAIN DO-LOOP
  302. C ------------
  303. C
  304. DO 90 LAST = 2,LIMIT
  305. C
  306. C BISECT THE SUBINTERVAL WITH NRMAX-TH LARGEST
  307. C ERROR ESTIMATE.
  308. C
  309. A1 = ALIST(MAXERR)
  310. B1 = 0.5E+00*(ALIST(MAXERR)+BLIST(MAXERR))
  311. A2 = B1
  312. B2 = BLIST(MAXERR)
  313. ERLAST = ERRMAX
  314. CALL QK15I(F,BOUN,INF,A1,B1,AREA1,ERROR1,RESABS,DEFAB1)
  315. CALL QK15I(F,BOUN,INF,A2,B2,AREA2,ERROR2,RESABS,DEFAB2)
  316. C
  317. C IMPROVE PREVIOUS APPROXIMATIONS TO INTEGRAL
  318. C AND ERROR AND TEST FOR ACCURACY.
  319. C
  320. AREA12 = AREA1+AREA2
  321. ERRO12 = ERROR1+ERROR2
  322. ERRSUM = ERRSUM+ERRO12-ERRMAX
  323. AREA = AREA+AREA12-RLIST(MAXERR)
  324. IF(DEFAB1.EQ.ERROR1.OR.DEFAB2.EQ.ERROR2)GO TO 15
  325. IF(ABS(RLIST(MAXERR)-AREA12).GT.0.1E-04*ABS(AREA12)
  326. 1 .OR.ERRO12.LT.0.99E+00*ERRMAX) GO TO 10
  327. IF(EXTRAP) IROFF2 = IROFF2+1
  328. IF(.NOT.EXTRAP) IROFF1 = IROFF1+1
  329. 10 IF(LAST.GT.10.AND.ERRO12.GT.ERRMAX) IROFF3 = IROFF3+1
  330. 15 RLIST(MAXERR) = AREA1
  331. RLIST(LAST) = AREA2
  332. ERRBND = MAX(EPSABS,EPSREL*ABS(AREA))
  333. C
  334. C TEST FOR ROUNDOFF ERROR AND EVENTUALLY
  335. C SET ERROR FLAG.
  336. C
  337. IF(IROFF1+IROFF2.GE.10.OR.IROFF3.GE.20) IER = 2
  338. IF(IROFF2.GE.5) IERRO = 3
  339. C
  340. C SET ERROR FLAG IN THE CASE THAT THE NUMBER OF
  341. C SUBINTERVALS EQUALS LIMIT.
  342. C
  343. IF(LAST.EQ.LIMIT) IER = 1
  344. C
  345. C SET ERROR FLAG IN THE CASE OF BAD INTEGRAND BEHAVIOUR
  346. C AT SOME POINTS OF THE INTEGRATION RANGE.
  347. C
  348. IF(MAX(ABS(A1),ABS(B2)).LE.(0.1E+01+0.1E+03*EPMACH)*
  349. 1 (ABS(A2)+0.1E+04*UFLOW)) IER = 4
  350. C
  351. C APPEND THE NEWLY-CREATED INTERVALS TO THE LIST.
  352. C
  353. IF(ERROR2.GT.ERROR1) GO TO 20
  354. ALIST(LAST) = A2
  355. BLIST(MAXERR) = B1
  356. BLIST(LAST) = B2
  357. ELIST(MAXERR) = ERROR1
  358. ELIST(LAST) = ERROR2
  359. GO TO 30
  360. 20 ALIST(MAXERR) = A2
  361. ALIST(LAST) = A1
  362. BLIST(LAST) = B1
  363. RLIST(MAXERR) = AREA2
  364. RLIST(LAST) = AREA1
  365. ELIST(MAXERR) = ERROR2
  366. ELIST(LAST) = ERROR1
  367. C
  368. C CALL SUBROUTINE QPSRT TO MAINTAIN THE DESCENDING ORDERING
  369. C IN THE LIST OF ERROR ESTIMATES AND SELECT THE
  370. C SUBINTERVAL WITH NRMAX-TH LARGEST ERROR ESTIMATE (TO BE
  371. C BISECTED NEXT).
  372. C
  373. 30 CALL QPSRT(LIMIT,LAST,MAXERR,ERRMAX,ELIST,IORD,NRMAX)
  374. IF(ERRSUM.LE.ERRBND) GO TO 115
  375. IF(IER.NE.0) GO TO 100
  376. IF(LAST.EQ.2) GO TO 80
  377. IF(NOEXT) GO TO 90
  378. ERLARG = ERLARG-ERLAST
  379. IF(ABS(B1-A1).GT.SMALL) ERLARG = ERLARG+ERRO12
  380. IF(EXTRAP) GO TO 40
  381. C
  382. C TEST WHETHER THE INTERVAL TO BE BISECTED NEXT IS THE
  383. C SMALLEST INTERVAL.
  384. C
  385. IF(ABS(BLIST(MAXERR)-ALIST(MAXERR)).GT.SMALL) GO TO 90
  386. EXTRAP = .TRUE.
  387. NRMAX = 2
  388. 40 IF(IERRO.EQ.3.OR.ERLARG.LE.ERTEST) GO TO 60
  389. C
  390. C THE SMALLEST INTERVAL HAS THE LARGEST ERROR.
  391. C BEFORE BISECTING DECREASE THE SUM OF THE ERRORS
  392. C OVER THE LARGER INTERVALS (ERLARG) AND PERFORM
  393. C EXTRAPOLATION.
  394. C
  395. ID = NRMAX
  396. JUPBND = LAST
  397. IF(LAST.GT.(2+LIMIT/2)) JUPBND = LIMIT+3-LAST
  398. DO 50 K = ID,JUPBND
  399. MAXERR = IORD(NRMAX)
  400. ERRMAX = ELIST(MAXERR)
  401. IF(ABS(BLIST(MAXERR)-ALIST(MAXERR)).GT.SMALL) GO TO 90
  402. NRMAX = NRMAX+1
  403. 50 CONTINUE
  404. C
  405. C PERFORM EXTRAPOLATION.
  406. C
  407. 60 NUMRL2 = NUMRL2+1
  408. RLIST2(NUMRL2) = AREA
  409. CALL QELG(NUMRL2,RLIST2,RESEPS,ABSEPS,RES3LA,NRES)
  410. KTMIN = KTMIN+1
  411. IF(KTMIN.GT.5.AND.ABSERR.LT.0.1E-02*ERRSUM) IER = 5
  412. IF(ABSEPS.GE.ABSERR) GO TO 70
  413. KTMIN = 0
  414. ABSERR = ABSEPS
  415. RESULT = RESEPS
  416. CORREC = ERLARG
  417. ERTEST = MAX(EPSABS,EPSREL*ABS(RESEPS))
  418. IF(ABSERR.LE.ERTEST) GO TO 100
  419. C
  420. C PREPARE BISECTION OF THE SMALLEST INTERVAL.
  421. C
  422. 70 IF(NUMRL2.EQ.1) NOEXT = .TRUE.
  423. IF(IER.EQ.5) GO TO 100
  424. MAXERR = IORD(1)
  425. ERRMAX = ELIST(MAXERR)
  426. NRMAX = 1
  427. EXTRAP = .FALSE.
  428. SMALL = SMALL*0.5E+00
  429. ERLARG = ERRSUM
  430. GO TO 90
  431. 80 SMALL = 0.375E+00
  432. ERLARG = ERRSUM
  433. ERTEST = ERRBND
  434. RLIST2(2) = AREA
  435. 90 CONTINUE
  436. C
  437. C SET FINAL RESULT AND ERROR ESTIMATE.
  438. C ------------------------------------
  439. C
  440. 100 IF(ABSERR.EQ.OFLOW) GO TO 115
  441. IF((IER+IERRO).EQ.0) GO TO 110
  442. IF(IERRO.EQ.3) ABSERR = ABSERR+CORREC
  443. IF(IER.EQ.0) IER = 3
  444. IF(RESULT.NE.0.0E+00.AND.AREA.NE.0.0E+00)GO TO 105
  445. IF(ABSERR.GT.ERRSUM)GO TO 115
  446. IF(AREA.EQ.0.0E+00) GO TO 130
  447. GO TO 110
  448. 105 IF(ABSERR/ABS(RESULT).GT.ERRSUM/ABS(AREA))GO TO 115
  449. C
  450. C TEST ON DIVERGENCE
  451. C
  452. 110 IF(KSGN.EQ.(-1).AND.MAX(ABS(RESULT),ABS(AREA)).LE.
  453. 1 DEFABS*0.1E-01) GO TO 130
  454. IF (0.1E-01.GT.(RESULT/AREA).OR.(RESULT/AREA).GT.0.1E+03
  455. 1 .OR.ERRSUM.GT.ABS(AREA)) IER = 6
  456. GO TO 130
  457. C
  458. C COMPUTE GLOBAL INTEGRAL SUM.
  459. C
  460. 115 RESULT = 0.0E+00
  461. DO 120 K = 1,LAST
  462. RESULT = RESULT+RLIST(K)
  463. 120 CONTINUE
  464. ABSERR = ERRSUM
  465. 130 NEVAL = 30*LAST-15
  466. IF(INF.EQ.2) NEVAL = 2*NEVAL
  467. IF(IER.GT.2) IER=IER-1
  468. 999 RETURN
  469. END