[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
LEAST-POSITIVE-<mumble>-FLOAT
Date: Fri, 22 Jan 88 22:15:21 PST
From: Jon L White <edsel!jonl@labrea.Stanford.EDU>
Does anyone care what values these "constants" actually take on? that is,
does anyone use then in any context other than test suites?
CLtL p231 says that this number should be the "number closest in value to
(but not equal to) zero provided by the implementation." In those
implementations supporting IEEE-like denormalized numbers, a question
arises: are denormalized numbers "provided", in the sense required?
Of the four such implementations I've checked, half set this constant
to the least normalized number, and half set it to the least denormalized
number.
In Symbolics Genera 7.2, we've made the values of those constants be
denormalized to meet the letter of CLtL (they used to be normalized).
We also added some constants to the SCL: (Symbolics-Common-Lisp:)
package, like LEAST-POSITIVE-NORMALIZED-<mumble>-FLOAT.
Supporting the former is the fact that IEEE hardware, when traps are
enabled, will signal an underflow trap whenever a result would be less
than the least normalized number. Supporting the latter is the fact
that under at least mode of operation of the hardware, denormalized
numbers are "provided" by the implementation.
It's a little more complicated (as if we needed that :-). IEEE
underflow traps don't happen for addition or subtraction, just for
multiplication and division. So whether you see denormalized results
from normalized operands (without traps) depends on the operation.
[Note that any addition or subtraction which produces a denormalized
result is exact. That's not always true for multiplication or
division.]
Oh, yeah. In answer to your original question, we don't care or use
them for anything. But a customer complained, so we changed to conform
to the letter of CLtL.
-- JonL --