x + \frac{e^{y \cdot \log \left(\frac{y}{z + y}\right)}}{y}x + \frac{e^{\left(2 \cdot \log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)\right) \cdot y + \log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right) \cdot y}}{y}double f(double x, double y, double z) {
double r304525 = x;
double r304526 = y;
double r304527 = z;
double r304528 = r304527 + r304526;
double r304529 = r304526 / r304528;
double r304530 = log(r304529);
double r304531 = r304526 * r304530;
double r304532 = exp(r304531);
double r304533 = r304532 / r304526;
double r304534 = r304525 + r304533;
return r304534;
}
double f(double x, double y, double z) {
double r304535 = x;
double r304536 = 2.0;
double r304537 = y;
double r304538 = cbrt(r304537);
double r304539 = z;
double r304540 = r304539 + r304537;
double r304541 = cbrt(r304540);
double r304542 = r304538 / r304541;
double r304543 = log(r304542);
double r304544 = r304536 * r304543;
double r304545 = r304544 * r304537;
double r304546 = r304543 * r304537;
double r304547 = r304545 + r304546;
double r304548 = exp(r304547);
double r304549 = r304548 / r304537;
double r304550 = r304535 + r304549;
return r304550;
}




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.5
Applied add-cube-cbrt6.0
Applied times-frac6.0
Applied log-prod2.2
Applied distribute-lft-in2.2
Simplified1.0
Simplified1.0
Final simplification1.0
herbie shell --seed 2019325
(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)))