x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
x \cdot 0.5 + \left(y \cdot \left(\left(1 - z\right) + \log \left(\sqrt{z}\right)\right) + y \cdot \log \left(\sqrt{z}\right)\right)double f(double x, double y, double z) {
double r321372 = x;
double r321373 = 0.5;
double r321374 = r321372 * r321373;
double r321375 = y;
double r321376 = 1.0;
double r321377 = z;
double r321378 = r321376 - r321377;
double r321379 = log(r321377);
double r321380 = r321378 + r321379;
double r321381 = r321375 * r321380;
double r321382 = r321374 + r321381;
return r321382;
}
double f(double x, double y, double z) {
double r321383 = x;
double r321384 = 0.5;
double r321385 = r321383 * r321384;
double r321386 = y;
double r321387 = 1.0;
double r321388 = z;
double r321389 = r321387 - r321388;
double r321390 = sqrt(r321388);
double r321391 = log(r321390);
double r321392 = r321389 + r321391;
double r321393 = r321386 * r321392;
double r321394 = r321386 * r321391;
double r321395 = r321393 + r321394;
double r321396 = r321385 + r321395;
return r321396;
}




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-lft-in0.1
rmApplied add-sqr-sqrt0.1
Applied log-prod0.1
Applied distribute-lft-in0.1
Applied associate-+r+0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020036
(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)))))