\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x1 \le 0.003488972167968749059363542386336121126078:\\
\;\;\;\;\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 + \left(\frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)} + x0\right) \cdot \frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)}}}{\frac{x0}{1 - x1} + x0}\\
\mathbf{else}:\\
\;\;\;\;\frac{x0 \cdot \frac{\log \left(e^{\frac{{x0}^{3}}{{\left(\sqrt{1} + \sqrt{x1}\right)}^{6} \cdot {\left(\sqrt{1} - \sqrt{x1}\right)}^{6}} - {x0}^{3}}\right)}{x0 \cdot x0 + \left(\frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)} + x0\right) \cdot \frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)}}}{\frac{x0}{1 - x1} + x0}\\
\end{array}double f(double x0, double x1) {
double r117755 = x0;
double r117756 = 1.0;
double r117757 = x1;
double r117758 = r117756 - r117757;
double r117759 = r117755 / r117758;
double r117760 = r117759 - r117755;
return r117760;
}
double f(double x0, double x1) {
double r117761 = x1;
double r117762 = 0.003488972167968749;
bool r117763 = r117761 <= r117762;
double r117764 = x0;
double r117765 = 3.0;
double r117766 = pow(r117764, r117765);
double r117767 = 1.0;
double r117768 = r117767 - r117761;
double r117769 = 6.0;
double r117770 = pow(r117768, r117769);
double r117771 = r117766 / r117770;
double r117772 = r117771 - r117766;
double r117773 = exp(r117772);
double r117774 = sqrt(r117773);
double r117775 = log(r117774);
double r117776 = r117775 + r117775;
double r117777 = r117764 * r117764;
double r117778 = r117768 * r117768;
double r117779 = r117764 / r117778;
double r117780 = r117779 + r117764;
double r117781 = r117780 * r117779;
double r117782 = r117777 + r117781;
double r117783 = r117776 / r117782;
double r117784 = r117764 * r117783;
double r117785 = r117764 / r117768;
double r117786 = r117785 + r117764;
double r117787 = r117784 / r117786;
double r117788 = sqrt(r117767);
double r117789 = sqrt(r117761);
double r117790 = r117788 + r117789;
double r117791 = pow(r117790, r117769);
double r117792 = r117788 - r117789;
double r117793 = pow(r117792, r117769);
double r117794 = r117791 * r117793;
double r117795 = r117766 / r117794;
double r117796 = r117795 - r117766;
double r117797 = exp(r117796);
double r117798 = log(r117797);
double r117799 = r117798 / r117782;
double r117800 = r117764 * r117799;
double r117801 = r117800 / r117786;
double r117802 = r117763 ? r117787 : r117801;
return r117802;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.8 |
|---|---|
| Target | 0.3 |
| Herbie | 2.1 |
if x1 < 0.003488972167968749Initial program 11.2
rmApplied flip--11.4
Simplified8.7
rmApplied flip3--6.0
Simplified6.0
rmApplied add-log-exp6.0
Applied add-log-exp6.0
Applied diff-log5.2
Simplified5.2
rmApplied add-sqr-sqrt3.5
Applied log-prod2.6
if 0.003488972167968749 < x1 Initial program 4.6
rmApplied flip--3.2
Simplified3.9
rmApplied flip3--3.9
Simplified3.9
rmApplied add-log-exp3.9
Applied add-log-exp3.9
Applied diff-log4.0
Simplified3.9
rmApplied add-sqr-sqrt3.9
Applied add-sqr-sqrt3.9
Applied difference-of-squares3.9
Applied unpow-prod-down1.6
Final simplification2.1
herbie shell --seed 2019304
(FPCore (x0 x1)
:name "(- (/ x0 (- 1 x1)) x0)"
:precision binary64
:pre (or (and (== x0 1.855) (== x1 2.09000000000000012e-4)) (and (== x0 2.98499999999999988) (== x1 0.018599999999999998)))
:herbie-target
(/ (* x0 x1) (- 1 x1))
(- (/ x0 (- 1 x1)) x0))