This works for me with cmucl.
For sbcl the compilation of breaks at dgesvd.
with
;; loading
#P"/usr/local/share/maxima/5.11.0cvs/share/lapack/lapack/dgesdd.fasl"
;
; compilation unit aborted
; caught 1 fatal ERROR condition
;
; compilation unit aborted
; caught 1 fatal ERROR condition
Load failed
for /usr/local/share/maxima/5.11.0cvs/share/lapack/load-lapack.lisp
-- an error. To debug this try debugmode(true);
I commented dgesvd in lapack.system temporarily.
After this lapack is loaded for sbcl as well
(%i2) a:matrix([0.35d0,0.09d0,-0.44d0,0.25d0],[0.45d0,0.07d0,-0.33d0,-0.32d0],
[-0.14d0,-0.54d0,-0.03d0,-0.13d0],[-0.17d0,0.35d0,0.17d0,0.11d0]);
(%i3) dgeev(a);
(%o3) [[.7994821225862083, .4007924719897547 %i - .09941245329507463,
- .4007924719897547 %i - .09941245329507463, - .1006572159960586]]
next I did
(%i2) :lisp(compile-file "lapack/dgesvd.lisp");
; compiling
file "/usr/local/share/maxima/5.11.0cvs/share/lapack/lapack/dgesvd.lisp"
(written 01 DEC 2006 11:13:25 AM):
; compiling (IN-PACKAGE "LAPACK")
; compiling (LET* (# #) ...)
; compiling (IN-PACKAGE #:CL-USER)
; /usr/local/share/maxima/5.11.0cvs/share/lapack/lapack/dgesvd.fasl written
; compilation finished in 0:00:49
/usr/local/share/maxima/5.11.0cvs/share/lapack/lapack/dgesvd.fasl
NIL
NIL
And
(%i2) load("lapack.mac");
;; loading
#P"/usr/local/share/maxima/5.11.0cvs/share/lapack/lapack/dgesvd.fasl"
;; loading
#P"/usr/local/share/maxima/5.11.0cvs/share/lapack/lapack/ddisna.fasl"
;; loading #P"/usr/local/share/maxima/5.11.0cvs/share/lapack/eigensys.fasl"
(%o2)
!
I was in puzzle. Why dgesvd could not be compiled together with others
modules?
I found that in lapack.system definitions for dgesvd routine have option
(:byte-compile t) while others routines have no it.
I commented it out. After this compilation and loading of lapack for sbcl was
successful from the begining. I wish I know lisp better to avoid this blind
changes
Raymond Toy wrote:
> Valery Pipin wrote:
> > Dear Ray
> >
> > With cmucl-19c and maxima cvs compilation was OK!
> > However to proceed I had to change single-float definitions to
> > double-float in blas/isamax,icamax.lisp and lapack/ieeeck.lisp
>
> You shouldn't have to do that. I made a mistake in generating the
> files. Maxima uses *read-default-float-format* set to double-float, but
> I generated the files assuming single-float. I've uploaded
> lapack-maxima-2.tar.bz2 that fixes this. I built this with cmucl (on
> ppc) without problems.
>
> Happy Holidays
>
> Ray