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 r203747 = x;
double r203748 = 0.5;
double r203749 = r203747 * r203748;
double r203750 = y;
double r203751 = 1.0;
double r203752 = z;
double r203753 = r203751 - r203752;
double r203754 = log(r203752);
double r203755 = r203753 + r203754;
double r203756 = r203750 * r203755;
double r203757 = r203749 + r203756;
return r203757;
}
double f(double x, double y, double z) {
double r203758 = x;
double r203759 = 0.5;
double r203760 = y;
double r203761 = 1.0;
double r203762 = z;
double r203763 = r203761 - r203762;
double r203764 = log(r203762);
double r203765 = r203763 + r203764;
double r203766 = r203760 * r203765;
double r203767 = fma(r203758, r203759, r203766);
return r203767;
}




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