\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\mathsf{fma}\left(\frac{-2}{3}, \left(\varepsilon \cdot \varepsilon\right) \cdot \varepsilon, \mathsf{fma}\left(-2, \varepsilon, {\varepsilon}^{5} \cdot \frac{-2}{5}\right)\right)double f(double eps) {
double r2930005 = 1.0;
double r2930006 = eps;
double r2930007 = r2930005 - r2930006;
double r2930008 = r2930005 + r2930006;
double r2930009 = r2930007 / r2930008;
double r2930010 = log(r2930009);
return r2930010;
}
double f(double eps) {
double r2930011 = -0.6666666666666666;
double r2930012 = eps;
double r2930013 = r2930012 * r2930012;
double r2930014 = r2930013 * r2930012;
double r2930015 = -2.0;
double r2930016 = 5.0;
double r2930017 = pow(r2930012, r2930016);
double r2930018 = -0.4;
double r2930019 = r2930017 * r2930018;
double r2930020 = fma(r2930015, r2930012, r2930019);
double r2930021 = fma(r2930011, r2930014, r2930020);
return r2930021;
}




Bits error versus eps
| Original | 58.8 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.8
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019149 +o rules:numerics
(FPCore (eps)
:name "logq (problem 3.4.3)"
:herbie-target
(* -2 (+ (+ eps (/ (pow eps 3) 3)) (/ (pow eps 5) 5)))
(log (/ (- 1 eps) (+ 1 eps))))