\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(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}^{x}\right) \cdot \frac{{\left(\frac{\sqrt[3]{\sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}}{\sqrt[3]{\sqrt[3]{x + y}} \cdot \sqrt[3]{\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 r404054 = x;
double r404055 = y;
double r404056 = r404054 + r404055;
double r404057 = r404054 / r404056;
double r404058 = log(r404057);
double r404059 = r404054 * r404058;
double r404060 = exp(r404059);
double r404061 = r404060 / r404054;
return r404061;
}
double f(double x, double y) {
double r404062 = x;
double r404063 = -6.878253153357071e+90;
bool r404064 = r404062 <= r404063;
double r404065 = 7.683820352854433e-07;
bool r404066 = r404062 <= r404065;
double r404067 = !r404066;
bool r404068 = r404064 || r404067;
double r404069 = -1.0;
double r404070 = y;
double r404071 = r404069 * r404070;
double r404072 = exp(r404071);
double r404073 = r404072 / r404062;
double r404074 = cbrt(r404062);
double r404075 = r404062 + r404070;
double r404076 = cbrt(r404075);
double r404077 = r404074 / r404076;
double r404078 = pow(r404077, r404062);
double r404079 = r404078 * r404078;
double r404080 = cbrt(r404074);
double r404081 = r404080 * r404080;
double r404082 = cbrt(r404076);
double r404083 = r404082 * r404082;
double r404084 = r404081 / r404083;
double r404085 = pow(r404084, r404062);
double r404086 = r404080 / r404082;
double r404087 = pow(r404086, r404062);
double r404088 = r404085 * r404087;
double r404089 = r404088 / r404062;
double r404090 = r404079 * r404089;
double r404091 = r404068 ? r404073 : r404090;
return r404091;
}




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-cbrt5.5
Applied add-cube-cbrt0.5
Applied times-frac0.5
Applied unpow-prod-down0.5
Final simplification0.3
herbie shell --seed 2020002 +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))