Seems like this thread is missing a reference to the standard library function sum_kbn <http://docs.julialang.org/en/latest/stdlib/base/#Base.sum_kbn>.
kl. 12:33:31 UTC+1 lørdag 15. november 2014 skrev [email protected] følgende: > > 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]> 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, >>> >> >>
