Compute a+b exactly, returning the exact result in a struct dd. We assume that both a and b are finite, but make no assumptions about their relative magnitudes.
fn dd_add128(a: f128, b: f128) dd128
fn dd_add128(a: f128, b: f128) dd128 {
var ret: dd128 = undefined;
ret.hi = a + b;
const s = ret.hi - a;
ret.lo = (a - (ret.hi - s)) + (b - s);
return ret;
}