\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)2 \cdot \left({\varepsilon}^{2} - \left(\frac{{\varepsilon}^{2}}{{1}^{2}} + \varepsilon\right)\right) + \log 1double f(double eps) {
double r81633 = 1.0;
double r81634 = eps;
double r81635 = r81633 - r81634;
double r81636 = r81633 + r81634;
double r81637 = r81635 / r81636;
double r81638 = log(r81637);
return r81638;
}
double f(double eps) {
double r81639 = 2.0;
double r81640 = eps;
double r81641 = 2.0;
double r81642 = pow(r81640, r81641);
double r81643 = 1.0;
double r81644 = pow(r81643, r81641);
double r81645 = r81642 / r81644;
double r81646 = r81645 + r81640;
double r81647 = r81642 - r81646;
double r81648 = r81639 * r81647;
double r81649 = log(r81643);
double r81650 = r81648 + r81649;
return r81650;
}




Bits error versus eps
Results
| 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
(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))))