背景:双电双算术
“双双”是一个数字作为两个双精度数的总和的表示而不会在有效数重叠。 这种表示利用现有的双精度硬件实现的用于“近四倍精度”的计算。
在一个两双实现一个典型的低级别的C函数可以采取两个双精度数a
和b
与|a| ≥ |b|
|a| ≥ |b|
并计算两双数(s, e)
表示它们的总和:
s = a + b;
e = b - (s - a);
(摘自这篇文章 。)
这些实现通常假设舍入到最近的偶数模式。
在上述计算中, (s, e)
是归一化两双只有这一假设的,因为。 没有它,与a == 0x1.0p60
, b == 1
,在圆向上模式, s
被计算为0x1.0000000000001p60
和e
上方的位-0x0.0000000000001p60
。 它们的总和等于的数学和a
和b
,但其有效数重叠。
就拿a == 0x1.0p120
和数学总和a
和b
,一方面和s
和e
,另一方面甚至不相吻合了。
题
有没有建立与典型的两双图书馆在相同属性的两双样库的方式舍入到最近的偶数(即,相对快速和相对准确的),但作品无论四舍五入模式恰好是?
难道这样的库已经存在?
更一般的内容:正确舍入的基本功能
两双排序的实施方式被用于以正确的舍入初等函数库执行中间计算。 其结果是,以这种方式实现图书馆往往壮观失败在一个函数被调用,而FPU是不是在舍入到最近的偶数模式 。 改变函数内部的舍入模式不是很适口性好,性能方面的原因,并因为一个信号到达,而函数执行将离开FPU的舍入到最近的偶数模式。 我看到的最简单方法具有快速,正确的舍入,在任何舍入模式下工作会,如果能以某种方式依靠两双实物运算,在任何舍入模式工作的基本功能。