Kahan summation: Difference between revisions

(Add Racket)
Line 573:
0.99999994f0
1.0f0</pre>
 
=={{header|zkl}}==
zkl floats are C doubles.
{{trans|go}}
<lang zkl>fcn kahanSum(numbers){
sum:=c:=0.0;
foreach x in (vm.arglist){
y,t:=x - c, sum + y;
c=(t - sum) - y;
sum=t;
}
sum
}
fcn epsilon{
e:=1.0;
while(1.0 + e!=1.0){ e/=2 }
e
}</lang>
<lang zkl>a,b,c,sum:=1.0,epsilon(),-b,a + b + c;
sum :"%.20f".fmt(_).println("\tLeft associative. Delta from 1: ",1.0 - sum);
kahanSum(a,b,c) :"%.20f".fmt(_).println("\tKahan summation");
b.println("\t\tEpsilon");</lang>
{{out}}
<pre>
0.99999999999999988898 Left associative. Delta from 1: 1.11022e-16
1.00000000000000000000 Kahan summation
1.11022e-16 Epsilon
</pre>
Anonymous user