Dear Stefan, Thank you for your quick answer. That's what I had in mind. I just thought, very naively I must admit, that sum(a) would have computed the total sum in the same order as one of the other 4 approaches. I'll have a look at compensated summation.
Thanks again, Le samedi 15 novembre 2014 12:18:46 UTC+1, Stefan Karpinski a écrit : > > This is expected. Floating-point addition is non-associative and these > codes add values in different orders. Julia's built-in sum function uses > recursive pairwise summation, which is the most accurate of these three > approaches but nearly as fast as linear scanning. A slower but more > accurate algorithm is compensated summation > <http://en.wikipedia.org/wiki/Kahan_summation_algorithm>. Even > compensated summation is not completely accurate; completely accurate > floating-point summation is tricky. > > On Sat, Nov 15, 2014 at 11:52 AM, <[email protected] <javascript:>> wrote: > >> Dear all, >> >> Some (serious?) issue was raised on a mailing list concerning the "sum" >> functions involved in computing the sum of elements of an array. >> >> It seems that we obtain different results for the three following >> procedures: >> >> - using sum over the whole matrix >> - using sum over the columns/rows of the matrix and summing these results >> within a loop >> - computing the sum with a double loop over all the elements of the matrix >> >> Attached is a file with the different procedures and their results for a >> particular matrix. >> >> What is wrong with the implementation of the sum function? >> This could have important consequences with iterative procedures. >> >> Many thanks, >> > >
