\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\frac{{\varepsilon}^{3}}{{1}^{3}} \cdot \frac{-2}{3} - \left(\frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}} + 2 \cdot \varepsilon\right)double f(double eps) {
double r46886 = 1.0;
double r46887 = eps;
double r46888 = r46886 - r46887;
double r46889 = r46886 + r46887;
double r46890 = r46888 / r46889;
double r46891 = log(r46890);
return r46891;
}
double f(double eps) {
double r46892 = eps;
double r46893 = 3.0;
double r46894 = pow(r46892, r46893);
double r46895 = 1.0;
double r46896 = pow(r46895, r46893);
double r46897 = r46894 / r46896;
double r46898 = -0.6666666666666666;
double r46899 = r46897 * r46898;
double r46900 = 0.4;
double r46901 = 5.0;
double r46902 = pow(r46892, r46901);
double r46903 = pow(r46895, r46901);
double r46904 = r46902 / r46903;
double r46905 = r46900 * r46904;
double r46906 = 2.0;
double r46907 = r46906 * r46892;
double r46908 = r46905 + r46907;
double r46909 = r46899 - r46908;
return r46909;
}




Bits error versus eps
Results
| Original | 58.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.6
rmApplied div-inv58.6
Applied log-prod58.6
Simplified58.6
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019198
(FPCore (eps)
:name "logq (problem 3.4.3)"
:herbie-target
(* -2.0 (+ (+ eps (/ (pow eps 3.0) 3.0)) (/ (pow eps 5.0) 5.0)))
(log (/ (- 1.0 eps) (+ 1.0 eps))))