Skip to main content

Pairwise Summation algorithm implementation with python

Pairwise summation algorithm is a summation algorithm like Kahan Algorithm but does perform better when compared to the Kahan Algorithm. This is because of the Divide and Conquer approach followed by this algorithm. According to Wikipedia, this is the official summation algorithm used in Numpy.


If you don't know what divide and conquer is all about, then you should see the following video: lecture 3: Divide and Conquer by MITOCW.

To be simple, this algorithm takes a list of numbers whose length is at least greater than 0 and also a sufficiently small number N < n(length of the list).

Now the list is broken down into sublists of length N, we find the sum of these sublists and finally add all the summations together to get the result. As simple as that.

Up next is the program for this algorithm which I have written using python. But if you want further reference then you can see the Wikipedia pairwise summation algorithm. Remember that you can only understand the algorithm better when you will take an example. For example, you can plug in [1, 2, 3] as the list. Take a paper and write down the output of each and every statement.

Program

Program is self explanative and I don't think this one needs a detailed explanation.

Let us test if the algorithm is performing as expected. I am just testing if there is precision or not. You can also use timeit to check the speed of the algorithm
>>> aList = [0.1]*10
>>> aList
[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
>>> pairwise(aList)
1.0
>>> pairwise(aList) == 1.0
True
>>> 
As you can see the algorithm performs as expected.  But remember that the condition N < n is taken for granted. If you change the value of N to be less than the length of the list then you will get an error.

You can replace the lines 10-12 with sum function.

But guys I don't know why, this algorithm is giving a wrong result when the input is [0.1, 0.1, 0.1]. Remaining results are satisfactory, at-least the test cases which I have done! If you are aware of why this is happening, then please, please comment in the comment box.

If you have any doubt or haven't understood anything, then comment in the comment box below and I will be glad to help you.

If you have any suggestions or feedback or if you have found a typo then please comment in the comment box below and I will be very happy to see your post.

You can also contact me.

Thank you. Have a nice day😃.

Popular posts from this blog

Project Euler Problem 62 solution with python

Cubic permutations ¶ The cube, 41063625 (3453), can be permuted to produce two other cubes: 56623104 (3843) and 66430125 (4053). In fact, 41063625 is the smallest cube which has exactly three permutations of its digits which are also cube. Find the smallest cube for which exactly five permutations of its digits are cube.

Project Euler Problem 67 Solution with Python

Maximum path sum II By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23. 3 7 4 2 4 6 8 5 9 3 That is, 3 + 7 + 4 + 9 = 23. Find the maximum total from top to bottom in triangle.txt (right click and 'Save Link/Target As...'), a 15K text file containing a triangle with one-hundred rows.

Add/Embed SVG to Blogger website

In this post I will tell you my method(trick) of adding SVG images in a blogger website or blog. Before starting , the first thin g I am assu m ing is that you are aware of SVG if you are here. If not please see S calable V ec tor G raphics Recently when I tried to embed a SVG image for a post on pygal, I tried uploading the SVG file and blogger Image uploader came up with an error, because of which I had to find some other way.  SVG File upload Error in Blogger  I started sea rc hing Google " Embed SVG in Blogger " . I found blogorrhea , w h ich gave some i nformatio n on add ing SVG directly as a markup , which worked , but I faced another problem using this . Also th is guy has used lot of Javascript which was confusin g for me, being new to using SVG.   So I first t houg ht of learning on h ow to embed SVG in HTML and t his on e worked out. Actually we can embed SVG in HTML i n following ways: Using Object tag Using Iframe tag Using embed...