1
;;; Compiled by f2cl version 2.0 beta 2002-05-06
1
;;; Compiled by f2cl version 2.0 beta Date: 2006/01/31 15:11:05
2
;;; Using Lisp CMU Common Lisp Snapshot 2006-01 (19C)
3
4
;;; Options: ((:prune-labels nil) (:auto-save t) (:relaxed-array-decls t)
4
;;; (:coerce-assigns :as-needed) (:array-type ':simple-array)
5
;;; (:coerce-assigns :as-needed) (:array-type ':array)
5
6
;;; (:array-slicing t) (:declare-common nil)
6
7
;;; (:float-format double-float))
12
13
(f a b epsabs epsrel key limit result abserr neval ier alist blist rlist
14
15
(declare (type (array f2cl-lib:integer4 (*)) iord)
15
(type (array double-float (*)) elist rlist blist alist)
16
(type f2cl-lib:integer4 last$ ier neval limit key)
17
(type double-float abserr result epsrel epsabs b a))
18
(prog ((iroff1 0) (iroff2 0) (k 0) (keyf 0) (maxerr 0) (nrmax 0) (area 0.0)
19
(area1 0.0) (area12 0.0) (area2 0.0) (a1 0.0) (a2 0.0) (b1 0.0)
20
(b2 0.0) (defabs 0.0) (defab1 0.0) (defab2 0.0) (epmach 0.0)
21
(errbnd 0.0) (errmax 0.0) (error1 0.0) (error2 0.0) (erro12 0.0)
22
(errsum 0.0) (resabs 0.0) (uflow 0.0) (abs$ 0.0f0))
23
(declare (type single-float abs$)
24
(type double-float uflow resabs errsum erro12 error2 error1 errmax errbnd
25
epmach defab2 defab1 defabs b2 b1 a2 a1 area2 area12 area1 area)
26
(type f2cl-lib:integer4 nrmax maxerr keyf k iroff2 iroff1))
27
(setf epmach (f2cl-lib:d1mach 4))
28
(setf uflow (f2cl-lib:d1mach 1))
34
(f2cl-lib:fset (f2cl-lib:fref alist (1) ((1 *))) a)
35
(f2cl-lib:fset (f2cl-lib:fref blist (1) ((1 *))) b)
36
(f2cl-lib:fset (f2cl-lib:fref rlist (1) ((1 *))) 0.0)
37
(f2cl-lib:fset (f2cl-lib:fref elist (1) ((1 *))) 0.0)
38
(f2cl-lib:fset (f2cl-lib:fref iord (1) ((1 *))) 0)
39
(if (and (<= epsabs 0.0) (< epsrel (max (* 50.0 epmach) 5.0e-29)))
41
(if (= ier 6) (go label999))
43
(if (<= key 0) (setf keyf 1))
44
(if (>= key 7) (setf keyf 6))
48
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
49
(dqk15 f a b result abserr defabs resabs)
50
(declare (ignore var-0 var-1 var-2))
57
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
58
(dqk21 f a b result abserr defabs resabs)
59
(declare (ignore var-0 var-1 var-2))
66
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
67
(dqk31 f a b result abserr defabs resabs)
68
(declare (ignore var-0 var-1 var-2))
75
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
76
(dqk41 f a b result abserr defabs resabs)
77
(declare (ignore var-0 var-1 var-2))
84
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
85
(dqk51 f a b result abserr defabs resabs)
86
(declare (ignore var-0 var-1 var-2))
93
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
94
(dqk61 f a b result abserr defabs resabs)
95
(declare (ignore var-0 var-1 var-2))
101
(f2cl-lib:fset (f2cl-lib:fref rlist (1) ((1 *))) result)
102
(f2cl-lib:fset (f2cl-lib:fref elist (1) ((1 *))) abserr)
103
(f2cl-lib:fset (f2cl-lib:fref iord (1) ((1 *))) 1)
104
(setf errbnd (max epsabs (* epsrel (abs result))))
105
(if (and (<= abserr (* 50.0 epmach defabs)) (> abserr errbnd))
107
(if (= limit 1) (setf ier 1))
109
(or (/= ier 0) (and (<= abserr errbnd) (/= abserr resabs)) (= abserr 0.0))
118
(f2cl-lib:fdo (last$ 2 (f2cl-lib:int-add last$ 1))
119
((> last$ limit) nil)
121
(setf a1 (f2cl-lib:fref alist (maxerr) ((1 *))))
124
(+ (f2cl-lib:fref alist (maxerr) ((1 *)))
125
(f2cl-lib:fref blist (maxerr) ((1 *))))))
127
(setf b2 (f2cl-lib:fref blist (maxerr) ((1 *))))
130
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
131
(dqk15 f a1 b1 area1 error1 resabs defab1)
132
(declare (ignore var-0 var-1 var-2))
136
(setf defab1 var-6)))
139
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
140
(dqk21 f a1 b1 area1 error1 resabs defab1)
141
(declare (ignore var-0 var-1 var-2))
145
(setf defab1 var-6)))
148
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
149
(dqk31 f a1 b1 area1 error1 resabs defab1)
150
(declare (ignore var-0 var-1 var-2))
154
(setf defab1 var-6)))
157
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
158
(dqk41 f a1 b1 area1 error1 resabs defab1)
159
(declare (ignore var-0 var-1 var-2))
163
(setf defab1 var-6)))
166
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
167
(dqk51 f a1 b1 area1 error1 resabs defab1)
168
(declare (ignore var-0 var-1 var-2))
172
(setf defab1 var-6)))
175
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
176
(dqk61 f a1 b1 area1 error1 resabs defab1)
177
(declare (ignore var-0 var-1 var-2))
181
(setf defab1 var-6)))
184
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
185
(dqk15 f a2 b2 area2 error2 resabs defab2)
186
(declare (ignore var-0 var-1 var-2))
190
(setf defab2 var-6)))
193
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
194
(dqk21 f a2 b2 area2 error2 resabs defab2)
195
(declare (ignore var-0 var-1 var-2))
199
(setf defab2 var-6)))
202
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
203
(dqk31 f a2 b2 area2 error2 resabs defab2)
204
(declare (ignore var-0 var-1 var-2))
208
(setf defab2 var-6)))
211
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
212
(dqk41 f a2 b2 area2 error2 resabs defab2)
213
(declare (ignore var-0 var-1 var-2))
217
(setf defab2 var-6)))
220
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
221
(dqk51 f a2 b2 area2 error2 resabs defab2)
222
(declare (ignore var-0 var-1 var-2))
226
(setf defab2 var-6)))
229
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
230
(dqk61 f a2 b2 area2 error2 resabs defab2)
231
(declare (ignore var-0 var-1 var-2))
235
(setf defab2 var-6)))
236
(setf neval (f2cl-lib:int-add neval 1))
237
(setf area12 (+ area1 area2))
238
(setf erro12 (+ error1 error2))
239
(setf errsum (- (+ errsum erro12) errmax))
240
(setf area (- (+ area area12) (f2cl-lib:fref rlist (maxerr) ((1 *)))))
241
(if (or (= defab1 error1) (= defab2 error2)) (go label5))
244
(<= (abs (- (f2cl-lib:fref rlist (maxerr) ((1 *))) area12))
245
(* 1.0e-5 (abs area12)))
246
(>= erro12 (* 0.99 errmax)))
247
(setf iroff1 (f2cl-lib:int-add iroff1 1)))
248
(if (and (> last$ 10) (> erro12 errmax))
249
(setf iroff2 (f2cl-lib:int-add iroff2 1)))
251
(f2cl-lib:fset (f2cl-lib:fref rlist (maxerr) ((1 *))) area1)
252
(f2cl-lib:fset (f2cl-lib:fref rlist (last$) ((1 *))) area2)
253
(setf errbnd (max epsabs (* epsrel (abs area))))
254
(if (<= errsum errbnd) (go label8))
255
(if (or (>= iroff1 6) (>= iroff2 20)) (setf ier 2))
256
(if (= last$ limit) (setf ier 1))
258
(<= (max (abs a1) (abs b2))
259
(* (+ 1.0 (* 100.0 epmach)) (+ (abs a2) (* 1000.0 uflow))))
262
(if (> error2 error1) (go label10))
263
(f2cl-lib:fset (f2cl-lib:fref alist (last$) ((1 *))) a2)
264
(f2cl-lib:fset (f2cl-lib:fref blist (maxerr) ((1 *))) b1)
265
(f2cl-lib:fset (f2cl-lib:fref blist (last$) ((1 *))) b2)
266
(f2cl-lib:fset (f2cl-lib:fref elist (maxerr) ((1 *))) error1)
267
(f2cl-lib:fset (f2cl-lib:fref elist (last$) ((1 *))) error2)
270
(f2cl-lib:fset (f2cl-lib:fref alist (maxerr) ((1 *))) a2)
271
(f2cl-lib:fset (f2cl-lib:fref alist (last$) ((1 *))) a1)
272
(f2cl-lib:fset (f2cl-lib:fref blist (last$) ((1 *))) b1)
273
(f2cl-lib:fset (f2cl-lib:fref rlist (maxerr) ((1 *))) area2)
274
(f2cl-lib:fset (f2cl-lib:fref rlist (last$) ((1 *))) area1)
275
(f2cl-lib:fset (f2cl-lib:fref elist (maxerr) ((1 *))) error2)
276
(f2cl-lib:fset (f2cl-lib:fref elist (last$) ((1 *))) error1)
279
(var-0 var-1 var-2 var-3 var-4 var-5 var-6)
280
(dqpsrt limit last$ maxerr errmax elist iord nrmax)
281
(declare (ignore var-0 var-1 var-4 var-5))
285
(if (or (/= ier 0) (<= errsum errbnd)) (go label40))
289
(f2cl-lib:fdo (k 1 (f2cl-lib:int-add k 1))
292
(setf result (+ result (f2cl-lib:fref rlist (k) ((1 *)))))
299
(f2cl-lib:int-add (f2cl-lib:int-mul 10 keyf) 1)
300
(f2cl-lib:int-add (f2cl-lib:int-mul 2 neval) 1))))
302
(setf neval (f2cl-lib:int-add (f2cl-lib:int-mul 30 neval) 15)))
16
(type (array double-float (*)) elist rlist blist alist)
17
(type f2cl-lib:integer4 last$ ier neval limit key)
18
(type double-float abserr result epsrel epsabs b a))
19
(f2cl-lib:with-multi-array-data
20
((alist double-float alist-%data% alist-%offset%)
21
(blist double-float blist-%data% blist-%offset%)
22
(rlist double-float rlist-%data% rlist-%offset%)
23
(elist double-float elist-%data% elist-%offset%)
24
(iord f2cl-lib:integer4 iord-%data% iord-%offset%))
25
(prog ((iroff1 0) (iroff2 0) (k 0) (keyf 0) (maxerr 0) (nrmax 0) (area 0.0)
26
(area1 0.0) (area12 0.0) (area2 0.0) (a1 0.0) (a2 0.0) (b1 0.0)
27
(b2 0.0) (defabs 0.0) (defab1 0.0) (defab2 0.0) (epmach 0.0)
28
(errbnd 0.0) (errmax 0.0) (error1 0.0) (error2 0.0) (erro12 0.0)
29
(errsum 0.0) (resabs 0.0) (uflow 0.0) (abs$ 0.0f0))
30
(declare (type single-float abs$)
31
(type double-float uflow resabs errsum erro12 error2 error1
32
errmax errbnd epmach defab2 defab1 defabs b2
33
b1 a2 a1 area2 area12 area1 area)
34
(type f2cl-lib:integer4 nrmax maxerr keyf k iroff2 iroff1))
35
(setf epmach (f2cl-lib:d1mach 4))
36
(setf uflow (f2cl-lib:d1mach 1))
42
(f2cl-lib:fset (f2cl-lib:fref alist-%data% (1) ((1 *)) alist-%offset%) a)
43
(f2cl-lib:fset (f2cl-lib:fref blist-%data% (1) ((1 *)) blist-%offset%) b)
44
(f2cl-lib:fset (f2cl-lib:fref rlist-%data% (1) ((1 *)) rlist-%offset%)
46
(f2cl-lib:fset (f2cl-lib:fref elist-%data% (1) ((1 *)) elist-%offset%)
48
(f2cl-lib:fset (f2cl-lib:fref iord-%data% (1) ((1 *)) iord-%offset%) 0)
49
(if (and (<= epsabs 0.0) (< epsrel (max (* 50.0 epmach) 5.e-29)))
51
(if (= ier 6) (go label999))
53
(if (<= key 0) (setf keyf 1))
54
(if (>= key 7) (setf keyf 6))
57
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
58
(dqk15 f a b result abserr defabs resabs)
59
(declare (ignore var-0 var-1 var-2))
65
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
66
(dqk21 f a b result abserr defabs resabs)
67
(declare (ignore var-0 var-1 var-2))
73
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
74
(dqk31 f a b result abserr defabs resabs)
75
(declare (ignore var-0 var-1 var-2))
81
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
82
(dqk41 f a b result abserr defabs resabs)
83
(declare (ignore var-0 var-1 var-2))
89
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
90
(dqk51 f a b result abserr defabs resabs)
91
(declare (ignore var-0 var-1 var-2))
97
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
98
(dqk61 f a b result abserr defabs resabs)
99
(declare (ignore var-0 var-1 var-2))
103
(setf resabs var-6)))
105
(f2cl-lib:fset (f2cl-lib:fref rlist-%data% (1) ((1 *)) rlist-%offset%)
107
(f2cl-lib:fset (f2cl-lib:fref elist-%data% (1) ((1 *)) elist-%offset%)
109
(f2cl-lib:fset (f2cl-lib:fref iord-%data% (1) ((1 *)) iord-%offset%) 1)
110
(setf errbnd (max epsabs (* epsrel (abs result))))
111
(if (and (<= abserr (* 50.0 epmach defabs)) (> abserr errbnd))
113
(if (= limit 1) (setf ier 1))
116
(and (<= abserr errbnd) (/= abserr resabs))
126
(f2cl-lib:fdo (last$ 2 (f2cl-lib:int-add last$ 1))
127
((> last$ limit) nil)
130
(f2cl-lib:fref alist-%data% (maxerr) ((1 *)) alist-%offset%))
134
(f2cl-lib:fref alist-%data%
138
(f2cl-lib:fref blist-%data%
144
(f2cl-lib:fref blist-%data% (maxerr) ((1 *)) blist-%offset%))
146
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
147
(dqk15 f a1 b1 area1 error1 resabs defab1)
148
(declare (ignore var-0 var-1 var-2))
152
(setf defab1 var-6)))
154
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
155
(dqk21 f a1 b1 area1 error1 resabs defab1)
156
(declare (ignore var-0 var-1 var-2))
160
(setf defab1 var-6)))
162
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
163
(dqk31 f a1 b1 area1 error1 resabs defab1)
164
(declare (ignore var-0 var-1 var-2))
168
(setf defab1 var-6)))
170
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
171
(dqk41 f a1 b1 area1 error1 resabs defab1)
172
(declare (ignore var-0 var-1 var-2))
176
(setf defab1 var-6)))
178
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
179
(dqk51 f a1 b1 area1 error1 resabs defab1)
180
(declare (ignore var-0 var-1 var-2))
184
(setf defab1 var-6)))
186
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
187
(dqk61 f a1 b1 area1 error1 resabs defab1)
188
(declare (ignore var-0 var-1 var-2))
192
(setf defab1 var-6)))
194
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
195
(dqk15 f a2 b2 area2 error2 resabs defab2)
196
(declare (ignore var-0 var-1 var-2))
200
(setf defab2 var-6)))
202
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
203
(dqk21 f a2 b2 area2 error2 resabs defab2)
204
(declare (ignore var-0 var-1 var-2))
208
(setf defab2 var-6)))
210
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
211
(dqk31 f a2 b2 area2 error2 resabs defab2)
212
(declare (ignore var-0 var-1 var-2))
216
(setf defab2 var-6)))
218
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
219
(dqk41 f a2 b2 area2 error2 resabs defab2)
220
(declare (ignore var-0 var-1 var-2))
224
(setf defab2 var-6)))
226
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
227
(dqk51 f a2 b2 area2 error2 resabs defab2)
228
(declare (ignore var-0 var-1 var-2))
232
(setf defab2 var-6)))
234
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
235
(dqk61 f a2 b2 area2 error2 resabs defab2)
236
(declare (ignore var-0 var-1 var-2))
240
(setf defab2 var-6)))
241
(setf neval (f2cl-lib:int-add neval 1))
242
(setf area12 (+ area1 area2))
243
(setf erro12 (+ error1 error2))
244
(setf errsum (- (+ errsum erro12) errmax))
247
(f2cl-lib:fref rlist-%data%
251
(if (or (= defab1 error1) (= defab2 error2)) (go label5))
256
(- (f2cl-lib:fref rlist-%data% (maxerr) ((1 *)) rlist-%offset%)
258
(* 1.e-5 (abs area12)))
259
(>= erro12 (* 0.99 errmax)))
260
(setf iroff1 (f2cl-lib:int-add iroff1 1)))
261
(if (and (> last$ 10) (> erro12 errmax))
262
(setf iroff2 (f2cl-lib:int-add iroff2 1)))
265
(f2cl-lib:fref rlist-%data% (maxerr) ((1 *)) rlist-%offset%)
268
(f2cl-lib:fref rlist-%data% (last$) ((1 *)) rlist-%offset%)
270
(setf errbnd (max epsabs (* epsrel (abs area))))
271
(if (<= errsum errbnd) (go label8))
272
(if (or (>= iroff1 6) (>= iroff2 20)) (setf ier 2))
273
(if (= last$ limit) (setf ier 1))
275
(<= (max (abs a1) (abs b2))
276
(* (+ 1.0 (* 100.0 epmach)) (+ (abs a2) (* 1000.0 uflow))))
279
(if (> error2 error1) (go label10))
281
(f2cl-lib:fref alist-%data% (last$) ((1 *)) alist-%offset%)
284
(f2cl-lib:fref blist-%data% (maxerr) ((1 *)) blist-%offset%)
287
(f2cl-lib:fref blist-%data% (last$) ((1 *)) blist-%offset%)
290
(f2cl-lib:fref elist-%data% (maxerr) ((1 *)) elist-%offset%)
293
(f2cl-lib:fref elist-%data% (last$) ((1 *)) elist-%offset%)
298
(f2cl-lib:fref alist-%data% (maxerr) ((1 *)) alist-%offset%)
301
(f2cl-lib:fref alist-%data% (last$) ((1 *)) alist-%offset%)
304
(f2cl-lib:fref blist-%data% (last$) ((1 *)) blist-%offset%)
307
(f2cl-lib:fref rlist-%data% (maxerr) ((1 *)) rlist-%offset%)
310
(f2cl-lib:fref rlist-%data% (last$) ((1 *)) rlist-%offset%)
313
(f2cl-lib:fref elist-%data% (maxerr) ((1 *)) elist-%offset%)
316
(f2cl-lib:fref elist-%data% (last$) ((1 *)) elist-%offset%)
319
(multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5 var-6)
320
(dqpsrt limit last$ maxerr errmax elist iord nrmax)
321
(declare (ignore var-0 var-1 var-4 var-5))
325
(if (or (/= ier 0) (<= errsum errbnd)) (go label40))
329
(f2cl-lib:fdo (k 1 (f2cl-lib:int-add k 1))
334
(f2cl-lib:fref rlist-%data% (k) ((1 *)) rlist-%offset%)))
341
(f2cl-lib:int-add (f2cl-lib:int-mul 10 keyf) 1)
342
(f2cl-lib:int-add (f2cl-lib:int-mul 2 neval) 1))))
344
(setf neval (f2cl-lib:int-add (f2cl-lib:int-mul 30 neval) 15)))