How to describe this bug?
twhitehead at gmail.com
Tue Jul 10 16:35:17 CEST 2012
On July 10, 2012 09:28:27 Christian Maeder wrote:
> Am 10.07.2012 13:06, schrieb Sönke Hahn:
> > I've attached the code. The code does not make direct use of
> > unsafePerformIO. It uses QuickCheck, but I don't think, this is a
> > QuickCheck bug. The used Eq-instance is the one for Float.
> The Eq-instance for floats is broken wrt NaN
> Prelude> (0/0 :: Float) == 0/0
> I do not know if you create NaN in your tests, though.
Would that really be broken though? NaN can arrise from many contexts (e.g.,
sqrt(-1)), so it would also not make much sense to return True.
The IEEE standard actually defines a mutually exclusive fourth "unordered"
state wrt to NaNs for comparisons (in addition to lesser, greater, and equal).
I would like to suggest native floating point might be better modelled as
"Maybe Float", with NaN being the builtin "Nothing", but leaves out Inf.
More information about the Glasgow-haskell-users