1 ;;; Compiled by f2cl version:
2 ;;; ("f2cl1.l,v 95098eb54f13 2013/04/01 00:45:16 toy $"
3 ;;; "f2cl2.l,v 95098eb54f13 2013/04/01 00:45:16 toy $"
4 ;;; "f2cl3.l,v 96616d88fb7e 2008/02/22 22:19:34 rtoy $"
5 ;;; "f2cl4.l,v 96616d88fb7e 2008/02/22 22:19:34 rtoy $"
6 ;;; "f2cl5.l,v 95098eb54f13 2013/04/01 00:45:16 toy $"
7 ;;; "f2cl6.l,v 1d5cbacbb977 2008/08/24 00:56:27 rtoy $"
8 ;;; "macros.l,v 1409c1352feb 2013/03/24 20:44:50 toy $")
10 ;;; Using Lisp CMU Common Lisp snapshot-2013-11 (20E Unicode)
12 ;;; Options: ((:prune-labels nil) (:auto-save t) (:relaxed-array-decls t)
13 ;;; (:coerce-assigns :as-needed) (:array-type ':array)
14 ;;; (:array-slicing t) (:declare-common nil)
15 ;;; (:float-format single-float))
17 (in-package "ODEPACK")
22 :element-type
'f2cl-lib
:integer4
23 :initial-contents
'(12 5)))
26 (declare (type (array f2cl-lib
:integer4
(2)) mord
)
27 (type (f2cl-lib:integer4
) mxstp0 mxhnl0
))
29 (res adda jac neq y ydoti t$ tout itol rtol atol itask istate iopt
30 rwork lrw iwork liw mf
)
31 (declare (type (f2cl-lib:integer4
) mf liw lrw iopt istate itask itol
)
32 (type (double-float) tout t$
)
33 (type (array double-float
(*)) rwork atol rtol ydoti y
)
34 (type (array f2cl-lib
:integer4
(*)) iwork neq
))
36 (symbol-macrolet ((ccmax
37 (aref (dls001-part-0 *dls001-common-block
*) 209))
38 (h (aref (dls001-part-0 *dls001-common-block
*) 211))
39 (hmin (aref (dls001-part-0 *dls001-common-block
*) 212))
40 (hmxi (aref (dls001-part-0 *dls001-common-block
*) 213))
41 (hu (aref (dls001-part-0 *dls001-common-block
*) 214))
42 (tn (aref (dls001-part-0 *dls001-common-block
*) 216))
44 (aref (dls001-part-0 *dls001-common-block
*) 217))
45 (init (aref (dls001-part-1 *dls001-common-block
*) 0))
46 (mxstep (aref (dls001-part-1 *dls001-common-block
*) 1))
47 (mxhnil (aref (dls001-part-1 *dls001-common-block
*) 2))
48 (nhnil (aref (dls001-part-1 *dls001-common-block
*) 3))
49 (nslast (aref (dls001-part-1 *dls001-common-block
*) 4))
50 (nyh (aref (dls001-part-1 *dls001-common-block
*) 5))
52 (aref (dls001-part-1 *dls001-common-block
*) 16))
53 (kflag (aref (dls001-part-1 *dls001-common-block
*) 17))
54 (l (aref (dls001-part-1 *dls001-common-block
*) 18))
55 (lyh (aref (dls001-part-1 *dls001-common-block
*) 19))
56 (lewt (aref (dls001-part-1 *dls001-common-block
*) 20))
57 (lacor (aref (dls001-part-1 *dls001-common-block
*) 21))
58 (lsavf (aref (dls001-part-1 *dls001-common-block
*) 22))
59 (lwm (aref (dls001-part-1 *dls001-common-block
*) 23))
60 (liwm (aref (dls001-part-1 *dls001-common-block
*) 24))
61 (meth (aref (dls001-part-1 *dls001-common-block
*) 25))
62 (miter (aref (dls001-part-1 *dls001-common-block
*) 26))
64 (aref (dls001-part-1 *dls001-common-block
*) 27))
66 (aref (dls001-part-1 *dls001-common-block
*) 28))
67 (msbp (aref (dls001-part-1 *dls001-common-block
*) 29))
68 (mxncf (aref (dls001-part-1 *dls001-common-block
*) 30))
69 (n (aref (dls001-part-1 *dls001-common-block
*) 31))
70 (nq (aref (dls001-part-1 *dls001-common-block
*) 32))
71 (nst (aref (dls001-part-1 *dls001-common-block
*) 33))
72 (nfe (aref (dls001-part-1 *dls001-common-block
*) 34))
73 (nje (aref (dls001-part-1 *dls001-common-block
*) 35))
74 (nqu (aref (dls001-part-1 *dls001-common-block
*) 36)))
75 (f2cl-lib:with-multi-array-data
76 ((neq f2cl-lib
:integer4 neq-%data% neq-%offset%
)
77 (iwork f2cl-lib
:integer4 iwork-%data% iwork-%offset%
)
78 (y double-float y-%data% y-%offset%
)
79 (ydoti double-float ydoti-%data% ydoti-%offset%
)
80 (rtol double-float rtol-%data% rtol-%offset%
)
81 (atol double-float atol-%data% atol-%offset%
)
82 (rwork double-float rwork-%data% rwork-%offset%
))
83 (prog ((mu 0) (ml 0) (lyd0 0) (lp 0) (lenwm 0) (lenrw 0) (leniw 0)
84 (kgo 0) (ires 0) (imxer 0) (iflag 0) (ier 0) (i2 0) (i1 0)
85 (i 0) (w0 0.0d0
) (sum 0.0d0
) (size 0.0d0
) (tp 0.0d0
)
86 (tolsf 0.0d0
) (tol 0.0d0
) (tnext 0.0d0
) (tdist 0.0d0
)
87 (tcrit 0.0d0
) (rtoli 0.0d0
) (rh 0.0d0
) (hmx 0.0d0
)
88 (hmax 0.0d0
) (h0 0.0d0
) (ewti 0.0d0
) (big 0.0d0
) (ayi 0.0d0
)
89 (atoli 0.0d0
) (ihit nil
)
92 :element-type
'character
93 :initial-element
#\
)))
94 (declare (type (string 60) msg
)
95 (type f2cl-lib
:logical ihit
)
96 (type (double-float) atoli ayi big ewti h0 hmax hmx rh
97 rtoli tcrit tdist tnext tol tolsf tp
99 (type (f2cl-lib:integer4
) i i1 i2 ier iflag imxer ires kgo
100 leniw lenrw lenwm lp lyd0 ml
102 (if (or (< istate
0) (> istate
3)) (go label601
))
103 (if (or (< itask
1) (> itask
5)) (go label602
))
104 (if (<= istate
1) (go label10
))
105 (if (= init
0) (go label603
))
106 (if (= istate
2) (go label200
))
110 (if (= tout t$
) (go end_label
))
112 (if (<= (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) 0)
114 (if (<= istate
1) (go label25
))
115 (if (> (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) n
)
118 (setf n
(f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
))
119 (if (or (< itol
1) (> itol
4)) (go label606
))
120 (if (or (< iopt
0) (> iopt
1)) (go label607
))
121 (setf meth
(the f2cl-lib
:integer4
(truncate mf
10)))
122 (setf miter
(f2cl-lib:int-sub mf
(f2cl-lib:int-mul
10 meth
)))
123 (if (or (< meth
1) (> meth
2)) (go label608
))
124 (if (or (<= miter
0) (> miter
5)) (go label608
))
125 (if (= miter
3) (go label608
))
126 (if (< miter
3) (go label30
))
127 (setf ml
(f2cl-lib:fref iwork-%data%
(1) ((1 liw
)) iwork-%offset%
))
128 (setf mu
(f2cl-lib:fref iwork-%data%
(2) ((1 liw
)) iwork-%offset%
))
129 (if (or (< ml
0) (>= ml n
)) (go label609
))
130 (if (or (< mu
0) (>= mu n
)) (go label610
))
132 (if (= iopt
1) (go label40
))
133 (setf maxord
(f2cl-lib:fref mord
(meth) ((1 2))))
136 (if (<= istate
1) (setf h0
0.0d0
))
142 (f2cl-lib:fref iwork-%data%
(5) ((1 liw
)) iwork-%offset%
))
143 (if (< maxord
0) (go label611
))
144 (if (= maxord
0) (setf maxord
100))
146 (min (the f2cl-lib
:integer4 maxord
)
147 (the f2cl-lib
:integer4
148 (f2cl-lib:fref mord
(meth) ((1 2))))))
150 (f2cl-lib:fref iwork-%data%
(6) ((1 liw
)) iwork-%offset%
))
151 (if (< mxstep
0) (go label612
))
152 (if (= mxstep
0) (setf mxstep mxstp0
))
154 (f2cl-lib:fref iwork-%data%
(7) ((1 liw
)) iwork-%offset%
))
155 (if (< mxhnil
0) (go label613
))
156 (if (= mxhnil
0) (setf mxhnil mxhnl0
))
157 (if (> istate
1) (go label50
))
158 (setf h0
(f2cl-lib:fref rwork-%data%
(5) ((1 lrw
)) rwork-%offset%
))
159 (if (< (* (- tout t$
) h0
) 0.0d0
) (go label614
))
162 (f2cl-lib:fref rwork-%data%
(6) ((1 lrw
)) rwork-%offset%
))
163 (if (< hmax
0.0d0
) (go label615
))
165 (if (> hmax
0.0d0
) (setf hmxi
(/ 1.0d0 hmax
)))
167 (f2cl-lib:fref rwork-%data%
(7) ((1 lrw
)) rwork-%offset%
))
168 (if (< hmin
0.0d0
) (go label616
))
171 (if (<= istate
1) (setf nyh n
))
173 (f2cl-lib:int-add lyh
175 (f2cl-lib:int-add maxord
1)
178 (setf lenwm
(f2cl-lib:int-add
(f2cl-lib:int-mul n n
) 2)))
183 (f2cl-lib:int-add
(f2cl-lib:int-mul
2 ml
) mu
1)
186 (setf lewt
(f2cl-lib:int-add lwm lenwm
))
187 (setf lsavf
(f2cl-lib:int-add lewt n
))
188 (setf lacor
(f2cl-lib:int-add lsavf n
))
189 (setf lenrw
(f2cl-lib:int-sub
(f2cl-lib:int-add lacor n
) 1))
190 (setf (f2cl-lib:fref iwork-%data%
(17) ((1 liw
)) iwork-%offset%
)
193 (setf leniw
(f2cl-lib:int-add
20 n
))
194 (setf (f2cl-lib:fref iwork-%data%
(18) ((1 liw
)) iwork-%offset%
)
196 (if (> lenrw lrw
) (go label617
))
197 (if (> leniw liw
) (go label618
))
198 (setf rtoli
(f2cl-lib:fref rtol-%data%
(1) ((1 *)) rtol-%offset%
))
199 (setf atoli
(f2cl-lib:fref atol-%data%
(1) ((1 *)) atol-%offset%
))
200 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
205 (f2cl-lib:fref rtol-%data%
209 (if (or (= itol
2) (= itol
4))
211 (f2cl-lib:fref atol-%data%
215 (if (< rtoli
0.0d0
) (go label619
))
216 (if (< atoli
0.0d0
) (go label620
))
218 (if (<= istate
1) (go label100
))
220 (if (<= nq maxord
) (go label90
))
221 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
225 (setf (f2cl-lib:fref ydoti-%data%
(i) ((1 *)) ydoti-%offset%
)
226 (f2cl-lib:fref rwork-%data%
228 (f2cl-lib:int-add i lwm
)
233 (setf (f2cl-lib:fref rwork-%data%
(lwm) ((1 lrw
)) rwork-%offset%
)
234 (f2cl-lib:fsqrt uround
))
235 (if (= n nyh
) (go label200
))
236 (setf i1
(f2cl-lib:int-add lyh
(f2cl-lib:int-mul l nyh
)))
239 (f2cl-lib:int-add lyh
241 (f2cl-lib:int-add maxord
1)
244 (if (> i1 i2
) (go label200
))
245 (f2cl-lib:fdo
(i i1
(f2cl-lib:int-add i
1))
249 (setf (f2cl-lib:fref rwork-%data%
(i) ((1 lrw
)) rwork-%offset%
)
253 (setf uround
(dumach))
255 (if (and (/= itask
4) (/= itask
5)) (go label105
))
257 (f2cl-lib:fref rwork-%data%
(1) ((1 lrw
)) rwork-%offset%
))
258 (if (< (* (- tcrit tout
) (- tout t$
)) 0.0d0
) (go label625
))
259 (if (and (/= h0
0.0d0
) (> (* (- (+ t$ h0
) tcrit
) h0
) 0.0d0
))
260 (setf h0
(- tcrit t$
)))
263 (setf (f2cl-lib:fref rwork-%data%
(lwm) ((1 lrw
)) rwork-%offset%
)
264 (f2cl-lib:fsqrt uround
))
276 (setf lyd0
(f2cl-lib:int-add lyh nyh
))
277 (setf lp
(f2cl-lib:int-add lwm
1))
278 (if (= istate
1) (go label120
))
280 (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9
282 (dainvg res adda neq t$ y
283 (f2cl-lib:array-slice rwork-%data%
289 (f2cl-lib:array-slice rwork-%data%
294 (f2cl-lib:array-slice iwork-%data%
300 (declare (ignore var-0 var-1 var-2 var-4 var-5 var-6 var-9
306 (setf nfe
(f2cl-lib:int-add nfe
1))
307 (if (< ier
0) (go label560
))
308 (if (> ier
0) (go label565
))
309 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
313 (setf (f2cl-lib:fref rwork-%data%
315 (f2cl-lib:int-add i lyh
)
319 (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
))))
322 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
325 (setf (f2cl-lib:fref rwork-%data%
327 (f2cl-lib:int-add i lyh
)
331 (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
))
333 (setf (f2cl-lib:fref rwork-%data%
335 (f2cl-lib:int-add i lyd0
)
339 (f2cl-lib:fref ydoti-%data%
346 (dewset n itol rtol atol
347 (f2cl-lib:array-slice rwork-%data%
352 (f2cl-lib:array-slice rwork-%data%
357 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
362 (f2cl-lib:fref rwork-%data%
363 ((f2cl-lib:int-sub
(f2cl-lib:int-add i lewt
)
370 (setf (f2cl-lib:fref rwork-%data%
372 (f2cl-lib:int-add i lewt
)
377 (f2cl-lib:fref rwork-%data%
379 (f2cl-lib:int-add i lewt
)
383 (if (/= h0
0.0d0
) (go label180
))
384 (setf tdist
(abs (- tout t$
)))
385 (setf w0
(max (abs t$
) (abs tout
)))
386 (if (< tdist
(* 2.0d0 uround w0
)) (go label622
))
387 (setf tol
(f2cl-lib:fref rtol-%data%
(1) ((1 *)) rtol-%offset%
))
388 (if (<= itol
2) (go label145
))
389 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
395 (f2cl-lib:fref rtol-%data%
400 (if (> tol
0.0d0
) (go label160
))
401 (setf atoli
(f2cl-lib:fref atol-%data%
(1) ((1 *)) atol-%offset%
))
402 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
405 (if (or (= itol
2) (= itol
4))
407 (f2cl-lib:fref atol-%data%
412 (abs (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
)))
413 (if (/= ayi
0.0d0
) (setf tol
(max tol
(/ atoli ayi
))))
416 (setf tol
(max tol
(* 100.0d0 uround
)))
417 (setf tol
(min tol
0.001d0
))
420 (f2cl-lib:array-slice rwork-%data%
425 (f2cl-lib:array-slice rwork-%data%
430 (setf sum
(+ (/ 1.0d0
(* tol w0 w0
)) (* tol
(expt sum
2))))
431 (setf h0
(/ 1.0d0
(f2cl-lib:fsqrt sum
)))
432 (setf h0
(min h0 tdist
))
433 (setf h0
(f2cl-lib:sign h0
(- tout t$
)))
435 (setf rh
(* (abs h0
) hmxi
))
436 (if (> rh
1.0d0
) (setf h0
(/ h0 rh
)))
438 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
442 (setf (f2cl-lib:fref rwork-%data%
444 (f2cl-lib:int-add i lyd0
)
449 (f2cl-lib:fref rwork-%data%
451 (f2cl-lib:int-add i lyd0
)
458 (f2cl-lib:computed-goto
459 (label210 label250 label220 label230 label240
)
462 (if (< (* (- tn tout
) h
) 0.0d0
) (go label250
))
463 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
465 (f2cl-lib:array-slice rwork-%data%
471 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
473 (if (/= iflag
0) (go label627
))
477 (setf tp
(- tn
(* hu
(+ 1.0d0
(* 100.0d0 uround
)))))
478 (if (> (* (- tp tout
) h
) 0.0d0
) (go label623
))
479 (if (< (* (- tn tout
) h
) 0.0d0
) (go label250
))
483 (f2cl-lib:fref rwork-%data%
(1) ((1 lrw
)) rwork-%offset%
))
484 (if (> (* (- tn tcrit
) h
) 0.0d0
) (go label624
))
485 (if (< (* (- tcrit tout
) h
) 0.0d0
) (go label625
))
486 (if (< (* (- tn tout
) h
) 0.0d0
) (go label245
))
487 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
489 (f2cl-lib:array-slice rwork-%data%
495 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
497 (if (/= iflag
0) (go label627
))
502 (f2cl-lib:fref rwork-%data%
(1) ((1 lrw
)) rwork-%offset%
))
503 (if (> (* (- tn tcrit
) h
) 0.0d0
) (go label624
))
505 (setf hmx
(+ (abs tn
) (abs h
)))
506 (setf ihit
(<= (abs (- tn tcrit
)) (* 100.0d0 uround hmx
)))
507 (if ihit
(go label400
))
508 (setf tnext
(+ tn
(* h
(+ 1.0d0
(* 4.0d0 uround
)))))
509 (if (<= (* (- tnext tcrit
) h
) 0.0d0
) (go label250
))
510 (setf h
(* (- tcrit tn
) (- 1.0d0
(* 4.0d0 uround
))))
511 (if (= istate
2) (setf jstart -
2))
513 (if (>= (f2cl-lib:int-sub nst nslast
) mxstep
) (go label500
))
514 (dewset n itol rtol atol
515 (f2cl-lib:array-slice rwork-%data%
520 (f2cl-lib:array-slice rwork-%data%
525 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
530 (f2cl-lib:fref rwork-%data%
531 ((f2cl-lib:int-sub
(f2cl-lib:int-add i lewt
)
538 (setf (f2cl-lib:fref rwork-%data%
540 (f2cl-lib:int-add i lewt
)
545 (f2cl-lib:fref rwork-%data%
547 (f2cl-lib:int-add i lewt
)
555 (f2cl-lib:array-slice rwork-%data%
560 (f2cl-lib:array-slice rwork-%data%
565 (if (<= tolsf
1.0d0
) (go label280
))
566 (setf tolsf
(* tolsf
2.0d0
))
567 (if (= nst
0) (go label626
))
570 (if (/= (+ tn h
) tn
) (go label290
))
571 (setf nhnil
(f2cl-lib:int-add nhnil
1))
572 (if (> nhnil mxhnil
) (go label290
))
573 (f2cl-lib:f2cl-set-string msg
574 "DLSODI- Warning..Internal T (=R1) and H (=R2) are"
576 (xerrwd msg
50 101 0 0 0 0 0 0.0d0
0.0d0
)
577 (f2cl-lib:f2cl-set-string msg
578 " such that in the machine, T + H = T on the next step "
580 (xerrwd msg
60 101 0 0 0 0 0 0.0d0
0.0d0
)
581 (f2cl-lib:f2cl-set-string msg
582 " (H = step size). Solver will continue anyway."
584 (xerrwd msg
50 101 0 0 0 0 2 tn h
)
585 (if (< nhnil mxhnil
) (go label290
))
586 (f2cl-lib:f2cl-set-string msg
587 "DLSODI- Above warning has been issued I1 times. "
589 (xerrwd msg
50 102 0 0 0 0 0 0.0d0
0.0d0
)
590 (f2cl-lib:f2cl-set-string msg
591 " It will not be issued again for this problem."
593 (xerrwd msg
50 102 0 1 mxhnil
0 0 0.0d0
0.0d0
)
596 (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9
597 var-10 var-11 var-12 var-13 var-14 var-15
)
599 (f2cl-lib:array-slice rwork-%data%
605 (f2cl-lib:array-slice rwork-%data%
610 (f2cl-lib:array-slice rwork-%data%
616 (f2cl-lib:array-slice rwork-%data%
621 (f2cl-lib:array-slice rwork-%data%
626 (f2cl-lib:array-slice rwork-%data%
631 (f2cl-lib:array-slice iwork-%data%
636 res adda jac
#'dprepji
#'dsolsy
)
637 (declare (ignore var-0 var-1 var-2 var-4 var-5 var-6 var-7 var-8
638 var-9 var-10 var-11 var-12 var-13 var-14
641 (setf kgo
(f2cl-lib:int-sub
1 kflag
))
642 (f2cl-lib:computed-goto
643 (label300 label530 label540 label400 label550
)
647 (f2cl-lib:computed-goto
648 (label310 label400 label330 label340 label350
)
651 (if (< (* (- tn tout
) h
) 0.0d0
) (go label250
))
652 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
654 (f2cl-lib:array-slice rwork-%data%
660 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
665 (if (>= (* (- tn tout
) h
) 0.0d0
) (go label400
))
668 (if (< (* (- tn tout
) h
) 0.0d0
) (go label345
))
669 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
671 (f2cl-lib:array-slice rwork-%data%
677 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
682 (setf hmx
(+ (abs tn
) (abs h
)))
683 (setf ihit
(<= (abs (- tn tcrit
)) (* 100.0d0 uround hmx
)))
684 (if ihit
(go label400
))
685 (setf tnext
(+ tn
(* h
(+ 1.0d0
(* 4.0d0 uround
)))))
686 (if (<= (* (- tnext tcrit
) h
) 0.0d0
) (go label250
))
687 (setf h
(* (- tcrit tn
) (- 1.0d0
(* 4.0d0 uround
))))
691 (setf hmx
(+ (abs tn
) (abs h
)))
692 (setf ihit
(<= (abs (- tn tcrit
)) (* 100.0d0 uround hmx
)))
694 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
698 (setf (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
)
699 (f2cl-lib:fref rwork-%data%
701 (f2cl-lib:int-add i lyh
)
706 (if (and (/= itask
4) (/= itask
5)) (go label420
))
707 (if ihit
(setf t$ tcrit
))
710 (if (= kflag -
3) (setf istate
3))
711 (setf (f2cl-lib:fref rwork-%data%
(11) ((1 lrw
)) rwork-%offset%
)
713 (setf (f2cl-lib:fref rwork-%data%
(12) ((1 lrw
)) rwork-%offset%
) h
)
714 (setf (f2cl-lib:fref rwork-%data%
(13) ((1 lrw
)) rwork-%offset%
)
716 (setf (f2cl-lib:fref iwork-%data%
(11) ((1 liw
)) iwork-%offset%
)
718 (setf (f2cl-lib:fref iwork-%data%
(12) ((1 liw
)) iwork-%offset%
)
720 (setf (f2cl-lib:fref iwork-%data%
(13) ((1 liw
)) iwork-%offset%
)
722 (setf (f2cl-lib:fref iwork-%data%
(14) ((1 liw
)) iwork-%offset%
)
724 (setf (f2cl-lib:fref iwork-%data%
(15) ((1 liw
)) iwork-%offset%
)
728 (f2cl-lib:f2cl-set-string msg
729 "DLSODI- At current T (=R1), MXSTEP (=I1) steps "
731 (xerrwd msg
50 201 0 0 0 0 0 0.0d0
0.0d0
)
732 (f2cl-lib:f2cl-set-string msg
733 " taken on this call before reaching TOUT "
735 (xerrwd msg
50 201 0 1 mxstep
0 1 tn
0.0d0
)
740 (f2cl-lib:fref rwork-%data%
741 ((f2cl-lib:int-sub
(f2cl-lib:int-add lewt i
)
745 (f2cl-lib:f2cl-set-string msg
746 "DLSODI- At T (=R1), EWT(I1) has become R2 <= 0."
748 (xerrwd msg
50 202 0 1 i
0 2 tn ewti
)
752 (f2cl-lib:f2cl-set-string msg
753 "DLSODI- At T (=R1), too much accuracy requested "
755 (xerrwd msg
50 203 0 0 0 0 0 0.0d0
0.0d0
)
756 (f2cl-lib:f2cl-set-string msg
757 " for precision of machine.. See TOLSF (=R2) "
759 (xerrwd msg
50 203 0 0 0 0 2 tn tolsf
)
760 (setf (f2cl-lib:fref rwork-%data%
(14) ((1 lrw
)) rwork-%offset%
)
765 (f2cl-lib:f2cl-set-string msg
766 "DLSODI- At T(=R1) and step size H(=R2), the error"
768 (xerrwd msg
50 204 0 0 0 0 0 0.0d0
0.0d0
)
769 (f2cl-lib:f2cl-set-string msg
770 " test failed repeatedly or with ABS(H) = HMIN"
772 (xerrwd msg
50 204 0 0 0 0 2 tn h
)
776 (f2cl-lib:f2cl-set-string msg
777 "DLSODI- At T (=R1) and step size H (=R2), the "
779 (xerrwd msg
50 205 0 0 0 0 0 0.0d0
0.0d0
)
780 (f2cl-lib:f2cl-set-string msg
781 " corrector convergence failed repeatedly "
783 (xerrwd msg
50 205 0 0 0 0 0 0.0d0
0.0d0
)
784 (f2cl-lib:f2cl-set-string msg
785 " or with ABS(H) = HMIN "
787 (xerrwd msg
30 205 0 0 0 0 2 tn h
)
791 (f2cl-lib:f2cl-set-string msg
792 "DLSODI- At T (=R1) residual routine returned "
794 (xerrwd msg
50 206 0 0 0 0 0 0.0d0
0.0d0
)
795 (f2cl-lib:f2cl-set-string msg
796 " error IRES = 3 repeatedly. "
798 (xerrwd msg
40 206 0 0 0 0 1 tn
0.0d0
)
802 (setf ier
(f2cl-lib:int-sub ier
))
803 (f2cl-lib:f2cl-set-string msg
804 "DLSODI- Attempt to initialize dy/dt failed: Matrix A is "
806 (xerrwd msg
60 207 0 0 0 0 0 0.0d0
0.0d0
)
807 (f2cl-lib:f2cl-set-string msg
808 " singular. DGEFA or DGBFA returned INFO = I1"
810 (xerrwd msg
50 207 0 1 ier
0 0 0.0d0
0.0d0
)
814 (f2cl-lib:f2cl-set-string msg
815 "DLSODI- Attempt to initialize dy/dt failed "
817 (xerrwd msg
50 208 0 0 0 0 0 0.0d0
0.0d0
)
818 (f2cl-lib:f2cl-set-string msg
819 " because residual routine set its error flag "
821 (xerrwd msg
50 208 0 0 0 0 0 0.0d0
0.0d0
)
822 (f2cl-lib:f2cl-set-string msg
" to IRES = (I1)" (string 60))
823 (xerrwd msg
20 208 0 1 ier
0 0 0.0d0
0.0d0
)
829 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
835 (f2cl-lib:fref rwork-%data%
837 (f2cl-lib:int-add i lacor
)
841 (f2cl-lib:fref rwork-%data%
843 (f2cl-lib:int-add i lewt
)
847 (if (>= big size
) (go label575
))
851 (setf (f2cl-lib:fref iwork-%data%
(16) ((1 liw
)) iwork-%offset%
)
854 (setf lyd0
(f2cl-lib:int-add lyh nyh
))
855 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
858 (setf (f2cl-lib:fref rwork-%data%
860 (f2cl-lib:int-add i lsavf
)
865 (f2cl-lib:fref rwork-%data%
867 (f2cl-lib:int-add i lyd0
)
873 (setf (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
)
874 (f2cl-lib:fref rwork-%data%
876 (f2cl-lib:int-add i lyh
)
881 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
886 (f2cl-lib:array-slice rwork-%data%
893 (declare (ignore var-0 var-2 var-3 var-4
))
898 (setf nfe
(f2cl-lib:int-add nfe
1))
899 (if (<= ires
1) (go label595
))
900 (f2cl-lib:f2cl-set-string msg
901 "DLSODI- Residual routine set its flag IRES "
903 (xerrwd msg
50 210 0 0 0 0 0 0.0d0
0.0d0
)
904 (f2cl-lib:f2cl-set-string msg
905 " to (I1) when called for final output. "
907 (xerrwd msg
50 210 0 1 ires
0 0 0.0d0
0.0d0
)
910 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
914 (setf (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
)
915 (f2cl-lib:fref rwork-%data%
917 (f2cl-lib:int-add i lyh
)
923 (setf (f2cl-lib:fref rwork-%data%
(11) ((1 lrw
)) rwork-%offset%
)
925 (setf (f2cl-lib:fref rwork-%data%
(12) ((1 lrw
)) rwork-%offset%
) h
)
926 (setf (f2cl-lib:fref rwork-%data%
(13) ((1 lrw
)) rwork-%offset%
)
928 (setf (f2cl-lib:fref iwork-%data%
(11) ((1 liw
)) iwork-%offset%
)
930 (setf (f2cl-lib:fref iwork-%data%
(12) ((1 liw
)) iwork-%offset%
)
932 (setf (f2cl-lib:fref iwork-%data%
(13) ((1 liw
)) iwork-%offset%
)
934 (setf (f2cl-lib:fref iwork-%data%
(14) ((1 liw
)) iwork-%offset%
)
936 (setf (f2cl-lib:fref iwork-%data%
(15) ((1 liw
)) iwork-%offset%
)
940 (f2cl-lib:f2cl-set-string msg
941 "DLSODI- ISTATE (=I1) illegal."
943 (xerrwd msg
30 1 0 1 istate
0 0 0.0d0
0.0d0
)
944 (if (< istate
0) (go label800
))
947 (f2cl-lib:f2cl-set-string msg
948 "DLSODI- ITASK (=I1) illegal. "
950 (xerrwd msg
30 2 0 1 itask
0 0 0.0d0
0.0d0
)
953 (f2cl-lib:f2cl-set-string msg
954 "DLSODI- ISTATE > 1 but DLSODI not initialized."
956 (xerrwd msg
50 3 0 0 0 0 0 0.0d0
0.0d0
)
959 (f2cl-lib:f2cl-set-string msg
960 "DLSODI- NEQ (=I1) < 1 "
963 (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) 0 0 0.0d0
967 (f2cl-lib:f2cl-set-string msg
968 "DLSODI- ISTATE = 3 and NEQ increased (I1 to I2). "
970 (xerrwd msg
50 5 0 2 n
971 (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) 0 0.0d0
0.0d0
)
974 (f2cl-lib:f2cl-set-string msg
975 "DLSODI- ITOL (=I1) illegal. "
977 (xerrwd msg
30 6 0 1 itol
0 0 0.0d0
0.0d0
)
980 (f2cl-lib:f2cl-set-string msg
981 "DLSODI- IOPT (=I1) illegal. "
983 (xerrwd msg
30 7 0 1 iopt
0 0 0.0d0
0.0d0
)
986 (f2cl-lib:f2cl-set-string msg
987 "DLSODI- MF (=I1) illegal. "
989 (xerrwd msg
30 8 0 1 mf
0 0 0.0d0
0.0d0
)
992 (f2cl-lib:f2cl-set-string msg
993 "DLSODI- ML(=I1) illegal: < 0 or >= NEQ(=I2) "
995 (xerrwd msg
50 9 0 2 ml
996 (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) 0 0.0d0
0.0d0
)
999 (f2cl-lib:f2cl-set-string msg
1000 "DLSODI- MU(=I1) illegal: < 0 or >= NEQ(=I2) "
1002 (xerrwd msg
50 10 0 2 mu
1003 (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) 0 0.0d0
0.0d0
)
1006 (f2cl-lib:f2cl-set-string msg
1007 "DLSODI- MAXORD (=I1) < 0 "
1009 (xerrwd msg
30 11 0 1 maxord
0 0 0.0d0
0.0d0
)
1012 (f2cl-lib:f2cl-set-string msg
1013 "DLSODI- MXSTEP (=I1) < 0 "
1015 (xerrwd msg
30 12 0 1 mxstep
0 0 0.0d0
0.0d0
)
1018 (f2cl-lib:f2cl-set-string msg
1019 "DLSODI- MXHNIL (=I1) < 0 "
1021 (xerrwd msg
30 13 0 1 mxhnil
0 0 0.0d0
0.0d0
)
1024 (f2cl-lib:f2cl-set-string msg
1025 "DLSODI- TOUT (=R1) behind T (=R2) "
1027 (xerrwd msg
40 14 0 0 0 0 2 tout t$
)
1028 (f2cl-lib:f2cl-set-string msg
1029 " Integration direction is given by H0 (=R1) "
1031 (xerrwd msg
50 14 0 0 0 0 1 h0
0.0d0
)
1034 (f2cl-lib:f2cl-set-string msg
1035 "DLSODI- HMAX (=R1) < 0.0 "
1037 (xerrwd msg
30 15 0 0 0 0 1 hmax
0.0d0
)
1040 (f2cl-lib:f2cl-set-string msg
1041 "DLSODI- HMIN (=R1) < 0.0 "
1043 (xerrwd msg
30 16 0 0 0 0 1 hmin
0.0d0
)
1046 (f2cl-lib:f2cl-set-string msg
1047 "DLSODI- RWORK length needed, LENRW (=I1), exceeds LRW (=I2)"
1049 (xerrwd msg
60 17 0 2 lenrw lrw
0 0.0d0
0.0d0
)
1052 (f2cl-lib:f2cl-set-string msg
1053 "DLSODI- IWORK length needed, LENIW (=I1), exceeds LIW (=I2)"
1055 (xerrwd msg
60 18 0 2 leniw liw
0 0.0d0
0.0d0
)
1058 (f2cl-lib:f2cl-set-string msg
1059 "DLSODI- RTOL(=I1) is R1 < 0.0 "
1061 (xerrwd msg
40 19 0 1 i
0 1 rtoli
0.0d0
)
1064 (f2cl-lib:f2cl-set-string msg
1065 "DLSODI- ATOL(=I1) is R1 < 0.0 "
1067 (xerrwd msg
40 20 0 1 i
0 1 atoli
0.0d0
)
1071 (f2cl-lib:fref rwork-%data%
1072 ((f2cl-lib:int-sub
(f2cl-lib:int-add lewt i
)
1076 (f2cl-lib:f2cl-set-string msg
1077 "DLSODI- EWT(I1) is R1 <= 0.0 "
1079 (xerrwd msg
40 21 0 1 i
0 1 ewti
0.0d0
)
1082 (f2cl-lib:f2cl-set-string msg
1083 "DLSODI- TOUT(=R1) too close to T(=R2) to start integration."
1085 (xerrwd msg
60 22 0 0 0 0 2 tout t$
)
1088 (f2cl-lib:f2cl-set-string msg
1089 "DLSODI- ITASK = I1 and TOUT (=R1) behind TCUR - HU (= R2) "
1091 (xerrwd msg
60 23 0 1 itask
0 2 tout tp
)
1094 (f2cl-lib:f2cl-set-string msg
1095 "DLSODI- ITASK = 4 or 5 and TCRIT (=R1) behind TCUR (=R2) "
1097 (xerrwd msg
60 24 0 0 0 0 2 tcrit tn
)
1100 (f2cl-lib:f2cl-set-string msg
1101 "DLSODI- ITASK = 4 or 5 and TCRIT (=R1) behind TOUT (=R2) "
1103 (xerrwd msg
60 25 0 0 0 0 2 tcrit tout
)
1106 (f2cl-lib:f2cl-set-string msg
1107 "DLSODI- At start of problem, too much accuracy "
1109 (xerrwd msg
50 26 0 0 0 0 0 0.0d0
0.0d0
)
1110 (f2cl-lib:f2cl-set-string msg
1111 " requested for precision of machine.. See TOLSF (=R1) "
1113 (xerrwd msg
60 26 0 0 0 0 1 tolsf
0.0d0
)
1114 (setf (f2cl-lib:fref rwork-%data%
(14) ((1 lrw
)) rwork-%offset%
)
1118 (f2cl-lib:f2cl-set-string msg
1119 "DLSODI- Trouble in DINTDY. ITASK = I1, TOUT = R1"
1121 (xerrwd msg
50 27 0 1 itask
0 1 tout
0.0d0
)
1126 (f2cl-lib:f2cl-set-string msg
1127 "DLSODI- Run aborted.. apparent infinite loop. "
1129 (xerrwd msg
50 303 2 0 0 0 0 0.0d0
0.0d0
)
1153 (in-package #:cl-user
)
1154 #+#.
(cl:if
(cl:find-package
'#:f2cl
) '(and) '(or))
1155 (eval-when (:load-toplevel
:compile-toplevel
:execute
)
1156 (setf (gethash 'fortran-to-lisp
::dlsodi
1157 fortran-to-lisp
::*f2cl-function-info
*)
1158 (fortran-to-lisp::make-f2cl-finfo
1159 :arg-types
'(t t t
(array fortran-to-lisp
::integer4
(*))
1160 (array double-float
(*)) (array double-float
(*))
1161 (double-float) (double-float)
1162 (fortran-to-lisp::integer4
) (array double-float
(*))
1163 (array double-float
(*)) (fortran-to-lisp::integer4
)
1164 (fortran-to-lisp::integer4
) (fortran-to-lisp::integer4
)
1165 (array double-float
(*)) (fortran-to-lisp::integer4
)
1166 (array fortran-to-lisp
::integer4
(*))
1167 (fortran-to-lisp::integer4
)
1168 (fortran-to-lisp::integer4
))
1169 :return-values
'(nil nil nil nil nil nil fortran-to-lisp
::t$ nil nil
1170 nil nil nil fortran-to-lisp
::istate nil nil nil nil
1172 :calls
'(fortran-to-lisp::dstodi fortran-to-lisp
::xerrwd
1173 fortran-to-lisp
::dintdy fortran-to-lisp
::dvnorm
1174 fortran-to-lisp
::dewset fortran-to-lisp
::dainvg
))))