float(0.0b0) overflows?



>>>>> "Robert" == Robert Dodier <robert.dodier at gmail.com> writes:

    Robert> hello david,
    >> With 5.9.2 and CVS maxima with clisp on cygwin I see
    >> 
    >> (%i1) float(0.0b0);
    >> Floating point overflow in converting 0.0B0 to flonum
    >> -- an error.  Quitting.  To debug this try debugmode(true);
    >> 
    >> I don't see this with 5.9.2 on windows (gcl)

    Robert> a few more data --

    Robert> clisp 2.34 / maxima 5.9.2cvs / linux  =>  same error

    Robert> gcl 2.6.7 / maxima 5.9.2cvs / linux  =>  OK

Neat.  cmucl and cvs HEAD produce the correct answer.

The problem is in fp2flo in float.lisp and can be seen to be caused by
clisp:

(/ 0 (expt 2d0 53)) => 0 instead of 0d0.

The error message that is produced is wrong because it thinks if
scale-float signals an error, it's because of overflow.  In this case
scale-float signals an error because the first arg is not a float.

This result is independent of *floating-point-contagion-ansi*.

Sounds like a bug in clisp.  An easy workaround is just cl:float the
arg to scale-float.  

Ray