\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;y \le 30175644937213604838506496:\\
\;\;\;\;\frac{e^{x \cdot \left(2 \cdot \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right) + \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)\right)}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{x \cdot \left(2 \cdot \log \left(\frac{\sqrt[3]{x}}{\left(\sqrt[3]{\sqrt[3]{x + y}} \cdot \sqrt[3]{\sqrt[3]{x + y}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{\sqrt[3]{x + y} \cdot \sqrt[3]{x + y}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt[3]{x + y}}}\right)}\right) + \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)\right)}}{x}\\
\end{array}double f(double x, double y) {
double r412561 = x;
double r412562 = y;
double r412563 = r412561 + r412562;
double r412564 = r412561 / r412563;
double r412565 = log(r412564);
double r412566 = r412561 * r412565;
double r412567 = exp(r412566);
double r412568 = r412567 / r412561;
return r412568;
}
double f(double x, double y) {
double r412569 = y;
double r412570 = 3.0175644937213605e+25;
bool r412571 = r412569 <= r412570;
double r412572 = x;
double r412573 = 2.0;
double r412574 = cbrt(r412572);
double r412575 = r412572 + r412569;
double r412576 = cbrt(r412575);
double r412577 = r412574 / r412576;
double r412578 = log(r412577);
double r412579 = r412573 * r412578;
double r412580 = r412579 + r412578;
double r412581 = r412572 * r412580;
double r412582 = exp(r412581);
double r412583 = r412582 / r412572;
double r412584 = cbrt(r412576);
double r412585 = r412584 * r412584;
double r412586 = r412576 * r412576;
double r412587 = cbrt(r412586);
double r412588 = cbrt(r412587);
double r412589 = cbrt(r412584);
double r412590 = r412588 * r412589;
double r412591 = r412585 * r412590;
double r412592 = r412574 / r412591;
double r412593 = log(r412592);
double r412594 = r412573 * r412593;
double r412595 = r412594 + r412578;
double r412596 = r412572 * r412595;
double r412597 = exp(r412596);
double r412598 = r412597 / r412572;
double r412599 = r412571 ? r412583 : r412598;
return r412599;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.0 |
|---|---|
| Target | 8.2 |
| Herbie | 4.1 |
if y < 3.0175644937213605e+25Initial program 5.2
rmApplied add-cube-cbrt29.1
Applied add-cube-cbrt5.2
Applied times-frac5.2
Applied log-prod2.4
Simplified1.7
if 3.0175644937213605e+25 < y Initial program 31.8
rmApplied add-cube-cbrt24.0
Applied add-cube-cbrt31.9
Applied times-frac31.9
Applied log-prod22.5
Simplified19.6
rmApplied add-cube-cbrt12.4
rmApplied add-cube-cbrt12.4
Applied cbrt-prod12.4
Applied cbrt-prod12.5
Final simplification4.1
herbie shell --seed 2019353
(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))