x + \frac{y}{1.128379167095512558560699289955664426088 \cdot e^{z} - x \cdot y}\begin{array}{l}
\mathbf{if}\;x + \frac{y}{\frac{5081767996463981}{4503599627370496} \cdot e^{z} - x \cdot y} \le 7.692267140979724484480008976812300814177 \cdot 10^{263}:\\
\;\;\;\;x + \frac{y}{\frac{5081767996463981}{4503599627370496} \cdot e^{z} - x \cdot y}\\
\mathbf{else}:\\
\;\;\;\;x - \frac{1}{x}\\
\end{array}double f(double x, double y, double z) {
double r301313 = x;
double r301314 = y;
double r301315 = 1.1283791670955126;
double r301316 = z;
double r301317 = exp(r301316);
double r301318 = r301315 * r301317;
double r301319 = r301313 * r301314;
double r301320 = r301318 - r301319;
double r301321 = r301314 / r301320;
double r301322 = r301313 + r301321;
return r301322;
}
double f(double x, double y, double z) {
double r301323 = x;
double r301324 = y;
double r301325 = 5081767996463981.0;
double r301326 = 4503599627370496.0;
double r301327 = r301325 / r301326;
double r301328 = z;
double r301329 = exp(r301328);
double r301330 = r301327 * r301329;
double r301331 = r301323 * r301324;
double r301332 = r301330 - r301331;
double r301333 = r301324 / r301332;
double r301334 = r301323 + r301333;
double r301335 = 7.692267140979724e+263;
bool r301336 = r301334 <= r301335;
double r301337 = 1.0;
double r301338 = r301337 / r301323;
double r301339 = r301323 - r301338;
double r301340 = r301336 ? r301334 : r301339;
return r301340;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.7 |
|---|---|
| Target | 0.1 |
| Herbie | 0.9 |
if (+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))) < 7.692267140979724e+263Initial program 1.0
if 7.692267140979724e+263 < (+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))) Initial program 26.2
Taylor expanded around inf 0.6
Final simplification0.9
herbie shell --seed 2019303
(FPCore (x y z)
:name "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(+ x (/ 1 (- (* (/ 1.12837916709551256 y) (exp z)) x)))
(+ x (/ y (- (* 1.12837916709551256 (exp z)) (* x y)))))