code: static double[] sumWithCompensation(double[] intermediateSum, double value) {
          double tmp = value - intermediateSum[1];
          double sum = intermediateSum[0];
          double velvel = sum + tmp; // Little wolf of rounding error
          intermediateSum[1] = (velvel - sum) - tmp;
          intermediateSum[0] = velvel;
          return intermediateSum;
      }
docs: Incorporate a new double value using Kahan summation /
  compensation summation.
  
  High-order bits of the sum are in intermediateSum[0], low-order
  bits of the sum are in intermediateSum[1], any additional
  elements are application-specific.
  
  @param intermediateSum the high-order and low-order words of the intermediate sum
  @param value the name value to be included in the running sum