kahan 算法
kahan 算法使用來減少浮點數計算誤差的。
衆所周知,因爲存儲空間原因,浮點數之間的加法滿足交換律但並不滿足結合律,會有一定的誤差產生。而 kahan 算法的目的是減少誤差,具體方法是每一次都記錄下來當前的誤差,在下一個數中進行修正。
代碼:
float sum=0.0f,c=0.0f;
for(int i=1;i<=n;i++){
float a=f[i]-c;
float b=sum+a;
c=b-sum-a;sum=b;
}
return sum;
具體應用大概是在算法過程中減少誤差而使用。