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 r266415 = x;
double r266416 = 0.5;
double r266417 = r266415 * r266416;
double r266418 = y;
double r266419 = 1.0;
double r266420 = z;
double r266421 = r266419 - r266420;
double r266422 = log(r266420);
double r266423 = r266421 + r266422;
double r266424 = r266418 * r266423;
double r266425 = r266417 + r266424;
return r266425;
}
double f(double x, double y, double z) {
double r266426 = x;
double r266427 = 0.5;
double r266428 = r266426 * r266427;
double r266429 = y;
double r266430 = 1.0;
double r266431 = z;
double r266432 = r266430 - r266431;
double r266433 = log(r266431);
double r266434 = r266432 + r266433;
double r266435 = r266429 * r266434;
double r266436 = r266428 + r266435;
return r266436;
}




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