\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)2 \cdot {\varepsilon}^{2} + \left(\log 1 - 2 \cdot \left(\frac{{\varepsilon}^{2}}{{1}^{2}} + \varepsilon\right)\right)double f(double eps) {
double r70908 = 1.0;
double r70909 = eps;
double r70910 = r70908 - r70909;
double r70911 = r70908 + r70909;
double r70912 = r70910 / r70911;
double r70913 = log(r70912);
return r70913;
}
double f(double eps) {
double r70914 = 2.0;
double r70915 = eps;
double r70916 = 2.0;
double r70917 = pow(r70915, r70916);
double r70918 = r70914 * r70917;
double r70919 = 1.0;
double r70920 = log(r70919);
double r70921 = pow(r70919, r70916);
double r70922 = r70917 / r70921;
double r70923 = r70922 + r70915;
double r70924 = r70914 * r70923;
double r70925 = r70920 - r70924;
double r70926 = r70918 + r70925;
return r70926;
}




Bits error versus eps
Results
| Original | 58.7 |
|---|---|
| Target | 0.2 |
| Herbie | 0.6 |
Initial program 58.7
Taylor expanded around 0 0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019323
(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))))