\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 r352021 = x;
double r352022 = y;
double r352023 = 0.5;
double r352024 = r352022 + r352023;
double r352025 = log(r352022);
double r352026 = r352024 * r352025;
double r352027 = r352021 - r352026;
double r352028 = r352027 + r352022;
double r352029 = z;
double r352030 = r352028 - r352029;
return r352030;
}
double f(double x, double y, double z) {
double r352031 = x;
double r352032 = y;
double r352033 = log(r352032);
double r352034 = 0.5;
double r352035 = r352032 + r352034;
double r352036 = z;
double r352037 = fma(r352033, r352035, r352036);
double r352038 = r352037 - r352032;
double r352039 = r352031 - r352038;
return r352039;
}




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