\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -15.65790492026070523934322409331798553467 \lor \neg \left(x \le 0.1204014281115151213663594376157561782748\right):\\
\;\;\;\;\frac{e^{-y}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{{\left(\frac{1}{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}\right)}^{x} \cdot \left({\left(\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}}\right)}^{x} \cdot {\left(\frac{\sqrt[3]{x}}{\sqrt[3]{\sqrt[3]{x + y}}}\right)}^{x}\right)}{x}\\
\end{array}double f(double x, double y) {
double r305709 = x;
double r305710 = y;
double r305711 = r305709 + r305710;
double r305712 = r305709 / r305711;
double r305713 = log(r305712);
double r305714 = r305709 * r305713;
double r305715 = exp(r305714);
double r305716 = r305715 / r305709;
return r305716;
}
double f(double x, double y) {
double r305717 = x;
double r305718 = -15.657904920260705;
bool r305719 = r305717 <= r305718;
double r305720 = 0.12040142811151512;
bool r305721 = r305717 <= r305720;
double r305722 = !r305721;
bool r305723 = r305719 || r305722;
double r305724 = y;
double r305725 = -r305724;
double r305726 = exp(r305725);
double r305727 = r305726 / r305717;
double r305728 = 1.0;
double r305729 = r305717 + r305724;
double r305730 = cbrt(r305729);
double r305731 = r305730 * r305730;
double r305732 = r305728 / r305731;
double r305733 = pow(r305732, r305717);
double r305734 = cbrt(r305717);
double r305735 = r305734 * r305734;
double r305736 = cbrt(r305731);
double r305737 = r305735 / r305736;
double r305738 = pow(r305737, r305717);
double r305739 = cbrt(r305730);
double r305740 = r305734 / r305739;
double r305741 = pow(r305740, r305717);
double r305742 = r305738 * r305741;
double r305743 = r305733 * r305742;
double r305744 = r305743 / r305717;
double r305745 = r305723 ? r305727 : r305744;
return r305745;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.2 |
|---|---|
| Target | 8.2 |
| Herbie | 0.0 |
if x < -15.657904920260705 or 0.12040142811151512 < x Initial program 10.9
Simplified10.9
Taylor expanded around inf 0.1
if -15.657904920260705 < x < 0.12040142811151512Initial program 11.6
Simplified11.6
rmApplied add-cube-cbrt11.6
Applied *-un-lft-identity11.6
Applied times-frac11.6
Applied unpow-prod-down3.3
rmApplied add-cube-cbrt3.3
Applied cbrt-prod3.3
Applied add-cube-cbrt3.3
Applied times-frac3.3
Applied unpow-prod-down0.0
Final simplification0.0
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, F"
:precision binary64
:herbie-target
(if (< y -3.7311844206647956e+94) (/ (exp (/ -1 y)) x) (if (< y 2.817959242728288e+37) (/ (pow (/ x (+ y x)) x) x) (if (< y 2.347387415166998e+178) (log (exp (/ (pow (/ x (+ y x)) x) x))) (/ (exp (/ -1 y)) x))))
(/ (exp (* x (log (/ x (+ x y))))) x))