x + \frac{y}{1.12837916709551256 \cdot e^{z} - x \cdot y}x + \frac{1}{1.12837916709551256 \cdot \frac{e^{z}}{y} - x}double f(double x, double y, double z) {
double r440890 = x;
double r440891 = y;
double r440892 = 1.1283791670955126;
double r440893 = z;
double r440894 = exp(r440893);
double r440895 = r440892 * r440894;
double r440896 = r440890 * r440891;
double r440897 = r440895 - r440896;
double r440898 = r440891 / r440897;
double r440899 = r440890 + r440898;
return r440899;
}
double f(double x, double y, double z) {
double r440900 = x;
double r440901 = 1.0;
double r440902 = 1.1283791670955126;
double r440903 = z;
double r440904 = exp(r440903);
double r440905 = y;
double r440906 = r440904 / r440905;
double r440907 = r440902 * r440906;
double r440908 = r440907 - r440900;
double r440909 = r440901 / r440908;
double r440910 = r440900 + r440909;
return r440910;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.9 |
|---|---|
| Target | 0.0 |
| Herbie | 0.1 |
Initial program 2.9
rmApplied clear-num2.9
Taylor expanded around inf 0.1
Final simplification0.1
herbie shell --seed 2020064
(FPCore (x y z)
:name "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(+ x (/ 1 (- (* (/ 1.1283791670955126 y) (exp z)) x)))
(+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))))