\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;y \le 2.081714116143433 \cdot 10^{-21}:\\
\;\;\;\;\frac{1}{x}\\
\mathbf{elif}\;y \le 2.5159502131974188 \cdot 10^{+194}:\\
\;\;\;\;\frac{e^{\left(\log \left(\frac{\sqrt[3]{\frac{x}{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}}}{\sqrt[3]{\sqrt[3]{x + y}}}\right) + \log \left(\frac{\left(\sqrt[3]{x} \cdot \sqrt[3]{\frac{1}{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}}\right) \cdot \sqrt[3]{\frac{x}{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}}}{\sqrt[3]{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}}\right)\right) \cdot x}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{x \cdot \left(\log \left(\frac{\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}}{\sqrt[3]{\sqrt{x + y}}}\right) + \log \left(\frac{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{x + y}}}{\sqrt[3]{\sqrt{x + y}}}\right)\right)}}{x}\\
\end{array}double f(double x, double y) {
double r15399441 = x;
double r15399442 = y;
double r15399443 = r15399441 + r15399442;
double r15399444 = r15399441 / r15399443;
double r15399445 = log(r15399444);
double r15399446 = r15399441 * r15399445;
double r15399447 = exp(r15399446);
double r15399448 = r15399447 / r15399441;
return r15399448;
}
double f(double x, double y) {
double r15399449 = y;
double r15399450 = 2.081714116143433e-21;
bool r15399451 = r15399449 <= r15399450;
double r15399452 = 1.0;
double r15399453 = x;
double r15399454 = r15399452 / r15399453;
double r15399455 = 2.5159502131974188e+194;
bool r15399456 = r15399449 <= r15399455;
double r15399457 = r15399453 + r15399449;
double r15399458 = cbrt(r15399457);
double r15399459 = r15399458 * r15399458;
double r15399460 = r15399453 / r15399459;
double r15399461 = cbrt(r15399460);
double r15399462 = cbrt(r15399458);
double r15399463 = r15399461 / r15399462;
double r15399464 = log(r15399463);
double r15399465 = cbrt(r15399453);
double r15399466 = r15399452 / r15399459;
double r15399467 = cbrt(r15399466);
double r15399468 = r15399465 * r15399467;
double r15399469 = r15399468 * r15399461;
double r15399470 = cbrt(r15399459);
double r15399471 = r15399469 / r15399470;
double r15399472 = log(r15399471);
double r15399473 = r15399464 + r15399472;
double r15399474 = r15399473 * r15399453;
double r15399475 = exp(r15399474);
double r15399476 = r15399475 / r15399453;
double r15399477 = r15399465 / r15399458;
double r15399478 = sqrt(r15399457);
double r15399479 = cbrt(r15399478);
double r15399480 = r15399477 / r15399479;
double r15399481 = log(r15399480);
double r15399482 = r15399465 * r15399465;
double r15399483 = r15399482 / r15399458;
double r15399484 = r15399483 / r15399479;
double r15399485 = log(r15399484);
double r15399486 = r15399481 + r15399485;
double r15399487 = r15399453 * r15399486;
double r15399488 = exp(r15399487);
double r15399489 = r15399488 / r15399453;
double r15399490 = r15399456 ? r15399476 : r15399489;
double r15399491 = r15399451 ? r15399454 : r15399490;
return r15399491;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.3 |
|---|---|
| Target | 8.5 |
| Herbie | 5.6 |
if y < 2.081714116143433e-21Initial program 4.2
Taylor expanded around inf 0.8
if 2.081714116143433e-21 < y < 2.5159502131974188e+194Initial program 32.4
rmApplied add-cube-cbrt23.8
Applied associate-/r*23.8
rmApplied add-cube-cbrt24.1
Applied cbrt-prod24.0
Applied add-cube-cbrt23.8
Applied times-frac23.7
Applied log-prod21.3
rmApplied div-inv21.4
Applied cbrt-prod21.8
if 2.5159502131974188e+194 < y Initial program 27.5
rmApplied add-cube-cbrt24.5
Applied associate-/r*24.6
rmApplied add-sqr-sqrt28.0
Applied cbrt-prod27.7
Applied add-cube-cbrt28.4
Applied times-frac28.4
Applied times-frac28.3
Applied log-prod11.9
Final simplification5.6
herbie shell --seed 2019165
(FPCore (x y)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, F"
: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))