\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
\left(\left(y - \left(\left(\left(\log \left(\sqrt[3]{y}\right) \cdot y + \log \left(\sqrt[3]{y}\right) \cdot y\right) + \log \left(\sqrt[3]{y}\right) \cdot y\right) + 0.5 \cdot \log y\right)\right) - z\right) + xdouble f(double x, double y, double z) {
double r14235448 = x;
double r14235449 = y;
double r14235450 = 0.5;
double r14235451 = r14235449 + r14235450;
double r14235452 = log(r14235449);
double r14235453 = r14235451 * r14235452;
double r14235454 = r14235448 - r14235453;
double r14235455 = r14235454 + r14235449;
double r14235456 = z;
double r14235457 = r14235455 - r14235456;
return r14235457;
}
double f(double x, double y, double z) {
double r14235458 = y;
double r14235459 = cbrt(r14235458);
double r14235460 = log(r14235459);
double r14235461 = r14235460 * r14235458;
double r14235462 = r14235461 + r14235461;
double r14235463 = r14235462 + r14235461;
double r14235464 = 0.5;
double r14235465 = log(r14235458);
double r14235466 = r14235464 * r14235465;
double r14235467 = r14235463 + r14235466;
double r14235468 = r14235458 - r14235467;
double r14235469 = z;
double r14235470 = r14235468 - r14235469;
double r14235471 = x;
double r14235472 = r14235470 + r14235471;
return r14235472;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
Simplified0.1
Taylor expanded around inf 0.1
Simplified0.1
rmApplied distribute-rgt-in0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.1
Applied distribute-lft-in0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019174 +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))