问题
I wrote quickcheck tests for a Haskell program that optimizes and evaluates a function.
The problem is quickcheck generates expressions resulting in NaN
like:
> acos(2)
NaN
Haskell evaluates the following statement as false:
> acos(2)==acos(2)
False
So my quickcheck tests fail with this comparison.
Is there any way to compare NaN
values?
回答1:
No, as is defined by IEEE 754 comparing 2 NaN
s always return false. To chceck if your value is NaN
in Haskell you can use isNaN method or write it by yourself
isNaN' :: a -> Bool
isNaN' a = a /= a
来源:https://stackoverflow.com/questions/19809908/haskell-comparing-nan-values