x + \frac{e^{y \cdot \log \left(\frac{y}{z + y}\right)}}{y}\frac{e^{y \cdot \left(\log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{y + z}}\right) + \left(\log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{y + z}}\right) + \log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{y + z}}\right)\right)\right)}}{y} + xdouble f(double x, double y, double z) {
double r17239091 = x;
double r17239092 = y;
double r17239093 = z;
double r17239094 = r17239093 + r17239092;
double r17239095 = r17239092 / r17239094;
double r17239096 = log(r17239095);
double r17239097 = r17239092 * r17239096;
double r17239098 = exp(r17239097);
double r17239099 = r17239098 / r17239092;
double r17239100 = r17239091 + r17239099;
return r17239100;
}
double f(double x, double y, double z) {
double r17239101 = y;
double r17239102 = cbrt(r17239101);
double r17239103 = z;
double r17239104 = r17239101 + r17239103;
double r17239105 = cbrt(r17239104);
double r17239106 = r17239102 / r17239105;
double r17239107 = log(r17239106);
double r17239108 = r17239107 + r17239107;
double r17239109 = r17239107 + r17239108;
double r17239110 = r17239101 * r17239109;
double r17239111 = exp(r17239110);
double r17239112 = r17239111 / r17239101;
double r17239113 = x;
double r17239114 = r17239112 + r17239113;
return r17239114;
}




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
rmApplied add-cube-cbrt19.1
Applied add-cube-cbrt6.0
Applied times-frac6.0
Applied log-prod2.0
Simplified1.0
Final simplification1.0
herbie shell --seed 2019172
(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)))