为了得到浮点数组的精确和,我只需要对它们进行排序并添加每一对,然后再添加对(这些对的和)直到我只有一个元素。 (正确吗?)如何使用可并行化的方法来聚合浮点数组并获得精确的结果?
当我想找到多重总和时,我该怎么做。 (正确的单词?)
我假设乘以两个浮动点号的作用:(?是不是太)
// sign -> -1 or 1
// mantissa -> 0.5 ... <1.0 (Never actual 1.0)
new_sign = x_sign * y_sign
new_exponent = x_exponent + y_exponent
new_mantissa = x_mantissa * y_mantissa
if (new_mantissa < 0.5) {
new_mantissa *= 2.0
new_exponent--
}
有与new_sign
也不new_exponent
没有精度问题,我不应该给予重视他们。我应该看到与new_mantissa
准确输了。那么我应该按浮点数排序浮点数,然后呢?说什么是正确的?
如果我不在正确的方向,那么达到这种效果的正确方向是什么?
为了获得尽可能准确的总和,我会使用[Kahan summation](http://en.wikipedia.org/wiki/Kahan_summation_algorithm)。如果您假设IEEE 754二进制浮点,则乘法码不正确。 –
我也不明白为什么你需要进入乘法的远比你想象的更复杂的细节。重要的是你的处理器将两个数字乘以产生最接近的可表示价值的产品。 –
@PatriciaShanahan它不是可并行的,或者它是?乘以太多的数字(数十亿)将会有很大的错误,并且我有足够的力量对这些数字进行排序,所以为什么不呢? – LyingOnTheSky