x + \frac{y}{1.128379167095512558560699289955664426088 \cdot e^{z} - x \cdot y}\begin{array}{l}
\mathbf{if}\;x + \frac{y}{e^{z} \cdot 1.128379167095512558560699289955664426088 - x \cdot y} \le 1.81311086379084695535968986336471668991 \cdot 10^{290}:\\
\;\;\;\;x + \frac{y}{e^{z} \cdot 1.128379167095512558560699289955664426088 - x \cdot y}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{1.128379167095512558560699289955664426088 \cdot \left(\left(1 + z\right) \cdot \sqrt[3]{\frac{1}{y}}\right) - \sqrt[3]{y \cdot y} \cdot x} + x\\
\end{array}double f(double x, double y, double z) {
double r29841686 = x;
double r29841687 = y;
double r29841688 = 1.1283791670955126;
double r29841689 = z;
double r29841690 = exp(r29841689);
double r29841691 = r29841688 * r29841690;
double r29841692 = r29841686 * r29841687;
double r29841693 = r29841691 - r29841692;
double r29841694 = r29841687 / r29841693;
double r29841695 = r29841686 + r29841694;
return r29841695;
}
double f(double x, double y, double z) {
double r29841696 = x;
double r29841697 = y;
double r29841698 = z;
double r29841699 = exp(r29841698);
double r29841700 = 1.1283791670955126;
double r29841701 = r29841699 * r29841700;
double r29841702 = r29841696 * r29841697;
double r29841703 = r29841701 - r29841702;
double r29841704 = r29841697 / r29841703;
double r29841705 = r29841696 + r29841704;
double r29841706 = 1.813110863790847e+290;
bool r29841707 = r29841705 <= r29841706;
double r29841708 = cbrt(r29841697);
double r29841709 = r29841708 * r29841708;
double r29841710 = 1.0;
double r29841711 = r29841710 + r29841698;
double r29841712 = r29841710 / r29841697;
double r29841713 = cbrt(r29841712);
double r29841714 = r29841711 * r29841713;
double r29841715 = r29841700 * r29841714;
double r29841716 = r29841697 * r29841697;
double r29841717 = cbrt(r29841716);
double r29841718 = r29841717 * r29841696;
double r29841719 = r29841715 - r29841718;
double r29841720 = r29841709 / r29841719;
double r29841721 = r29841720 + r29841696;
double r29841722 = r29841707 ? r29841705 : r29841721;
return r29841722;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 2.7 |
|---|---|
| Target | 0.0 |
| Herbie | 1.9 |
if (+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))) < 1.813110863790847e+290Initial program 1.0
if 1.813110863790847e+290 < (+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))) Initial program 40.3
rmApplied add-cube-cbrt40.3
Applied associate-/l*40.3
Taylor expanded around 0 47.0
Simplified21.3
Final simplification1.9
herbie shell --seed 2019171
(FPCore (x y z)
:name "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, A"
:herbie-target
(+ x (/ 1.0 (- (* (/ 1.1283791670955126 y) (exp z)) x)))
(+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))))