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 r175316 = x;
double r175317 = 0.5;
double r175318 = r175316 * r175317;
double r175319 = y;
double r175320 = 1.0;
double r175321 = z;
double r175322 = r175320 - r175321;
double r175323 = log(r175321);
double r175324 = r175322 + r175323;
double r175325 = r175319 * r175324;
double r175326 = r175318 + r175325;
return r175326;
}
double f(double x, double y, double z) {
double r175327 = x;
double r175328 = 0.5;
double r175329 = r175327 * r175328;
double r175330 = y;
double r175331 = 1.0;
double r175332 = z;
double r175333 = r175331 - r175332;
double r175334 = log(r175332);
double r175335 = r175333 + r175334;
double r175336 = r175330 * r175335;
double r175337 = r175329 + r175336;
return r175337;
}




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