x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
\left(0.5 \cdot x + y \cdot \left(\left(\left(1 - z\right) + \log \left(\sqrt{z}\right)\right) + 2 \cdot \log \left(\sqrt[3]{\sqrt{z}}\right)\right)\right) + \log \left(\sqrt[3]{\sqrt{z}}\right) \cdot ydouble f(double x, double y, double z) {
double r276983 = x;
double r276984 = 0.5;
double r276985 = r276983 * r276984;
double r276986 = y;
double r276987 = 1.0;
double r276988 = z;
double r276989 = r276987 - r276988;
double r276990 = log(r276988);
double r276991 = r276989 + r276990;
double r276992 = r276986 * r276991;
double r276993 = r276985 + r276992;
return r276993;
}
double f(double x, double y, double z) {
double r276994 = 0.5;
double r276995 = x;
double r276996 = r276994 * r276995;
double r276997 = y;
double r276998 = 1.0;
double r276999 = z;
double r277000 = r276998 - r276999;
double r277001 = sqrt(r276999);
double r277002 = log(r277001);
double r277003 = r277000 + r277002;
double r277004 = 2.0;
double r277005 = cbrt(r277001);
double r277006 = log(r277005);
double r277007 = r277004 * r277006;
double r277008 = r277003 + r277007;
double r277009 = r276997 * r277008;
double r277010 = r276996 + r277009;
double r277011 = r277006 * r276997;
double r277012 = r277010 + r277011;
return r277012;
}




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