x + \frac{e^{y \cdot \log \left(\frac{y}{z + y}\right)}}{y}x + \frac{e^{y \cdot \left(2 \cdot \log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right) + \log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)\right)}}{y}double f(double x, double y, double z) {
double r333992 = x;
double r333993 = y;
double r333994 = z;
double r333995 = r333994 + r333993;
double r333996 = r333993 / r333995;
double r333997 = log(r333996);
double r333998 = r333993 * r333997;
double r333999 = exp(r333998);
double r334000 = r333999 / r333993;
double r334001 = r333992 + r334000;
return r334001;
}
double f(double x, double y, double z) {
double r334002 = x;
double r334003 = y;
double r334004 = 2.0;
double r334005 = cbrt(r334003);
double r334006 = z;
double r334007 = r334006 + r334003;
double r334008 = cbrt(r334007);
double r334009 = r334005 / r334008;
double r334010 = log(r334009);
double r334011 = r334004 * r334010;
double r334012 = r334011 + r334010;
double r334013 = r334003 * r334012;
double r334014 = exp(r334013);
double r334015 = r334014 / r334003;
double r334016 = r334002 + r334015;
return r334016;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.5 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 5.5
rmApplied add-cube-cbrt17.9
Applied add-cube-cbrt5.5
Applied times-frac5.5
Applied log-prod1.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020024
(FPCore (x y z)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, G"
:precision binary64
:herbie-target
(if (< (/ y (+ z y)) 7.1154157597908e-315) (+ x (/ (exp (/ -1 z)) y)) (+ x (/ (exp (log (pow (/ y (+ y z)) y))) y)))
(+ x (/ (exp (* y (log (/ y (+ z y))))) y)))