\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 r107639 = 1.0;
double r107640 = eps;
double r107641 = r107639 - r107640;
double r107642 = r107639 + r107640;
double r107643 = r107641 / r107642;
double r107644 = log(r107643);
return r107644;
}
double f(double eps) {
double r107645 = 2.0;
double r107646 = eps;
double r107647 = 2.0;
double r107648 = pow(r107646, r107647);
double r107649 = 1.0;
double r107650 = pow(r107649, r107647);
double r107651 = r107648 / r107650;
double r107652 = r107651 + r107646;
double r107653 = r107648 - r107652;
double r107654 = r107645 * r107653;
double r107655 = log(r107649);
double r107656 = r107654 + r107655;
return r107656;
}




Bits error versus eps
Results
| Original | 58.6 |
|---|---|
| Target | 0.3 |
| Herbie | 0.7 |
Initial program 58.6
Taylor expanded around 0 0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2020065
(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))))