x + \frac{e^{y \cdot \log \left(\frac{y}{z + y}\right)}}{y}x + \left({\left(\left|\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right|\right)}^{y} \cdot {\left(\left|\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right|\right)}^{y}\right) \cdot \frac{{\left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)}^{y}}{y}double f(double x, double y, double z) {
double r383368 = x;
double r383369 = y;
double r383370 = z;
double r383371 = r383370 + r383369;
double r383372 = r383369 / r383371;
double r383373 = log(r383372);
double r383374 = r383369 * r383373;
double r383375 = exp(r383374);
double r383376 = r383375 / r383369;
double r383377 = r383368 + r383376;
return r383377;
}
double f(double x, double y, double z) {
double r383378 = x;
double r383379 = y;
double r383380 = cbrt(r383379);
double r383381 = z;
double r383382 = r383381 + r383379;
double r383383 = cbrt(r383382);
double r383384 = r383380 / r383383;
double r383385 = fabs(r383384);
double r383386 = pow(r383385, r383379);
double r383387 = r383386 * r383386;
double r383388 = pow(r383384, r383379);
double r383389 = r383388 / r383379;
double r383390 = r383387 * r383389;
double r383391 = r383378 + r383390;
return r383391;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 1.0 |
| Herbie | 1.0 |
Initial program 6.0
Simplified6.0
rmApplied *-un-lft-identity6.0
Applied add-cube-cbrt19.7
Applied add-cube-cbrt6.0
Applied times-frac6.0
Applied unpow-prod-down2.1
Applied times-frac2.1
Simplified2.1
rmApplied add-sqr-sqrt2.1
Applied unpow-prod-down2.1
Simplified2.1
Simplified1.0
Final simplification1.0
herbie shell --seed 2020046 +o rules:numerics
(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)))