\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\left({\left(\frac{\varepsilon}{1}\right)}^{3} \cdot \frac{-2}{3} - \frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}}\right) - 2 \cdot \varepsilondouble f(double eps) {
double r107359 = 1.0;
double r107360 = eps;
double r107361 = r107359 - r107360;
double r107362 = r107359 + r107360;
double r107363 = r107361 / r107362;
double r107364 = log(r107363);
return r107364;
}
double f(double eps) {
double r107365 = eps;
double r107366 = 1.0;
double r107367 = r107365 / r107366;
double r107368 = 3.0;
double r107369 = pow(r107367, r107368);
double r107370 = -0.6666666666666666;
double r107371 = r107369 * r107370;
double r107372 = 0.4;
double r107373 = 5.0;
double r107374 = pow(r107365, r107373);
double r107375 = pow(r107366, r107373);
double r107376 = r107374 / r107375;
double r107377 = r107372 * r107376;
double r107378 = r107371 - r107377;
double r107379 = 2.0;
double r107380 = r107379 * r107365;
double r107381 = r107378 - r107380;
return r107381;
}




Bits error versus eps
Results
| Original | 58.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.6
rmApplied log-div58.6
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020045
(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))))