Mark Hoemmen wrote:
> Robert Dodier wrote:
>> In working through the Maxima test suite, there is at least one error
>> which is caused by floating point underflow. Other Lisp implementations
>> let floating point underflow yield zero, and that is what Maxima expects.
>> It appears that floating point underflow causes an error in ECL.
>> How can I convince ECL to yield zero instead? Thanks for your help.
> I sent a personal e-mail with a possible solution -- FYI the idea is to
> modify the floating-point status word so that underflow signals (I
> _think_ there is such a thing), catch the signal, and handle it with an
> appropriate restart (substitute in zero for the denorm number).
If you're going to modify the status word, might as well modify the
control word and disable the underflow exception completely.
> FYI, gradual underflow is mandated by the IEEE 754 floating-point
> standard, so it's Maxima itself and the other Lisp implementations that
> are noncompliant, rather than ECL.
I'm pretty sure IEEE 754 says gradual underflow is required, but you are
explicitly allowed not to signal anything on underflow. I think most
Lisps turn this off because underflow is usually harmless and signaling
on underflow is annoying.