【发布时间】:2016-12-20 06:54:44
【问题描述】:
考虑(a-b)/(c-d) 操作,其中a、b、c 和d 是浮点数(即,double 在 C++ 中键入)。 (a-b) 和 (c-d) 都是 (sum-correction) 对,如 Kahan summation algorithm。简而言之,这些 (sum-correction) 对的特殊之处在于,sum 包含的值相对于correction 中的值较大。更准确地说,correction 包含因数值限制而在求和期间不适合 sum 的内容(double 类型中的尾数为 53 位)。
考虑到上述数字的特殊性,计算(a-b)/(c-d) 的最精确的数字方法是什么?
额外问题:最好将结果也设为 (sum-correction),就像在 Kahan 求和算法中一样。所以要找到(e-f)=(a-b)/(c-d),而不仅仅是e=(a-b)/(c-d)。
【问题讨论】:
标签: algorithm floating-point sum numeric division