
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.