\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -5.89791977930625:\\
\;\;\;\;\frac{e^{-1 \cdot y}}{x}\\
\mathbf{elif}\;x \le 9.2977525610777332 \cdot 10^{-4}:\\
\;\;\;\;\frac{{\left(\frac{1}{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}\right)}^{x} \cdot {\left(\frac{x}{\sqrt[3]{x + y}}\right)}^{x}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{x \cdot e^{y}}\\
\end{array}double f(double x, double y) {
double r317981 = x;
double r317982 = y;
double r317983 = r317981 + r317982;
double r317984 = r317981 / r317983;
double r317985 = log(r317984);
double r317986 = r317981 * r317985;
double r317987 = exp(r317986);
double r317988 = r317987 / r317981;
return r317988;
}
double f(double x, double y) {
double r317989 = x;
double r317990 = -5.89791977930625;
bool r317991 = r317989 <= r317990;
double r317992 = -1.0;
double r317993 = y;
double r317994 = r317992 * r317993;
double r317995 = exp(r317994);
double r317996 = r317995 / r317989;
double r317997 = 0.0009297752561077733;
bool r317998 = r317989 <= r317997;
double r317999 = 1.0;
double r318000 = r317989 + r317993;
double r318001 = cbrt(r318000);
double r318002 = r318001 * r318001;
double r318003 = r317999 / r318002;
double r318004 = pow(r318003, r317989);
double r318005 = r317989 / r318001;
double r318006 = pow(r318005, r317989);
double r318007 = r318004 * r318006;
double r318008 = r318007 / r317989;
double r318009 = exp(r317993);
double r318010 = r317989 * r318009;
double r318011 = r317999 / r318010;
double r318012 = r317998 ? r318008 : r318011;
double r318013 = r317991 ? r317996 : r318012;
return r318013;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.1 |
|---|---|
| Target | 8.1 |
| Herbie | 1.5 |
if x < -5.89791977930625Initial program 11.6
Simplified11.6
Taylor expanded around inf 0.1
Simplified0.1
if -5.89791977930625 < x < 0.0009297752561077733Initial program 11.6
Simplified11.6
rmApplied add-cube-cbrt11.6
Applied *-un-lft-identity11.6
Applied times-frac11.6
Applied unpow-prod-down2.9
if 0.0009297752561077733 < x Initial program 9.9
Simplified9.9
Taylor expanded around inf 0.3
Simplified0.3
rmApplied clear-num0.3
Simplified0.3
Final simplification1.5
herbie shell --seed 2020027 +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))