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
Now the list is broken down into sublists of length
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
Let us test if the algorithm is performing as expected. I am just testing if there is precision or not. You can also use
As you can see the algorithm performs as expected. But remember that the condition
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
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😃.
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 >>>
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😃.