assert(csum + lo * lo == csum);
frac_lo += lo * lo;
}
- frac += frac_lo + frac_mid;
- h = sqrt(csum - 1.0 + frac);
+ h = sqrt(csum - 1.0 + (frac_lo + frac_mid + frac));
x = h;
t = x * T27;
assert(fabs(csum) >= fabs(x));
oldcsum = csum;
csum += x;
- frac += (oldcsum - csum) + x;
+ frac_mid += (oldcsum - csum) + x;
x = -lo * lo;
assert(fabs(csum) >= fabs(x));
oldcsum = csum;
csum += x;
- frac += (oldcsum - csum) + x;
+ frac_lo += (oldcsum - csum) + x;
- x = csum - 1.0 + frac;
+ x = csum - 1.0 + (frac_lo + frac_mid + frac);
return (h + x / (2.0 * h)) / scale;
}
/* When max_e < -1023, ldexp(1.0, -max_e) overflows.