x + \frac{y}{1.12837916709551256 \cdot e^{z} - x \cdot y}x + \frac{1}{1 \cdot \left(1.12837916709551256 \cdot \frac{e^{z}}{y} - x\right)}double f(double x, double y, double z) {
double r407104 = x;
double r407105 = y;
double r407106 = 1.1283791670955126;
double r407107 = z;
double r407108 = exp(r407107);
double r407109 = r407106 * r407108;
double r407110 = r407104 * r407105;
double r407111 = r407109 - r407110;
double r407112 = r407105 / r407111;
double r407113 = r407104 + r407112;
return r407113;
}
double f(double x, double y, double z) {
double r407114 = x;
double r407115 = 1.0;
double r407116 = 1.1283791670955126;
double r407117 = z;
double r407118 = exp(r407117);
double r407119 = y;
double r407120 = r407118 / r407119;
double r407121 = r407116 * r407120;
double r407122 = r407121 - r407114;
double r407123 = r407115 * r407122;
double r407124 = r407115 / r407123;
double r407125 = r407114 + r407124;
return r407125;
}




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 *-un-lft-identity2.8
Applied *-un-lft-identity2.8
Applied times-frac2.8
Simplified2.8
Simplified0.1
Final simplification0.1
herbie shell --seed 2020034
(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)))))