x + \frac{y}{1.1283791670955126 \cdot e^{z} - x \cdot y}\begin{array}{l}
\mathbf{if}\;x + \frac{y}{e^{z} \cdot 1.1283791670955126 - x \cdot y} \le 5.241345650251777 \cdot 10^{+241}:\\
\;\;\;\;x + \frac{y}{e^{z} \cdot 1.1283791670955126 - x \cdot y}\\
\mathbf{else}:\\
\;\;\;\;x - \frac{1}{x}\\
\end{array}double f(double x, double y, double z) {
double r15937317 = x;
double r15937318 = y;
double r15937319 = 1.1283791670955126;
double r15937320 = z;
double r15937321 = exp(r15937320);
double r15937322 = r15937319 * r15937321;
double r15937323 = r15937317 * r15937318;
double r15937324 = r15937322 - r15937323;
double r15937325 = r15937318 / r15937324;
double r15937326 = r15937317 + r15937325;
return r15937326;
}
double f(double x, double y, double z) {
double r15937327 = x;
double r15937328 = y;
double r15937329 = z;
double r15937330 = exp(r15937329);
double r15937331 = 1.1283791670955126;
double r15937332 = r15937330 * r15937331;
double r15937333 = r15937327 * r15937328;
double r15937334 = r15937332 - r15937333;
double r15937335 = r15937328 / r15937334;
double r15937336 = r15937327 + r15937335;
double r15937337 = 5.241345650251777e+241;
bool r15937338 = r15937336 <= r15937337;
double r15937339 = 1.0;
double r15937340 = r15937339 / r15937327;
double r15937341 = r15937327 - r15937340;
double r15937342 = r15937338 ? r15937336 : r15937341;
return r15937342;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.8 |
|---|---|
| Target | 0.0 |
| Herbie | 1.1 |
if (+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))) < 5.241345650251777e+241Initial program 1.1
rmApplied div-inv1.3
rmApplied un-div-inv1.1
if 5.241345650251777e+241 < (+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))) Initial program 19.3
Taylor expanded around inf 0.8
Final simplification1.1
herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, A"
:herbie-target
(+ x (/ 1 (- (* (/ 1.1283791670955126 y) (exp z)) x)))
(+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))))