\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
x - \mathsf{fma}\left(\log y, y + 0.5, z - y\right)double f(double x, double y, double z) {
double r22427350 = x;
double r22427351 = y;
double r22427352 = 0.5;
double r22427353 = r22427351 + r22427352;
double r22427354 = log(r22427351);
double r22427355 = r22427353 * r22427354;
double r22427356 = r22427350 - r22427355;
double r22427357 = r22427356 + r22427351;
double r22427358 = z;
double r22427359 = r22427357 - r22427358;
return r22427359;
}
double f(double x, double y, double z) {
double r22427360 = x;
double r22427361 = y;
double r22427362 = log(r22427361);
double r22427363 = 0.5;
double r22427364 = r22427361 + r22427363;
double r22427365 = z;
double r22427366 = r22427365 - r22427361;
double r22427367 = fma(r22427362, r22427364, r22427366);
double r22427368 = r22427360 - r22427367;
return r22427368;
}




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 2019169 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions:stirlingError from math-functions-0.1.5.2"
:herbie-target
(- (- (+ y x) z) (* (+ y 0.5) (log y)))
(- (+ (- x (* (+ y 0.5) (log y))) y) z))