\frac{x0}{1 - x1} - x0\frac{\log \left(e^{\frac{x0 \cdot x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)} - x0 \cdot x0}\right)}{\left(\sqrt[3]{x0 + \frac{x0}{1 - x1}} \cdot \sqrt[3]{x0 + \frac{x0}{1 - x1}}\right) \cdot \sqrt[3]{x0 + \frac{x0}{1 - x1}}}double f(double x0, double x1) {
double r5061253 = x0;
double r5061254 = 1.0;
double r5061255 = x1;
double r5061256 = r5061254 - r5061255;
double r5061257 = r5061253 / r5061256;
double r5061258 = r5061257 - r5061253;
return r5061258;
}
double f(double x0, double x1) {
double r5061259 = x0;
double r5061260 = r5061259 * r5061259;
double r5061261 = 1.0;
double r5061262 = x1;
double r5061263 = r5061261 - r5061262;
double r5061264 = r5061263 * r5061263;
double r5061265 = r5061260 / r5061264;
double r5061266 = r5061265 - r5061260;
double r5061267 = exp(r5061266);
double r5061268 = log(r5061267);
double r5061269 = r5061259 / r5061263;
double r5061270 = r5061259 + r5061269;
double r5061271 = cbrt(r5061270);
double r5061272 = r5061271 * r5061271;
double r5061273 = r5061272 * r5061271;
double r5061274 = r5061268 / r5061273;
return r5061274;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.3 |
| Herbie | 4.8 |
Initial program 7.9
rmApplied flip--7.3
rmApplied div-inv5.6
rmApplied add-cube-cbrt5.7
rmApplied add-log-exp4.8
Simplified4.8
Final simplification4.8
herbie shell --seed 2019149
(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 x1))
(- (/ x0 (- 1 x1)) x0))