\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\mathsf{fma}\left(\frac{-2}{3}, {\left(\frac{\varepsilon}{1}\right)}^{3}, -\mathsf{fma}\left(\frac{2}{5}, \frac{{\varepsilon}^{5}}{{1}^{5}}, 2 \cdot \varepsilon\right)\right)double f(double eps) {
double r90304 = 1.0;
double r90305 = eps;
double r90306 = r90304 - r90305;
double r90307 = r90304 + r90305;
double r90308 = r90306 / r90307;
double r90309 = log(r90308);
return r90309;
}
double f(double eps) {
double r90310 = -0.6666666666666666;
double r90311 = eps;
double r90312 = 1.0;
double r90313 = r90311 / r90312;
double r90314 = 3.0;
double r90315 = pow(r90313, r90314);
double r90316 = 0.4;
double r90317 = 5.0;
double r90318 = pow(r90311, r90317);
double r90319 = pow(r90312, r90317);
double r90320 = r90318 / r90319;
double r90321 = 2.0;
double r90322 = r90321 * r90311;
double r90323 = fma(r90316, r90320, r90322);
double r90324 = -r90323;
double r90325 = fma(r90310, r90315, r90324);
return r90325;
}




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