\sqrt{x + 1} - \sqrt{x}\frac{1 + 0}{\mathsf{fma}\left(\sqrt{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}}, \sqrt{\sqrt[3]{x + 1}}, \sqrt{x}\right)}double f(double x) {
double r453 = x;
double r454 = 1.0;
double r455 = r453 + r454;
double r456 = sqrt(r455);
double r457 = sqrt(r453);
double r458 = r456 - r457;
return r458;
}
double f(double x) {
double r459 = 1.0;
double r460 = 0.0;
double r461 = r459 + r460;
double r462 = x;
double r463 = r462 + r459;
double r464 = cbrt(r463);
double r465 = r464 * r464;
double r466 = sqrt(r465);
double r467 = sqrt(r464);
double r468 = sqrt(r462);
double r469 = fma(r466, r467, r468);
double r470 = r461 / r469;
return r470;
}




Bits error versus x
| Original | 30.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 30.6
rmApplied flip--30.4
Simplified0.2
rmApplied add-cube-cbrt0.3
Applied sqrt-prod0.3
Applied fma-def0.3
Final simplification0.3
herbie shell --seed 2020025 +o rules:numerics
(FPCore (x)
:name "2sqrt (example 3.1)"
:precision binary64
:herbie-target
(/ 1 (+ (sqrt (+ x 1)) (sqrt x)))
(- (sqrt (+ x 1)) (sqrt x)))