x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
\left(y \cdot \left(\left(1 - z\right) + \log \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)\right) + x \cdot 0.5\right) + \log \left(\sqrt[3]{z}\right) \cdot ydouble f(double x, double y, double z) {
double r331936 = x;
double r331937 = 0.5;
double r331938 = r331936 * r331937;
double r331939 = y;
double r331940 = 1.0;
double r331941 = z;
double r331942 = r331940 - r331941;
double r331943 = log(r331941);
double r331944 = r331942 + r331943;
double r331945 = r331939 * r331944;
double r331946 = r331938 + r331945;
return r331946;
}
double f(double x, double y, double z) {
double r331947 = y;
double r331948 = 1.0;
double r331949 = z;
double r331950 = r331948 - r331949;
double r331951 = cbrt(r331949);
double r331952 = r331951 * r331951;
double r331953 = log(r331952);
double r331954 = r331950 + r331953;
double r331955 = r331947 * r331954;
double r331956 = x;
double r331957 = 0.5;
double r331958 = r331956 * r331957;
double r331959 = r331955 + r331958;
double r331960 = log(r331951);
double r331961 = r331960 * r331947;
double r331962 = r331959 + r331961;
return r331962;
}




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