double f(double eps) {
double r4380469 = 1.0;
double r4380470 = eps;
double r4380471 = r4380469 - r4380470;
double r4380472 = r4380469 + r4380470;
double r4380473 = r4380471 / r4380472;
double r4380474 = log(r4380473);
return r4380474;
}
double f(double eps) {
double r4380475 = eps;
double r4380476 = 5.0;
double r4380477 = pow(r4380475, r4380476);
double r4380478 = -0.4;
double r4380479 = -2.0;
double r4380480 = r4380475 * r4380479;
double r4380481 = -0.6666666666666666;
double r4380482 = r4380481 * r4380475;
double r4380483 = r4380482 * r4380475;
double r4380484 = r4380475 * r4380483;
double r4380485 = r4380480 + r4380484;
double r4380486 = fma(r4380477, r4380478, r4380485);
return r4380486;
}
\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)(\left({\varepsilon}^{5}\right) \cdot \frac{-2}{5} + \left(\varepsilon \cdot -2 + \varepsilon \cdot \left(\left(\frac{-2}{3} \cdot \varepsilon\right) \cdot \varepsilon\right)\right))_*



Bits error versus eps
| Original | 58.7 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.7
Taylor expanded around 0 0.2
Simplified0.2
rmApplied sub-neg0.2
Applied distribute-lft-in0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019102 +o rules:numerics
(FPCore (eps)
:name "logq (problem 3.4.3)"
:herbie-target
(* -2 (+ (+ eps (/ (pow eps 3) 3)) (/ (pow eps 5) 5)))
(log (/ (- 1 eps) (+ 1 eps))))