\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;x \le -3.03524274454027484 \cdot 10^{41} \lor \neg \left(x \le 3.97372232556816884\right):\\
\;\;\;\;\frac{1}{x \cdot e^{y}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left({\left(\left|\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right|\right)}^{\left(2 \cdot \frac{x}{2}\right)} \cdot {\left(\left|\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right|\right)}^{\left(2 \cdot \frac{x}{2}\right)}\right) \cdot {\left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}^{x}}{x}\\
\end{array}double f(double x, double y) {
double r2214 = x;
double r2215 = y;
double r2216 = r2214 + r2215;
double r2217 = r2214 / r2216;
double r2218 = log(r2217);
double r2219 = r2214 * r2218;
double r2220 = exp(r2219);
double r2221 = r2220 / r2214;
return r2221;
}
double f(double x, double y) {
double r2222 = x;
double r2223 = -3.035242744540275e+41;
bool r2224 = r2222 <= r2223;
double r2225 = 3.973722325568169;
bool r2226 = r2222 <= r2225;
double r2227 = !r2226;
bool r2228 = r2224 || r2227;
double r2229 = 1.0;
double r2230 = y;
double r2231 = exp(r2230);
double r2232 = r2222 * r2231;
double r2233 = r2229 / r2232;
double r2234 = cbrt(r2222);
double r2235 = r2222 + r2230;
double r2236 = cbrt(r2235);
double r2237 = r2234 / r2236;
double r2238 = fabs(r2237);
double r2239 = 2.0;
double r2240 = r2222 / r2239;
double r2241 = r2239 * r2240;
double r2242 = pow(r2238, r2241);
double r2243 = r2242 * r2242;
double r2244 = pow(r2237, r2222);
double r2245 = r2243 * r2244;
double r2246 = r2245 / r2222;
double r2247 = r2228 ? r2233 : r2246;
return r2247;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.3 |
|---|---|
| Target | 8.4 |
| Herbie | 0.1 |
if x < -3.035242744540275e+41 or 3.973722325568169 < x Initial program 11.2
Simplified11.2
Taylor expanded around inf 0.1
Simplified0.1
rmApplied clear-num0.1
Simplified0.1
if -3.035242744540275e+41 < x < 3.973722325568169Initial program 11.4
Simplified11.4
rmApplied add-cube-cbrt13.5
Applied add-cube-cbrt11.4
Applied times-frac11.4
Applied unpow-prod-down2.2
rmApplied add-sqr-sqrt2.2
Applied unpow-prod-down2.2
Simplified2.2
Simplified0.1
Final simplification0.1
herbie shell --seed 2020025 +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))