Support RETURN-FROM in DEF%TR forms
[maxima.git] / share / odepack / odepack.system
blobfa4b26e286e15a260ea2d7369b7881ea622dd906
1 ;;; -*- Mode: lisp -*-
3 (mk:defsystem odepack-package
4   :source-pathname (maxima::maxima-load-pathname-directory)
5   :binary-pathname (maxima::maxima-objdir "share" "odepack")
6   :source-extension "lisp"
7   :components
8   ((:module "package"
9     :source-pathname "."
10     :components
11     ((:file "package")))
12    (:module "common-block"
13     :source-pathname "src"
14     :source-extension "cmn"
15     :components
16     ((:file "dls001")))))
18 (mk:defsystem odepack-dlsode
19   :source-pathname (maxima::maxima-load-pathname-directory)
20   :binary-pathname (maxima::maxima-objdir "share" "odepack")
21   :source-extension "lisp"
22   :depends-on ("odepack-package")
23   :components
24   ((:module "src"
25     :components
26     ((:file "dlsode"
27       :depends-on ("dstode" "xerrwd" "dintdy" "dvnorm" "dewset"))
28      (:file "dintdy"
29       :depends-on ("xerrwd"))
30      (:file "dstode"
31       :depends-on ("dvnorm" "dcfode"))
32      (:file "dgbfa"
33       :depends-on ("idamax" "dscal" "dvnorm"))
34      (:file "dcfode")
35      (:file "dprepj"
36       :depends-on ("dgbfa" "dgefa" "dvnorm"))
37      (:file "dsolsy"
38       :depends-on ("dgbsl" "dgesl"))
39      (:file "dewset")
40      (:file "dvnorm")
41      (:file "dsrcom")
42      (:file "dgefa"
43       :depends-on ("idamax" "dscal" "daxpy"))
44      (:file "dgesl"
45       :depends-on ("daxpy" "ddot"))
46      (:file "dgbsl"
47       :depends-on ("daxpy" "ddot"))
48      (:file "dscal")
49      (:file "ddot")
50      (:file "idamax")
51      (:file "dumach"
52       :depends-on ("dumsum"))
53      (:file "xerrwd"
54       :depends-on ("ixsav"))
55      (:file "xsetun"
56       :depends-on ("ixsav"))
57      (:file "xsetf"
58       :depends-on ("ixsav"))
59      (:file "ixsav")
60      (:file "iumach")
61      (:file "daxpy")
62      (:file "dumsum")))))
64 (mk:defsystem maxima-odepack
65   :source-pathname (maxima::maxima-load-pathname-directory)
66   :binary-pathname (maxima::maxima-objdir "share" "odepack")
67   :depends-on ("odepack")
68   :components
69   ((:file "dlsode-interface")))
71 (mk:defsystem maxima-dlsode
72   :source-pathname (maxima::maxima-load-pathname-directory)
73   :binary-pathname (maxima::maxima-objdir "share" "odepack")
74   :depends-on ("odepack-dlsode")
75   :source-extension "lisp"
76   :components
77   ((:file "dlsode-interface")))
79 #+nil
80 (mk:defsystem odepack
81   :source-pathname (maxima::maxima-load-pathname-directory)
82   :binary-pathname (maxima::maxima-objdir "share" "odepack")
83   :components
84   ((:module package
85     :source-pathname ""
86     :components
87     ((:file "package")))
88    (:module src
89     :depends-on ("package")
90     :components
91             ((:file "adjlr"
92               :depends-on ("nroc" "nsfc" "nnfc" "nnsc"))
93              (:file "cdrv"
94               :depends-on ("nntc"))
95              (:file "cntnzu")
96              (:file "daigbt"
97               :depends-on ("ddecbt" "dsolbt"))
98              (:file "dainvg"
99               :depends-on ("dgefa" "dgesl" "dgbfa" "dgbsl"))
100              (:file "dainvgs")
101              (:file "datp"
102               :depends-on ("dvnorm" "dcopy"))
103              (:file "datv"
104               :depends-on ("dcopy" "dnrm2" "dcopy"))
105              (:file "daxpy")
106              (:file "dbnorm")
107              (:file "dcfode")
108              (:file "dcopy")
109              (:file "ddecbt"
110               :depends-on ("dgefa" "dgesl" "ddot"))
111              (:file "ddot")
112              (:file "dewset")
113              (:file "dfnorm")
114              (:file "dgbfa"
115               :depends-on ("idamax" "dscal" "daxpy"))
116              (:file "dgbsl"
117               :depends-on ("daxpy"))
118              (:file "dgefa"
119               :depends-on ("idamax" "dscal" "daxpy"))
120              (:file "dgesl"
121               :depends-on ("daxpy" "ddot"))
122              (:file "dhefa"
123               :depends-on ("idamax"))
124              (:file "dhels")
125              (:file "dheqr")
126              (:file "dhesl")
127              (:file "dintdy"
128               :depends-on ("xerrwd"))
129              (:file "diprep"
130               :depends-on ("dprep"))
131              ;; This routine takes a slice of a double precision array and
132              ;; passes it to dprepi as a integer array. That won't work in
133              ;; Lisp!
134              (:file "diprepi"
135               :depends-on ("dprepi"))
136              (:file "dlhin"
137               :depends-on ("dvnorm"))
138              (:file "dlsoda"
139               :depends-on ("xerrwd" "dmnorm" "dstoda"))
140              (:file "dlsodar"
141               :depends-on ("drchek"))
142              (:file "dlsode"
143               :depends-on ("dstode"))
144              (:file "dlsodes"
145               :depends-on ("dstode" "dewset"))
146              (:file "dlsodi"
147               :depends-on ("dstodi" "dainvg"))
148              (:file "dlsodis"
149               :depends-on ("dstodi" "dainvgs"))
150              (:file "dlsodkr"
151               :depends-on ("drchek" "dstoka"))
152              (:file "dlsodpk"
153               :depends-on ("dstodpk"))
154              (:file "dlsoibt"
155               :depends-on ("dstodi"))
156              (:file "dmnorm")
157              (:file "dnrm2")
158              (:file "dorthog")
159              (:file "dpcg")
160              (:file "dpcgs")
161              (:file "dpjibt")
162              (:file "dpkset")
163              (:file "dprep"
164               :depends-on ("jgroup" "odrv"))
165              (:file "dprepi"
166               :depends-on ("jgroup" "odrv"))
167              (:file "dprepj")
168              (:file "dprepji")
169              (:file "dprja")
170              (:file "dprjis")
171              (:file "dprjs")
172              (:file "drchek"
173               :depends-on ("droots"))
174              (:file "droots")
175              (:file "dscal")
176              (:file "dsetpk")
177              (:file "dslsbt")
178              (:file "dsolbt")
179              (:file "dsolpk"
180               :depends-on ("dspiom" "dspigmr" "dusol"))
181              (:file "dsolss")
182              (:file "dsolsy")
183              (:file "dspigmr")
184              (:file "dspiom")
185              (:file "dsrcar")
186              (:file "dsrckr")
187              (:file "dsrcma")
188              (:file "dsrcms")
189              (:file "dsrcom")
190              (:file "dsrcpk")
191              (:file "dstoda")
192              (:file "dstode")
193              (:file "dstodi")
194              (:file "dstodpk"
195               :depends-on ("dpkset" "dsolpk"))
196              (:file "dstoka"
197               :depends-on ("dsetpk" "dsolpk"))
198              (:file "dumach"
199               :depends-on ("dumsum"))
200              (:file "dumsum")
201              (:file "dusol")
202              (:file "dvnorm")
203              (:file "idamax")
204              (:file "iumach")
205              (:file "ixsav")
206              (:file "jgroup")
207              (:file "md"
208               :depends-on ("mdi" "mdm" "mdp" "mdu"))
209              (:file "mdi")
210              (:file "mdm")
211              (:file "mdp")
212              (:file "mdu")
213              (:file "nnfc")
214              (:file "nnsc")
215              (:file "nntc")
216              (:file "nroc")
217              (:file "nsfc")
218              (:file "odrv"
219               :depends-on ("sro" "md"))
220              (:file "sro")
221              (:file "xerrwd"
222               :depends-on ("ixsav"))
223              (:file "xsetf")
224              (:file "xsetun")))))
228 ;;; Demo programs
230 ;;; Note: Each of the demos should probably be run in a separate Lisp
231 ;;; instance because some of the demos define functions with the same
232 ;;; name but different parameters.  This will really confuse the
233 ;;; generated code, because the generated code uses knowledge of the
234 ;;; function to generate the call.
236 ;; (opkdemo1)
238 ;; Output matches Fortran code.
239 (mk:defsystem odedemo-lsode
240     :source-pathname (translate-logical-pathname "odepack:demo1")
241     :binary-pathname (translate-logical-pathname "odepack:demo1")
242     :source-extension "f"
243     :language :f2cl
244     :compiler-options (:common-as-array t)
245     :depends-on ("odepack")
246     :components
247     ((:file "opkdemo1")
248      (:file "f1")
249      (:file "jac1")
250      (:file "f2")
251      (:file "jac2")
252      (:file "edit2")))
255 ;; This won't work because opkdemo2 equivalences two arrays together.
256 ;; f2cl doesn't know how to handle that yet.
257 (mk:defsystem odedemo-lsodes
258     :source-pathname (translate-logical-pathname "odepack:")
259     :binary-pathname (translate-logical-pathname "odepack:lib")
260     :source-extension "f"
261     :language :f2cl
262     :compiler-options (:common-as-array t)
263     :depends-on ("odepack")
264     :components
265     ((:file "opkdemo2")))
267 ;; (opkdemo3)
269 ;; Output matches Fortran code.
270 (mk:defsystem odedemo-lsoda
271     :source-pathname (translate-logical-pathname "odepack:demo3")
272     :binary-pathname (translate-logical-pathname "odepack:demo3")
273     :source-extension "f"
274     :language :f2cl
275     :compiler-options (:common-as-array t)
276     :depends-on ("odepack")
277     :components
278     ((:file "opkdemo3")
279      (:file "f1")
280      (:file "jac1")
281      (:file "f2")
282      (:file "jac2")
283      (:file "edit2")))
285 ;; (opkdemo4)
287 ;; Output matches Fortran code.
288 (mk:defsystem odedemo-lsodar
289     :source-pathname (translate-logical-pathname "odepack:demo4")
290     :binary-pathname (translate-logical-pathname "odepack:demo4")
291     :source-extension "f"
292     :language :f2cl
293     :compiler-options (:common-as-array t)
294     :depends-on ("odepack")
295     :components
296     ((:file "opkdemo4")
297      (:file "f1")
298      (:file "gr1")
299      (:file "f2")
300      (:file "jac2")
301      (:file "gr2")))
303 ;; (opkdemo5)
305 ;; This test takes quite a while to run.  Probably could be optimized
306 ;; more if we were more careful about array declarations.  Assumption
307 ;; untested, though.
309 ;; This seems to work, and the output matches the Fortran output,
310 ;; except the test with mf = 29 isn't printed out.  Don't know why.
312 ;; The output is placed in demout in the directory where this is run.
313 ;; Compare this to demo-lsodpk.out
314 (mk:defsystem odedemo-lsodpk
315     :source-pathname (translate-logical-pathname "odepack:demo5")
316     :binary-pathname (translate-logical-pathname "odepack:demo5")
317     :source-extension "f"
318     :language :f2cl
319     :compiler-options (:common-as-array t :declare-common t)
320     :depends-on ("odepack")
321     :components
322     ((:file "opkdemo5")
323      (:file "setpar")
324      (:file "gset")
325      (:file "cinit")
326      (:file "outweb")
327      (:file "fweb")
328      (:file "webr")
329      (:file "jacbg")
330      (:file "fbg")
331      (:file "solsbg")
332      (:file "gs")))
334 ;; This seems to work.
335 (mk:defsystem odedemo-lsodkr
336     :source-pathname (translate-logical-pathname "odepack:")
337     :binary-pathname (translate-logical-pathname "odepack:lib")
338     :source-extension "f"
339     :language :f2cl
340     :compiler-options (:common-as-array t :declare-common t)
341     :depends-on ("odepack")
342     :components
343     ((:file "opkdemo6")))
346 ;; This runs and the expected output seems ok.
347 (mk:defsystem odedemo-lsodi
348     :source-pathname (translate-logical-pathname "odepack:demo7")
349     :binary-pathname (translate-logical-pathname "odepack:demo7")
350     :source-extension "f"
351     :language :f2cl
352     :compiler-options (:common-as-array t :declare-common t)
353     :depends-on ("odepack")
354     :components
355     ((:file "opkdemo7"
356             :depends-on ("elkup"))
357      (:file "gfun")
358      (:file "res"
359             :depends-on ("gfun"))
360      (:file "addabd")
361      (:file "addafl")
362      (:file "jacbd")
363      (:file "jacfl")
364      (:file "elkup")))
366 ;; This seems to work
367 (mk:defsystem odedemo-lsoibt
368     :source-pathname (translate-logical-pathname "odepack:demo8")
369     :binary-pathname (translate-logical-pathname "odepack:demo8")
370     :source-extension "f"
371     :language :f2cl
372     :compiler-options (:common-as-array t :declare-common t)
373     :depends-on ("odepack")
374     :components
375     ((:file "opkdemo8"
376             :depends-on ("setic"
377                          "edit"
378                          "maxerr"))
379      (:file "addabt")
380      (:file "edit")
381      (:file "gfun")
382      (:file "jacbt")
383      (:file "maxerr")
384      (:file "res"
385             :depends-on ("subav"
386                          "gfun"))
387      (:file "setic")
388      (:file "subav")
389      ))
391 ;; Doesn't work.  DIPREPI takes a double precision array and slices it
392 ;; up and passes it to DPREPI which wants integer arrays.  That ain't
393 ;; gonna work in Lisp!
394 (mk:defsystem odedemo-lsodis
395     :source-pathname (translate-logical-pathname "odepack:")
396     :binary-pathname (translate-logical-pathname "odepack:lib")
397     :source-extension "f"
398     :language :f2cl
399     :compiler-options (:common-as-array t :declare-common t)
400     :depends-on ("odepack")
401     :components
402     ((:file "opkdemo9")))