\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
x - \left(\mathsf{fma}\left(\log y, y + 0.5, z\right) - y\right)double f(double x, double y, double z) {
double r381449 = x;
double r381450 = y;
double r381451 = 0.5;
double r381452 = r381450 + r381451;
double r381453 = log(r381450);
double r381454 = r381452 * r381453;
double r381455 = r381449 - r381454;
double r381456 = r381455 + r381450;
double r381457 = z;
double r381458 = r381456 - r381457;
return r381458;
}
double f(double x, double y, double z) {
double r381459 = x;
double r381460 = y;
double r381461 = log(r381460);
double r381462 = 0.5;
double r381463 = r381460 + r381462;
double r381464 = z;
double r381465 = fma(r381461, r381463, r381464);
double r381466 = r381465 - r381460;
double r381467 = r381459 - r381466;
return r381467;
}




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
Simplified0.1
Final simplification0.1
herbie shell --seed 2020002 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions:stirlingError from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(- (- (+ y x) z) (* (+ y 0.5) (log y)))
(- (+ (- x (* (+ y 0.5) (log y))) y) z))