\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)2 \cdot \left({\varepsilon}^{2} - \mathsf{fma}\left(\frac{\varepsilon}{1}, \frac{\varepsilon}{1}, \varepsilon\right)\right) + \log 1double f(double eps) {
double r81965 = 1.0;
double r81966 = eps;
double r81967 = r81965 - r81966;
double r81968 = r81965 + r81966;
double r81969 = r81967 / r81968;
double r81970 = log(r81969);
return r81970;
}
double f(double eps) {
double r81971 = 2.0;
double r81972 = eps;
double r81973 = 2.0;
double r81974 = pow(r81972, r81973);
double r81975 = 1.0;
double r81976 = r81972 / r81975;
double r81977 = fma(r81976, r81976, r81972);
double r81978 = r81974 - r81977;
double r81979 = r81971 * r81978;
double r81980 = log(r81975);
double r81981 = r81979 + r81980;
return r81981;
}




Bits error versus eps
| Original | 58.8 |
|---|---|
| Target | 0.2 |
| Herbie | 0.6 |
Initial program 58.8
Taylor expanded around 0 0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2020001 +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))))