2011-02-09 54 views
4

有沒有人在應用程序中使用Kahan summation?額外精度何時會有用?Kahan summation

我聽說在某些平臺上雙操作比浮動操作快。我如何在我的機器上測試這個?

+1

「我怎樣才能在我的機器上測試這個?」 - 通過計時! – 2011-02-09 00:16:22

+0

你的意思是浮動操作比雙倍快?試圖通過降低精度加速計算是一個愚蠢的想法IMO。 – Anycorn 2011-02-09 00:16:55

回答

6

Kahan summation當您對數字進行求和並且需要將最壞情況的浮點錯誤最小化時,效果很好。如果沒有這種技術,如果有兩個數字在數量上與可用的有效數字不同(例如1 + 1e-12),那麼在加法運算中可能會顯着損失精度。卡漢求和補償了這一點。

而對於浮點問題的一個很好的資源在這裏,「應該知道浮點什麼斷言計算機科學家」:http://www.validlab.com/goldberg/paper.pdf

在單VS雙精度性能:是的,單精度可顯著更快,但它取決於特定的機器。請參閱:http://www.hpcwire.com/features/17885244.html

測試的最佳方法是編寫一個簡短示例,使用single(float)和double precision來測試您關心的操作,並測量運行時間。

0

我使用Kahan求和來補償計算運行平均值時的累積誤差。它確實有很大的不同,而且很容易測試。經過100次總結,我消除了相當大的錯誤。

我肯定會使用Kahan求和算法來補償任何運行總數中的錯誤。

但是,我注意到做逆矩陣乘法時出現了相當大的錯誤(1e-3)。基本上,A*x = y,然後inv(A)*y ~= x我沒有得到完全的原始值。這很好,但我想可能Kahan總結會有幫助(有很多補充),尤其是對於大於3乘以3的矩陣。我嘗試了一個4乘4矩陣,並沒有改善這種情況。