\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)-\left(2 \cdot \varepsilon + \left(0.6666666666666666296592325124947819858789 \cdot {\varepsilon}^{3} + 0.4000000000000000222044604925031308084726 \cdot {\varepsilon}^{5}\right)\right)double f(double eps) {
double r64204 = 1.0;
double r64205 = eps;
double r64206 = r64204 - r64205;
double r64207 = r64204 + r64205;
double r64208 = r64206 / r64207;
double r64209 = log(r64208);
return r64209;
}
double f(double eps) {
double r64210 = 2.0;
double r64211 = eps;
double r64212 = r64210 * r64211;
double r64213 = 0.6666666666666666;
double r64214 = 3.0;
double r64215 = pow(r64211, r64214);
double r64216 = r64213 * r64215;
double r64217 = 0.4;
double r64218 = 5.0;
double r64219 = pow(r64211, r64218);
double r64220 = r64217 * r64219;
double r64221 = r64216 + r64220;
double r64222 = r64212 + r64221;
double r64223 = -r64222;
return r64223;
}




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