\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -9.6059130117611643 \cdot 10^{60} \lor \neg \left(x \le 18.070714455582099\right):\\
\;\;\;\;\frac{e^{-1 \cdot y}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\left({\left(\left|\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right|\right)}^{\left(\frac{x}{2}\right)} \cdot {\left(\left|\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right|\right)}^{\left(\frac{x}{2}\right)}\right) \cdot {\left(\left|\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right|\right)}^{\left(2 \cdot \frac{x}{2}\right)}\right) \cdot {\left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}^{x}}{x}\\
\end{array}double f(double x, double y) {
double r447846 = x;
double r447847 = y;
double r447848 = r447846 + r447847;
double r447849 = r447846 / r447848;
double r447850 = log(r447849);
double r447851 = r447846 * r447850;
double r447852 = exp(r447851);
double r447853 = r447852 / r447846;
return r447853;
}
double f(double x, double y) {
double r447854 = x;
double r447855 = -9.605913011761164e+60;
bool r447856 = r447854 <= r447855;
double r447857 = 18.0707144555821;
bool r447858 = r447854 <= r447857;
double r447859 = !r447858;
bool r447860 = r447856 || r447859;
double r447861 = -1.0;
double r447862 = y;
double r447863 = r447861 * r447862;
double r447864 = exp(r447863);
double r447865 = r447864 / r447854;
double r447866 = cbrt(r447854);
double r447867 = r447854 + r447862;
double r447868 = cbrt(r447867);
double r447869 = r447866 / r447868;
double r447870 = fabs(r447869);
double r447871 = 2.0;
double r447872 = r447854 / r447871;
double r447873 = pow(r447870, r447872);
double r447874 = r447873 * r447873;
double r447875 = r447871 * r447872;
double r447876 = pow(r447870, r447875);
double r447877 = r447874 * r447876;
double r447878 = pow(r447869, r447854);
double r447879 = r447877 * r447878;
double r447880 = r447879 / r447854;
double r447881 = r447860 ? r447865 : r447880;
return r447881;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.2 |
|---|---|
| Target | 7.6 |
| Herbie | 0.1 |
if x < -9.605913011761164e+60 or 18.0707144555821 < x Initial program 12.3
Simplified12.3
Taylor expanded around inf 0.0
Simplified0.0
if -9.605913011761164e+60 < x < 18.0707144555821Initial program 10.1
Simplified10.1
rmApplied add-cube-cbrt13.1
Applied add-cube-cbrt10.1
Applied times-frac10.1
Applied unpow-prod-down2.3
rmApplied add-sqr-sqrt2.3
Applied unpow-prod-down2.4
Simplified2.4
Simplified0.2
rmApplied sqr-pow0.2
Simplified0.2
Simplified0.2
Final simplification0.1
herbie shell --seed 2020036
(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))