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 t)
15 ;;; (:float-format single-float))
17 (in-package "ODEPACK")
21 (:predicate is-dls001-p
))
22 (part-0 (make-array 218 :element-type
'double-float
)
23 :type
(simple-array double-float
(218)))
24 (part-1 (make-array 37 :element-type
'(f2cl-lib:integer4
))
25 :type
(simple-array (f2cl-lib:integer4
) (37))))
28 (defparameter *dls001-common-block
*
35 (:predicate is-dls002-p
))
36 (part-0 (make-array 1 :element-type
'(double-float))
37 :type
(simple-array (double-float) (1)))
38 (part-1 (make-array 4 :element-type
'(f2cl-lib:integer4
))
39 :type
(simple-array (f2cl-lib:integer4
) (4))))
42 (defparameter *dls002-common-block
*
49 (:predicate is-dlsr01-p
))
50 (part-0 (make-array 5 :element-type
'double-float
)
51 :type
(simple-array double-float
(5)))
52 (part-1 (make-array 9 :element-type
'(f2cl-lib:integer4
))
53 :type
(simple-array (f2cl-lib:integer4
) (9))))
56 (defparameter *dlsr01-common-block
*
63 (:predicate is-dlpk01-p
))
64 (part-0 (make-array 4 :element-type
'(double-float))
65 :type
(simple-array (double-float) (4)))
66 (part-1 (make-array 13 :element-type
'(f2cl-lib:integer4
))
67 :type
(simple-array (f2cl-lib:integer4
) (13))))
70 (defparameter *dlpk01-common-block
*
78 :element-type
'f2cl-lib
:integer4
79 :initial-contents
'(12 5)))
82 (declare (type (array f2cl-lib
:integer4
(2)) mord
)
83 (type (f2cl-lib:integer4
) mxstp0 mxhnl0
))
85 (f neq y t$ tout itol rtol atol itask istate iopt rwork lrw iwork liw
86 jac psol mf g ng jroot
)
87 (declare (type (f2cl-lib:integer4
) ng mf liw lrw iopt istate itask itol
)
88 (type (double-float) tout t$
)
89 (type (array double-float
(*)) rwork atol rtol y
)
90 (type (array f2cl-lib
:integer4
(*)) jroot iwork neq
))
92 (symbol-macrolet ((ccmax
93 (aref (dls001-part-0 *dls001-common-block
*) 209))
94 (h (aref (dls001-part-0 *dls001-common-block
*) 211))
95 (hmin (aref (dls001-part-0 *dls001-common-block
*) 212))
96 (hmxi (aref (dls001-part-0 *dls001-common-block
*) 213))
97 (hu (aref (dls001-part-0 *dls001-common-block
*) 214))
98 (tn (aref (dls001-part-0 *dls001-common-block
*) 216))
100 (aref (dls001-part-0 *dls001-common-block
*) 217))
101 (init (aref (dls001-part-1 *dls001-common-block
*) 0))
102 (mxstep (aref (dls001-part-1 *dls001-common-block
*) 1))
103 (mxhnil (aref (dls001-part-1 *dls001-common-block
*) 2))
104 (nhnil (aref (dls001-part-1 *dls001-common-block
*) 3))
105 (nslast (aref (dls001-part-1 *dls001-common-block
*) 4))
106 (nyh (aref (dls001-part-1 *dls001-common-block
*) 5))
108 (aref (dls001-part-1 *dls001-common-block
*) 16))
109 (kflag (aref (dls001-part-1 *dls001-common-block
*) 17))
110 (l (aref (dls001-part-1 *dls001-common-block
*) 18))
111 (lyh (aref (dls001-part-1 *dls001-common-block
*) 19))
112 (lewt (aref (dls001-part-1 *dls001-common-block
*) 20))
113 (lacor (aref (dls001-part-1 *dls001-common-block
*) 21))
114 (lsavf (aref (dls001-part-1 *dls001-common-block
*) 22))
115 (lwm (aref (dls001-part-1 *dls001-common-block
*) 23))
116 (liwm (aref (dls001-part-1 *dls001-common-block
*) 24))
117 (meth (aref (dls001-part-1 *dls001-common-block
*) 25))
118 (miter (aref (dls001-part-1 *dls001-common-block
*) 26))
120 (aref (dls001-part-1 *dls001-common-block
*) 27))
122 (aref (dls001-part-1 *dls001-common-block
*) 28))
123 (msbp (aref (dls001-part-1 *dls001-common-block
*) 29))
124 (mxncf (aref (dls001-part-1 *dls001-common-block
*) 30))
125 (n (aref (dls001-part-1 *dls001-common-block
*) 31))
126 (nq (aref (dls001-part-1 *dls001-common-block
*) 32))
127 (nst (aref (dls001-part-1 *dls001-common-block
*) 33))
128 (nfe (aref (dls001-part-1 *dls001-common-block
*) 34))
129 (nje (aref (dls001-part-1 *dls001-common-block
*) 35))
130 (nqu (aref (dls001-part-1 *dls001-common-block
*) 36))
131 (nsfi (aref (dls002-part-1 *dls002-common-block
*) 1))
132 (njev (aref (dls002-part-1 *dls002-common-block
*) 3))
133 (t0 (aref (dlsr01-part-0 *dlsr01-common-block
*) 2))
134 (tlast (aref (dlsr01-part-0 *dlsr01-common-block
*) 3))
135 (toutc (aref (dlsr01-part-0 *dlsr01-common-block
*) 4))
136 (lg0 (aref (dlsr01-part-1 *dlsr01-common-block
*) 0))
137 (lg1 (aref (dlsr01-part-1 *dlsr01-common-block
*) 1))
138 (lgx (aref (dlsr01-part-1 *dlsr01-common-block
*) 2))
139 (irfnd (aref (dlsr01-part-1 *dlsr01-common-block
*) 5))
140 (itaskc (aref (dlsr01-part-1 *dlsr01-common-block
*) 6))
141 (ngc (aref (dlsr01-part-1 *dlsr01-common-block
*) 7))
142 (nge (aref (dlsr01-part-1 *dlsr01-common-block
*) 8))
143 (delt (aref (dlpk01-part-0 *dlpk01-common-block
*) 0))
144 (sqrtn (aref (dlpk01-part-0 *dlpk01-common-block
*) 2))
145 (rsqrtn (aref (dlpk01-part-0 *dlpk01-common-block
*) 3))
146 (jpre (aref (dlpk01-part-1 *dlpk01-common-block
*) 0))
147 (jacflg (aref (dlpk01-part-1 *dlpk01-common-block
*) 1))
148 (locwp (aref (dlpk01-part-1 *dlpk01-common-block
*) 2))
149 (lociwp (aref (dlpk01-part-1 *dlpk01-common-block
*) 3))
150 (lsavx (aref (dlpk01-part-1 *dlpk01-common-block
*) 4))
151 (kmp (aref (dlpk01-part-1 *dlpk01-common-block
*) 5))
152 (maxl (aref (dlpk01-part-1 *dlpk01-common-block
*) 6))
153 (nni (aref (dlpk01-part-1 *dlpk01-common-block
*) 8))
154 (nli (aref (dlpk01-part-1 *dlpk01-common-block
*) 9))
155 (nps (aref (dlpk01-part-1 *dlpk01-common-block
*) 10))
156 (ncfn (aref (dlpk01-part-1 *dlpk01-common-block
*) 11))
157 (ncfl (aref (dlpk01-part-1 *dlpk01-common-block
*) 12)))
158 (f2cl-lib:with-multi-array-data
159 ((neq f2cl-lib
:integer4 neq-%data% neq-%offset%
)
160 (iwork f2cl-lib
:integer4 iwork-%data% iwork-%offset%
)
161 (jroot f2cl-lib
:integer4 jroot-%data% jroot-%offset%
)
162 (y double-float y-%data% y-%offset%
)
163 (rtol double-float rtol-%data% rtol-%offset%
)
164 (atol double-float atol-%data% atol-%offset%
)
165 (rwork double-float rwork-%data% rwork-%offset%
))
166 (prog ((nwarn 0) (nstd 0) (nnid 0) (nni0 0) (nli0 0) (niter 0)
167 (ncfl0 0) (ncfn0 0) (lwp 0) (liwp 0) (lenwk 0) (lenwm 0)
168 (lenrw 0) (leniwk 0) (leniw 0) (lf0 0) (kgo 0) (imxer 0)
169 (iflag 0) (ier 0) (i2 0) (i1 0) (i 0) (lyhnew 0) (lenyh 0)
170 (irt 0) (irfp 0) (size 0.0d0
) (tp 0.0d0
) (tolsf 0.0d0
)
171 (tnext 0.0d0
) (tcrit 0.0d0
) (rtoli 0.0d0
) (rh 0.0d0
)
172 (rcfn 0.0d0
) (rcfl 0.0d0
) (hmx 0.0d0
) (hmax 0.0d0
) (h0 0.0d0
)
173 (ewti 0.0d0
) (big 0.0d0
) (avdim 0.0d0
) (atoli 0.0d0
)
174 (lwarn nil
) (lcfl nil
) (lcfn nil
) (lavd nil
) (ihit nil
)
177 :element-type
'character
178 :initial-element
#\
)))
179 (declare (type (string 60) msg
)
180 (type f2cl-lib
:logical ihit lavd lcfn lcfl lwarn
)
181 (type (double-float) atoli avdim big ewti h0 hmax hmx rcfl
182 rcfn rh rtoli tcrit tnext tolsf tp
184 (type (f2cl-lib:integer4
) irfp irt lenyh lyhnew i i1 i2
185 ier iflag imxer kgo lf0 leniw
186 leniwk lenrw lenwm lenwk liwp
187 lwp ncfn0 ncfl0 niter nli0 nni0
189 (if (or (< istate
1) (> istate
3)) (go label601
))
190 (if (or (< itask
1) (> itask
5)) (go label602
))
192 (if (= istate
1) (go label10
))
193 (if (= init
0) (go label603
))
194 (if (= istate
2) (go label200
))
198 (if (= tout t$
) (go end_label
))
200 (if (<= (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) 0)
202 (if (= istate
1) (go label25
))
203 (if (> (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) n
)
206 (setf n
(f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
))
207 (if (or (< itol
1) (> itol
4)) (go label606
))
208 (if (or (< iopt
0) (> iopt
1)) (go label607
))
209 (setf meth
(the f2cl-lib
:integer4
(truncate mf
10)))
210 (setf miter
(f2cl-lib:int-sub mf
(f2cl-lib:int-mul
10 meth
)))
211 (if (or (< meth
1) (> meth
2)) (go label608
))
212 (if (< miter
0) (go label608
))
213 (if (and (> miter
4) (< miter
9)) (go label608
))
216 (f2cl-lib:fref iwork-%data%
223 (f2cl-lib:fref iwork-%data%
227 (if (< ng
0) (go label630
))
228 (if (= istate
1) (go label35
))
229 (if (and (= irfnd
0) (/= ng ngc
)) (go label631
))
232 (if (= iopt
1) (go label40
))
233 (setf maxord
(f2cl-lib:fref mord
(meth) ((1 2))))
236 (if (= istate
1) (setf h0
0.0d0
))
240 (min (the f2cl-lib
:integer4
5) (the f2cl-lib
:integer4 n
)))
246 (f2cl-lib:fref iwork-%data%
(5) ((1 liw
)) iwork-%offset%
))
247 (if (< maxord
0) (go label611
))
248 (if (= maxord
0) (setf maxord
100))
250 (min (the f2cl-lib
:integer4 maxord
)
251 (the f2cl-lib
:integer4
252 (f2cl-lib:fref mord
(meth) ((1 2))))))
254 (f2cl-lib:fref iwork-%data%
(6) ((1 liw
)) iwork-%offset%
))
255 (if (< mxstep
0) (go label612
))
256 (if (= mxstep
0) (setf mxstep mxstp0
))
258 (f2cl-lib:fref iwork-%data%
(7) ((1 liw
)) iwork-%offset%
))
259 (if (< mxhnil
0) (go label613
))
260 (if (= mxhnil
0) (setf mxhnil mxhnl0
))
261 (if (/= istate
1) (go label50
))
262 (setf h0
(f2cl-lib:fref rwork-%data%
(5) ((1 lrw
)) rwork-%offset%
))
263 (if (< (* (- tout t$
) h0
) 0.0d0
) (go label614
))
266 (f2cl-lib:fref rwork-%data%
(6) ((1 lrw
)) rwork-%offset%
))
267 (if (< hmax
0.0d0
) (go label615
))
269 (if (> hmax
0.0d0
) (setf hmxi
(/ 1.0d0 hmax
)))
271 (f2cl-lib:fref rwork-%data%
(7) ((1 lrw
)) rwork-%offset%
))
272 (if (< hmin
0.0d0
) (go label616
))
274 (f2cl-lib:fref iwork-%data%
(8) ((1 liw
)) iwork-%offset%
))
275 (if (= maxl
0) (setf maxl
5))
277 (min (the f2cl-lib
:integer4 maxl
)
278 (the f2cl-lib
:integer4 n
)))
280 (f2cl-lib:fref iwork-%data%
(9) ((1 liw
)) iwork-%offset%
))
281 (if (or (= kmp
0) (> kmp maxl
)) (setf kmp maxl
))
283 (f2cl-lib:fref rwork-%data%
(8) ((1 lrw
)) rwork-%offset%
))
284 (if (= delt
0.0d0
) (setf delt
0.05d0
))
286 (if (= istate
1) (setf nyh n
))
288 (setf lg1
(f2cl-lib:int-add lg0 ng
))
289 (setf lgx
(f2cl-lib:int-add lg1 ng
))
290 (setf lyhnew
(f2cl-lib:int-add lgx ng
))
291 (if (= istate
1) (setf lyh lyhnew
))
292 (if (= lyhnew lyh
) (go label62
))
293 (setf lenyh
(f2cl-lib:int-mul l nyh
))
294 (if (< lrw
(f2cl-lib:int-add
(f2cl-lib:int-sub lyhnew
1) lenyh
))
297 (if (> lyhnew lyh
) (setf i1 -
1))
299 (f2cl-lib:array-slice rwork-%data%
305 (f2cl-lib:array-slice rwork-%data%
314 (f2cl-lib:int-add lyh
316 (f2cl-lib:int-add maxord
1)
318 (if (= miter
0) (setf lenwk
0))
322 (f2cl-lib:int-mul n
(f2cl-lib:int-add maxl
2))
323 (f2cl-lib:int-mul maxl maxl
))))
328 (f2cl-lib:int-add maxl
339 (f2cl-lib:int-mul
(f2cl-lib:int-add maxl
3) maxl
)
341 (if (or (= miter
3) (= miter
4))
342 (setf lenwk
(f2cl-lib:int-mul
5 n
)))
343 (if (= miter
9) (setf lenwk
(f2cl-lib:int-mul
2 n
)))
347 (f2cl-lib:fref iwork-%data%
351 (setf lenwm
(f2cl-lib:int-add lenwk lwp
))
352 (setf locwp
(f2cl-lib:int-add lenwk
1))
353 (setf lewt
(f2cl-lib:int-add lwm lenwm
))
354 (setf lsavf
(f2cl-lib:int-add lewt n
))
355 (setf lsavx
(f2cl-lib:int-add lsavf n
))
356 (setf lacor
(f2cl-lib:int-add lsavx n
))
357 (if (= miter
0) (setf lacor
(f2cl-lib:int-add lsavf n
)))
358 (setf lenrw
(f2cl-lib:int-sub
(f2cl-lib:int-add lacor n
) 1))
359 (setf (f2cl-lib:fref iwork-%data%
(17) ((1 liw
)) iwork-%offset%
)
363 (if (= miter
1) (setf leniwk maxl
))
367 (f2cl-lib:fref iwork-%data%
371 (setf leniw
(f2cl-lib:int-add
30 leniwk liwp
))
372 (setf lociwp
(f2cl-lib:int-add leniwk
1))
373 (setf (f2cl-lib:fref iwork-%data%
(18) ((1 liw
)) iwork-%offset%
)
375 (if (> lenrw lrw
) (go label617
))
376 (if (> leniw liw
) (go label618
))
377 (setf rtoli
(f2cl-lib:fref rtol-%data%
(1) ((1 *)) rtol-%offset%
))
378 (setf atoli
(f2cl-lib:fref atol-%data%
(1) ((1 *)) atol-%offset%
))
379 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
384 (f2cl-lib:fref rtol-%data%
388 (if (or (= itol
2) (= itol
4))
390 (f2cl-lib:fref atol-%data%
394 (if (< rtoli
0.0d0
) (go label619
))
395 (if (< atoli
0.0d0
) (go label620
))
398 (coerce (f2cl-lib:fsqrt
(f2cl-lib:freal n
)) 'double-float
))
399 (setf rsqrtn
(/ 1.0d0 sqrtn
))
400 (if (= istate
1) (go label100
))
402 (if (<= nq maxord
) (go label90
))
403 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
407 (setf (f2cl-lib:fref rwork-%data%
409 (f2cl-lib:int-add i lsavf
)
413 (f2cl-lib:fref rwork-%data%
415 (f2cl-lib:int-add i lwm
)
420 (if (= n nyh
) (go label200
))
421 (setf i1
(f2cl-lib:int-add lyh
(f2cl-lib:int-mul l nyh
)))
424 (f2cl-lib:int-add lyh
426 (f2cl-lib:int-add maxord
1)
429 (if (> i1 i2
) (go label200
))
430 (f2cl-lib:fdo
(i i1
(f2cl-lib:int-add i
1))
434 (setf (f2cl-lib:fref rwork-%data%
(i) ((1 lrw
)) rwork-%offset%
)
438 (setf uround
(dumach))
440 (if (and (/= itask
4) (/= itask
5)) (go label110
))
442 (f2cl-lib:fref rwork-%data%
(1) ((1 lrw
)) rwork-%offset%
))
443 (if (< (* (- tcrit tout
) (- tout t$
)) 0.0d0
) (go label625
))
444 (if (and (/= h0
0.0d0
) (> (* (- (+ t$ h0
) tcrit
) h0
) 0.0d0
))
445 (setf h0
(- tcrit t$
)))
470 (setf lf0
(f2cl-lib:int-add lyh nyh
))
471 (multiple-value-bind (var-0 var-1 var-2 var-3
)
476 (f2cl-lib:array-slice rwork-%data%
481 (declare (ignore var-0 var-2 var-3
))
485 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
489 (setf (f2cl-lib:fref rwork-%data%
491 (f2cl-lib:int-add i lyh
)
495 (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
))))
498 (dewset n itol rtol atol
499 (f2cl-lib:array-slice rwork-%data%
504 (f2cl-lib:array-slice rwork-%data%
509 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
514 (f2cl-lib:fref rwork-%data%
515 ((f2cl-lib:int-sub
(f2cl-lib:int-add i lewt
)
522 (setf (f2cl-lib:fref rwork-%data%
524 (f2cl-lib:int-add i lewt
)
529 (f2cl-lib:fref rwork-%data%
531 (f2cl-lib:int-add i lewt
)
535 (if (/= h0
0.0d0
) (go label180
))
537 (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9
538 var-10 var-11 var-12 var-13 var-14 var-15
)
540 (f2cl-lib:array-slice rwork-%data%
545 (f2cl-lib:array-slice rwork-%data%
551 (f2cl-lib:array-slice rwork-%data%
557 (f2cl-lib:array-slice rwork-%data%
563 (declare (ignore var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7
564 var-8 var-9 var-10 var-11 var-12
))
568 (setf nfe
(f2cl-lib:int-add nfe niter
))
569 (if (/= ier
0) (go label622
))
571 (setf rh
(* (abs h0
) hmxi
))
572 (if (> rh
1.0d0
) (setf h0
(/ h0 rh
)))
574 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
578 (setf (f2cl-lib:fref rwork-%data%
580 (f2cl-lib:int-add i lf0
)
585 (f2cl-lib:fref rwork-%data%
587 (f2cl-lib:int-add i lf0
)
593 (if (= ngc
0) (go label270
))
595 (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9
598 (f2cl-lib:array-slice rwork-%data%
604 (f2cl-lib:array-slice rwork-%data%
609 (f2cl-lib:array-slice rwork-%data%
614 (f2cl-lib:array-slice rwork-%data%
620 (declare (ignore var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7
623 (if (= irt
0) (go label270
))
628 (if (= ngc
0) (go label205
))
629 (if (or (= itask
1) (= itask
4)) (setf toutc tout
))
631 (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9
634 (f2cl-lib:array-slice rwork-%data%
640 (f2cl-lib:array-slice rwork-%data%
645 (f2cl-lib:array-slice rwork-%data%
650 (f2cl-lib:array-slice rwork-%data%
656 (declare (ignore var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7
659 (if (/= irt
1) (go label205
))
666 (if (and (= irfp
1) (/= tlast tn
) (= itask
2)) (go label400
))
672 (f2cl-lib:computed-goto
673 (label210 label250 label220 label230 label240
)
676 (if (< (* (- tn tout
) h
) 0.0d0
) (go label250
))
677 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
679 (f2cl-lib:array-slice rwork-%data%
685 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
687 (if (/= iflag
0) (go label627
))
691 (setf tp
(- tn
(* hu
(+ 1.0d0
(* 100.0d0 uround
)))))
692 (if (> (* (- tp tout
) h
) 0.0d0
) (go label623
))
693 (if (< (* (- tn tout
) h
) 0.0d0
) (go label250
))
697 (f2cl-lib:fref rwork-%data%
(1) ((1 lrw
)) rwork-%offset%
))
698 (if (> (* (- tn tcrit
) h
) 0.0d0
) (go label624
))
699 (if (< (* (- tcrit tout
) h
) 0.0d0
) (go label625
))
700 (if (< (* (- tn tout
) h
) 0.0d0
) (go label245
))
701 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
703 (f2cl-lib:array-slice rwork-%data%
709 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
711 (if (/= iflag
0) (go label627
))
716 (f2cl-lib:fref rwork-%data%
(1) ((1 lrw
)) rwork-%offset%
))
717 (if (> (* (- tn tcrit
) h
) 0.0d0
) (go label624
))
719 (setf hmx
(+ (abs tn
) (abs h
)))
720 (setf ihit
(<= (abs (- tn tcrit
)) (* 100.0d0 uround hmx
)))
721 (if ihit
(setf t$ tcrit
))
722 (if (and (= irfp
1) (/= tlast tn
) (= itask
5)) (go label400
))
723 (if ihit
(go label400
))
724 (setf tnext
(+ tn
(* h
(+ 1.0d0
(* 4.0d0 uround
)))))
725 (if (<= (* (- tnext tcrit
) h
) 0.0d0
) (go label250
))
726 (setf h
(* (- tcrit tn
) (- 1.0d0
(* 4.0d0 uround
))))
727 (if (= istate
2) (setf jstart -
2))
729 (if (>= (f2cl-lib:int-sub nst nslast
) mxstep
) (go label500
))
730 (setf nstd
(f2cl-lib:int-sub nst nslast
))
731 (setf nnid
(f2cl-lib:int-sub nni nni0
))
732 (if (or (< nstd
10) (= nnid
0)) (go label255
))
735 (/ (f2cl-lib:freal
(f2cl-lib:int-sub nli nli0
))
736 (f2cl-lib:freal nnid
))
740 (/ (f2cl-lib:freal
(f2cl-lib:int-sub ncfn ncfn0
))
741 (f2cl-lib:freal nstd
))
745 (/ (f2cl-lib:freal
(f2cl-lib:int-sub ncfl ncfl0
))
746 (f2cl-lib:freal nnid
))
748 (setf lavd
(> avdim
(- maxl
0.05d0
)))
749 (setf lcfn
(> rcfn
0.9d0
))
750 (setf lcfl
(> rcfl
0.9d0
))
751 (setf lwarn
(or lavd lcfn lcfl
))
752 (if (not lwarn
) (go label255
))
753 (setf nwarn
(f2cl-lib:int-add nwarn
1))
754 (if (> nwarn
10) (go label255
))
757 (f2cl-lib:f2cl-set-string msg
758 "DLSODKR- Warning. Poor iterative algorithm performance seen "
760 (xerrwd msg
60 111 0 0 0 0 0 0.0d0
0.0d0
)))
763 (f2cl-lib:f2cl-set-string msg
764 " at T = R1 by average no. of linear iterations = R2 "
766 (xerrwd msg
60 111 0 0 0 0 2 tn avdim
)))
769 (f2cl-lib:f2cl-set-string msg
770 "DLSODKR- Warning. Poor iterative algorithm performance seen "
772 (xerrwd msg
60 112 0 0 0 0 0 0.0d0
0.0d0
)))
775 (f2cl-lib:f2cl-set-string msg
776 " at T = R1 by nonlinear convergence failure rate = R2 "
778 (xerrwd msg
60 112 0 0 0 0 2 tn rcfn
)))
781 (f2cl-lib:f2cl-set-string msg
782 "DLSODKR- Warning. Poor iterative algorithm performance seen "
784 (xerrwd msg
60 113 0 0 0 0 0 0.0d0
0.0d0
)))
787 (f2cl-lib:f2cl-set-string msg
788 " at T = R1 by linear convergence failure rate = R2 "
790 (xerrwd msg
60 113 0 0 0 0 2 tn rcfl
)))
792 (dewset n itol rtol atol
793 (f2cl-lib:array-slice rwork-%data%
798 (f2cl-lib:array-slice rwork-%data%
803 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
808 (f2cl-lib:fref rwork-%data%
809 ((f2cl-lib:int-sub
(f2cl-lib:int-add i lewt
)
816 (setf (f2cl-lib:fref rwork-%data%
818 (f2cl-lib:int-add i lewt
)
823 (f2cl-lib:fref rwork-%data%
825 (f2cl-lib:int-add i lewt
)
833 (f2cl-lib:array-slice rwork-%data%
838 (f2cl-lib:array-slice rwork-%data%
843 (if (<= tolsf
1.0d0
) (go label280
))
844 (setf tolsf
(* tolsf
2.0d0
))
845 (if (= nst
0) (go label626
))
848 (if (/= (+ tn h
) tn
) (go label290
))
849 (setf nhnil
(f2cl-lib:int-add nhnil
1))
850 (if (> nhnil mxhnil
) (go label290
))
851 (f2cl-lib:f2cl-set-string msg
852 "DLSODKR- Warning.. Internal T(=R1) and H(=R2) are"
854 (xerrwd msg
50 101 0 0 0 0 0 0.0d0
0.0d0
)
855 (f2cl-lib:f2cl-set-string msg
856 " such that in the machine, T + H = T on the next step "
858 (xerrwd msg
60 101 0 0 0 0 0 0.0d0
0.0d0
)
859 (f2cl-lib:f2cl-set-string msg
860 " (H = step size). Solver will continue anyway."
862 (xerrwd msg
50 101 0 0 0 0 2 tn h
)
863 (if (< nhnil mxhnil
) (go label290
))
864 (f2cl-lib:f2cl-set-string msg
865 "DLSODKR- Above warning has been issued I1 times. "
867 (xerrwd msg
50 102 0 0 0 0 0 0.0d0
0.0d0
)
868 (f2cl-lib:f2cl-set-string msg
869 " It will not be issued again for this problem."
871 (xerrwd msg
50 102 0 1 mxhnil
0 0 0.0d0
0.0d0
)
874 (f2cl-lib:array-slice rwork-%data%
880 (f2cl-lib:array-slice rwork-%data%
885 (f2cl-lib:array-slice rwork-%data%
890 (f2cl-lib:array-slice rwork-%data%
895 (f2cl-lib:array-slice rwork-%data%
900 (f2cl-lib:array-slice rwork-%data%
905 (f2cl-lib:array-slice rwork-%data%
910 (f2cl-lib:array-slice iwork-%data%
916 (setf kgo
(f2cl-lib:int-sub
1 kflag
))
917 (f2cl-lib:computed-goto
(label300 label530 label540 label550
) kgo
)
920 (if (= ngc
0) (go label315
))
922 (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9
925 (f2cl-lib:array-slice rwork-%data%
931 (f2cl-lib:array-slice rwork-%data%
936 (f2cl-lib:array-slice rwork-%data%
941 (f2cl-lib:array-slice rwork-%data%
947 (declare (ignore var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7
950 (if (/= irt
1) (go label315
))
956 (f2cl-lib:computed-goto
957 (label310 label400 label330 label340 label350
)
960 (if (< (* (- tn tout
) h
) 0.0d0
) (go label250
))
961 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
963 (f2cl-lib:array-slice rwork-%data%
969 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
974 (if (>= (* (- tn tout
) h
) 0.0d0
) (go label400
))
977 (if (< (* (- tn tout
) h
) 0.0d0
) (go label345
))
978 (multiple-value-bind (var-0 var-1 var-2 var-3 var-4 var-5
)
980 (f2cl-lib:array-slice rwork-%data%
986 (declare (ignore var-0 var-1 var-2 var-3 var-4
))
991 (setf hmx
(+ (abs tn
) (abs h
)))
992 (setf ihit
(<= (abs (- tn tcrit
)) (* 100.0d0 uround hmx
)))
993 (if ihit
(go label400
))
994 (setf tnext
(+ tn
(* h
(+ 1.0d0
(* 4.0d0 uround
)))))
995 (if (<= (* (- tnext tcrit
) h
) 0.0d0
) (go label250
))
996 (setf h
(* (- tcrit tn
) (- 1.0d0
(* 4.0d0 uround
))))
1000 (setf hmx
(+ (abs tn
) (abs h
)))
1001 (setf ihit
(<= (abs (- tn tcrit
)) (* 100.0d0 uround hmx
)))
1003 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
1007 (setf (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
)
1008 (f2cl-lib:fref rwork-%data%
1010 (f2cl-lib:int-add i lyh
)
1015 (if (and (/= itask
4) (/= itask
5)) (go label420
))
1016 (if ihit
(setf t$ tcrit
))
1020 (setf (f2cl-lib:fref rwork-%data%
(11) ((1 lrw
)) rwork-%offset%
)
1022 (setf (f2cl-lib:fref rwork-%data%
(12) ((1 lrw
)) rwork-%offset%
) h
)
1023 (setf (f2cl-lib:fref rwork-%data%
(13) ((1 lrw
)) rwork-%offset%
)
1025 (setf (f2cl-lib:fref iwork-%data%
(11) ((1 liw
)) iwork-%offset%
)
1027 (setf (f2cl-lib:fref iwork-%data%
(12) ((1 liw
)) iwork-%offset%
)
1029 (setf (f2cl-lib:fref iwork-%data%
(13) ((1 liw
)) iwork-%offset%
)
1031 (setf (f2cl-lib:fref iwork-%data%
(14) ((1 liw
)) iwork-%offset%
)
1033 (setf (f2cl-lib:fref iwork-%data%
(15) ((1 liw
)) iwork-%offset%
)
1035 (setf (f2cl-lib:fref iwork-%data%
(19) ((1 liw
)) iwork-%offset%
)
1037 (setf (f2cl-lib:fref iwork-%data%
(20) ((1 liw
)) iwork-%offset%
)
1039 (setf (f2cl-lib:fref iwork-%data%
(21) ((1 liw
)) iwork-%offset%
)
1041 (setf (f2cl-lib:fref iwork-%data%
(22) ((1 liw
)) iwork-%offset%
)
1043 (setf (f2cl-lib:fref iwork-%data%
(23) ((1 liw
)) iwork-%offset%
)
1045 (setf (f2cl-lib:fref iwork-%data%
(24) ((1 liw
)) iwork-%offset%
)
1047 (setf (f2cl-lib:fref iwork-%data%
(25) ((1 liw
)) iwork-%offset%
)
1049 (setf (f2cl-lib:fref iwork-%data%
(10) ((1 liw
)) iwork-%offset%
)
1054 (f2cl-lib:f2cl-set-string msg
1055 "DLSODKR- At current T (=R1), MXSTEP (=I1) steps "
1057 (xerrwd msg
50 201 0 0 0 0 0 0.0d0
0.0d0
)
1058 (f2cl-lib:f2cl-set-string msg
1059 " taken on this call before reaching TOUT "
1061 (xerrwd msg
50 201 0 1 mxstep
0 1 tn
0.0d0
)
1066 (f2cl-lib:fref rwork-%data%
1067 ((f2cl-lib:int-sub
(f2cl-lib:int-add lewt i
)
1071 (f2cl-lib:f2cl-set-string msg
1072 "DLSODKR- At T(=R1), EWT(I1) has become R2 <= 0."
1074 (xerrwd msg
50 202 0 1 i
0 2 tn ewti
)
1078 (f2cl-lib:f2cl-set-string msg
1079 "DLSODKR- At T (=R1), too much accuracy requested "
1081 (xerrwd msg
50 203 0 0 0 0 0 0.0d0
0.0d0
)
1082 (f2cl-lib:f2cl-set-string msg
1083 " for precision of machine.. See TOLSF (=R2) "
1085 (xerrwd msg
50 203 0 0 0 0 2 tn tolsf
)
1086 (setf (f2cl-lib:fref rwork-%data%
(14) ((1 lrw
)) rwork-%offset%
)
1091 (f2cl-lib:f2cl-set-string msg
1092 "DLSODKR- At T(=R1) and step size H(=R2), the error"
1094 (xerrwd msg
50 204 0 0 0 0 0 0.0d0
0.0d0
)
1095 (f2cl-lib:f2cl-set-string msg
1096 " test failed repeatedly or with ABS(H) = HMIN"
1098 (xerrwd msg
50 204 0 0 0 0 2 tn h
)
1102 (f2cl-lib:f2cl-set-string msg
1103 "DLSODKR- At T (=R1) and step size H (=R2), the "
1105 (xerrwd msg
50 205 0 0 0 0 0 0.0d0
0.0d0
)
1106 (f2cl-lib:f2cl-set-string msg
1107 " corrector convergence failed repeatedly "
1109 (xerrwd msg
50 205 0 0 0 0 0 0.0d0
0.0d0
)
1110 (f2cl-lib:f2cl-set-string msg
1111 " or with ABS(H) = HMIN "
1113 (xerrwd msg
30 205 0 0 0 0 2 tn h
)
1117 (f2cl-lib:f2cl-set-string msg
1118 "DLSODKR- At T (=R1) an unrecoverable error return"
1120 (xerrwd msg
50 206 0 0 0 0 0 0.0d0
0.0d0
)
1121 (f2cl-lib:f2cl-set-string msg
1122 " was made from Subroutine PSOL "
1124 (xerrwd msg
40 206 0 0 0 0 1 tn
0.0d0
)
1130 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
1136 (f2cl-lib:fref rwork-%data%
1138 (f2cl-lib:int-add i lacor
)
1142 (f2cl-lib:fref rwork-%data%
1144 (f2cl-lib:int-add i lewt
)
1148 (if (>= big size
) (go label570
))
1152 (setf (f2cl-lib:fref iwork-%data%
(16) ((1 liw
)) iwork-%offset%
)
1155 (f2cl-lib:fdo
(i 1 (f2cl-lib:int-add i
1))
1159 (setf (f2cl-lib:fref y-%data%
(i) ((1 *)) y-%offset%
)
1160 (f2cl-lib:fref rwork-%data%
1162 (f2cl-lib:int-add i lyh
)
1167 (setf (f2cl-lib:fref rwork-%data%
(11) ((1 lrw
)) rwork-%offset%
)
1169 (setf (f2cl-lib:fref rwork-%data%
(12) ((1 lrw
)) rwork-%offset%
) h
)
1170 (setf (f2cl-lib:fref rwork-%data%
(13) ((1 lrw
)) rwork-%offset%
)
1172 (setf (f2cl-lib:fref iwork-%data%
(11) ((1 liw
)) iwork-%offset%
)
1174 (setf (f2cl-lib:fref iwork-%data%
(12) ((1 liw
)) iwork-%offset%
)
1176 (setf (f2cl-lib:fref iwork-%data%
(13) ((1 liw
)) iwork-%offset%
)
1178 (setf (f2cl-lib:fref iwork-%data%
(14) ((1 liw
)) iwork-%offset%
)
1180 (setf (f2cl-lib:fref iwork-%data%
(15) ((1 liw
)) iwork-%offset%
)
1182 (setf (f2cl-lib:fref iwork-%data%
(19) ((1 liw
)) iwork-%offset%
)
1184 (setf (f2cl-lib:fref iwork-%data%
(20) ((1 liw
)) iwork-%offset%
)
1186 (setf (f2cl-lib:fref iwork-%data%
(21) ((1 liw
)) iwork-%offset%
)
1188 (setf (f2cl-lib:fref iwork-%data%
(22) ((1 liw
)) iwork-%offset%
)
1190 (setf (f2cl-lib:fref iwork-%data%
(23) ((1 liw
)) iwork-%offset%
)
1192 (setf (f2cl-lib:fref iwork-%data%
(24) ((1 liw
)) iwork-%offset%
)
1194 (setf (f2cl-lib:fref iwork-%data%
(25) ((1 liw
)) iwork-%offset%
)
1196 (setf (f2cl-lib:fref iwork-%data%
(10) ((1 liw
)) iwork-%offset%
)
1201 (f2cl-lib:f2cl-set-string msg
1202 "DLSODKR- ISTATE(=I1) illegal."
1204 (xerrwd msg
30 1 0 1 istate
0 0 0.0d0
0.0d0
)
1205 (if (< istate
0) (go label800
))
1208 (f2cl-lib:f2cl-set-string msg
1209 "DLSODKR- ITASK (=I1) illegal."
1211 (xerrwd msg
30 2 0 1 itask
0 0 0.0d0
0.0d0
)
1214 (f2cl-lib:f2cl-set-string msg
1215 "DLSODKR- ISTATE > 1 but DLSODKR not initialized. "
1217 (xerrwd msg
50 3 0 0 0 0 0 0.0d0
0.0d0
)
1220 (f2cl-lib:f2cl-set-string msg
1221 "DLSODKR- NEQ (=I1) < 1 "
1223 (xerrwd msg
30 4 0 1
1224 (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) 0 0 0.0d0
1228 (f2cl-lib:f2cl-set-string msg
1229 "DLSODKR- ISTATE = 3 and NEQ increased (I1 to I2)."
1231 (xerrwd msg
50 5 0 2 n
1232 (f2cl-lib:fref neq-%data%
(1) ((1 *)) neq-%offset%
) 0 0.0d0
0.0d0
)
1235 (f2cl-lib:f2cl-set-string msg
1236 "DLSODKR- ITOL (=I1) illegal. "
1238 (xerrwd msg
30 6 0 1 itol
0 0 0.0d0
0.0d0
)
1241 (f2cl-lib:f2cl-set-string msg
1242 "DLSODKR- IOPT (=I1) illegal. "
1244 (xerrwd msg
30 7 0 1 iopt
0 0 0.0d0
0.0d0
)
1247 (f2cl-lib:f2cl-set-string msg
1248 "DLSODKR- MF (=I1) illegal. "
1250 (xerrwd msg
30 8 0 1 mf
0 0 0.0d0
0.0d0
)
1253 (f2cl-lib:f2cl-set-string msg
1254 "DLSODKR- MAXORD (=I1) < 0 "
1256 (xerrwd msg
30 11 0 1 maxord
0 0 0.0d0
0.0d0
)
1259 (f2cl-lib:f2cl-set-string msg
1260 "DLSODKR- MXSTEP (=I1) < 0 "
1262 (xerrwd msg
30 12 0 1 mxstep
0 0 0.0d0
0.0d0
)
1265 (f2cl-lib:f2cl-set-string msg
1266 "DLSODKR- MXHNIL (=I1) < 0 "
1268 (xerrwd msg
30 13 0 1 mxhnil
0 0 0.0d0
0.0d0
)
1271 (f2cl-lib:f2cl-set-string msg
1272 "DLSODKR- TOUT (=R1) behind T (=R2) "
1274 (xerrwd msg
40 14 0 0 0 0 2 tout t$
)
1275 (f2cl-lib:f2cl-set-string msg
1276 " Integration direction is given by H0 (=R1) "
1278 (xerrwd msg
50 14 0 0 0 0 1 h0
0.0d0
)
1281 (f2cl-lib:f2cl-set-string msg
1282 "DLSODKR- HMAX (=R1) < 0.0 "
1284 (xerrwd msg
30 15 0 0 0 0 1 hmax
0.0d0
)
1287 (f2cl-lib:f2cl-set-string msg
1288 "DLSODKR- HMIN (=R1) < 0.0 "
1290 (xerrwd msg
30 16 0 0 0 0 1 hmin
0.0d0
)
1293 (f2cl-lib:f2cl-set-string msg
1294 "DLSODKR- RWORK length needed, LENRW(=I1), exceeds LRW(=I2) "
1296 (xerrwd msg
60 17 0 2 lenrw lrw
0 0.0d0
0.0d0
)
1299 (f2cl-lib:f2cl-set-string msg
1300 "DLSODKR- IWORK length needed, LENIW(=I1), exceeds LIW(=I2) "
1302 (xerrwd msg
60 18 0 2 leniw liw
0 0.0d0
0.0d0
)
1305 (f2cl-lib:f2cl-set-string msg
1306 "DLSODKR- RTOL(I1) is R1 < 0.0 "
1308 (xerrwd msg
40 19 0 1 i
0 1 rtoli
0.0d0
)
1311 (f2cl-lib:f2cl-set-string msg
1312 "DLSODKR- ATOL(I1) is R1 < 0.0 "
1314 (xerrwd msg
40 20 0 1 i
0 1 atoli
0.0d0
)
1318 (f2cl-lib:fref rwork-%data%
1319 ((f2cl-lib:int-sub
(f2cl-lib:int-add lewt i
)
1323 (f2cl-lib:f2cl-set-string msg
1324 "DLSODKR- EWT(I1) is R1 <= 0.0 "
1326 (xerrwd msg
40 21 0 1 i
0 1 ewti
0.0d0
)
1329 (f2cl-lib:f2cl-set-string msg
1330 "DLSODKR- TOUT(=R1) too close to T(=R2) to start integration."
1332 (xerrwd msg
60 22 0 0 0 0 2 tout t$
)
1335 (f2cl-lib:f2cl-set-string msg
1336 "DLSODKR- ITASK = I1 and TOUT (=R1) behind TCUR - HU (= R2) "
1338 (xerrwd msg
60 23 0 1 itask
0 2 tout tp
)
1341 (f2cl-lib:f2cl-set-string msg
1342 "DLSODKR- ITASK = 4 or 5 and TCRIT (=R1) behind TCUR (=R2) "
1344 (xerrwd msg
60 24 0 0 0 0 2 tcrit tn
)
1347 (f2cl-lib:f2cl-set-string msg
1348 "DLSODKR- ITASK = 4 or 5 and TCRIT (=R1) behind TOUT (=R2) "
1350 (xerrwd msg
60 25 0 0 0 0 2 tcrit tout
)
1353 (f2cl-lib:f2cl-set-string msg
1354 "DLSODKR- At start of problem, too much accuracy "
1356 (xerrwd msg
50 26 0 0 0 0 0 0.0d0
0.0d0
)
1357 (f2cl-lib:f2cl-set-string msg
1358 " requested for precision of machine.. See TOLSF (=R1) "
1360 (xerrwd msg
60 26 0 0 0 0 1 tolsf
0.0d0
)
1361 (setf (f2cl-lib:fref rwork-%data%
(14) ((1 lrw
)) rwork-%offset%
)
1365 (f2cl-lib:f2cl-set-string msg
1366 "DLSODKR- Trouble in DINTDY. ITASK = I1, TOUT = R1"
1368 (xerrwd msg
50 27 0 1 itask
0 1 tout
0.0d0
)
1371 (f2cl-lib:f2cl-set-string msg
1372 "DLSODKR- NG (=I1) < 0 "
1374 (xerrwd msg
30 30 0 1 ng
0 0 0.0d0
0.0d0
)
1377 (f2cl-lib:f2cl-set-string msg
1378 "DLSODKR- NG changed (from I1 to I2) illegally, "
1380 (xerrwd msg
50 31 0 0 0 0 0 0.0d0
0.0d0
)
1381 (f2cl-lib:f2cl-set-string msg
1382 " i.e. not immediately after a root was found."
1384 (xerrwd msg
50 31 0 2 ngc ng
0 0.0d0
0.0d0
)
1387 (f2cl-lib:f2cl-set-string msg
1388 "DLSODKR- One or more components of g has a root "
1390 (xerrwd msg
50 32 0 0 0 0 0 0.0d0
0.0d0
)
1391 (f2cl-lib:f2cl-set-string msg
1392 " too near to the initial point. "
1394 (xerrwd msg
40 32 0 0 0 0 0 0.0d0
0.0d0
)
1399 (f2cl-lib:f2cl-set-string msg
1400 "DLSODKR- Run aborted.. apparent infinite loop. "
1402 (xerrwd msg
50 303 2 0 0 0 0 0.0d0
0.0d0
)
1428 (in-package #:cl-user
)
1429 #+#.
(cl:if
(cl:find-package
'#:f2cl
) '(and) '(or))
1430 (eval-when (:load-toplevel
:compile-toplevel
:execute
)
1431 (setf (gethash 'fortran-to-lisp
::dlsodkr
1432 fortran-to-lisp
::*f2cl-function-info
*)
1433 (fortran-to-lisp::make-f2cl-finfo
1434 :arg-types
'(t (array fortran-to-lisp
::integer4
(*))
1435 (array double-float
(*)) (double-float) (double-float)
1436 (fortran-to-lisp::integer4
) (array double-float
(*))
1437 (array double-float
(*)) (fortran-to-lisp::integer4
)
1438 (fortran-to-lisp::integer4
) (fortran-to-lisp::integer4
)
1439 (array double-float
(*)) (fortran-to-lisp::integer4
)
1440 (array fortran-to-lisp
::integer4
(*))
1441 (fortran-to-lisp::integer4
) t t
1442 (fortran-to-lisp::integer4
) t
1443 (fortran-to-lisp::integer4
)
1444 (array fortran-to-lisp
::integer4
(*)))
1445 :return-values
'(nil nil nil fortran-to-lisp
::t$ nil nil nil nil nil
1446 fortran-to-lisp
::istate nil nil nil nil nil nil nil
1448 :calls
'(fortran-to-lisp::dstoka fortran-to-lisp
::dvnorm
1449 fortran-to-lisp
::xerrwd fortran-to-lisp
::dintdy
1450 fortran-to-lisp
::drchek fortran-to-lisp
::dlhin
1451 fortran-to-lisp
::dewset fortran-to-lisp
::dcopy
))))