\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)2 \cdot \left(\varepsilon \cdot \left(\varepsilon - \frac{\varepsilon}{1 \cdot 1}\right) - \varepsilon\right) + \log 1double f(double eps) {
double r78317 = 1.0;
double r78318 = eps;
double r78319 = r78317 - r78318;
double r78320 = r78317 + r78318;
double r78321 = r78319 / r78320;
double r78322 = log(r78321);
return r78322;
}
double f(double eps) {
double r78323 = 2.0;
double r78324 = eps;
double r78325 = 1.0;
double r78326 = r78325 * r78325;
double r78327 = r78324 / r78326;
double r78328 = r78324 - r78327;
double r78329 = r78324 * r78328;
double r78330 = r78329 - r78324;
double r78331 = r78323 * r78330;
double r78332 = log(r78325);
double r78333 = r78331 + r78332;
return r78333;
}




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