\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\left(\frac{-2}{3} \cdot {\left(\frac{\varepsilon}{1}\right)}^{3} - \frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}}\right) - 2 \cdot \varepsilondouble f(double eps) {
double r63648 = 1.0;
double r63649 = eps;
double r63650 = r63648 - r63649;
double r63651 = r63648 + r63649;
double r63652 = r63650 / r63651;
double r63653 = log(r63652);
return r63653;
}
double f(double eps) {
double r63654 = -0.6666666666666666;
double r63655 = eps;
double r63656 = 1.0;
double r63657 = r63655 / r63656;
double r63658 = 3.0;
double r63659 = pow(r63657, r63658);
double r63660 = r63654 * r63659;
double r63661 = 0.4;
double r63662 = 5.0;
double r63663 = pow(r63655, r63662);
double r63664 = pow(r63656, r63662);
double r63665 = r63663 / r63664;
double r63666 = r63661 * r63665;
double r63667 = r63660 - r63666;
double r63668 = 2.0;
double r63669 = r63668 * r63655;
double r63670 = r63667 - r63669;
return r63670;
}




Bits error versus eps
Results
| Original | 58.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.5
rmApplied add-exp-log58.5
Applied add-exp-log58.5
Applied div-exp58.5
Applied rem-log-exp58.5
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019347
(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))))