x + \frac{y}{1.12837916709551256 \cdot e^{z} - x \cdot y}x + \frac{1}{1.12837916709551256 \cdot \frac{e^{z}}{y} - \frac{x}{1}}double f(double x, double y, double z) {
double r367798 = x;
double r367799 = y;
double r367800 = 1.1283791670955126;
double r367801 = z;
double r367802 = exp(r367801);
double r367803 = r367800 * r367802;
double r367804 = r367798 * r367799;
double r367805 = r367803 - r367804;
double r367806 = r367799 / r367805;
double r367807 = r367798 + r367806;
return r367807;
}
double f(double x, double y, double z) {
double r367808 = x;
double r367809 = 1.0;
double r367810 = 1.1283791670955126;
double r367811 = z;
double r367812 = exp(r367811);
double r367813 = y;
double r367814 = r367812 / r367813;
double r367815 = r367810 * r367814;
double r367816 = r367808 / r367809;
double r367817 = r367815 - r367816;
double r367818 = r367809 / r367817;
double r367819 = r367808 + r367818;
return r367819;
}




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
rmApplied div-sub2.9
Simplified2.9
Simplified0.1
Final simplification0.1
herbie shell --seed 2020056
(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)))))