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 r191359 = x;
double r191360 = 0.5;
double r191361 = r191359 * r191360;
double r191362 = y;
double r191363 = 1.0;
double r191364 = z;
double r191365 = r191363 - r191364;
double r191366 = log(r191364);
double r191367 = r191365 + r191366;
double r191368 = r191362 * r191367;
double r191369 = r191361 + r191368;
return r191369;
}
double f(double x, double y, double z) {
double r191370 = x;
double r191371 = 0.5;
double r191372 = y;
double r191373 = 1.0;
double r191374 = z;
double r191375 = r191373 - r191374;
double r191376 = log(r191374);
double r191377 = r191375 + r191376;
double r191378 = r191372 * r191377;
double r191379 = fma(r191370, r191371, r191378);
return r191379;
}




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