\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x1 \le 2.1826724243164061516238316773552696759 \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 r121433 = x0;
double r121434 = 1.0;
double r121435 = x1;
double r121436 = r121434 - r121435;
double r121437 = r121433 / r121436;
double r121438 = r121437 - r121433;
return r121438;
}
double f(double x0, double x1) {
double r121439 = x1;
double r121440 = 0.00021826724243164062;
bool r121441 = r121439 <= r121440;
double r121442 = x0;
double r121443 = 3.0;
double r121444 = pow(r121442, r121443);
double r121445 = 1.0;
double r121446 = r121445 - r121439;
double r121447 = 6.0;
double r121448 = pow(r121446, r121447);
double r121449 = r121444 / r121448;
double r121450 = r121449 - r121444;
double r121451 = exp(r121450);
double r121452 = sqrt(r121451);
double r121453 = log(r121452);
double r121454 = r121453 + r121453;
double r121455 = r121442 * r121442;
double r121456 = r121446 * r121446;
double r121457 = r121442 / r121456;
double r121458 = r121457 + r121442;
double r121459 = r121458 * r121457;
double r121460 = r121455 + r121459;
double r121461 = r121454 / r121460;
double r121462 = r121442 * r121461;
double r121463 = r121442 / r121446;
double r121464 = r121463 + r121442;
double r121465 = r121462 / r121464;
double r121466 = sqrt(r121445);
double r121467 = sqrt(r121439);
double r121468 = r121466 + r121467;
double r121469 = pow(r121468, r121447);
double r121470 = r121466 - r121467;
double r121471 = pow(r121470, r121447);
double r121472 = r121469 * r121471;
double r121473 = r121444 / r121472;
double r121474 = r121473 - r121444;
double r121475 = exp(r121474);
double r121476 = log(r121475);
double r121477 = r121476 / r121460;
double r121478 = r121442 * r121477;
double r121479 = r121478 / r121464;
double r121480 = r121441 ? r121465 : r121479;
return r121480;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.2 |
| Herbie | 2.1 |
if x1 < 0.00021826724243164062Initial 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.00021826724243164062 < x1 Initial program 4.5
rmApplied flip--3.1
Simplified3.8
rmApplied flip3--3.9
Simplified3.9
rmApplied add-log-exp3.9
Applied add-log-exp3.9
Applied diff-log4.0
Simplified3.8
rmApplied add-sqr-sqrt3.8
Applied add-sqr-sqrt3.8
Applied difference-of-squares3.8
Applied unpow-prod-down1.6
Final simplification2.1
herbie shell --seed 2019303
(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))