[Openmcl-devel] Error when setting a value in a matrix unless safety 3

Stas Boukarev stassats at gmail.com
Tue May 12 15:45:04 PDT 2009

Keith James <kdj at sanger.ac.uk> writes:

> Hi,
> I'm porting some of my libraries that were developed on SBCL and
> LispWorks. I'm experiencing an error that I can't explain when setting
> a value (a single-float) into a type-declared matrix of single
> floats. I've discovered that I can avoid the error by setting safety 3.
> The error message is
> value -5.0 is not of the expected type (SIMPLE-ARRAY DOUBLE-FLOAT (* *))
> As the algorithm is very compute intensive (Smith-Waterman alignment),
> I would like to optimize for speed and slightly reduced safety. I have
> extracted the smallest self-contained example that I can, illustrating
> the problem.
> Most of the code has been macroexpanded, hence the odd variable
> names. I've commented the exact point of the error. Any suggestions
> would be much appreciated.
> I'm using Version 1.3-r11936 (LinuxX8664). 

I was able to reduce to the following:

(defun test ()
  (let ((array (make-array '(1 1) :initial-element 2.0
                           :element-type 'single-float))
        (var 1.0))
    (setf (aref array 0 0) var
          var nil)))

And it doesn't trigger on LinuxX8632.          
With best regards, Stas.

More information about the Openmcl-devel mailing list