x + \frac{e^{y \cdot \log \left(\frac{y}{z + y}\right)}}{y}x + \frac{\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 {\left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)}^{y}}{y}double f(double x, double y, double z) {
double r442186 = x;
double r442187 = y;
double r442188 = z;
double r442189 = r442188 + r442187;
double r442190 = r442187 / r442189;
double r442191 = log(r442190);
double r442192 = r442187 * r442191;
double r442193 = exp(r442192);
double r442194 = r442193 / r442187;
double r442195 = r442186 + r442194;
return r442195;
}
double f(double x, double y, double z) {
double r442196 = x;
double r442197 = y;
double r442198 = cbrt(r442197);
double r442199 = z;
double r442200 = r442199 + r442197;
double r442201 = cbrt(r442200);
double r442202 = r442198 / r442201;
double r442203 = fabs(r442202);
double r442204 = pow(r442203, r442197);
double r442205 = r442204 * r442204;
double r442206 = pow(r442202, r442197);
double r442207 = r442205 * r442206;
double r442208 = r442207 / r442197;
double r442209 = r442196 + r442208;
return r442209;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.8 |
|---|---|
| Target | 0.9 |
| Herbie | 0.9 |
Initial program 5.8
Simplified5.8
rmApplied add-cube-cbrt19.6
Applied add-cube-cbrt5.8
Applied times-frac5.8
Applied unpow-prod-down1.9
rmApplied add-sqr-sqrt1.9
Applied unpow-prod-down1.9
Simplified1.9
Simplified0.9
Final simplification0.9
herbie shell --seed 2020047 +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)))