\frac{x0}{1 - x1} - x0\frac{\frac{\frac{x0}{\sqrt{1 - x1}}}{\sqrt{1 - x1}} \cdot \frac{x0}{1 - x1} - x0 \cdot x0}{\left(\sqrt[3]{\frac{x0}{1 - x1} + x0} \cdot \sqrt[3]{\frac{x0}{1 - x1} + x0}\right) \cdot \sqrt[3]{\frac{x0}{1 - x1} + x0}}double f(double x0, double x1) {
double r189824 = x0;
double r189825 = 1.0;
double r189826 = x1;
double r189827 = r189825 - r189826;
double r189828 = r189824 / r189827;
double r189829 = r189828 - r189824;
return r189829;
}
double f(double x0, double x1) {
double r189830 = x0;
double r189831 = 1.0;
double r189832 = x1;
double r189833 = r189831 - r189832;
double r189834 = sqrt(r189833);
double r189835 = r189830 / r189834;
double r189836 = r189835 / r189834;
double r189837 = r189830 / r189833;
double r189838 = r189836 * r189837;
double r189839 = r189830 * r189830;
double r189840 = r189838 - r189839;
double r189841 = r189837 + r189830;
double r189842 = cbrt(r189841);
double r189843 = r189842 * r189842;
double r189844 = r189843 * r189842;
double r189845 = r189840 / r189844;
return r189845;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.8 |
|---|---|
| Target | 0.2 |
| Herbie | 5.6 |
Initial program 7.8
rmApplied flip--7.3
rmApplied add-sqr-sqrt5.6
Applied associate-/r*5.6
rmApplied add-cube-cbrt5.6
Final simplification5.6
herbie shell --seed 2020056
(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))