\log \left(\frac{1.0 - \varepsilon}{1.0 + \varepsilon}\right)\left(\frac{-2}{5} \cdot \frac{{\varepsilon}^{5}}{{1.0}^{5}} - \left(\frac{\varepsilon}{1.0} \cdot \frac{2}{3}\right) \cdot \left(\frac{\varepsilon}{1.0} \cdot \frac{\varepsilon}{1.0}\right)\right) - \varepsilon \cdot 2.0double f(double eps) {
double r4489681 = 1.0;
double r4489682 = eps;
double r4489683 = r4489681 - r4489682;
double r4489684 = r4489681 + r4489682;
double r4489685 = r4489683 / r4489684;
double r4489686 = log(r4489685);
return r4489686;
}
double f(double eps) {
double r4489687 = -0.4;
double r4489688 = eps;
double r4489689 = 5.0;
double r4489690 = pow(r4489688, r4489689);
double r4489691 = 1.0;
double r4489692 = pow(r4489691, r4489689);
double r4489693 = r4489690 / r4489692;
double r4489694 = r4489687 * r4489693;
double r4489695 = r4489688 / r4489691;
double r4489696 = 0.6666666666666666;
double r4489697 = r4489695 * r4489696;
double r4489698 = r4489695 * r4489695;
double r4489699 = r4489697 * r4489698;
double r4489700 = r4489694 - r4489699;
double r4489701 = 2.0;
double r4489702 = r4489688 * r4489701;
double r4489703 = r4489700 - r4489702;
return r4489703;
}




Bits error versus eps
Results
| Original | 58.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.5
rmApplied log-div58.5
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019165
(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))))