\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
\left(x - \mathsf{fma}\left(\log y, y + 0.5, -y\right)\right) - zdouble f(double x, double y, double z) {
double r216541 = x;
double r216542 = y;
double r216543 = 0.5;
double r216544 = r216542 + r216543;
double r216545 = log(r216542);
double r216546 = r216544 * r216545;
double r216547 = r216541 - r216546;
double r216548 = r216547 + r216542;
double r216549 = z;
double r216550 = r216548 - r216549;
return r216550;
}
double f(double x, double y, double z) {
double r216551 = x;
double r216552 = y;
double r216553 = log(r216552);
double r216554 = 0.5;
double r216555 = r216552 + r216554;
double r216556 = -r216552;
double r216557 = fma(r216553, r216555, r216556);
double r216558 = r216551 - r216557;
double r216559 = z;
double r216560 = r216558 - r216559;
return r216560;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
rmApplied associate-+l-0.1
Simplified0.1
Final simplification0.1
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))