\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
x - 1 \cdot \left(\mathsf{fma}\left(\log y, y + 0.5, z\right) - y\right)double f(double x, double y, double z) {
double r285471 = x;
double r285472 = y;
double r285473 = 0.5;
double r285474 = r285472 + r285473;
double r285475 = log(r285472);
double r285476 = r285474 * r285475;
double r285477 = r285471 - r285476;
double r285478 = r285477 + r285472;
double r285479 = z;
double r285480 = r285478 - r285479;
return r285480;
}
double f(double x, double y, double z) {
double r285481 = x;
double r285482 = 1.0;
double r285483 = y;
double r285484 = log(r285483);
double r285485 = 0.5;
double r285486 = r285483 + r285485;
double r285487 = z;
double r285488 = fma(r285484, r285486, r285487);
double r285489 = r285488 - r285483;
double r285490 = r285482 * r285489;
double r285491 = r285481 - r285490;
return r285491;
}




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
rmApplied *-un-lft-identity0.1
Final simplification0.1
herbie shell --seed 2020036 +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))