x + \frac{y}{1.12837916709551256 \cdot e^{z} - x \cdot y}x + \frac{\sqrt{1}}{\frac{\sqrt{e^{z}}}{y} \cdot \left(\sqrt{e^{z}} \cdot 1.12837916709551256\right) - \frac{x}{1}}double f(double x, double y, double z) {
double r454308 = x;
double r454309 = y;
double r454310 = 1.1283791670955126;
double r454311 = z;
double r454312 = exp(r454311);
double r454313 = r454310 * r454312;
double r454314 = r454308 * r454309;
double r454315 = r454313 - r454314;
double r454316 = r454309 / r454315;
double r454317 = r454308 + r454316;
return r454317;
}
double f(double x, double y, double z) {
double r454318 = x;
double r454319 = 1.0;
double r454320 = sqrt(r454319);
double r454321 = z;
double r454322 = exp(r454321);
double r454323 = sqrt(r454322);
double r454324 = y;
double r454325 = r454323 / r454324;
double r454326 = 1.1283791670955126;
double r454327 = r454323 * r454326;
double r454328 = r454325 * r454327;
double r454329 = r454318 / r454319;
double r454330 = r454328 - r454329;
double r454331 = r454320 / r454330;
double r454332 = r454318 + r454331;
return r454332;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 3.0 |
|---|---|
| Target | 0.0 |
| Herbie | 0.1 |
Initial program 3.0
rmApplied add-exp-log3.0
Applied prod-exp3.0
Simplified3.0
rmApplied clear-num3.0
rmApplied add-sqr-sqrt3.0
Applied associate-/l*3.0
Simplified0.0
rmApplied div-inv0.0
Applied add-sqr-sqrt0.0
Applied times-frac0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020049
(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)))))