\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -11.1311153737101254 \lor \neg \left(x \le 35.4023159063176607\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]{\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 r334703 = x;
double r334704 = y;
double r334705 = r334703 + r334704;
double r334706 = r334703 / r334705;
double r334707 = log(r334706);
double r334708 = r334703 * r334707;
double r334709 = exp(r334708);
double r334710 = r334709 / r334703;
return r334710;
}
double f(double x, double y) {
double r334711 = x;
double r334712 = -11.131115373710125;
bool r334713 = r334711 <= r334712;
double r334714 = 35.40231590631766;
bool r334715 = r334711 <= r334714;
double r334716 = !r334715;
bool r334717 = r334713 || r334716;
double r334718 = y;
double r334719 = -r334718;
double r334720 = exp(r334719);
double r334721 = r334720 / r334711;
double r334722 = 1.0;
double r334723 = r334711 + r334718;
double r334724 = cbrt(r334723);
double r334725 = r334724 * r334724;
double r334726 = r334722 / r334725;
double r334727 = pow(r334726, r334711);
double r334728 = cbrt(r334711);
double r334729 = r334728 * r334728;
double r334730 = cbrt(r334724);
double r334731 = r334730 * r334730;
double r334732 = r334729 / r334731;
double r334733 = pow(r334732, r334711);
double r334734 = r334728 / r334730;
double r334735 = pow(r334734, r334711);
double r334736 = r334733 * r334735;
double r334737 = r334727 * r334736;
double r334738 = r334737 / r334711;
double r334739 = r334717 ? r334721 : r334738;
return r334739;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.5 |
|---|---|
| Target | 7.9 |
| Herbie | 0.0 |
if x < -11.131115373710125 or 35.40231590631766 < x Initial program 10.9
Simplified10.9
Taylor expanded around inf 0.0
if -11.131115373710125 < x < 35.40231590631766Initial program 12.1
Simplified12.1
rmApplied add-cube-cbrt12.1
Applied *-un-lft-identity12.1
Applied times-frac12.1
Applied unpow-prod-down3.0
rmApplied add-cube-cbrt3.0
Applied add-cube-cbrt3.0
Applied times-frac3.0
Applied unpow-prod-down0.0
Final simplification0.0
herbie shell --seed 2019199
(FPCore (x y)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, F"
:herbie-target
(if (< y -3.7311844206647956e+94) (/ (exp (/ -1.0 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.0 y)) x))))
(/ (exp (* x (log (/ x (+ x y))))) x))