Add some basic letsimp tests based on bug #3950
[maxima.git] / share / lapack / lapack-lisp.system
blobff87f432ec7039dc643f15e0936f84b7897b9339
1 ;; -*- Mode: lisp -*-
3 ;;; System to convert the Fortran code to Lisp
4 ;;;
5 ;;; How to convert the Fortran code to Lisp for maxima.
6 ;;;
7 ;;; 1. Get f2cl, which is available via quicklisp:
8 ;;;      (ql:quickload "f2cl")
9 ;;; 2. Run
10 ;;;     (mk:oos "lapack-lisp" :compile :force t)
11 ;;;
12 ;;; This should generate all of the Lisp code.
14 (mk:define-language :f2cl-lisp
15     :compiler #'f2cl:f2cl
16     :loader #'identity
17     :source-extension "f"
18     :binary-extension "lisp")
20 (defparameter *lapack-root* (maxima::maxima-load-pathname-directory))
22 (mk:defsystem "lapack-package"
23   :source-pathname *lapack-root*
24   :depends-on ("blas-package")
25   :components
26   ((:module lapack
27             :components
28             (:file "lapack-package"))))
30 (mk:defsystem "lapack-lisp"
31   :source-pathname (merge-pathnames "./lapack/" *lapack-root*)
32   :binary-pathname (merge-pathnames "./lapack/" *lapack-root*)
33   :depends-on ("lapack-package" "blas-lisp")
34   :components
35   (
36    (:module fortran
37             :binary-pathname "."
38             :language :f2cl-lisp
39             :compiler-options (:package :lapack
40                                :float-format double-float)
41             :compile-only t
42             :components
43             ((:file "dgeev"
44                     :depends-on ("dlartg" "dlapy2" "dgebak" "dtrevc" "dhseqr"
45                                           "dorghr" "dlacpy" "dgehrd" "dgebal"
46                                           "dlascl" "dlange" "dlabad" "dlamch"
47                                           "ilaenv"))
48              (:file "dgebak")
49              (:file "dgebal")
50              (:file "dgehrd"
51                     :depends-on ("dlahrd" "dlarfb" "dgehd2" "ilaenv"))
52              (:file "dhseqr"
53                     :depends-on ("dlarfx" "dlarfg" "dlapy2" "dlacpy" "dlanhs"
54                                           "dlabad" "dlamch" "dlahqr" "ilaenv"
55                                           "dlaset"))
56              (:file "dlabad")
57              (:file "dlacpy")
58              (:file "dlamch"
59                     :depends-on ("dlamc2" "dlamc3" "dlamc4" "dlamc5"))
60              (:file "dlamc1"
61                     :depends-on ("dlamc3"))
62              (:file "dlamc2"
63                     :depends-on ("dlamc1" "dlamc3" "dlamc4" "dlamc5"))
64              (:file "dlamc3")
65              (:file "dlamc4")
66              (:file "dlamc5")
67              (:file "dlange"
68                     :depends-on ("dlassq"))
69              (:file "dlapy2")
70              (:file "dlartg"
71                     :depends-on ("dlamch"))
72              (:file "dlascl"
73                     :depends-on ("dlamch"))
74              (:file "dorghr"
75                     :depends-on ("dorgqr" "ilaenv"))
76              (:file "dtrevc"
77                     :depends-on ("dlabad" "dlamch" "dlaln2"))
78              (:file "ilaenv"
79                     :depends-on ("ieeeck"))
80              (:file "dlahrd"
81                     :depends-on ("dlarfg"))
82              (:file "dlarfb")
83              (:file "dgehd2"
84                     :depends-on ("dlarfg" "dlarf"))
85              (:file "dlaset")
86              (:file "dlahqr"
87                     :depends-on ("dlanhs" "dlarfg" "dlanv2" "dlabad" "dlamch"))
88              (:file "dlanhs"
89                     :depends-on ("dlassq"))
90              (:file "dlarfg"
91                     :depends-on ("dlapy2" "dlamch"))
92              (:file "dlarfx")
93              (:file "dlassq")
94              (:file "dorgqr"
95                     :depends-on ("dorg2r" "dlarft" "dlarfb" "ilaenv"))
96              (:file "dlaln2"
97                     :depends-on ("dladiv"
98                                  "dlamch"))
99              (:file "ieeeck")
100              (:file "dlarf")
101              (:file "dlanv2"
102                     :depends-on ("dlapy2" "dlamch"))
103              (:file "dorg2r"
104                     :depends-on ("dlarf"))
105              (:file "dlarft")
106              (:file "dladiv")
108              ;; DGEEVX
109              (:file "dgeevx"
110                     :depends-on ("dlartg" "dlapy2" "dgebak" "dtrsna" "dtrevc"
111                                           "dhseqr" "dorghr" "dlacpy" "dgehrd"
112                                           "dgebal" "dlascl" "dlange" "dlabad"
113                                           "dlamch" "ilaenv"))
114              (:file "dtrsna"
115                     :depends-on ("dtrexc" "dlacon" "dlaqtr"
116                                           "dlacpy" "dlapy2" "dlamch"))
117              (:file "dtrexc"
118                     :depends-on ("dlaexc"))
119              (:file "dlacon")
120              (:file "dlaqtr"
121                     :depends-on ("dladiv" "dlaln2" "dlange" "dlamch"))
122              (:file "dlaexc"
123                     :depends-on ("dlasy2" "dlanv2" "dlarfg" "dlamch" "dlange"
124                                           "dlacpy" "dlartg"))
125              (:file "dlasy2"
126                     :depends-on ("dlamch"))
128              ;; DGESV
129              (:file "dgesv"
130                     :depends-on ("dgetrf" "dgetrs"))
131              (:file "dgetrf"
132                     :depends-on ("dgetf2" "dlaswp" "ilaenv"))
133              (:file "dgetrs"
134                     :depends-on ("dlaswp"))
135              (:file "dgetf2")
136              (:file "dlaswp")
138              ;; DGESDD
139              (:file "dgesdd"
140                     :depends-on ("dorglq" "dgelqf" "dorgbr" "dormbr" "dorgqr"
141                                           "dlacpy" "dbdsdc" "dgebrd" "dlaset"
142                                           "dgeqrf" "dlascl" "dlange" "dlamch"
143                                           "ilaenv"))
144              (:file "dbdsdc"
145                     :depends-on ("dlasr" "dlasda" "dlasd0" "dlamch" "dlascl"
146                                          "dlanst" "dlaset" "dlasdq"
147                                          "dlartg" "ilaenv"))
148              (:file "dgebrd"
149                     :depends-on ("dlabrd" "dgebd2" "ilaenv"))
150              (:file "dgelqf"
151                     :depends-on ("dgelq2" "dlarfb" "dlarft" "ilaenv"))
152              (:file "dorgbr"
153                     :depends-on ("dorglq" "dorgqr" "ilaenv"))
154              (:file "dorglq"
155                     :depends-on ("dorgl2" "dlarfb" "dlarft" "ilaenv"))
156              (:file "dorgl2"
157                     :depends-on ("dlarf"))
158              (:file "dormbr"
159                     :depends-on ("dormqr" "dormlq" "ilaenv"))
160              (:file "dlasdq"
161                     :depends-on ("dlasr" "dbdsqr" "dlartg"))
162              (:file "dlanst"
163                     :depends-on ("dlassq"))
164              (:file "dlasd0"
165                     :depends-on ("dlasdt" "dlasd1" "dlasdq"))
166              (:file "dlasda"
167                     :depends-on ("dlasd6" "dlaset" "dlasdq" "dlasdt"))
168              (:file "dlasr")
169              (:file "dlabrd"
170                     :depends-on ("dlarfg"))
171              (:file "dgebd2"
172                     :depends-on ("dlarf" "dlarfg"))
173              (:file "dgelq2"
174                     :depends-on ("dlarf" "dlarfg"))
175              (:file "dormqr"
176                     :depends-on ("dorm2r" "dlarfb" "dlarft" "ilaenv"))
177              (:file "dormlq"
178                     :depends-on ("dorml2" "dlarfb" "dlarft" "ilaenv"))
179              (:file "dgeqrf"
180                     :depends-on ("dgeqr2" "dlarfb" "dlarft" "ilaenv"))
181              (:file "dbdsqr"
182                     :depends-on ("dlasq1" "dlasv2" "dlas2" "dlasr" "dlartg"
183                                           "dlamch"))
184              (:file "dlasq1"
185                     :depends-on ("dlas2" "dlasrt" "dlasq2" "dlascl"))
186              (:file "dlasv2"
187                     :depends-on ("dlamch"))
188              (:file "dlas2")
189              (:file "dlasdt")
190              (:file "dlasd1"
191                     :depends-on ("dlasd2" "dlasd3" "dlamrg" "dlascl"))
192              (:file "dlasrt")
193              (:file "dlasq2"
194                     :depends-on ("dlasq3" "ilaenv" "dlasrt" "dlamch"))
195              (:file "dlasd2"
196                     :depends-on ("dlamrg" "dlacpy" "dlaset" "dlapy2" "dlamch"
197                                           "dlamrg"))
198              (:file "dlasd3"
199                     :depends-on ("dlasd4" "dlacpy" "dlascl" "dlamch"))
200              (:file "dlamrg")
201              (:file "dlasd6"
202                     :depends-on ("dlasd7" "dlasd8"))
203              (:file "dorml2")
204              (:file "dgeqr2"
205                     :depends-on ("dlarf" "dlarfg"))
206              (:file "dorm2r"
207                     :depends-on ("dlarf"))
208              (:file "dlasd4"
209                     :depends-on ("dlasd5" "dlaed6"))
210              (:file "dlasd7"
211                     :depends-on ("dlapy2" "dlamch" "dlamrg"))
212              (:file "dlasd8"
213                     :depends-on ("dlasd4" "dlaset" "dlascl" "dlamch"))
214              (:file "dlasq3"
215                     :depends-on ("dlasq4" "dlasq5" "dlasq6" "dlamch"))
216              (:file "dlasq4")
217              (:file "dlasq5")
218              (:file "dlasq6"
219                     :depends-on ("dlamch"))
220              (:file "dlasd5")
221              (:file "dlaed6"
222                     :depends-on ("dlamch"))
224              ;; DGESVD
225              (:file "dgesvd"
226                     :depends-on ("dorglq" "dgelqf" "dormbr" "dorgqr" "dlacpy"
227                                           "dbdsqr" "dorgbr" "dgebrd" "dlaset"
228                                           "dgeqrf" "dlascl" "dlange" "dlamch"
229                                           "ilaenv"))
231              ;; For condition numbers of the singular vectors
232              (:file "ddisna")
233              
234              (:file "zlange"
235                     :depends-on ("zlassq"))
236              (:file "zlassq")
237              ;; Complex eigen problems
238              (:file "zgeev"
239                     :depends-on ("zhseqr" "zlange" "zlascl" "zgebal" "zlacpy" "zunghr"
240                                           "ztrevc" "zgebak" "zgehrd"))
241              (:file "zhseqr"
242                     :depends-on ("zlaqr0" "zlaset" "zlahqr" "zlacpy"))
243              (:file "zlange"
244                     :depends-on ("zlassq"))
245              (:file "zlascl"
246                     :depends-on ("disnan"))
247              (:file "zgebal")
248              (:file "zlacpy"
249                     :depends-on ("disnan"))
250              (:file "zunghr"
251                     :depends-on ("zungqr"))
252              (:file "ztrevc"
253                     :depends-on ("zlatrs"))
254              (:file "zgebak"
255                     :depends-on ("zlatrs"))
256              (:file "zlatrs"
257                     :depends-on ("zladiv"))
258              (:file "zungqr"
259                     :depends-on ("zung2r" "zlarft" "zlarfb"))
260              (:file "disnan"
261                     :depends-on ("dlaisnan"))
262              (:file "dlaisnan")
263              (:file "zlassq")
264              (:file "zladiv")
265              (:file "zung2r"
266                     :depends-on ("zlarf"))
267              (:file "zlarft"
268                     :depends-on ("zlacgv"))
269              (:file "zlarfb"
270                     :depends-on ("ilazlr" "ilazlc" "zlacgv"))
271              (:file "ilazlr")
272              (:file "ilazlc")
273              (:file "zlacgv")
274              (:file "zlarf"
275                     :depends-on ("ilazlc" "ilazlr"))
276              (:file "zlaqr0"
277                     :depends-on ("zlahqr" "zlaqr3" "zlaqr4" "zlaqr5" "zlacpy"))
278              (:file "zlaset")
279              (:file "zlaqr3"
280                     :depends-on ("zgehrd" "zunmhr" "zlahqr" "ztrexc" "zlarfg"
281                                           "zlaqr4" "zlacpy" "zlaset"))
282              (:file "zlaqr4"
283                     :depends-on ("zlaqr2" "zlahqr" "zlacpy" "zlaqr5"))
284              (:file "zlaqr5"
285                     :depends-on ("zlaqr1" "zlarfg" "zlaset" "zlacpy"))
286              (:file "zlaqr1")
287              (:file "zlaqr2"
288                     :depends-on ("zunmhr" "ztrexc" "zlacpy" "zlaset"))
289              (:file "zlarfg"
290                     :depends-on ("dlapy3" "zladiv"))
291              (:file "zlahqr"
292                     :depends-on ("zlarfg" "zladiv"))
293              (:file "zgehrd"
294                     :depends-on ("zlahr2" "zgehd2" "zlarfb"))
295              (:file "zunmhr"
296                     :depends-on ("zunmqr"))
297              (:file "ztrexc"
298                     :depends-on ("zlartg" "zrot" "zunm2r"))
299              (:file "dlapy3")
300              (:file "zlartg")
301              (:file "zrot")
302              (:file "zunmqr"
303                     :depends-on ("zunm2r" "zlarft" "zlarfb"))
304              (:file "zlahr2"
305                     :depends-on ("zlacgv" "zlacpy"))
306              (:file "zgehd2"
307                     :depends-on ("zlarfg" "zlarf"))
308              (:file "zunm2r")
309              ;; zheev
310              (:file "zheev"
311               :depends-on ("dsterf" "zhetrd" "zlanhe" "zsteqr" "zungtr"))
312              (:file "dsterf"
313               :depends-on ("dlae2"))
314              (:file "zhetrd"
315               :depends-on ("zlatrd" "zhetd2"))
316              (:file "zsteqr"
317               :depends-on ("dlaev2" "zlasr" "dlae2"))
318              (:file "zlanhe")
319              (:file "zungtr"
320               :depends-on ("zungql"))
321              (:file "dlae2")
322              (:file "dlaev2")
323              (:file "zhetd2")
324              (:file "zlasr")
325              (:file "zlatrd")
326              (:file "zungql"
327               :depends-on ("zung2l"))
328              (:file "zung2l")
329              ))))
331 (mk:defsystem blas-package
332   :source-pathname *lapack-root*
333   :components
334   ((:module blas
335             :components
336             ((:file "blas-package")))))
338 (mk:defsystem blas-lisp
339   :source-pathname (merge-pathnames "./blas/" *lapack-root*)
340   :source-extension "f"
341   :language :f2cl-lisp
342   :depends-on ("blas-package")
343   :components
344   ((:module fortran
345             :binary-pathname "."
346             :compiler-options (:package :blas
347                                :float-format double-float)
348             :compile-only t
349             :components
350             ((:file "daxpy")
351              (:file "dcopy")
352              (:file "ddot")
353              (:file "dnrm2")
354              (:file "dscal")
355              (:file "idamax")
357              (:file "dasum")
358              (:file "dcabs1")
359              (:file "dgbmv"
360                     :depends-on ("lsame" "xerbla"))
361              (:file "dgemm"
362                     :depends-on ("lsame" "xerbla"))
363              (:file "dgemv"
364                     :depends-on ("lsame" "xerbla"))
365              (:file "dger"
366                     :depends-on ("xerbla"))
367              (:file "drot")
368              (:file "drotg")
369              (:file "dsbmv"
370                     :depends-on ("lsame" "xerbla"))
371              (:file "dspmv"
372                     :depends-on ("lsame" "xerbla"))
373              (:file "dspr"
374                     :depends-on ("lsame" "xerbla"))
375              (:file "dspr2"
376                     :depends-on ("lsame" "xerbla"))
377              (:file "dswap")
378              (:file "dsymm"
379                     :depends-on ("lsame" "xerbla"))
380              (:file "dsymv"
381                     :depends-on ("lsame" "xerbla"))
382              (:file "dsyr"
383                     :depends-on ("lsame" "xerbla"))
384              (:file "dsyr2"
385                     :depends-on ("lsame" "xerbla"))
386              (:file "dsyr2k"
387                     :depends-on ("lsame" "xerbla"))
388              (:file "dsyrk"
389                     :depends-on ("lsame" "xerbla"))
390              (:file "dtbmv"
391                     :depends-on ("lsame" "xerbla"))
392              (:file "dtbsv"
393                     :depends-on ("lsame" "xerbla"))
394              (:file "dtpmv"
395                     :depends-on ("lsame" "xerbla"))
396              (:file "dtpsv"
397                     :depends-on ("lsame" "xerbla"))
398              (:file "dtrmm"
399                     :depends-on ("lsame" "xerbla"))
400              (:file "dtrmv"
401                     :depends-on ("lsame" "xerbla"))
402              (:file "dtrsm"
403                     :depends-on ("lsame" "xerbla"))
404              (:file "dtrsv"
405                     :depends-on ("lsame" "xerbla"))
406              (:file "dzasum"
407                     :depends-on ("dcabs1"))
408              (:file "dznrm2")
409              (:file "icamax")
410              (:file "isamax")
411              (:file "izamax"
412                     :depends-on ("dcabs1"))
413              (:file "lsame")
414              (:file "xerbla")
416              ;; Complex versions.
417              (:file "zaxpy"
418                     :depends-on ("dcabs1"))
419              (:file "zcopy")
420              (:file "zdotc")
421              (:file "zdotu")
422              (:file "zdscal")
423              (:file "zgbmv")
424              (:file "zgemm")
425              (:file "zgemv")
426              (:file "zgerc")
427              (:file "zgeru")
428              (:file "zhbmv")
429              (:file "zhemm")
430              (:file "zhemv")
431              (:file "zher")
432              (:file "zher2")
433              (:file "zher2k")
434              (:file "zherk")
435              (:file "zhpmv")
436              (:file "zhpr")
437              (:file "zhpr2")
438              (:file "zrotg")
439              (:file "zscal")
440              (:file "zswap")
441              (:file "zsymm")
442              (:file "zsyr2k")
443              (:file "zsyrk")
444              (:file "ztbmv")
445              (:file "ztbsv")
446              (:file "ztpmv")
447              (:file "ztpsv")
448              (:file "ztrmm")
449              (:file "ztrmv")
450              (:file "ztrsm")
451              (:file "ztrsv")
452              ))))