\sqrt{x + 1} - \sqrt{x}\frac{1}{\mathsf{fma}\left(\sqrt{\sqrt[3]{x} \cdot \sqrt[3]{x}}, \sqrt{\sqrt[3]{x}}, \sqrt{x + 1}\right)}double f(double x) {
double r99181 = x;
double r99182 = 1.0;
double r99183 = r99181 + r99182;
double r99184 = sqrt(r99183);
double r99185 = sqrt(r99181);
double r99186 = r99184 - r99185;
return r99186;
}
double f(double x) {
double r99187 = 1.0;
double r99188 = x;
double r99189 = cbrt(r99188);
double r99190 = r99189 * r99189;
double r99191 = sqrt(r99190);
double r99192 = sqrt(r99189);
double r99193 = r99188 + r99187;
double r99194 = sqrt(r99193);
double r99195 = fma(r99191, r99192, r99194);
double r99196 = r99187 / r99195;
return r99196;
}




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