\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -13.81174464235228427355650637764483690262 \lor \neg \left(x \le 0.1204014281115151213663594376157561782748\right):\\
\;\;\;\;\frac{e^{-y}}{x}\\
\mathbf{else}:\\
\;\;\;\;{\left(\frac{1}{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}\right)}^{x} \cdot \frac{{\left(\frac{\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]{x}}{\sqrt[3]{\sqrt[3]{x + y}}}\right)}^{x}}{x}\\
\end{array}double f(double x, double y) {
double r269565 = x;
double r269566 = y;
double r269567 = r269565 + r269566;
double r269568 = r269565 / r269567;
double r269569 = log(r269568);
double r269570 = r269565 * r269569;
double r269571 = exp(r269570);
double r269572 = r269571 / r269565;
return r269572;
}
double f(double x, double y) {
double r269573 = x;
double r269574 = -13.811744642352284;
bool r269575 = r269573 <= r269574;
double r269576 = 0.12040142811151512;
bool r269577 = r269573 <= r269576;
double r269578 = !r269577;
bool r269579 = r269575 || r269578;
double r269580 = y;
double r269581 = -r269580;
double r269582 = exp(r269581);
double r269583 = r269582 / r269573;
double r269584 = 1.0;
double r269585 = r269573 + r269580;
double r269586 = cbrt(r269585);
double r269587 = r269586 * r269586;
double r269588 = r269584 / r269587;
double r269589 = pow(r269588, r269573);
double r269590 = cbrt(r269573);
double r269591 = r269590 * r269590;
double r269592 = cbrt(r269587);
double r269593 = r269591 / r269592;
double r269594 = pow(r269593, r269573);
double r269595 = cbrt(r269586);
double r269596 = r269590 / r269595;
double r269597 = pow(r269596, r269573);
double r269598 = r269594 * r269597;
double r269599 = r269598 / r269573;
double r269600 = r269589 * r269599;
double r269601 = r269579 ? r269583 : r269600;
return r269601;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.2 |
|---|---|
| Target | 8.2 |
| Herbie | 0.1 |
if x < -13.811744642352284 or 0.12040142811151512 < x Initial program 10.9
Simplified10.9
Taylor expanded around inf 0.1
if -13.811744642352284 < x < 0.12040142811151512Initial program 11.6
Simplified11.6
rmApplied *-un-lft-identity11.6
Applied add-cube-cbrt11.6
Applied *-un-lft-identity11.6
Applied times-frac11.6
Applied unpow-prod-down3.3
Applied times-frac3.3
Simplified3.3
rmApplied add-cube-cbrt3.3
Applied cbrt-prod3.3
Applied add-cube-cbrt3.3
Applied times-frac3.3
Applied unpow-prod-down0.0
Final simplification0.1
herbie shell --seed 2019323
(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))