\sqrt{x + 1} - \sqrt{x}\frac{1}{\mathsf{fma}\left(\sqrt{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}, \sqrt{\sqrt[3]{\sqrt{x + 1}} \cdot \sqrt[3]{\sqrt{x + 1}}}, \sqrt{x}\right)}double f(double x) {
double r477562 = x;
double r477563 = 1.0;
double r477564 = r477562 + r477563;
double r477565 = sqrt(r477564);
double r477566 = sqrt(r477562);
double r477567 = r477565 - r477566;
return r477567;
}
double f(double x) {
double r477568 = 1.0;
double r477569 = x;
double r477570 = r477569 + r477568;
double r477571 = cbrt(r477570);
double r477572 = r477571 * r477571;
double r477573 = sqrt(r477572);
double r477574 = sqrt(r477570);
double r477575 = cbrt(r477574);
double r477576 = r477575 * r477575;
double r477577 = sqrt(r477576);
double r477578 = sqrt(r477569);
double r477579 = fma(r477573, r477577, r477578);
double r477580 = r477568 / r477579;
return r477580;
}




Bits error versus x
| Original | 30.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 30.0
rmApplied flip--29.7
Simplified0.2
rmApplied add-cube-cbrt0.3
Applied sqrt-prod0.3
Applied fma-def0.3
rmApplied add-sqr-sqrt0.3
Applied cbrt-prod0.3
Final simplification0.3
herbie shell --seed 2020045 +o rules:numerics
(FPCore (x)
:name "Main:bigenough3 from C"
:precision binary64
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))