\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
\left(x - \left(\left(\left(y + 0.5\right) \cdot \log \left(\sqrt[3]{y}\right) - y\right) + \left(y + 0.5\right) \cdot \log \left({y}^{\frac{2}{3}}\right)\right)\right) - zdouble f(double x, double y, double z) {
double r14130539 = x;
double r14130540 = y;
double r14130541 = 0.5;
double r14130542 = r14130540 + r14130541;
double r14130543 = log(r14130540);
double r14130544 = r14130542 * r14130543;
double r14130545 = r14130539 - r14130544;
double r14130546 = r14130545 + r14130540;
double r14130547 = z;
double r14130548 = r14130546 - r14130547;
return r14130548;
}
double f(double x, double y, double z) {
double r14130549 = x;
double r14130550 = y;
double r14130551 = 0.5;
double r14130552 = r14130550 + r14130551;
double r14130553 = cbrt(r14130550);
double r14130554 = log(r14130553);
double r14130555 = r14130552 * r14130554;
double r14130556 = r14130555 - r14130550;
double r14130557 = 0.6666666666666666;
double r14130558 = pow(r14130550, r14130557);
double r14130559 = log(r14130558);
double r14130560 = r14130552 * r14130559;
double r14130561 = r14130556 + r14130560;
double r14130562 = r14130549 - r14130561;
double r14130563 = z;
double r14130564 = r14130562 - r14130563;
return r14130564;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.2 |
Initial program 0.1
rmApplied associate-+l-0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.2
Applied distribute-lft-in0.2
Applied associate--l+0.2
rmApplied pow1/30.1
Applied pow1/30.2
Applied pow-prod-up0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019179 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions:stirlingError from math-functions-0.1.5.2"
:herbie-target
(- (- (+ y x) z) (* (+ y 0.5) (log y)))
(- (+ (- x (* (+ y 0.5) (log y))) y) z))