math.extras: adding the Kahan summation.
parent
fbc43abfdf
commit
b9df0a7582
|
@ -86,3 +86,7 @@ HELP: round-to-decimal
|
||||||
{ $example "USING: math.extras prettyprint ;" "1.23456 2 round-to-decimal ." "1.23" }
|
{ $example "USING: math.extras prettyprint ;" "1.23456 2 round-to-decimal ." "1.23" }
|
||||||
{ $example "USING: math.extras prettyprint ;" "12345.6789 -3 round-to-decimal ." "12000.0" }
|
{ $example "USING: math.extras prettyprint ;" "12345.6789 -3 round-to-decimal ." "12000.0" }
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
HELP: kahan-sum
|
||||||
|
{ $values { "seq" sequence } { "n" float } }
|
||||||
|
{ $description "Calculates the summation of the sequence using the Kahan summation algorithm." } ;
|
||||||
|
|
|
@ -289,3 +289,8 @@ M: real round-away-from-zero
|
||||||
[ swapd @ [ 1 + ] [ max 0 ] if ] keep swap
|
[ swapd @ [ 1 + ] [ max 0 ] if ] keep swap
|
||||||
] reduce nip max
|
] reduce nip max
|
||||||
] if ; inline
|
] if ; inline
|
||||||
|
|
||||||
|
: kahan-sum ( seq -- n )
|
||||||
|
[ 0.0 0.0 ] dip [
|
||||||
|
rot - 2dup + [ -rot [ - ] bi@ ] keep
|
||||||
|
] each nip ;
|
||||||
|
|
Loading…
Reference in New Issue