gpt4 book ai didi

haskell - 带有内置 epsilon 的包裹浮点类型

转载 作者:行者123 更新时间:2023-12-02 16:35:51 25 4
gpt4 key购买 nike

我正在进行一些几何计算,这需要我比较基于 double 的坐标。我通常通过添加一些人工 epsilon 来处理这种情况下的浮点不准确问题。这很常见,并且有很多关于该主题的信息。

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

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

我的想法是将 Double 包装在新类型中,并使用 epsilon 实现 Eq 和 Ord。这看起来是一个非常明显的概念,要么它已经完成并且必须在 Hackage 上的库中,要么这个概念有明显的错误,我还没有想到。所以我的问题是,有谁知道包含类似类型的现有模块(我进行了快速搜索,但没有看到任何内容)?或者,这是一个虚假的想法吗?谢谢。

最佳答案

这不是一个虚假的想法。一种方法是创建允许您编写浮点表达式的类型,为了进行计算,需要一段配置数据 - 即 epsilon 的值。这与 Reader monad 的工作方式非常相似。

解决这个问题的一个好方法是:

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

并且可以在反射包中的 hackage 中找到 GHC 的有效实现。

关于haskell - 带有内置 epsilon 的包裹浮点类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14859690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com