提升浮点数计算:IFN库的性能与应用
1. IFN库的实现与背景
在数值计算领域,为了提升浮点数计算的准确性和性能,我们实现了一种基于改进浮点数(IFNs)的库。IFN库的一个版本完全用C语言实现,不使用通用的垃圾回收器,IFN单元和其他对象(如Q的实例及其尾数)通过一组环形缓冲区进行管理。这种实现方式在某些情况下,可能比Haskell和Boehm的垃圾回收机制的笨拙协作表现更好,尤其适用于复杂问题。
2. 数值实验相关库介绍
为了验证IFN库的性能和适用性,我们将其与其他可计算实数算术库进行了比较,主要涉及Exact Real Arithmetic (ERA)(版本1.0)和iRRAM(版本2013 01)。
- ERA :这是一个由David Lester开发的Haskell库,用于可计算实数。在该库中,一个可计算实数x由一个类型为Int → Integer的函数f表示,对于所有i :: Int(i ≥ 0),满足不等式$f(i) - \frac{1}{2^i} < x < f(i) + \frac{1}{2^i}$。一旦构造了f,用户就可以获得具有所需精度的x的近似值。数值运算符基于CReal类型构建,例如加法的定义如下:
data CReal = CR (Int → Integer)
(+ ) :: CReal → CReal → CReal
(CR x′) + (CR y′) = CR (\p → round uk ((x′ (p + 2) + y′(p + 2)) % 4))
where round uk x = floo
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



