\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -6.878253153357071414016501670814455842941 \cdot 10^{90} \lor \neg \left(x \le 7.683820352854432996384339595030699143763 \cdot 10^{-7}\right):\\
\;\;\;\;\frac{e^{-1 \cdot y}}{x}\\
\mathbf{else}:\\
\;\;\;\;\left({\left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}^{x} \cdot \left({\left(\frac{\sqrt[3]{\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]{\sqrt[3]{x}}}{\sqrt[3]{\sqrt[3]{x + y}}}\right)}^{x}\right)\right) \cdot \frac{{\left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}^{x}}{x}\\
\end{array}double f(double x, double y) {
double r458417 = x;
double r458418 = y;
double r458419 = r458417 + r458418;
double r458420 = r458417 / r458419;
double r458421 = log(r458420);
double r458422 = r458417 * r458421;
double r458423 = exp(r458422);
double r458424 = r458423 / r458417;
return r458424;
}
double f(double x, double y) {
double r458425 = x;
double r458426 = -6.878253153357071e+90;
bool r458427 = r458425 <= r458426;
double r458428 = 7.683820352854433e-07;
bool r458429 = r458425 <= r458428;
double r458430 = !r458429;
bool r458431 = r458427 || r458430;
double r458432 = -1.0;
double r458433 = y;
double r458434 = r458432 * r458433;
double r458435 = exp(r458434);
double r458436 = r458435 / r458425;
double r458437 = cbrt(r458425);
double r458438 = r458425 + r458433;
double r458439 = cbrt(r458438);
double r458440 = r458437 / r458439;
double r458441 = pow(r458440, r458425);
double r458442 = r458437 * r458437;
double r458443 = cbrt(r458442);
double r458444 = r458439 * r458439;
double r458445 = cbrt(r458444);
double r458446 = r458443 / r458445;
double r458447 = pow(r458446, r458425);
double r458448 = cbrt(r458437);
double r458449 = cbrt(r458439);
double r458450 = r458448 / r458449;
double r458451 = pow(r458450, r458425);
double r458452 = r458447 * r458451;
double r458453 = r458441 * r458452;
double r458454 = r458441 / r458425;
double r458455 = r458453 * r458454;
double r458456 = r458431 ? r458436 : r458455;
return r458456;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.4 |
|---|---|
| Target | 8.0 |
| Herbie | 0.3 |
if x < -6.878253153357071e+90 or 7.683820352854433e-07 < x Initial program 12.3
Simplified12.3
Taylor expanded around inf 0.1
Simplified0.1
if -6.878253153357071e+90 < x < 7.683820352854433e-07Initial program 10.7
Simplified10.7
rmApplied *-un-lft-identity10.7
Applied add-cube-cbrt15.7
Applied add-cube-cbrt10.7
Applied times-frac10.7
Applied unpow-prod-down2.5
Applied times-frac2.5
Simplified2.5
rmApplied times-frac2.5
Applied unpow-prod-down0.5
rmApplied add-cube-cbrt2.5
Applied cbrt-prod4.6
Applied add-cube-cbrt4.6
Applied cbrt-prod0.5
Applied times-frac0.5
Applied unpow-prod-down0.5
Final simplification0.3
herbie shell --seed 2020002
(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))