Why does MATLAB 7.4 (R2007a) give an erroneous answer using SUM(single(:))?

MATLAB gives erronous answers using the SUM function when the dataset is very large. for example:
n=25e6 ;
a=ones(n,1,'single');
b=sum(a(:))
The value of variable 'b' would be 16777216 which is 32% different from the correct answer of 25e6.
If SUM(SUM(a)) was used the discrepancy would not exist.

 Accepted Answer

The problem starts when too many numbers have been added together. The accumulator in the SUM function gets too big compared to the numbers added. As a result, either some precision is lost in the addition, or the small numbers are completely ignored.

More Answers (0)

Products

Release

R2007a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!