#include #define N 1000000 #define REPS 1000 double x[N]; /* sum using Kahan summation */ double sumk(int n, double *x) { double s, t, c, y; int i; s = x[0]; c = 0.0; for (i = 1; i < N; i++) { y = x[i] - c; t = s + y; c = (t - s) - y; s = t; } return s; } int main() { double s; int i, j; for (i = 0; i < N; i++) x[i] = i + 1; for (j = 0; j < REPS; j++) s = sumk(N, x); printf("sum = %f\n", s); return 0; }