inline doubledouble operator +(const doubledouble& x, const doubledouble& y) { double H, h, T, t, S, s, e, f; S = x.hi + y.hi; T = x.lo + y.lo; e = S - x.hi; f = T - x.lo; s = S - e; t = T - f; s = ( y.hi - e ) + ( x.hi - s); t = ( y.lo - f ) + ( x.lo - t ); e = s + T; H = S + e; h = e + ( S - H ); e = t + h; doubledouble z; z.hi = H + e; z.lo = e + double( H - z.hi ); return z; }