\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -7.15064441356617753 \lor \neg \left(x \le 6.441277885744034\right):\\
\;\;\;\;\frac{e^{-y}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{{\left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}^{x} \cdot {\left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}^{x}}{\sqrt[3]{x} \cdot \sqrt[3]{x}} \cdot \frac{{\left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}^{x}}{\sqrt[3]{x}}\\
\end{array}double f(double x, double y) {
double r475783 = x;
double r475784 = y;
double r475785 = r475783 + r475784;
double r475786 = r475783 / r475785;
double r475787 = log(r475786);
double r475788 = r475783 * r475787;
double r475789 = exp(r475788);
double r475790 = r475789 / r475783;
return r475790;
}
double f(double x, double y) {
double r475791 = x;
double r475792 = -7.1506444135661775;
bool r475793 = r475791 <= r475792;
double r475794 = 6.441277885744034;
bool r475795 = r475791 <= r475794;
double r475796 = !r475795;
bool r475797 = r475793 || r475796;
double r475798 = y;
double r475799 = -r475798;
double r475800 = exp(r475799);
double r475801 = r475800 / r475791;
double r475802 = cbrt(r475791);
double r475803 = r475791 + r475798;
double r475804 = cbrt(r475803);
double r475805 = r475802 / r475804;
double r475806 = pow(r475805, r475791);
double r475807 = r475806 * r475806;
double r475808 = r475802 * r475802;
double r475809 = r475807 / r475808;
double r475810 = r475806 / r475802;
double r475811 = r475809 * r475810;
double r475812 = r475797 ? r475801 : r475811;
return r475812;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.3 |
|---|---|
| Target | 8.2 |
| Herbie | 0.7 |
if x < -7.1506444135661775 or 6.441277885744034 < x Initial program 10.9
Simplified10.9
Taylor expanded around inf 0.0
if -7.1506444135661775 < x < 6.441277885744034Initial program 11.7
Simplified11.7
rmApplied add-cube-cbrt12.8
Applied add-cube-cbrt12.8
Applied add-cube-cbrt12.8
Applied times-frac12.8
Applied unpow-prod-down4.0
Applied times-frac4.0
rmApplied times-frac4.0
Applied unpow-prod-down1.5
Final simplification0.7
herbie shell --seed 2020042
(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))