\frac{x0}{1 - x1} - x0{\left({e}^{\left(\sqrt[3]{\log \left(\mathsf{fma}\left(\left(\sqrt[3]{x0} \cdot \sqrt[3]{x0}\right), \left(\frac{\sqrt[3]{x0}}{1 - x1}\right), \left(-x0\right)\right)\right)} \cdot \sqrt[3]{\log \left(\mathsf{fma}\left(\left(\sqrt[3]{x0} \cdot \sqrt[3]{x0}\right), \left(\frac{\sqrt[3]{x0}}{1 - x1}\right), \left(-x0\right)\right)\right)}\right)}\right)}^{\left(\sqrt[3]{\log \left(\mathsf{fma}\left(\left(\sqrt[3]{x0} \cdot \sqrt[3]{x0}\right), \left(\frac{\sqrt[3]{x0}}{1 - x1}\right), \left(-x0\right)\right)\right)}\right)}double f(double x0, double x1) {
double r3582864 = x0;
double r3582865 = 1.0;
double r3582866 = x1;
double r3582867 = r3582865 - r3582866;
double r3582868 = r3582864 / r3582867;
double r3582869 = r3582868 - r3582864;
return r3582869;
}
double f(double x0, double x1) {
double r3582870 = exp(1.0);
double r3582871 = x0;
double r3582872 = cbrt(r3582871);
double r3582873 = r3582872 * r3582872;
double r3582874 = 1.0;
double r3582875 = x1;
double r3582876 = r3582874 - r3582875;
double r3582877 = r3582872 / r3582876;
double r3582878 = -r3582871;
double r3582879 = fma(r3582873, r3582877, r3582878);
double r3582880 = log(r3582879);
double r3582881 = cbrt(r3582880);
double r3582882 = r3582881 * r3582881;
double r3582883 = pow(r3582870, r3582882);
double r3582884 = pow(r3582883, r3582881);
return r3582884;
}




Bits error versus x0




Bits error versus x1
| Original | 7.9 |
|---|---|
| Target | 0.2 |
| Herbie | 7.2 |
Initial program 7.9
rmApplied *-un-lft-identity7.9
Applied add-cube-cbrt7.9
Applied times-frac8.2
Applied fma-neg7.0
Simplified7.0
rmApplied add-exp-log7.0
rmApplied *-un-lft-identity7.0
Applied exp-prod6.9
Simplified6.9
rmApplied add-cube-cbrt7.2
Applied pow-unpow7.2
Final simplification7.2
herbie shell --seed 2019124 +o rules:numerics
(FPCore (x0 x1)
:name "(- (/ x0 (- 1 x1)) x0)"
: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))