\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -1.81817434923962274 \cdot 10^{140} \lor \neg \left(x \le 5.23835627656106507 \cdot 10^{-4}\right):\\
\;\;\;\;\frac{e^{-y}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left({\left(\left|\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right|\right)}^{x} \cdot {\left(\left|\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right|\right)}^{x}\right) \cdot {\left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}^{x}}{x}\\
\end{array}double f(double x, double y) {
double r406060 = x;
double r406061 = y;
double r406062 = r406060 + r406061;
double r406063 = r406060 / r406062;
double r406064 = log(r406063);
double r406065 = r406060 * r406064;
double r406066 = exp(r406065);
double r406067 = r406066 / r406060;
return r406067;
}
double f(double x, double y) {
double r406068 = x;
double r406069 = -1.8181743492396227e+140;
bool r406070 = r406068 <= r406069;
double r406071 = 0.0005238356276561065;
bool r406072 = r406068 <= r406071;
double r406073 = !r406072;
bool r406074 = r406070 || r406073;
double r406075 = y;
double r406076 = -r406075;
double r406077 = exp(r406076);
double r406078 = r406077 / r406068;
double r406079 = cbrt(r406068);
double r406080 = r406068 + r406075;
double r406081 = cbrt(r406080);
double r406082 = r406079 / r406081;
double r406083 = fabs(r406082);
double r406084 = pow(r406083, r406068);
double r406085 = r406084 * r406084;
double r406086 = pow(r406082, r406068);
double r406087 = r406085 * r406086;
double r406088 = r406087 / r406068;
double r406089 = r406074 ? r406078 : r406088;
return r406089;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.2 |
|---|---|
| Target | 7.6 |
| Herbie | 0.7 |
if x < -1.8181743492396227e+140 or 0.0005238356276561065 < x Initial program 12.0
Simplified12.0
Taylor expanded around inf 0.2
if -1.8181743492396227e+140 < x < 0.0005238356276561065Initial program 10.5
Simplified10.5
rmApplied add-cube-cbrt17.5
Applied add-cube-cbrt10.5
Applied times-frac10.5
Applied unpow-prod-down3.0
rmApplied add-sqr-sqrt3.0
Applied unpow-prod-down3.0
Simplified3.0
Simplified1.1
Final simplification0.7
herbie shell --seed 2020046 +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))