x + \frac{y}{1.128379167095512558560699289955664426088 \cdot e^{z} - x \cdot y}\frac{1}{\frac{1.128379167095512558560699289955664426088}{y} \cdot e^{z} - x} + xdouble f(double x, double y, double z) {
double r328725 = x;
double r328726 = y;
double r328727 = 1.1283791670955126;
double r328728 = z;
double r328729 = exp(r328728);
double r328730 = r328727 * r328729;
double r328731 = r328725 * r328726;
double r328732 = r328730 - r328731;
double r328733 = r328726 / r328732;
double r328734 = r328725 + r328733;
return r328734;
}
double f(double x, double y, double z) {
double r328735 = 1.0;
double r328736 = 1.1283791670955126;
double r328737 = y;
double r328738 = r328736 / r328737;
double r328739 = z;
double r328740 = exp(r328739);
double r328741 = r328738 * r328740;
double r328742 = x;
double r328743 = r328741 - r328742;
double r328744 = r328735 / r328743;
double r328745 = r328744 + r328742;
return r328745;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 3.0 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 3.0
rmApplied clear-num3.0
rmApplied add-cube-cbrt3.0
Applied associate-/l*3.0
Simplified0.1
Final simplification0.1
herbie shell --seed 2019208
(FPCore (x y z)
:name "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(+ x (/ 1 (- (* (/ 1.12837916709551256 y) (exp z)) x)))
(+ x (/ y (- (* 1.12837916709551256 (exp z)) (* x y)))))