提升浮点数精度:IFN机制的原理与实现
1. 引言
在浮点数计算中,精度问题一直是一个关键挑战。为了提高表达式浮点计算的精度,引入了提升浮点数(Improving Floating-Point Numbers,IFN)的概念。IFN机制能够对表达式中的每个子表达式进行自适应和适当的精度细化,让用户轻松获得所需精度的计算结果,同时避免有效数字的丢失。
2. IFN机制的贡献
- 自适应精度细化 :IFN机制实现了对整个表达式中每个子表达式计算的自适应精度细化。与使用固定位数(如MPFR库中的函数)进行计算不同,IFN机制仅使用每个子表达式所需的足够位数进行计算,且每个子表达式的位数会自动调整。
- 形式化定义与运算 :将IFN形式化为一个特殊表示的浮点数列表,这些浮点数近似相同的实数值且精度不断提高。在此基础上,定义了IFN上的一元/二元运算符和基本数学函数,其结果也是IFN。
- 实验库实现 :实现了一个实验性的IFN库,包括Haskell库和纯C库。Haskell的惰性求值特性便于自然地实现Haskell库,而C版本的库则用于解决Haskell库的性能问题。将这些库应用于使用双精度数难以获得精确答案的数值问题,证明了IFN机制的有效性。
3. 提升浮点数的概念
IFN直观上是一个无限的浮点数序列,每个浮点数都近似同一个实数值v,即计算的理想结果。序列中越靠右的值越接近v。其基本思想源于“改进序列”,但IFN是无限序列,与改进序列不同。
超级会员免费看
订阅专栏 解锁全文

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



