\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\left(-\left(\frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}} + 2 \cdot \varepsilon\right)\right) - \frac{{\left(\frac{\varepsilon}{1}\right)}^{3}}{\frac{3}{2}}double f(double eps) {
double r337516 = 1.0;
double r337517 = eps;
double r337518 = r337516 - r337517;
double r337519 = r337516 + r337517;
double r337520 = r337518 / r337519;
double r337521 = log(r337520);
return r337521;
}
double f(double eps) {
double r337522 = 2.0;
double r337523 = 5.0;
double r337524 = r337522 / r337523;
double r337525 = eps;
double r337526 = pow(r337525, r337523);
double r337527 = 1.0;
double r337528 = pow(r337527, r337523);
double r337529 = r337526 / r337528;
double r337530 = r337524 * r337529;
double r337531 = 2.0;
double r337532 = r337531 * r337525;
double r337533 = r337530 + r337532;
double r337534 = -r337533;
double r337535 = r337525 / r337527;
double r337536 = 3.0;
double r337537 = pow(r337535, r337536);
double r337538 = r337536 / r337522;
double r337539 = r337537 / r337538;
double r337540 = r337534 - r337539;
return r337540;
}




Bits error versus eps
Results
| Original | 58.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.6
rmApplied log-div58.5
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 350497007
(FPCore (eps)
:name "logq (problem 3.4.3)"
:precision binary64
:herbie-target
(* -2 (+ (+ eps (/ (pow eps 3) 3)) (/ (pow eps 5) 5)))
(log (/ (- 1 eps) (+ 1 eps))))