\frac{x0}{1 - x1} - x0\frac{x0 \cdot \frac{\log \left(\sqrt{e^{\frac{{x0}^{3}}{{\left(1 - x1\right)}^{6}} - {x0}^{3}}}\right) + \log \left(\sqrt{e^{\frac{{x0}^{3}}{{\left(1 - x1\right)}^{6}} - {x0}^{3}}}\right)}{x0 \cdot x0 + \frac{x0}{1 - x1} \cdot \left(\frac{x0}{{\left(1 - x1\right)}^{3}} + \frac{x0}{1 - x1}\right)}}{\frac{x0}{1 - x1} + x0}double f(double x0, double x1) {
double r136783 = x0;
double r136784 = 1.0;
double r136785 = x1;
double r136786 = r136784 - r136785;
double r136787 = r136783 / r136786;
double r136788 = r136787 - r136783;
return r136788;
}
double f(double x0, double x1) {
double r136789 = x0;
double r136790 = 3.0;
double r136791 = pow(r136789, r136790);
double r136792 = 1.0;
double r136793 = x1;
double r136794 = r136792 - r136793;
double r136795 = 6.0;
double r136796 = pow(r136794, r136795);
double r136797 = r136791 / r136796;
double r136798 = r136797 - r136791;
double r136799 = exp(r136798);
double r136800 = sqrt(r136799);
double r136801 = log(r136800);
double r136802 = r136801 + r136801;
double r136803 = r136789 * r136789;
double r136804 = r136789 / r136794;
double r136805 = pow(r136794, r136790);
double r136806 = r136789 / r136805;
double r136807 = r136806 + r136804;
double r136808 = r136804 * r136807;
double r136809 = r136803 + r136808;
double r136810 = r136802 / r136809;
double r136811 = r136789 * r136810;
double r136812 = r136804 + r136789;
double r136813 = r136811 / r136812;
return r136813;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.2 |
| Herbie | 3.5 |
Initial program 7.9
rmApplied flip--7.3
Simplified6.3
rmApplied flip3--5.0
Simplified4.9
rmApplied add-log-exp4.9
Applied add-log-exp4.9
Applied diff-log4.5
Simplified4.5
rmApplied add-sqr-sqrt3.6
Applied log-prod3.5
Final simplification3.5
herbie shell --seed 2020042
(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))