爲了得到浮點數組的精確和,我只需要對它們進行排序並添加每一對,然後再添加對(這些對的和)直到我只有一個元素。 (正確嗎?)如何使用可並行化的方法來聚合浮點數組並獲得精確的結果?
當我想找到多重總和時,我該怎麼做。 (正確的單詞?)
我假設乘以兩個浮動點號的作用:(?是不是太)
// 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