[Haskell-cafe] Exception for NaN

Daniel Fischer daniel.is.fischer at googlemail.com
Fri May 13 01:50:55 CEST 2011


On Friday 13 May 2011 01:19:52, Ganesh Sittampalam wrote:
> On 12/05/2011 19:41, Nick Bowler wrote:
> > On 2011-05-12 21:14 +0400, Grigory Sarnitskiy wrote:
> >> I don't want NaN to propagate, it is merely stupid, it should be
> >> terminated.
> > 
> > NaN propagation is not stupid.  Frequently, components of a
> > computation that end up being NaN turn out to be irrelevant at a
> > later point, in which case the NaNs can be discarded.
> 
> Unfortunately, if a NaN reaches a comparison operation, it can lead to
> an end result that doesn't contain NaNs, but was still influenced by
> one.
> 
> Ganesh

For example:

Prelude Data.List> maximum [0,-1,0/0,-5,-6,-3,0/0,-2]
0.0
Prelude Data.List> minimum [0,-1,0/0,-5,-6,-3,0/0,-2]
-2.0
Prelude Data.List> sort [0,-1,0/0,-5,-6,-3,0/0,-2]
[-6.0,-5.0,-2.0,NaN,-3.0,NaN,-1.0,0.0]

As usual, when dealing with floating point numbers, you have to know what 
you're doing. There are situations where the appearence of NaNs is 
harmless, in others, they're poisonous.



More information about the Haskell-Cafe mailing list