x + \frac{y}{1.128379167095512558560699289955664426088 \cdot e^{z} - x \cdot y}x + \frac{1}{\mathsf{fma}\left(\frac{e^{z}}{y}, 1.128379167095512558560699289955664426088, -x\right)}double f(double x, double y, double z) {
double r341917 = x;
double r341918 = y;
double r341919 = 1.1283791670955126;
double r341920 = z;
double r341921 = exp(r341920);
double r341922 = r341919 * r341921;
double r341923 = r341917 * r341918;
double r341924 = r341922 - r341923;
double r341925 = r341918 / r341924;
double r341926 = r341917 + r341925;
return r341926;
}
double f(double x, double y, double z) {
double r341927 = x;
double r341928 = 1.0;
double r341929 = z;
double r341930 = exp(r341929);
double r341931 = y;
double r341932 = r341930 / r341931;
double r341933 = 1.1283791670955126;
double r341934 = -r341927;
double r341935 = fma(r341932, r341933, r341934);
double r341936 = r341928 / r341935;
double r341937 = r341927 + r341936;
return r341937;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 3.0 |
|---|---|
| Target | 0.0 |
| Herbie | 0.1 |
Initial program 3.0
rmApplied clear-num3.0
Simplified3.0
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019196 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, A"
:herbie-target
(+ x (/ 1.0 (- (* (/ 1.1283791670955126 y) (exp z)) x)))
(+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))))