在阅读了这篇论文和这篇论文之后,我最近遇到了精确实数算术这个主题。
我发现许多论文讨论了使用有符号数字流实现精确算术。对任意精度使用无限流可以在函数式语言(如 Haskell)中使用惰性列表实现很好的实际实现。然而,在函数式语言中讨论此类实现的论文似乎得出的结论是性能非常差。
现在,我意识到与标准浮点表示相比,精确的非硬件实现通常具有相对较差的性能,但我有兴趣以命令式语言(特别是 C++)和一组操作提供更有效的实现/functions(算术运算、三角函数、exp、log 等)。
我的问题:有符号数字/惰性流表示是否存在固有的缓慢导致性能不佳的问题,或者是 Haskell?是什么让它变慢?是否有可能在 C++ 中使用惰性流实现有符号数字流表示,从而实现(显着)比其 Haskell 对应物更好的性能,或者这是徒劳的练习?也许重建为迭代?
我知道有两个 C++ 库 RealLib 和 iRRAM 可以实现高效的实数计算。但是,这些似乎使用区间算术,将实数表示为缩小的嵌套区间,这似乎不像无限流那样“纯”一种方法(如果您不同意,请纠正我!)。但也许这些是实现良好效率的唯一方法?
任何输入表示赞赏!