\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 r46974 = 1.0;
double r46975 = eps;
double r46976 = r46974 - r46975;
double r46977 = r46974 + r46975;
double r46978 = r46976 / r46977;
double r46979 = log(r46978);
return r46979;
}
double f(double eps) {
double r46980 = eps;
double r46981 = 3.0;
double r46982 = pow(r46980, r46981);
double r46983 = 1.0;
double r46984 = pow(r46983, r46981);
double r46985 = r46982 / r46984;
double r46986 = -0.6666666666666666;
double r46987 = r46985 * r46986;
double r46988 = 0.4;
double r46989 = 5.0;
double r46990 = pow(r46980, r46989);
double r46991 = pow(r46983, r46989);
double r46992 = r46990 / r46991;
double r46993 = r46988 * r46992;
double r46994 = 2.0;
double r46995 = r46994 * r46980;
double r46996 = r46993 + r46995;
double r46997 = r46987 - r46996;
return r46997;
}




Bits error versus eps
Results
| Original | 58.7 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.7
rmApplied div-inv58.7
Applied log-prod58.7
Simplified58.7
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019208
(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))))