x \cdot 0.5 + y \cdot \left(\left(1.0 - z\right) + \log z\right)
\left(\log z + \left(1.0 - z\right)\right) \cdot y + x \cdot 0.5
double f(double x, double y, double z) {
double r17319109 = x;
double r17319110 = 0.5;
double r17319111 = r17319109 * r17319110;
double r17319112 = y;
double r17319113 = 1.0;
double r17319114 = z;
double r17319115 = r17319113 - r17319114;
double r17319116 = log(r17319114);
double r17319117 = r17319115 + r17319116;
double r17319118 = r17319112 * r17319117;
double r17319119 = r17319111 + r17319118;
return r17319119;
}
double f(double x, double y, double z) {
double r17319120 = z;
double r17319121 = log(r17319120);
double r17319122 = 1.0;
double r17319123 = r17319122 - r17319120;
double r17319124 = r17319121 + r17319123;
double r17319125 = y;
double r17319126 = r17319124 * r17319125;
double r17319127 = x;
double r17319128 = 0.5;
double r17319129 = r17319127 * r17319128;
double r17319130 = r17319126 + r17319129;
return r17319130;
}




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 2019163
(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)))))