\frac{x0}{1 - x1} - x0\mathsf{fma}\left(\sqrt[3]{x0} \cdot \sqrt[3]{x0}, \frac{\sqrt[3]{x0}}{1 - x1}, -x0\right)double f(double x0, double x1) {
double r127329 = x0;
double r127330 = 1.0;
double r127331 = x1;
double r127332 = r127330 - r127331;
double r127333 = r127329 / r127332;
double r127334 = r127333 - r127329;
return r127334;
}
double f(double x0, double x1) {
double r127335 = x0;
double r127336 = cbrt(r127335);
double r127337 = r127336 * r127336;
double r127338 = 1.0;
double r127339 = x1;
double r127340 = r127338 - r127339;
double r127341 = r127336 / r127340;
double r127342 = -r127335;
double r127343 = fma(r127337, r127341, r127342);
return r127343;
}




Bits error versus x0




Bits error versus x1
| Original | 7.9 |
|---|---|
| Target | 0.2 |
| Herbie | 7.0 |
Initial program 7.9
rmApplied *-un-lft-identity7.9
Applied add-cube-cbrt7.9
Applied times-frac8.2
Applied fma-neg7.0
Final simplification7.0
herbie shell --seed 2019325 +o rules:numerics
(FPCore (x0 x1)
:name "(- (/ x0 (- 1 x1)) x0)"
:precision binary64
:pre (or (and (== x0 1.855) (== x1 0.000209)) (and (== x0 2.985) (== x1 0.0186)))
:herbie-target
(/ (* x0 x1) (- 1 x1))
(- (/ x0 (- 1 x1)) x0))