x + \frac{e^{y \cdot \log \left(\frac{y}{z + y}\right)}}{y}x + \frac{{\left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)}^{y} \cdot {\left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)}^{y}}{\frac{y}{{\left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)}^{y}}}double f(double x, double y, double z) {
double r270889 = x;
double r270890 = y;
double r270891 = z;
double r270892 = r270891 + r270890;
double r270893 = r270890 / r270892;
double r270894 = log(r270893);
double r270895 = r270890 * r270894;
double r270896 = exp(r270895);
double r270897 = r270896 / r270890;
double r270898 = r270889 + r270897;
return r270898;
}
double f(double x, double y, double z) {
double r270899 = x;
double r270900 = y;
double r270901 = cbrt(r270900);
double r270902 = z;
double r270903 = r270902 + r270900;
double r270904 = cbrt(r270903);
double r270905 = r270901 / r270904;
double r270906 = pow(r270905, r270900);
double r270907 = r270906 * r270906;
double r270908 = r270900 / r270906;
double r270909 = r270907 / r270908;
double r270910 = r270899 + r270909;
return r270910;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.3 |
|---|---|
| Target | 1.1 |
| Herbie | 1.1 |
Initial program 6.3
Simplified6.3
rmApplied add-cube-cbrt19.2
Applied add-cube-cbrt6.3
Applied times-frac6.3
Applied unpow-prod-down2.2
Applied associate-/l*2.2
rmApplied times-frac2.2
Applied unpow-prod-down1.1
Final simplification1.1
herbie shell --seed 2019198 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, G"
:herbie-target
(if (< (/ y (+ z y)) 7.1154157597908e-315) (+ x (/ (exp (/ -1.0 z)) y)) (+ x (/ (exp (log (pow (/ y (+ y z)) y))) y)))
(+ x (/ (exp (* y (log (/ y (+ z y))))) y)))