\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)2 \cdot \left({\varepsilon}^{2} - \left(\frac{{\varepsilon}^{2}}{{1}^{2}} + \varepsilon\right)\right) + \log 1double f(double eps) {
double r100784 = 1.0;
double r100785 = eps;
double r100786 = r100784 - r100785;
double r100787 = r100784 + r100785;
double r100788 = r100786 / r100787;
double r100789 = log(r100788);
return r100789;
}
double f(double eps) {
double r100790 = 2.0;
double r100791 = eps;
double r100792 = 2.0;
double r100793 = pow(r100791, r100792);
double r100794 = 1.0;
double r100795 = pow(r100794, r100792);
double r100796 = r100793 / r100795;
double r100797 = r100796 + r100791;
double r100798 = r100793 - r100797;
double r100799 = r100790 * r100798;
double r100800 = log(r100794);
double r100801 = r100799 + r100800;
return r100801;
}




Bits error versus eps
Results
| Original | 58.4 |
|---|---|
| Target | 0.3 |
| Herbie | 0.7 |
Initial program 58.4
Taylor expanded around 0 0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2020057
(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))))