x + \frac{e^{y \cdot \log \left(\frac{y}{z + y}\right)}}{y}x + \frac{e^{y \cdot \left(2 \cdot \log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)\right) + y \cdot \log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)}}{y}double f(double x, double y, double z) {
double r336486 = x;
double r336487 = y;
double r336488 = z;
double r336489 = r336488 + r336487;
double r336490 = r336487 / r336489;
double r336491 = log(r336490);
double r336492 = r336487 * r336491;
double r336493 = exp(r336492);
double r336494 = r336493 / r336487;
double r336495 = r336486 + r336494;
return r336495;
}
double f(double x, double y, double z) {
double r336496 = x;
double r336497 = y;
double r336498 = 2.0;
double r336499 = cbrt(r336497);
double r336500 = z;
double r336501 = r336500 + r336497;
double r336502 = cbrt(r336501);
double r336503 = r336499 / r336502;
double r336504 = log(r336503);
double r336505 = r336498 * r336504;
double r336506 = r336497 * r336505;
double r336507 = r336497 * r336504;
double r336508 = r336506 + r336507;
double r336509 = exp(r336508);
double r336510 = r336509 / r336497;
double r336511 = r336496 + r336510;
return r336511;
}




Bits error versus x




Bits error versus y




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