x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
double f(double x, double y, double z) {
double r363715 = x;
double r363716 = 0.5;
double r363717 = r363715 * r363716;
double r363718 = y;
double r363719 = 1.0;
double r363720 = z;
double r363721 = r363719 - r363720;
double r363722 = log(r363720);
double r363723 = r363721 + r363722;
double r363724 = r363718 * r363723;
double r363725 = r363717 + r363724;
return r363725;
}
double f(double x, double y, double z) {
double r363726 = x;
double r363727 = 0.5;
double r363728 = r363726 * r363727;
double r363729 = y;
double r363730 = 1.0;
double r363731 = z;
double r363732 = r363730 - r363731;
double r363733 = log(r363731);
double r363734 = r363732 + r363733;
double r363735 = r363729 * r363734;
double r363736 = r363728 + r363735;
return r363736;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
Final simplification0.1
herbie shell --seed 2020065
(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)))))