\frac{x0}{1 - x1} - x0\frac{\frac{e^{\log \left(\frac{\frac{\left(x0 \cdot x0\right) \cdot x0}{1 - x1}}{\left(1 - x1\right) \cdot \left(1 - x1\right)} \cdot \frac{\frac{\left(x0 \cdot x0\right) \cdot x0}{1 - x1}}{\left(1 - x1\right) \cdot \left(1 - x1\right)} - \left(\left(x0 \cdot x0\right) \cdot x0\right) \cdot \left(\left(x0 \cdot x0\right) \cdot x0\right)\right)}}{\left(x0 \cdot x0\right) \cdot x0 + \frac{\frac{\left(x0 \cdot x0\right) \cdot x0}{1 - x1}}{\left(1 - x1\right) \cdot \left(1 - x1\right)}}}{\frac{x0}{1 - x1} \cdot \frac{x0}{1 - x1} + \left(x0 \cdot x0 + x0 \cdot \frac{x0}{1 - x1}\right)}double f(double x0, double x1) {
double r6624295 = x0;
double r6624296 = 1.0;
double r6624297 = x1;
double r6624298 = r6624296 - r6624297;
double r6624299 = r6624295 / r6624298;
double r6624300 = r6624299 - r6624295;
return r6624300;
}
double f(double x0, double x1) {
double r6624301 = x0;
double r6624302 = r6624301 * r6624301;
double r6624303 = r6624302 * r6624301;
double r6624304 = 1.0;
double r6624305 = x1;
double r6624306 = r6624304 - r6624305;
double r6624307 = r6624303 / r6624306;
double r6624308 = r6624306 * r6624306;
double r6624309 = r6624307 / r6624308;
double r6624310 = r6624309 * r6624309;
double r6624311 = r6624303 * r6624303;
double r6624312 = r6624310 - r6624311;
double r6624313 = log(r6624312);
double r6624314 = exp(r6624313);
double r6624315 = r6624303 + r6624309;
double r6624316 = r6624314 / r6624315;
double r6624317 = r6624301 / r6624306;
double r6624318 = r6624317 * r6624317;
double r6624319 = r6624301 * r6624317;
double r6624320 = r6624302 + r6624319;
double r6624321 = r6624318 + r6624320;
double r6624322 = r6624316 / r6624321;
return r6624322;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.3 |
| Herbie | 5.5 |
Initial program 7.9
rmApplied flip3--7.7
Simplified7.3
rmApplied associate-*l/7.3
Applied frac-times6.2
Simplified6.0
rmApplied flip--5.9
rmApplied add-exp-log5.5
Final simplification5.5
herbie shell --seed 2019200
(FPCore (x0 x1)
:name "(- (/ x0 (- 1 x1)) x0)"
:pre (or (and (== x0 1.855) (== x1 0.000209)) (and (== x0 2.985) (== x1 0.0186)))
:herbie-target
(/ (* x0 x1) (- 1.0 x1))
(- (/ x0 (- 1.0 x1)) x0))