\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\left(-2 \cdot \varepsilon\right) - \mathsf{fma}\left(0.66666666666666663, {\varepsilon}^{3}, 0.40000000000000002 \cdot {\varepsilon}^{5}\right)double f(double eps) {
double r79977 = 1.0;
double r79978 = eps;
double r79979 = r79977 - r79978;
double r79980 = r79977 + r79978;
double r79981 = r79979 / r79980;
double r79982 = log(r79981);
return r79982;
}
double f(double eps) {
double r79983 = 2.0;
double r79984 = eps;
double r79985 = r79983 * r79984;
double r79986 = -r79985;
double r79987 = 0.6666666666666666;
double r79988 = 3.0;
double r79989 = pow(r79984, r79988);
double r79990 = 0.4;
double r79991 = 5.0;
double r79992 = pow(r79984, r79991);
double r79993 = r79990 * r79992;
double r79994 = fma(r79987, r79989, r79993);
double r79995 = r79986 - r79994;
return r79995;
}




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
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020027 +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))))