x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
\mathsf{fma}\left(x, 0.5, y \cdot \left(\left(1 - z\right) + \log z\right)\right)double f(double x, double y, double z) {
double r277551 = x;
double r277552 = 0.5;
double r277553 = r277551 * r277552;
double r277554 = y;
double r277555 = 1.0;
double r277556 = z;
double r277557 = r277555 - r277556;
double r277558 = log(r277556);
double r277559 = r277557 + r277558;
double r277560 = r277554 * r277559;
double r277561 = r277553 + r277560;
return r277561;
}
double f(double x, double y, double z) {
double r277562 = x;
double r277563 = 0.5;
double r277564 = y;
double r277565 = 1.0;
double r277566 = z;
double r277567 = r277565 - r277566;
double r277568 = log(r277566);
double r277569 = r277567 + r277568;
double r277570 = r277564 * r277569;
double r277571 = fma(r277562, r277563, r277570);
return r277571;
}




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 2020100 +o rules:numerics
(FPCore (x y z)
:name "System.Random.MWC.Distributions:gamma from mwc-random-0.13.3.2"
:precision binary64
:herbie-target
(- (+ y (* 0.5 x)) (* y (- z (log z))))
(+ (* x 0.5) (* y (+ (- 1 z) (log z)))))