x + \frac{e^{y \cdot \log \left(\frac{y}{z + y}\right)}}{y}x + \frac{e^{\left(\left(2 \cdot \log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)\right) \cdot 1\right) \cdot y + y \cdot \log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)}}{y}double f(double x, double y, double z) {
double r386434 = x;
double r386435 = y;
double r386436 = z;
double r386437 = r386436 + r386435;
double r386438 = r386435 / r386437;
double r386439 = log(r386438);
double r386440 = r386435 * r386439;
double r386441 = exp(r386440);
double r386442 = r386441 / r386435;
double r386443 = r386434 + r386442;
return r386443;
}
double f(double x, double y, double z) {
double r386444 = x;
double r386445 = 2.0;
double r386446 = y;
double r386447 = cbrt(r386446);
double r386448 = z;
double r386449 = r386448 + r386446;
double r386450 = cbrt(r386449);
double r386451 = r386447 / r386450;
double r386452 = log(r386451);
double r386453 = r386445 * r386452;
double r386454 = 1.0;
double r386455 = r386453 * r386454;
double r386456 = r386455 * r386446;
double r386457 = r386446 * r386452;
double r386458 = r386456 + r386457;
double r386459 = exp(r386458);
double r386460 = r386459 / r386446;
double r386461 = r386444 + r386460;
return r386461;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.2 |
|---|---|
| Target | 1.1 |
| Herbie | 1.1 |
Initial program 6.2
rmApplied add-cube-cbrt19.7
Applied add-cube-cbrt6.2
Applied times-frac6.2
Applied log-prod2.2
Applied distribute-lft-in2.2
Simplified1.1
Final simplification1.1
herbie shell --seed 2020062 +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)))