\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\frac{-2}{3} \cdot \left(\frac{\varepsilon}{1} \cdot \left(\frac{\varepsilon}{1} \cdot \frac{\varepsilon}{1}\right)\right) - \mathsf{fma}\left(\frac{2}{5}, \frac{{\varepsilon}^{5}}{{1}^{5}}, \varepsilon \cdot 2\right)double f(double eps) {
double r2200268 = 1.0;
double r2200269 = eps;
double r2200270 = r2200268 - r2200269;
double r2200271 = r2200268 + r2200269;
double r2200272 = r2200270 / r2200271;
double r2200273 = log(r2200272);
return r2200273;
}
double f(double eps) {
double r2200274 = -0.6666666666666666;
double r2200275 = eps;
double r2200276 = 1.0;
double r2200277 = r2200275 / r2200276;
double r2200278 = r2200277 * r2200277;
double r2200279 = r2200277 * r2200278;
double r2200280 = r2200274 * r2200279;
double r2200281 = 0.4;
double r2200282 = 5.0;
double r2200283 = pow(r2200275, r2200282);
double r2200284 = pow(r2200276, r2200282);
double r2200285 = r2200283 / r2200284;
double r2200286 = 2.0;
double r2200287 = r2200275 * r2200286;
double r2200288 = fma(r2200281, r2200285, r2200287);
double r2200289 = r2200280 - r2200288;
return r2200289;
}




Bits error versus eps
| Original | 58.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.4
rmApplied log-div58.4
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019200 +o rules:numerics
(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))))