\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x1 \le 2.12089080810546861 \cdot 10^{-4}:\\
\;\;\;\;\frac{\log \left(e^{\frac{x0}{1 - x1} \cdot \left(\frac{\sqrt{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt{x0}}{\sqrt{1 - x1}}\right) - x0 \cdot x0}\right)}{\frac{\frac{x0}{\sqrt{1} + \sqrt{x1}}}{\sqrt{1} - \sqrt{x1}} + x0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\log \left(e^{\frac{x0}{1 - x1} \cdot \frac{x0}{1 - x1} - x0 \cdot x0}\right)}{\frac{x0}{1 - x1} + x0}\\
\end{array}double f(double x0, double x1) {
double r165608 = x0;
double r165609 = 1.0;
double r165610 = x1;
double r165611 = r165609 - r165610;
double r165612 = r165608 / r165611;
double r165613 = r165612 - r165608;
return r165613;
}
double f(double x0, double x1) {
double r165614 = x1;
double r165615 = 0.00021208908081054686;
bool r165616 = r165614 <= r165615;
double r165617 = x0;
double r165618 = 1.0;
double r165619 = r165618 - r165614;
double r165620 = r165617 / r165619;
double r165621 = sqrt(r165617);
double r165622 = sqrt(r165619);
double r165623 = r165621 / r165622;
double r165624 = r165623 * r165623;
double r165625 = r165620 * r165624;
double r165626 = r165617 * r165617;
double r165627 = r165625 - r165626;
double r165628 = exp(r165627);
double r165629 = log(r165628);
double r165630 = sqrt(r165618);
double r165631 = sqrt(r165614);
double r165632 = r165630 + r165631;
double r165633 = r165617 / r165632;
double r165634 = r165630 - r165631;
double r165635 = r165633 / r165634;
double r165636 = r165635 + r165617;
double r165637 = r165629 / r165636;
double r165638 = r165620 * r165620;
double r165639 = r165638 - r165626;
double r165640 = exp(r165639);
double r165641 = log(r165640);
double r165642 = r165620 + r165617;
double r165643 = r165641 / r165642;
double r165644 = r165616 ? r165637 : r165643;
return r165644;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.2 |
| Herbie | 4.7 |
if x1 < 0.00021208908081054686Initial program 11.2
rmApplied flip--11.4
rmApplied add-sqr-sqrt8.1
Applied add-sqr-sqrt8.1
Applied times-frac8.1
rmApplied add-log-exp8.1
Applied add-log-exp8.1
Applied diff-log7.4
Simplified7.4
rmApplied add-sqr-sqrt7.4
Applied add-sqr-sqrt7.4
Applied difference-of-squares7.4
Applied associate-/r*7.4
if 0.00021208908081054686 < x1 Initial program 4.5
rmApplied flip--3.2
rmApplied add-log-exp3.2
Applied add-log-exp3.2
Applied diff-log3.5
Simplified1.9
Final simplification4.7
herbie shell --seed 2020036
(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))