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,
>>
>
>

Reply via email to