\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -8.99548382710316602 \cdot 10^{46} \lor \neg \left(x \le 3.95485830747834965\right):\\
\;\;\;\;e^{-y} \cdot \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{x \cdot \left(\log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right) \cdot 2\right)} \cdot {\left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}^{x}}{x}\\
\end{array}double f(double x, double y) {
double r461678 = x;
double r461679 = y;
double r461680 = r461678 + r461679;
double r461681 = r461678 / r461680;
double r461682 = log(r461681);
double r461683 = r461678 * r461682;
double r461684 = exp(r461683);
double r461685 = r461684 / r461678;
return r461685;
}
double f(double x, double y) {
double r461686 = x;
double r461687 = -8.995483827103166e+46;
bool r461688 = r461686 <= r461687;
double r461689 = 3.9548583074783497;
bool r461690 = r461686 <= r461689;
double r461691 = !r461690;
bool r461692 = r461688 || r461691;
double r461693 = y;
double r461694 = -r461693;
double r461695 = exp(r461694);
double r461696 = 1.0;
double r461697 = r461696 / r461686;
double r461698 = r461695 * r461697;
double r461699 = cbrt(r461686);
double r461700 = r461686 + r461693;
double r461701 = cbrt(r461700);
double r461702 = r461699 / r461701;
double r461703 = log(r461702);
double r461704 = 2.0;
double r461705 = r461703 * r461704;
double r461706 = r461686 * r461705;
double r461707 = exp(r461706);
double r461708 = pow(r461702, r461686);
double r461709 = r461707 * r461708;
double r461710 = r461709 / r461686;
double r461711 = r461692 ? r461698 : r461710;
return r461711;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.1 |
|---|---|
| Target | 8.0 |
| Herbie | 0.1 |
if x < -8.995483827103166e+46 or 3.9548583074783497 < x Initial program 11.1
Simplified11.1
Taylor expanded around inf 0.1
rmApplied div-inv0.1
if -8.995483827103166e+46 < x < 3.9548583074783497Initial program 11.1
Simplified11.1
rmApplied add-cube-cbrt13.4
Applied add-cube-cbrt11.1
Applied times-frac11.1
Applied unpow-prod-down2.1
rmApplied add-exp-log34.8
Applied add-exp-log34.8
Applied prod-exp34.8
Applied add-exp-log34.8
Applied add-exp-log34.8
Applied prod-exp34.8
Applied div-exp34.8
Applied pow-exp33.7
Simplified0.2
Final simplification0.1
herbie shell --seed 2020043 +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))