\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 r503715 = x;
double r503716 = y;
double r503717 = 0.5;
double r503718 = r503716 + r503717;
double r503719 = log(r503716);
double r503720 = r503718 * r503719;
double r503721 = r503715 - r503720;
double r503722 = r503721 + r503716;
double r503723 = z;
double r503724 = r503722 - r503723;
return r503724;
}
double f(double x, double y, double z) {
double r503725 = x;
double r503726 = y;
double r503727 = log(r503726);
double r503728 = 0.5;
double r503729 = r503726 + r503728;
double r503730 = z;
double r503731 = fma(r503727, r503729, r503730);
double r503732 = r503731 - r503726;
double r503733 = r503725 - r503732;
return r503733;
}




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 2020034 +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))