\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -10.11942408653544234198307094629853963852 \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]{\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 r351128 = x;
double r351129 = y;
double r351130 = r351128 + r351129;
double r351131 = r351128 / r351130;
double r351132 = log(r351131);
double r351133 = r351128 * r351132;
double r351134 = exp(r351133);
double r351135 = r351134 / r351128;
return r351135;
}
double f(double x, double y) {
double r351136 = x;
double r351137 = -10.119424086535442;
bool r351138 = r351136 <= r351137;
double r351139 = 0.12040142811151512;
bool r351140 = r351136 <= r351139;
double r351141 = !r351140;
bool r351142 = r351138 || r351141;
double r351143 = y;
double r351144 = -r351143;
double r351145 = exp(r351144);
double r351146 = r351145 / r351136;
double r351147 = 1.0;
double r351148 = r351136 + r351143;
double r351149 = cbrt(r351148);
double r351150 = r351149 * r351149;
double r351151 = r351147 / r351150;
double r351152 = pow(r351151, r351136);
double r351153 = cbrt(r351136);
double r351154 = r351153 * r351153;
double r351155 = cbrt(r351149);
double r351156 = r351155 * r351155;
double r351157 = r351154 / r351156;
double r351158 = pow(r351157, r351136);
double r351159 = r351153 / r351155;
double r351160 = pow(r351159, r351136);
double r351161 = r351158 * r351160;
double r351162 = r351161 / r351136;
double r351163 = r351152 * r351162;
double r351164 = r351142 ? r351146 : r351163;
return r351164;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.2 |
|---|---|
| Target | 8.2 |
| Herbie | 0.1 |
if x < -10.119424086535442 or 0.12040142811151512 < x Initial program 10.9
Simplified10.9
Taylor expanded around inf 0.1
if -10.119424086535442 < 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 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))