\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 r106325 = 1.0;
double r106326 = eps;
double r106327 = r106325 - r106326;
double r106328 = r106325 + r106326;
double r106329 = r106327 / r106328;
double r106330 = log(r106329);
return r106330;
}
double f(double eps) {
double r106331 = 2.0;
double r106332 = eps;
double r106333 = 2.0;
double r106334 = pow(r106332, r106333);
double r106335 = 1.0;
double r106336 = pow(r106335, r106333);
double r106337 = r106334 / r106336;
double r106338 = r106337 + r106332;
double r106339 = r106334 - r106338;
double r106340 = r106331 * r106339;
double r106341 = log(r106335);
double r106342 = r106340 + r106341;
return r106342;
}




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