x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
y \cdot \left(\left(1 - z\right) + \log z\right) + x \cdot 0.5
double f(double x, double y, double z) {
double r304775 = x;
double r304776 = 0.5;
double r304777 = r304775 * r304776;
double r304778 = y;
double r304779 = 1.0;
double r304780 = z;
double r304781 = r304779 - r304780;
double r304782 = log(r304780);
double r304783 = r304781 + r304782;
double r304784 = r304778 * r304783;
double r304785 = r304777 + r304784;
return r304785;
}
double f(double x, double y, double z) {
double r304786 = y;
double r304787 = 1.0;
double r304788 = z;
double r304789 = r304787 - r304788;
double r304790 = log(r304788);
double r304791 = r304789 + r304790;
double r304792 = r304786 * r304791;
double r304793 = x;
double r304794 = 0.5;
double r304795 = r304793 * r304794;
double r304796 = r304792 + r304795;
return r304796;
}




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
rmApplied +-commutative0.1
Final simplification0.1
herbie shell --seed 2020083
(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)))))