\frac{x0}{1 - x1} - x0\frac{\log \left(e^{\frac{x0}{1 - x1} \cdot \left(\frac{x0}{1 \cdot 1 - x1 \cdot x1} \cdot 1\right) + \left(\frac{x0}{1 - x1} \cdot \left(\frac{x0}{1 \cdot 1 - x1 \cdot x1} \cdot x1\right) - x0 \cdot x0\right)}\right)}{x0 + \frac{x0}{1 - x1}}double f(double x0, double x1) {
double r132919 = x0;
double r132920 = 1.0;
double r132921 = x1;
double r132922 = r132920 - r132921;
double r132923 = r132919 / r132922;
double r132924 = r132923 - r132919;
return r132924;
}
double f(double x0, double x1) {
double r132925 = x0;
double r132926 = 1.0;
double r132927 = x1;
double r132928 = r132926 - r132927;
double r132929 = r132925 / r132928;
double r132930 = r132926 * r132926;
double r132931 = r132927 * r132927;
double r132932 = r132930 - r132931;
double r132933 = r132925 / r132932;
double r132934 = r132933 * r132926;
double r132935 = r132929 * r132934;
double r132936 = r132933 * r132927;
double r132937 = r132929 * r132936;
double r132938 = r132925 * r132925;
double r132939 = r132937 - r132938;
double r132940 = r132935 + r132939;
double r132941 = exp(r132940);
double r132942 = log(r132941);
double r132943 = r132925 + r132929;
double r132944 = r132942 / r132943;
return r132944;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.8 |
|---|---|
| Target | 0.3 |
| Herbie | 5.1 |
Initial program 7.8
rmApplied flip--7.3
Simplified7.3
rmApplied flip--5.6
Applied associate-/r/6.1
rmApplied add-log-exp6.1
Applied add-log-exp6.1
Applied diff-log5.8
Simplified5.8
rmApplied distribute-lft-in6.3
Applied distribute-lft-in5.1
Applied associate--l+5.1
Final simplification5.1
herbie shell --seed 2019209
(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))