\frac{x0}{1 - x1} - x0\frac{\log \left(e^{\frac{\sqrt{x0}}{\frac{1 - x1}{\sqrt{x0}}} \cdot \frac{x0}{1 - x1} - x0 \cdot x0}\right)}{\frac{\frac{x0}{\sqrt{1} + \sqrt{x1}}}{\sqrt{1} - \sqrt{x1}} + x0}double f(double x0, double x1) {
double r133496 = x0;
double r133497 = 1.0;
double r133498 = x1;
double r133499 = r133497 - r133498;
double r133500 = r133496 / r133499;
double r133501 = r133500 - r133496;
return r133501;
}
double f(double x0, double x1) {
double r133502 = x0;
double r133503 = sqrt(r133502);
double r133504 = 1.0;
double r133505 = x1;
double r133506 = r133504 - r133505;
double r133507 = r133506 / r133503;
double r133508 = r133503 / r133507;
double r133509 = r133502 / r133506;
double r133510 = r133508 * r133509;
double r133511 = r133502 * r133502;
double r133512 = r133510 - r133511;
double r133513 = exp(r133512);
double r133514 = log(r133513);
double r133515 = sqrt(r133504);
double r133516 = sqrt(r133505);
double r133517 = r133515 + r133516;
double r133518 = r133502 / r133517;
double r133519 = r133515 - r133516;
double r133520 = r133518 / r133519;
double r133521 = r133520 + r133502;
double r133522 = r133514 / r133521;
return r133522;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.3 |
| Herbie | 4.7 |
Initial program 7.9
rmApplied flip--7.3
rmApplied add-sqr-sqrt7.3
Applied associate-/l*5.6
rmApplied add-log-exp5.6
Applied add-log-exp5.6
Applied diff-log5.5
Simplified4.7
rmApplied add-sqr-sqrt4.7
Applied add-sqr-sqrt4.7
Applied difference-of-squares4.7
Applied associate-/r*4.7
Final simplification4.7
herbie shell --seed 2020047
(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))