\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x1 \le 2.12089080810546861321705391922876060562 \cdot 10^{-4}:\\
\;\;\;\;\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 r122881 = x0;
double r122882 = 1.0;
double r122883 = x1;
double r122884 = r122882 - r122883;
double r122885 = r122881 / r122884;
double r122886 = r122885 - r122881;
return r122886;
}
double f(double x0, double x1) {
double r122887 = x1;
double r122888 = 0.00021208908081054686;
bool r122889 = r122887 <= r122888;
double r122890 = x0;
double r122891 = 3.0;
double r122892 = pow(r122890, r122891);
double r122893 = 1.0;
double r122894 = r122893 - r122887;
double r122895 = 6.0;
double r122896 = pow(r122894, r122895);
double r122897 = r122892 / r122896;
double r122898 = r122897 - r122892;
double r122899 = exp(r122898);
double r122900 = sqrt(r122899);
double r122901 = log(r122900);
double r122902 = r122901 + r122901;
double r122903 = r122890 * r122890;
double r122904 = r122894 * r122894;
double r122905 = r122890 / r122904;
double r122906 = r122905 + r122890;
double r122907 = r122906 * r122905;
double r122908 = r122903 + r122907;
double r122909 = r122902 / r122908;
double r122910 = r122890 * r122909;
double r122911 = r122890 / r122894;
double r122912 = r122911 + r122890;
double r122913 = r122910 / r122912;
double r122914 = sqrt(r122893);
double r122915 = sqrt(r122887);
double r122916 = r122914 + r122915;
double r122917 = pow(r122916, r122895);
double r122918 = r122914 - r122915;
double r122919 = pow(r122918, r122895);
double r122920 = r122917 * r122919;
double r122921 = r122892 / r122920;
double r122922 = r122921 - r122892;
double r122923 = exp(r122922);
double r122924 = log(r122923);
double r122925 = r122924 / r122908;
double r122926 = r122890 * r122925;
double r122927 = r122926 / r122912;
double r122928 = r122889 ? r122913 : r122927;
return r122928;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.3 |
| Herbie | 2.0 |
if x1 < 0.00021208908081054686Initial 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.5
if 0.00021208908081054686 < 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.0
herbie shell --seed 2019323
(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))