\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
\left(x + \mathsf{fma}\left(-\left(y + 0.5\right), \log y, y\right)\right) - zdouble f(double x, double y, double z) {
double r328979 = x;
double r328980 = y;
double r328981 = 0.5;
double r328982 = r328980 + r328981;
double r328983 = log(r328980);
double r328984 = r328982 * r328983;
double r328985 = r328979 - r328984;
double r328986 = r328985 + r328980;
double r328987 = z;
double r328988 = r328986 - r328987;
return r328988;
}
double f(double x, double y, double z) {
double r328989 = x;
double r328990 = y;
double r328991 = 0.5;
double r328992 = r328990 + r328991;
double r328993 = -r328992;
double r328994 = log(r328990);
double r328995 = fma(r328993, r328994, r328990);
double r328996 = r328989 + r328995;
double r328997 = z;
double r328998 = r328996 - r328997;
return r328998;
}




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 sub-neg0.1
Applied associate-+l+0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020035 +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))