[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: +nan.0 contradiction
> | This SRFI regards +nan.0 as a real number whose value is so
> | indeterminate that it might represent any real number within the
> | closed interval [-inf.0,+inf.0].
> That sentence implies that (<= -inf.0 +nan.0 +inf.0).
> But that is not true in IEEE-754 arithmetic as compiled by gcc running
> on an Intel(R) Pentium(R) 4 CPU.
As per IEEE754, all relational operators except != return
false when one or both operands are NaN. != returns true
when one or both operands are NaN.
More directly, IEEE754 says NaN is the result of an *invalid*
operation, when an operation's operands lie outside its
domain. For example, Dividing 0 by 0 is invalid and creates
a NaN -- a NaN also means Not *any* Number! The quoted
sentence should simply be removed from the srfi.
One nit: The +NaN.0 syntax is misleading since the signedness
of NaN is *not* defined. I would much prefer a special
syntax like #NaN (and #SNaN if you want to deal with
Recommended reading: Prof. Kahan's Lecture Notes on the
Status of IEEE 754 for Binary Floating-Point Arithmetic.