\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\left(\left(\varepsilon \cdot \varepsilon - \frac{\varepsilon}{1} \cdot \frac{\varepsilon}{1}\right) - \varepsilon\right) \cdot 2 + \log 1double f(double eps) {
double r2934325 = 1.0;
double r2934326 = eps;
double r2934327 = r2934325 - r2934326;
double r2934328 = r2934325 + r2934326;
double r2934329 = r2934327 / r2934328;
double r2934330 = log(r2934329);
return r2934330;
}
double f(double eps) {
double r2934331 = eps;
double r2934332 = r2934331 * r2934331;
double r2934333 = 1.0;
double r2934334 = r2934331 / r2934333;
double r2934335 = r2934334 * r2934334;
double r2934336 = r2934332 - r2934335;
double r2934337 = r2934336 - r2934331;
double r2934338 = 2.0;
double r2934339 = r2934337 * r2934338;
double r2934340 = log(r2934333);
double r2934341 = r2934339 + r2934340;
return r2934341;
}




Bits error versus eps
Results
| Original | 58.6 |
|---|---|
| Target | 0.3 |
| Herbie | 0.7 |
Initial program 58.6
Taylor expanded around 0 0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2019168
(FPCore (eps)
:name "logq (problem 3.4.3)"
:herbie-target
(* -2.0 (+ (+ eps (/ (pow eps 3.0) 3.0)) (/ (pow eps 5.0) 5.0)))
(log (/ (- 1.0 eps) (+ 1.0 eps))))