\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x1 \le 0.0182045976562499982:\\
\;\;\;\;\frac{x0 \cdot \left(\frac{1}{1 - x1} \cdot \frac{x0}{1 - x1} - x0\right)}{\frac{\frac{x0}{1 - x1} \cdot \frac{x0}{1 - x1} - x0 \cdot x0}{\frac{x0}{1 - x1} - x0}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x0 \cdot \log \left(e^{\frac{\frac{1}{1 - x1}}{\frac{1 - x1}{x0}} - x0}\right)}{\frac{x0}{1 - x1} + x0}\\
\end{array}double code(double x0, double x1) {
return ((double) (((double) (x0 / ((double) (1.0 - x1)))) - x0));
}
double code(double x0, double x1) {
double VAR;
if ((x1 <= 0.018204597656249998)) {
VAR = ((double) (((double) (x0 * ((double) (((double) (((double) (1.0 / ((double) (1.0 - x1)))) * ((double) (x0 / ((double) (1.0 - x1)))))) - x0)))) / ((double) (((double) (((double) (((double) (x0 / ((double) (1.0 - x1)))) * ((double) (x0 / ((double) (1.0 - x1)))))) - ((double) (x0 * x0)))) / ((double) (((double) (x0 / ((double) (1.0 - x1)))) - x0))))));
} else {
VAR = ((double) (((double) (x0 * ((double) log(((double) exp(((double) (((double) (((double) (1.0 / ((double) (1.0 - x1)))) / ((double) (((double) (1.0 - x1)) / x0)))) - x0)))))))) / ((double) (((double) (x0 / ((double) (1.0 - x1)))) + x0))));
}
return VAR;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 8.4 |
|---|---|
| Target | 0.5 |
| Herbie | 4.3 |
if x1 < 0.018204597656249998Initial program 11.3
rmApplied flip--11.4
rmApplied div-inv9.1
Applied associate-*l*9.1
Applied distribute-lft-out--9.1
rmApplied flip-+7.7
if 0.018204597656249998 < x1 Initial program 5.5
rmApplied flip--4.0
rmApplied div-inv4.0
Applied associate-*l*4.0
Applied distribute-lft-out--4.7
rmApplied clear-num2.8
rmApplied add-log-exp2.8
Applied add-log-exp2.8
Applied diff-log3.9
Simplified1.0
Final simplification4.3
herbie shell --seed 2020114
(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))