3

Doubles に基づいて座標を比較する必要があるいくつかの幾何学的計算に取り組んでいます。通常、この状況での浮動小数点の不正確さは、人工的なイプシロンを含めることで対処します。これはよくあることで、このトピックに関する情報はたくさんあります。

http://floating-point-gui.de/errors/comparison/

http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

私の考えでは、Double を newtype でラップし、イプシロンを使用して Eq と Ord を実装します。これは非常に明白な概念のように思えますが、それはすでに行われており、Hackage のライブラリにある必要があるか、私がまだ考えていない概念に明らかに問題があるかのどちらかです。だから私の質問は、誰かが同様のタイプを含む既存のモジュールを知っていますか? それとも、これはでたらめな考えですか?ありがとう。

4

1 に答える 1

3

それは間違った考えではありません。1 つのアプローチは、浮動小数点式を記述できるようにする型を作成することです。これを評価するには、構成データの一部 (つまり、イプシロンの値) が必要です。これは Reader モナドと同じように機能します。

この問題への優れたアプローチは次のとおりです。

http://okmij.org/ftp/Haskell/types.html#Prepose

GHC の効率的な実装は、hackage のリフレクション パッケージにあるかもしれません。

于 2013-02-13T17:55:20.490 に答える