\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}:\\
\;\;\;\;\left({\left(\left|\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right|\right)}^{\left(2 \cdot \frac{x}{2}\right)} \cdot {\left(\left|\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right|\right)}^{\left(2 \cdot \frac{x}{2}\right)}\right) \cdot \frac{{\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}}{x}\\
\end{array}double f(double x, double y) {
double r418856 = x;
double r418857 = y;
double r418858 = r418856 + r418857;
double r418859 = r418856 / r418858;
double r418860 = log(r418859);
double r418861 = r418856 * r418860;
double r418862 = exp(r418861);
double r418863 = r418862 / r418856;
return r418863;
}
double f(double x, double y) {
double r418864 = x;
double r418865 = -9.605913011761164e+60;
bool r418866 = r418864 <= r418865;
double r418867 = 18.0707144555821;
bool r418868 = r418864 <= r418867;
double r418869 = !r418868;
bool r418870 = r418866 || r418869;
double r418871 = -1.0;
double r418872 = y;
double r418873 = r418871 * r418872;
double r418874 = exp(r418873);
double r418875 = r418874 / r418864;
double r418876 = cbrt(r418864);
double r418877 = r418864 + r418872;
double r418878 = cbrt(r418877);
double r418879 = r418876 / r418878;
double r418880 = fabs(r418879);
double r418881 = 2.0;
double r418882 = r418864 / r418881;
double r418883 = r418881 * r418882;
double r418884 = pow(r418880, r418883);
double r418885 = r418884 * r418884;
double r418886 = r418876 * r418876;
double r418887 = cbrt(r418886);
double r418888 = r418878 * r418878;
double r418889 = cbrt(r418888);
double r418890 = r418887 / r418889;
double r418891 = pow(r418890, r418864);
double r418892 = cbrt(r418876);
double r418893 = cbrt(r418878);
double r418894 = r418892 / r418893;
double r418895 = pow(r418894, r418864);
double r418896 = r418891 * r418895;
double r418897 = r418896 / r418864;
double r418898 = r418885 * r418897;
double r418899 = r418870 ? r418875 : r418898;
return r418899;
}




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 *-un-lft-identity10.1
Applied add-cube-cbrt13.1
Applied add-cube-cbrt10.1
Applied times-frac10.1
Applied unpow-prod-down2.3
Applied times-frac2.4
Simplified2.4
rmApplied add-sqr-sqrt2.4
Applied unpow-prod-down2.4
Simplified2.4
Simplified0.2
rmApplied add-cube-cbrt1.3
Applied cbrt-prod2.4
Applied add-cube-cbrt2.6
Applied cbrt-prod0.2
Applied times-frac0.2
Applied unpow-prod-down0.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))