\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\mathsf{log1p}\left(-\varepsilon\right) - \mathsf{log1p}\left(\varepsilon\right)double f(double eps) {
double r530840 = 1.0;
double r530841 = eps;
double r530842 = r530840 - r530841;
double r530843 = r530840 + r530841;
double r530844 = r530842 / r530843;
double r530845 = log(r530844);
return r530845;
}
double f(double eps) {
double r530846 = eps;
double r530847 = -r530846;
double r530848 = log1p(r530847);
double r530849 = log1p(r530846);
double r530850 = r530848 - r530849;
return r530850;
}




Bits error versus eps
Results
| Original | 58.7 |
|---|---|
| Target | 0.2 |
| Herbie | 0.0 |
Initial program 58.7
rmApplied log-div58.7
Simplified50.6
rmApplied sub-neg50.6
Applied log1p-def0.0
Final simplification0.0
herbie shell --seed 2019152 +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))))