\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 r96308 = x0;
double r96309 = 1.0;
double r96310 = x1;
double r96311 = r96309 - r96310;
double r96312 = r96308 / r96311;
double r96313 = r96312 - r96308;
return r96313;
}
double f(double x0, double x1) {
double r96314 = x0;
double r96315 = 1.0;
double r96316 = x1;
double r96317 = r96315 - r96316;
double r96318 = r96314 / r96317;
double r96319 = r96315 * r96315;
double r96320 = r96316 * r96316;
double r96321 = r96319 - r96320;
double r96322 = r96314 / r96321;
double r96323 = r96322 * r96315;
double r96324 = r96318 * r96323;
double r96325 = r96322 * r96316;
double r96326 = r96318 * r96325;
double r96327 = r96314 * r96314;
double r96328 = r96326 - r96327;
double r96329 = r96324 + r96328;
double r96330 = exp(r96329);
double r96331 = log(r96330);
double r96332 = r96314 + r96318;
double r96333 = r96331 / r96332;
return r96333;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.2 |
| Herbie | 5.1 |
Initial program 7.9
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 2019212
(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))