众所周知,两个浮点数的确切乘积不总是浮点数,但错误exact(a*b) - float(a*b)
是。一些精确乘法的代码通过返回两个数字
res = a * b
err = fma(a, b, -res)
这样可以使用fused-multiply-add instruction返回表达式(a*b)+c
,只需一次舍入。
现在,我想对 sums 做同样的事情,即
res = a + b
err = add3(a, b, -res)
add3
应该使用一个舍入返回表达式(a+b)+c
。
除了in this article之外,我无法找到真实世界中add3
实际存在的提示。
是否有包含add3
的CPU指令集?是否有语言实现它?