\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)-\left(\left(\frac{2}{3} \cdot \frac{{\varepsilon}^{3}}{{1}^{3}} + \frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}}\right) + 2 \cdot \varepsilon\right)double f(double eps) {
double r86993 = 1.0;
double r86994 = eps;
double r86995 = r86993 - r86994;
double r86996 = r86993 + r86994;
double r86997 = r86995 / r86996;
double r86998 = log(r86997);
return r86998;
}
double f(double eps) {
double r86999 = 0.6666666666666666;
double r87000 = eps;
double r87001 = 3.0;
double r87002 = pow(r87000, r87001);
double r87003 = 1.0;
double r87004 = pow(r87003, r87001);
double r87005 = r87002 / r87004;
double r87006 = r86999 * r87005;
double r87007 = 0.4;
double r87008 = 5.0;
double r87009 = pow(r87000, r87008);
double r87010 = pow(r87003, r87008);
double r87011 = r87009 / r87010;
double r87012 = r87007 * r87011;
double r87013 = r87006 + r87012;
double r87014 = 2.0;
double r87015 = r87014 * r87000;
double r87016 = r87013 + r87015;
double r87017 = -r87016;
return r87017;
}




Bits error versus eps
Results
| Original | 58.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.5
rmApplied log-div58.5
Taylor expanded around 0 0.2
rmApplied associate-+r+0.2
Final simplification0.2
herbie shell --seed 2020025
(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))))