\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\left(\left(2 \cdot \frac{{\varepsilon}^{2}}{{1}^{2}} + 4 \cdot \frac{{\varepsilon}^{3}}{{1}^{2}}\right) - 2 \cdot \left(\left({\varepsilon}^{2} + {\varepsilon}^{3}\right) + \varepsilon\right)\right) - 2.66666666666666652 \cdot \frac{{\varepsilon}^{3}}{{1}^{3}}double code(double eps) {
return ((double) log(((double) (((double) (1.0 - eps)) / ((double) (1.0 + eps))))));
}
double code(double eps) {
return ((double) (((double) (((double) (((double) (2.0 * ((double) (((double) pow(eps, 2.0)) / ((double) pow(1.0, 2.0)))))) + ((double) (4.0 * ((double) (((double) pow(eps, 3.0)) / ((double) pow(1.0, 2.0)))))))) - ((double) (2.0 * ((double) (((double) (((double) pow(eps, 2.0)) + ((double) pow(eps, 3.0)))) + eps)))))) - ((double) (2.6666666666666665 * ((double) (((double) pow(eps, 3.0)) / ((double) pow(1.0, 3.0))))))));
}




Bits error versus eps
Results
| Original | 58.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
Initial program 58.5
rmApplied flip3--58.6
Applied associate-/l/58.5
Applied log-div58.5
Taylor expanded around 0 0.3
Simplified0.3
rmApplied associate-+r+0.3
Final simplification0.3
herbie shell --seed 2020113
(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))))