\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)-\mathsf{fma}\left(\frac{2}{3}, \frac{{\varepsilon}^{3}}{{1}^{3}}, \mathsf{fma}\left(\frac{2}{5}, \frac{{\varepsilon}^{5}}{{1}^{5}}, 2 \cdot \varepsilon\right)\right)double f(double eps) {
double r97899 = 1.0;
double r97900 = eps;
double r97901 = r97899 - r97900;
double r97902 = r97899 + r97900;
double r97903 = r97901 / r97902;
double r97904 = log(r97903);
return r97904;
}
double f(double eps) {
double r97905 = 0.6666666666666666;
double r97906 = eps;
double r97907 = 3.0;
double r97908 = pow(r97906, r97907);
double r97909 = 1.0;
double r97910 = pow(r97909, r97907);
double r97911 = r97908 / r97910;
double r97912 = 0.4;
double r97913 = 5.0;
double r97914 = pow(r97906, r97913);
double r97915 = pow(r97909, r97913);
double r97916 = r97914 / r97915;
double r97917 = 2.0;
double r97918 = r97917 * r97906;
double r97919 = fma(r97912, r97916, r97918);
double r97920 = fma(r97905, r97911, r97919);
double r97921 = -r97920;
return r97921;
}




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