x + \frac{e^{y \cdot \log \left(\frac{y}{z + y}\right)}}{y}x + \frac{\left({\left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)}^{y} \cdot {\left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)}^{y}\right) \cdot {\left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)}^{y}}{y}double f(double x, double y, double z) {
double r302589 = x;
double r302590 = y;
double r302591 = z;
double r302592 = r302591 + r302590;
double r302593 = r302590 / r302592;
double r302594 = log(r302593);
double r302595 = r302590 * r302594;
double r302596 = exp(r302595);
double r302597 = r302596 / r302590;
double r302598 = r302589 + r302597;
return r302598;
}
double f(double x, double y, double z) {
double r302599 = x;
double r302600 = y;
double r302601 = cbrt(r302600);
double r302602 = z;
double r302603 = r302602 + r302600;
double r302604 = cbrt(r302603);
double r302605 = r302601 / r302604;
double r302606 = pow(r302605, r302600);
double r302607 = r302606 * r302606;
double r302608 = r302607 * r302606;
double r302609 = r302608 / r302600;
double r302610 = r302599 + r302609;
return r302610;
}




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 add-cube-cbrt19.5
Applied add-cube-cbrt6.0
Applied times-frac6.0
Applied unpow-prod-down2.2
rmApplied times-frac2.2
Applied unpow-prod-down1.0
Final simplification1.0
herbie shell --seed 2019325 +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)))