cumsum vs. sum
Check out sum.exact and cumsum.exact in the caTools package.
library(caTools)
Loading required package: bitops
x <- 1/(12:14) sum(x) - cumsum(x)[3]
[1] 2.775558e-17
sum.exact(x) - cumsum.exact(x)[3]
[1] 0
On Tue, Feb 17, 2009 at 5:12 PM, Stavros Macrakis <macrakis at alum.mit.edu> wrote:
I recently traced a bug of mine to the fact that cumsum(s)[length(s)]
is not always exactly equal to sum(s).
For example,
x<-1/(12:14)
sum(x) - cumsum(x)[3] => 2.8e-17
Floating-point addition is of course not exact, and in particular is
not associative, so there are various possible reasons for this.
Perhaps sum uses clever summing tricks to get more accurate results?
In some quick experiments, it does seem to get more accurate results
than cumsum.
It might be worth documenting.
-s
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.