The IEEE 754 standard says (fairly clearly) that +1.0 / +0.0 is one of
the most 'stable' definitions of Infinity (in Float at least).
Throwing an exception is also regarded as a possibility in IEEE 754, but
it is expected that that is not the default, as experience shows that
that is a sub-optimal default. Mathematical software (Maple,
Mathematica, Matlab) have generally moved in that direction.
Almost all hardware implementations of float arithmetic now default to
IEEE 754 arithmetic. Having the arithmetic do 'something else' involves
more CPU cycles, so users should generally complain if their system's
arithmetic differs from IEEE 754 arithmetic without some deep reason to
do so [there are some; read and understand William Kahan's papers for
these].
Jacques
Yitzchak Gale wrote:
While checking for floating-point overflow and
underflow conditions, I tried to create a somewhat
reliable cross-platform Infinity with the literal
"1e100000".
When GHC 6.4.1 reads this literal, it goes into a
deep trance and consumes huge amounts of
memory. Shouldn't it immediately recognize such a
thing as Infinity?
Is there a better way to check for Infinity? I
have not yet figured out how to check for NaN at
all - because it is not equal to itself. Any
suggestions?
BTW, I notice that Simon PJ proposed literals
for Infinity and Nan several years ago:
http://www.haskell.org/pipermail/haskell/2001-August/007753.html
Did anything ever come out of this?
Regards,
Yitzchak
_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell
_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell