\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)2 \cdot \left(\varepsilon \cdot \varepsilon - \left(\varepsilon + \frac{\varepsilon}{1} \cdot \frac{\varepsilon}{1}\right)\right) + \log 1double f(double eps) {
double r57138 = 1.0;
double r57139 = eps;
double r57140 = r57138 - r57139;
double r57141 = r57138 + r57139;
double r57142 = r57140 / r57141;
double r57143 = log(r57142);
return r57143;
}
double f(double eps) {
double r57144 = 2.0;
double r57145 = eps;
double r57146 = r57145 * r57145;
double r57147 = 1.0;
double r57148 = r57145 / r57147;
double r57149 = r57148 * r57148;
double r57150 = r57145 + r57149;
double r57151 = r57146 - r57150;
double r57152 = r57144 * r57151;
double r57153 = log(r57147);
double r57154 = r57152 + r57153;
return r57154;
}




Bits error versus eps
Results
| Original | 58.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.7 |
Initial program 58.6
Simplified58.6
Taylor expanded around 0 0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2019194
(FPCore (eps)
:name "logq (problem 3.4.3)"
:herbie-target
(* -2.0 (+ (+ eps (/ (pow eps 3.0) 3.0)) (/ (pow eps 5.0) 5.0)))
(log (/ (- 1.0 eps) (+ 1.0 eps))))