\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\frac{-2}{3} \cdot {\left(\frac{\varepsilon}{1}\right)}^{3} - \left(\frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}} + 2 \cdot \varepsilon\right)double f(double eps) {
double r85811 = 1.0;
double r85812 = eps;
double r85813 = r85811 - r85812;
double r85814 = r85811 + r85812;
double r85815 = r85813 / r85814;
double r85816 = log(r85815);
return r85816;
}
double f(double eps) {
double r85817 = -0.6666666666666666;
double r85818 = eps;
double r85819 = 1.0;
double r85820 = r85818 / r85819;
double r85821 = 3.0;
double r85822 = pow(r85820, r85821);
double r85823 = r85817 * r85822;
double r85824 = 0.4;
double r85825 = 5.0;
double r85826 = pow(r85818, r85825);
double r85827 = pow(r85819, r85825);
double r85828 = r85826 / r85827;
double r85829 = r85824 * r85828;
double r85830 = 2.0;
double r85831 = r85830 * r85818;
double r85832 = r85829 + r85831;
double r85833 = r85823 - r85832;
return r85833;
}




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