Skip to content
Prev 269503 / 398502 Next

Bug or feature? sum(c(a, b, c)) != (a + b + c)

On Wed, Aug 24, 2011 at 11:06 AM, Ted Harding <ted.harding at wlandres.net> wrote:
sum() uses a long double accumulator.
static Rboolean rsum(double *x, int n, double *value, Rboolean narm)
{
    long double s = 0.0;
    int i;
    Rboolean updated = FALSE;

    for (i = 0; i < n; i++) {
	if (!narm || !ISNAN(x[i])) {
	    if(!updated) updated = TRUE;
	    s += x[i];
	}
    }
    *value = s;

    return(updated);
}