Hello Liam (& others)
I am using SBCL 1.014 and GSL with a timestamp from march of this year.
I am trying to use the lu.lisp library and cannot compile the invert-matrix example. The error message is "deleting unreachable code" at the (letm.
If I comment out the calls to lu-... and (data-inv) and do instead (data mmat), then it will compile.
I am including the transcript at the end of this message.
Any clue as to what could be wrong?
Thanks,
Mirko
CL-USER> (in-package :gsl)
#<PACKAGE "GSLL">
GSL> (defun invert-matrix (mat)
"Invert the matrix."
(letm ((mmat (matrix-double-float mat))
(dim (array-dimension mat 0))
(per (permutation dim))
(inv (matrix-double-float dim dim)))
(lu-decomp mmat per)
(lu-invert mmat per inv)
(data inv)))
; in: LAMBDA NIL
; (GSLL:LETM
; ((GSLL::MMAT (GSLL:MATRIX-DOUBLE-FLOAT GSLL::MAT))
; (GSLL::DIM (ARRAY-DIMENSION GSLL::MAT 0))
; (GSLL::PER (GSLL:PERMUTATION GSLL::DIM))
; (GSLL::INV (GSLL:MATRIX-DOUBLE-FLOAT GSLL::DIM GSLL::DIM)))
; (GSLL:LU-DECOMP GSLL::MMAT GSLL::PER)
; (GSLL:LU-INVERT GSLL::MMAT GSLL::PER GSLL::INV) (GSLL:DATA GSLL::INV))
; --> LET* UNWIND-PROTECT FLET BLOCK MULTIPLE-VALUE-BIND
; --> MULTIPLE-VALUE-CALL BLOCK SB-C::%WITHIN-CLEANUP RETURN-FROM PROGN
; --> UNLESS COND IF PROGN SETF LET*
; ==>
; GSLL::PER
;
; note: deleting unreachable code
; ==>
; GSLL::INV
;
; note: deleting unreachable code
;
; compilation unit finished
; printed 2 notes
STYLE-WARNING: redefining INVERT-MATRIX in DEFUN
INVERT-MATRIX