[Haskell] Platform-dependent behaviour with functions on NaN

Geisler, Tim (EXT) tim.geisler.extern at icn.siemens.de
Thu Apr 13 10:28:18 EDT 2006

In Haskell, the behaviour of functions on floating-point values which
are NaN can be platform dependent.
On "SunOS sun 5.9 Generic_118558-09 sun4u sparc SUNW,Sun-Blade-1500":

Prelude> ceiling (0/0)
On Windows:
Prelude> ceiling (0/0)
Both machines use the binary distributions of GHC 6.4.1.
In our production code, this error (which is actually an error in our
program) occured inside a quite complex expression which can be
simplified to max 0 (ceiling (0/0)).  On Windows, we did not recognize
the error in the program, because the complex expression just returned
0.  On Solaris, the complex expression returned this large number (which
represents in the application "the number of CPUs needed in a certain
device" ;-)
We develop Haskell programs on Windows and run them in production on
Sparc with Solaris. It seems that we have to run special regression
tests testing for differences between Sparc Solaris and Windows.
The Haskell 98 report
http://www.haskell.org/onlinereport/basic.html#sect6.4 states: "The
results of exceptional conditions (such as overflow or underflow) on the
fixed-precision numeric types are undefined; an implementation may
choose error (_|_, semantically), a truncated value, or a special value
such as infinity, indefinite, etc."
There has been some discussion six years ago and nearly two years ago:
Is there a chance to
- properly define the behaviour of functions depending on the function
properFraction for values like NaN, Infinity, ...?
- get an implementation of this in GHC which computes the same results
for all platforms?
Perhaps the function properFraction could raise an exception in case of
isNaN and isInfinity?
Other languages are more portable. E.g., for Java, these cases are
tml#9249 states: "All numeric operations with NaN as an operand produce
NaN as a result."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org//pipermail/haskell/attachments/20060413/6b5177b7/attachment.htm

More information about the Haskell mailing list