\frac{x0}{1 - x1} - x0\frac{x0 \cdot 2}{\frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)} \cdot \left(x0 + \frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)}\right) + x0 \cdot x0} \cdot \frac{\log \left(\sqrt{e^{{\left(\frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)}\right)}^{3} - {x0}^{3}}}\right)}{\frac{x0}{1 - x1} + x0}double f(double x0, double x1) {
double r152490 = x0;
double r152491 = 1.0;
double r152492 = x1;
double r152493 = r152491 - r152492;
double r152494 = r152490 / r152493;
double r152495 = r152494 - r152490;
return r152495;
}
double f(double x0, double x1) {
double r152496 = x0;
double r152497 = 2.0;
double r152498 = r152496 * r152497;
double r152499 = 1.0;
double r152500 = x1;
double r152501 = r152499 - r152500;
double r152502 = r152501 * r152501;
double r152503 = r152496 / r152502;
double r152504 = r152496 + r152503;
double r152505 = r152503 * r152504;
double r152506 = r152496 * r152496;
double r152507 = r152505 + r152506;
double r152508 = r152498 / r152507;
double r152509 = 3.0;
double r152510 = pow(r152503, r152509);
double r152511 = pow(r152496, r152509);
double r152512 = r152510 - r152511;
double r152513 = exp(r152512);
double r152514 = sqrt(r152513);
double r152515 = log(r152514);
double r152516 = r152496 / r152501;
double r152517 = r152516 + r152496;
double r152518 = r152515 / r152517;
double r152519 = r152508 * r152518;
return r152519;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.3 |
| Herbie | 3.2 |
Initial program 7.9
rmApplied flip--7.3
Simplified6.3
rmApplied flip3--5.0
Simplified5.0
rmApplied add-log-exp5.0
Applied add-log-exp5.0
Applied diff-log4.6
Simplified4.6
rmApplied add-sqr-sqrt3.8
Applied log-prod3.3
Final simplification3.2
herbie shell --seed 2019308
(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))