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 r436902 = x;
double r436903 = y;
double r436904 = 1.1283791670955126;
double r436905 = z;
double r436906 = exp(r436905);
double r436907 = r436904 * r436906;
double r436908 = r436902 * r436903;
double r436909 = r436907 - r436908;
double r436910 = r436903 / r436909;
double r436911 = r436902 + r436910;
return r436911;
}
double f(double x, double y, double z) {
double r436912 = x;
double r436913 = 1.0;
double r436914 = 1.1283791670955126;
double r436915 = z;
double r436916 = exp(r436915);
double r436917 = y;
double r436918 = r436916 / r436917;
double r436919 = r436914 * r436918;
double r436920 = r436919 - r436912;
double r436921 = r436913 / r436920;
double r436922 = r436912 + r436921;
return r436922;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.5 |
|---|---|
| Target | 0.0 |
| Herbie | 0.1 |
Initial program 2.5
rmApplied clear-num2.6
Taylor expanded around inf 0.1
Final simplification0.1
herbie shell --seed 2020060 +o rules:numerics
(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)))))