Greetings! I know this has been discussed before, but I would like to explore the possibility of defining these bit patterns as members of a special type orthogonal to common-lisp::number. This is prompted by the NaN blockage on the compiler optimizing (= a a) (or equivalent bindings) to t, and indeed the common lisp spec appears to specify that eq implies =. I think maxima tries to detect NaNs using (/= a a).
We also have the following charming behavior: (typep nan 'long-float) ->t (typep nan '(long-float 0) ->nil (typep nan '(long-float * 0)) ->nil (typep nan '(or (long-float 0) (long-float * 0))) ->nil but the first and last types are of course identical. If NaN was truly 'not a number', the numerical functions would trigger an error on input only when compiled with safety, and might be arranged to do likewise on return, so the signatures would remain the same but the user could still access the values when compiling at (safety 0). Thoughts? Take care, -- Camm Maguire c...@maguirefamily.org ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah