\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -2.77596381646906558 \cdot 10^{45} \lor \neg \left(x \le 1.48784866468363561 \cdot 10^{-4}\right):\\
\;\;\;\;\frac{e^{-1 \cdot y}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{\left(2 \cdot \left(2 \cdot \log \left(\sqrt[3]{\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}}\right) + \log \left(\sqrt[3]{\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}}\right)\right)\right) \cdot x} \cdot {\left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}^{x}}{x}\\
\end{array}double f(double x, double y) {
double r464398 = x;
double r464399 = y;
double r464400 = r464398 + r464399;
double r464401 = r464398 / r464400;
double r464402 = log(r464401);
double r464403 = r464398 * r464402;
double r464404 = exp(r464403);
double r464405 = r464404 / r464398;
return r464405;
}
double f(double x, double y) {
double r464406 = x;
double r464407 = -2.7759638164690656e+45;
bool r464408 = r464406 <= r464407;
double r464409 = 0.00014878486646836356;
bool r464410 = r464406 <= r464409;
double r464411 = !r464410;
bool r464412 = r464408 || r464411;
double r464413 = -1.0;
double r464414 = y;
double r464415 = r464413 * r464414;
double r464416 = exp(r464415);
double r464417 = r464416 / r464406;
double r464418 = 2.0;
double r464419 = cbrt(r464406);
double r464420 = r464406 + r464414;
double r464421 = cbrt(r464420);
double r464422 = r464419 / r464421;
double r464423 = cbrt(r464422);
double r464424 = log(r464423);
double r464425 = r464418 * r464424;
double r464426 = r464425 + r464424;
double r464427 = r464418 * r464426;
double r464428 = r464427 * r464406;
double r464429 = exp(r464428);
double r464430 = pow(r464422, r464406);
double r464431 = r464429 * r464430;
double r464432 = r464431 / r464406;
double r464433 = r464412 ? r464417 : r464432;
return r464433;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.3 |
|---|---|
| Target | 8.0 |
| Herbie | 0.2 |
if x < -2.7759638164690656e+45 or 0.00014878486646836356 < x Initial program 11.8
Simplified11.8
Taylor expanded around inf 0.2
Simplified0.2
if -2.7759638164690656e+45 < x < 0.00014878486646836356Initial program 10.8
Simplified10.8
rmApplied add-cube-cbrt13.1
Applied add-cube-cbrt10.8
Applied times-frac10.8
Applied unpow-prod-down2.1
rmApplied add-exp-log35.0
Applied add-exp-log35.0
Applied prod-exp35.0
Applied add-exp-log35.0
Applied add-exp-log35.0
Applied prod-exp35.0
Applied div-exp35.0
Applied pow-exp34.1
Simplified0.2
rmApplied add-cube-cbrt0.2
Applied log-prod0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020020 +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))