\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 r101586 = x0;
double r101587 = 1.0;
double r101588 = x1;
double r101589 = r101587 - r101588;
double r101590 = r101586 / r101589;
double r101591 = r101590 - r101586;
return r101591;
}
double f(double x0, double x1) {
double r101592 = x1;
double r101593 = 0.00021208908081054686;
bool r101594 = r101592 <= r101593;
double r101595 = x0;
double r101596 = 3.0;
double r101597 = pow(r101595, r101596);
double r101598 = 1.0;
double r101599 = r101598 - r101592;
double r101600 = 6.0;
double r101601 = pow(r101599, r101600);
double r101602 = r101597 / r101601;
double r101603 = r101602 - r101597;
double r101604 = exp(r101603);
double r101605 = sqrt(r101604);
double r101606 = log(r101605);
double r101607 = r101606 + r101606;
double r101608 = r101595 * r101595;
double r101609 = r101599 * r101599;
double r101610 = r101595 / r101609;
double r101611 = r101610 + r101595;
double r101612 = r101611 * r101610;
double r101613 = r101608 + r101612;
double r101614 = r101607 / r101613;
double r101615 = r101595 * r101614;
double r101616 = r101595 / r101599;
double r101617 = r101616 + r101595;
double r101618 = r101615 / r101617;
double r101619 = sqrt(r101598);
double r101620 = sqrt(r101592);
double r101621 = r101619 + r101620;
double r101622 = pow(r101621, r101600);
double r101623 = r101619 - r101620;
double r101624 = pow(r101623, r101600);
double r101625 = r101622 * r101624;
double r101626 = r101597 / r101625;
double r101627 = r101626 - r101597;
double r101628 = exp(r101627);
double r101629 = log(r101628);
double r101630 = r101629 / r101613;
double r101631 = r101595 * r101630;
double r101632 = r101631 / r101617;
double r101633 = r101594 ? r101618 : r101632;
return r101633;
}




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.5
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 2019326
(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))