\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;y \le 2.081714116143433 \cdot 10^{-21}:\\
\;\;\;\;\frac{1}{x}\\
\mathbf{elif}\;y \le 2.5159502131974188 \cdot 10^{+194}:\\
\;\;\;\;\frac{e^{\left(\log \left(\frac{\sqrt[3]{\frac{x}{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}}}{\sqrt[3]{\sqrt[3]{x + y}}}\right) + \log \left(\frac{\left(\sqrt[3]{x} \cdot \sqrt[3]{\frac{1}{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}}\right) \cdot \sqrt[3]{\frac{x}{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}}}{\sqrt[3]{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}}\right)\right) \cdot x}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{x \cdot \left(\log \left(\frac{\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}}{\sqrt[3]{\sqrt{x + y}}}\right) + \log \left(\frac{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{x + y}}}{\sqrt[3]{\sqrt{x + y}}}\right)\right)}}{x}\\
\end{array}double f(double x, double y) {
double r19574066 = x;
double r19574067 = y;
double r19574068 = r19574066 + r19574067;
double r19574069 = r19574066 / r19574068;
double r19574070 = log(r19574069);
double r19574071 = r19574066 * r19574070;
double r19574072 = exp(r19574071);
double r19574073 = r19574072 / r19574066;
return r19574073;
}
double f(double x, double y) {
double r19574074 = y;
double r19574075 = 2.081714116143433e-21;
bool r19574076 = r19574074 <= r19574075;
double r19574077 = 1.0;
double r19574078 = x;
double r19574079 = r19574077 / r19574078;
double r19574080 = 2.5159502131974188e+194;
bool r19574081 = r19574074 <= r19574080;
double r19574082 = r19574078 + r19574074;
double r19574083 = cbrt(r19574082);
double r19574084 = r19574083 * r19574083;
double r19574085 = r19574078 / r19574084;
double r19574086 = cbrt(r19574085);
double r19574087 = cbrt(r19574083);
double r19574088 = r19574086 / r19574087;
double r19574089 = log(r19574088);
double r19574090 = cbrt(r19574078);
double r19574091 = r19574077 / r19574084;
double r19574092 = cbrt(r19574091);
double r19574093 = r19574090 * r19574092;
double r19574094 = r19574093 * r19574086;
double r19574095 = cbrt(r19574084);
double r19574096 = r19574094 / r19574095;
double r19574097 = log(r19574096);
double r19574098 = r19574089 + r19574097;
double r19574099 = r19574098 * r19574078;
double r19574100 = exp(r19574099);
double r19574101 = r19574100 / r19574078;
double r19574102 = r19574090 / r19574083;
double r19574103 = sqrt(r19574082);
double r19574104 = cbrt(r19574103);
double r19574105 = r19574102 / r19574104;
double r19574106 = log(r19574105);
double r19574107 = r19574090 * r19574090;
double r19574108 = r19574107 / r19574083;
double r19574109 = r19574108 / r19574104;
double r19574110 = log(r19574109);
double r19574111 = r19574106 + r19574110;
double r19574112 = r19574078 * r19574111;
double r19574113 = exp(r19574112);
double r19574114 = r19574113 / r19574078;
double r19574115 = r19574081 ? r19574101 : r19574114;
double r19574116 = r19574076 ? r19574079 : r19574115;
return r19574116;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.5 |
|---|---|
| Target | 8.6 |
| Herbie | 5.6 |
if y < 2.081714116143433e-21Initial program 4.5
Taylor expanded around inf 0.8
if 2.081714116143433e-21 < y < 2.5159502131974188e+194Initial program 32.4
rmApplied add-cube-cbrt24.0
Applied associate-/r*24.1
rmApplied add-cube-cbrt24.3
Applied cbrt-prod24.2
Applied add-cube-cbrt24.0
Applied times-frac23.9
Applied log-prod21.5
rmApplied div-inv21.6
Applied cbrt-prod22.0
if 2.5159502131974188e+194 < y Initial program 27.5
rmApplied add-cube-cbrt24.5
Applied associate-/r*24.6
rmApplied add-sqr-sqrt28.1
Applied cbrt-prod27.8
Applied add-cube-cbrt28.5
Applied times-frac28.5
Applied times-frac28.4
Applied log-prod12.0
Final simplification5.6
herbie shell --seed 2019165
(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))