\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}\begin{array}{l}
\mathbf{if}\;y \le 6.2479584586387001 \cdot 10^{-38}:\\
\;\;\;\;\frac{e^{x \cdot \left(2 \cdot \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)\right) + x \cdot \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{x \cdot \left(2 \cdot \log \left(\frac{\sqrt[3]{\sqrt[3]{x} \cdot \sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}}{\sqrt[3]{x + y}}\right)\right) + x \cdot \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{x + y}}\right)}}{x}\\
\end{array}double f(double x, double y) {
double r357034 = x;
double r357035 = y;
double r357036 = r357034 + r357035;
double r357037 = r357034 / r357036;
double r357038 = log(r357037);
double r357039 = r357034 * r357038;
double r357040 = exp(r357039);
double r357041 = r357040 / r357034;
return r357041;
}
double f(double x, double y) {
double r357042 = y;
double r357043 = 6.2479584586387e-38;
bool r357044 = r357042 <= r357043;
double r357045 = x;
double r357046 = 2.0;
double r357047 = cbrt(r357045);
double r357048 = r357045 + r357042;
double r357049 = cbrt(r357048);
double r357050 = r357047 / r357049;
double r357051 = log(r357050);
double r357052 = r357046 * r357051;
double r357053 = r357045 * r357052;
double r357054 = r357045 * r357051;
double r357055 = r357053 + r357054;
double r357056 = exp(r357055);
double r357057 = r357056 / r357045;
double r357058 = r357047 * r357047;
double r357059 = cbrt(r357058);
double r357060 = cbrt(r357047);
double r357061 = r357059 * r357060;
double r357062 = r357061 / r357049;
double r357063 = log(r357062);
double r357064 = r357046 * r357063;
double r357065 = r357045 * r357064;
double r357066 = r357065 + r357054;
double r357067 = exp(r357066);
double r357068 = r357067 / r357045;
double r357069 = r357044 ? r357057 : r357068;
return r357069;
}




Bits error versus x




Bits error versus y
Results
| Original | 11.0 |
|---|---|
| Target | 8.3 |
| Herbie | 4.7 |
if y < 6.2479584586387e-38Initial program 4.1
rmApplied add-cube-cbrt27.3
Applied add-cube-cbrt4.1
Applied times-frac4.1
Applied log-prod1.2
Applied distribute-lft-in1.2
Simplified0.5
if 6.2479584586387e-38 < y Initial program 28.5
rmApplied add-cube-cbrt24.9
Applied add-cube-cbrt28.5
Applied times-frac28.5
Applied log-prod20.6
Applied distribute-lft-in20.7
Simplified18.8
rmApplied add-cube-cbrt17.3
Applied cbrt-prod15.6
Final simplification4.7
herbie shell --seed 2020056
(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))