Kahan summation algorithm
12-19-2014, 09:12 PM (This post was last modified: 12-19-2014 09:48 PM by Thomas Klemm.)
Post: #1
 Thomas Klemm Senior Member Posts: 1,447 Joined: Dec 2013
Kahan summation algorithm

Program for the HP-42S:
Code:
00 { 19-Byte Prgm } 01 LBL "KAHAN" 02 + 03 ENTER 04 RCL+ ST Z 05 STO- ST Z 06 X<> ST Z 07 + 08 END

Worked example: $$10^{10}+\pi+e$$

CLST
E10
ENTER
0
PI
XEQ "KAHAN"
1
E↑X
R/S

y: 10,000,000,005.9
x: -0.04012551795

This is the correctly rounded result.

The classic addition is not the same:

E10
PI
+
1
E↑X
+

y: 0
x: 10,000,000,005.8

Cheers
Thomas
12-20-2014, 09:47 AM
Post: #2
 Gerald H Senior Member Posts: 1,458 Joined: May 2014
RE: Kahan summation algorithm
Thank you. Never seen this before.
12-21-2014, 08:52 AM
Post: #3
 Werner Senior Member Posts: 648 Joined: Dec 2013
RE: Kahan summation algorithm
What I have never seen mentioned is the fact that this algorithm is meant for binary floating point. Try adding x=y= 1e12-2
You'll get
s := 2e12
c := -2, while it should be -4

Code:
*LBL "K+"  +  RCL+ ST Y  STO- ST Y  X<>Y  RCL+ ST L  END

same size.

Werner
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)