\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 r120594 = 1.0;
double r120595 = eps;
double r120596 = r120594 - r120595;
double r120597 = r120594 + r120595;
double r120598 = r120596 / r120597;
double r120599 = log(r120598);
return r120599;
}
double f(double eps) {
double r120600 = 2.0;
double r120601 = eps;
double r120602 = 2.0;
double r120603 = pow(r120601, r120602);
double r120604 = 1.0;
double r120605 = pow(r120604, r120602);
double r120606 = r120603 / r120605;
double r120607 = r120606 + r120601;
double r120608 = r120603 - r120607;
double r120609 = r120600 * r120608;
double r120610 = log(r120604);
double r120611 = r120609 + r120610;
return r120611;
}




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