\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\log 1 + 2 \cdot \left(\varepsilon \cdot \varepsilon - \left(\frac{\varepsilon \cdot \varepsilon}{1 \cdot 1} + \varepsilon\right)\right)double f(double eps) {
double r5884802 = 1.0;
double r5884803 = eps;
double r5884804 = r5884802 - r5884803;
double r5884805 = r5884802 + r5884803;
double r5884806 = r5884804 / r5884805;
double r5884807 = log(r5884806);
return r5884807;
}
double f(double eps) {
double r5884808 = 1.0;
double r5884809 = log(r5884808);
double r5884810 = 2.0;
double r5884811 = eps;
double r5884812 = r5884811 * r5884811;
double r5884813 = r5884808 * r5884808;
double r5884814 = r5884812 / r5884813;
double r5884815 = r5884814 + r5884811;
double r5884816 = r5884812 - r5884815;
double r5884817 = r5884810 * r5884816;
double r5884818 = r5884809 + r5884817;
return r5884818;
}




Bits error versus eps
Results
| Original | 58.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.7 |
Initial program 58.5
Taylor expanded around 0 0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2019173
(FPCore (eps)
:name "logq (problem 3.4.3)"
:herbie-target
(* -2.0 (+ (+ eps (/ (pow eps 3.0) 3.0)) (/ (pow eps 5.0) 5.0)))
(log (/ (- 1.0 eps) (+ 1.0 eps))))