関数の最適化と評価quickcheck
を行う Haskell プログラムのテストを作成しました。
問題は、次のようなquickcheck
式を生成することです。NaN
> acos(2)
NaN
Haskell は、次のステートメントを false と評価します。
> acos(2)==acos(2)
False
したがって、私のquickcheck
テストはこの比較で失敗します。値を比較する方法はありNaN
ますか?
関数の最適化と評価quickcheck
を行う Haskell プログラムのテストを作成しました。
問題は、次のようなquickcheck
式を生成することです。NaN
> acos(2)
NaN
Haskell は、次のステートメントを false と評価します。
> acos(2)==acos(2)
False
したがって、私のquickcheck
テストはこの比較で失敗します。値を比較する方法はありNaN
ますか?
いいえ、 IEEE 754で定義されているように、2 を比較するとNaN
常に false が返されます。値がNaN
Haskell にあるかどうかを確認するには、メソッドを使用isNaN
するか、自分で記述します
isNaN' :: a -> Bool
isNaN' a = a /= a