Skip to main content

Kahan 求和

参考资料

简介

Kahan 求和算法,又名补偿求和或进位求和算法,是一个用来降低有限精度浮点数序列累加值误差的算法。

实现

用一个变量 cc 累积每次加法因舍入而丢失的低位部分,在下一次累加前补偿回来,从而把总误差从与 nn 相关降到接近常数。

145 Bcpp
double kahan(vector<double> a)
{
double res=0,c=0;
for(auto x:a)
{
double y=x-c;
double t=res+y;
c=(t-res)-y;
res=t;
}
return res;
}