x + \frac{y}{1.128379167095512558560699289955664426088 \cdot e^{z} - x \cdot y}\begin{array}{l}
\mathbf{if}\;x + \frac{y}{1.128379167095512558560699289955664426088 \cdot e^{z} - x \cdot y} \le 6.080526524810317350601311198697643594969 \cdot 10^{291}:\\
\;\;\;\;x + \frac{y}{1.128379167095512558560699289955664426088 \cdot e^{z} - x \cdot y}\\
\mathbf{else}:\\
\;\;\;\;x - \frac{1}{x}\\
\end{array}double f(double x, double y, double z) {
double r387257 = x;
double r387258 = y;
double r387259 = 1.1283791670955126;
double r387260 = z;
double r387261 = exp(r387260);
double r387262 = r387259 * r387261;
double r387263 = r387257 * r387258;
double r387264 = r387262 - r387263;
double r387265 = r387258 / r387264;
double r387266 = r387257 + r387265;
return r387266;
}
double f(double x, double y, double z) {
double r387267 = x;
double r387268 = y;
double r387269 = 1.1283791670955126;
double r387270 = z;
double r387271 = exp(r387270);
double r387272 = r387269 * r387271;
double r387273 = r387267 * r387268;
double r387274 = r387272 - r387273;
double r387275 = r387268 / r387274;
double r387276 = r387267 + r387275;
double r387277 = 6.080526524810317e+291;
bool r387278 = r387276 <= r387277;
double r387279 = 1.0;
double r387280 = r387279 / r387267;
double r387281 = r387267 - r387280;
double r387282 = r387278 ? r387276 : r387281;
return r387282;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.7 |
|---|---|
| Target | 0.0 |
| Herbie | 0.9 |
if (+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))) < 6.080526524810317e+291Initial program 0.9
if 6.080526524810317e+291 < (+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))) Initial program 41.8
Taylor expanded around inf 0.3
Final simplification0.9
herbie shell --seed 2019354
(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)))))