\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\mathsf{fma}\left(\frac{-2}{5}, \frac{{\varepsilon}^{5}}{{1}^{5}}, \left(\frac{\varepsilon}{1} \cdot \left(\frac{\varepsilon}{1} \cdot \frac{\varepsilon}{1}\right)\right) \cdot \frac{-2}{3}\right) - \varepsilon \cdot 2double f(double eps) {
double r3809942 = 1.0;
double r3809943 = eps;
double r3809944 = r3809942 - r3809943;
double r3809945 = r3809942 + r3809943;
double r3809946 = r3809944 / r3809945;
double r3809947 = log(r3809946);
return r3809947;
}
double f(double eps) {
double r3809948 = -0.4;
double r3809949 = eps;
double r3809950 = 5.0;
double r3809951 = pow(r3809949, r3809950);
double r3809952 = 1.0;
double r3809953 = pow(r3809952, r3809950);
double r3809954 = r3809951 / r3809953;
double r3809955 = r3809949 / r3809952;
double r3809956 = r3809955 * r3809955;
double r3809957 = r3809955 * r3809956;
double r3809958 = -0.6666666666666666;
double r3809959 = r3809957 * r3809958;
double r3809960 = fma(r3809948, r3809954, r3809959);
double r3809961 = 2.0;
double r3809962 = r3809949 * r3809961;
double r3809963 = r3809960 - r3809962;
return r3809963;
}




Bits error versus eps
| Original | 58.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 58.6
rmApplied log-div58.6
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019170 +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))))