fn dd_mul(a: f64, b: f64) dd
fn dd_mul(a: f64, b: f64) dd { var ret: dd = undefined; const split: f64 = 0x1.0p27 + 1.0; var p = a * split; var ha = a - p; ha += p; const la = a - ha; p = b * split; var hb = b - p; hb += p; const lb = b - hb; p = ha * hb; const q = ha * lb + la * hb; ret.hi = p + q; ret.lo = p - ret.hi + q + la * lb; return ret; }