\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)-\mathsf{fma}\left(2, \varepsilon, \mathsf{fma}\left(\frac{\varepsilon}{1} \cdot \left(\frac{\varepsilon}{1} \cdot \frac{\varepsilon}{1}\right), \frac{2}{3}, \frac{{\varepsilon}^{5} \cdot \frac{2}{5}}{{1}^{5}}\right)\right)double f(double eps) {
double r3847260 = 1.0;
double r3847261 = eps;
double r3847262 = r3847260 - r3847261;
double r3847263 = r3847260 + r3847261;
double r3847264 = r3847262 / r3847263;
double r3847265 = log(r3847264);
return r3847265;
}
double f(double eps) {
double r3847266 = 2.0;
double r3847267 = eps;
double r3847268 = 1.0;
double r3847269 = r3847267 / r3847268;
double r3847270 = r3847269 * r3847269;
double r3847271 = r3847269 * r3847270;
double r3847272 = 0.6666666666666666;
double r3847273 = 5.0;
double r3847274 = pow(r3847267, r3847273);
double r3847275 = 0.4;
double r3847276 = r3847274 * r3847275;
double r3847277 = pow(r3847268, r3847273);
double r3847278 = r3847276 / r3847277;
double r3847279 = fma(r3847271, r3847272, r3847278);
double r3847280 = fma(r3847266, r3847267, r3847279);
double r3847281 = -r3847280;
return r3847281;
}




Bits error versus eps
| Original | 58.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.4
rmApplied log-div58.4
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019174 +o rules:numerics
(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))))