x + \frac{y}{1.12837916709551256 \cdot e^{z} - x \cdot y}x + \frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{1.12837916709551256 \cdot \frac{e^{z}}{y} - x}double f(double x, double y, double z) {
double r422120 = x;
double r422121 = y;
double r422122 = 1.1283791670955126;
double r422123 = z;
double r422124 = exp(r422123);
double r422125 = r422122 * r422124;
double r422126 = r422120 * r422121;
double r422127 = r422125 - r422126;
double r422128 = r422121 / r422127;
double r422129 = r422120 + r422128;
return r422129;
}
double f(double x, double y, double z) {
double r422130 = x;
double r422131 = 1.0;
double r422132 = cbrt(r422131);
double r422133 = r422132 * r422132;
double r422134 = 1.1283791670955126;
double r422135 = z;
double r422136 = exp(r422135);
double r422137 = y;
double r422138 = r422136 / r422137;
double r422139 = r422134 * r422138;
double r422140 = r422139 - r422130;
double r422141 = r422133 / r422140;
double r422142 = r422130 + r422141;
return r422142;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.8 |
|---|---|
| Target | 0.0 |
| Herbie | 0.1 |
Initial program 2.8
rmApplied clear-num2.8
rmApplied add-cube-cbrt2.8
Applied associate-/l*2.8
Simplified0.1
Final simplification0.1
herbie shell --seed 2020083 +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)))))