x \cdot 0.5 + y \cdot \left(\left(1.0 - z\right) + \log z\right)
\left(y \cdot \log z + \left(1.0 - z\right) \cdot y\right) + x \cdot 0.5
double f(double x, double y, double z) {
double r16133002 = x;
double r16133003 = 0.5;
double r16133004 = r16133002 * r16133003;
double r16133005 = y;
double r16133006 = 1.0;
double r16133007 = z;
double r16133008 = r16133006 - r16133007;
double r16133009 = log(r16133007);
double r16133010 = r16133008 + r16133009;
double r16133011 = r16133005 * r16133010;
double r16133012 = r16133004 + r16133011;
return r16133012;
}
double f(double x, double y, double z) {
double r16133013 = y;
double r16133014 = z;
double r16133015 = log(r16133014);
double r16133016 = r16133013 * r16133015;
double r16133017 = 1.0;
double r16133018 = r16133017 - r16133014;
double r16133019 = r16133018 * r16133013;
double r16133020 = r16133016 + r16133019;
double r16133021 = x;
double r16133022 = 0.5;
double r16133023 = r16133021 * r16133022;
double r16133024 = r16133020 + r16133023;
return r16133024;
}




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 distribute-rgt-in0.1
Final simplification0.1
herbie shell --seed 2019162
(FPCore (x y z)
:name "System.Random.MWC.Distributions:gamma from mwc-random-0.13.3.2"
:herbie-target
(- (+ y (* 0.5 x)) (* y (- z (log z))))
(+ (* x 0.5) (* y (+ (- 1.0 z) (log z)))))