\frac{x0}{1 - x1} - x0\frac{x0 \cdot \frac{\log \left(\sqrt{e^{\frac{{x0}^{3}}{{\left(1 - x1\right)}^{6}} - {x0}^{3}}}\right) + \log \left(\sqrt{e^{\frac{{x0}^{3}}{{\left(1 - x1\right)}^{6}} - {x0}^{3}}}\right)}{x0 \cdot x0 + \frac{x0}{1 - x1} \cdot \left(\frac{x0}{{\left(1 - x1\right)}^{3}} + \frac{x0}{1 - x1}\right)}}{\frac{x0}{1 - x1} + x0}double f(double x0, double x1) {
double r131540 = x0;
double r131541 = 1.0;
double r131542 = x1;
double r131543 = r131541 - r131542;
double r131544 = r131540 / r131543;
double r131545 = r131544 - r131540;
return r131545;
}
double f(double x0, double x1) {
double r131546 = x0;
double r131547 = 3.0;
double r131548 = pow(r131546, r131547);
double r131549 = 1.0;
double r131550 = x1;
double r131551 = r131549 - r131550;
double r131552 = 6.0;
double r131553 = pow(r131551, r131552);
double r131554 = r131548 / r131553;
double r131555 = r131554 - r131548;
double r131556 = exp(r131555);
double r131557 = sqrt(r131556);
double r131558 = log(r131557);
double r131559 = r131558 + r131558;
double r131560 = r131546 * r131546;
double r131561 = r131546 / r131551;
double r131562 = pow(r131551, r131547);
double r131563 = r131546 / r131562;
double r131564 = r131563 + r131561;
double r131565 = r131561 * r131564;
double r131566 = r131560 + r131565;
double r131567 = r131559 / r131566;
double r131568 = r131546 * r131567;
double r131569 = r131561 + r131546;
double r131570 = r131568 / r131569;
return r131570;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.2 |
| Herbie | 3.5 |
Initial program 7.9
rmApplied flip--7.3
Simplified6.3
rmApplied flip3--5.0
Simplified4.9
rmApplied add-log-exp4.9
Applied add-log-exp4.9
Applied diff-log4.5
Simplified4.5
rmApplied add-sqr-sqrt3.6
Applied log-prod3.5
Final simplification3.5
herbie shell --seed 2020042
(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))