\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 r77950 = 1.0;
double r77951 = eps;
double r77952 = r77950 - r77951;
double r77953 = r77950 + r77951;
double r77954 = r77952 / r77953;
double r77955 = log(r77954);
return r77955;
}
double f(double eps) {
double r77956 = 2.0;
double r77957 = eps;
double r77958 = 1.0;
double r77959 = r77958 * r77958;
double r77960 = r77957 / r77959;
double r77961 = r77957 - r77960;
double r77962 = r77957 * r77961;
double r77963 = r77962 - r77957;
double r77964 = r77956 * r77963;
double r77965 = log(r77958);
double r77966 = r77964 + r77965;
return r77966;
}




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