x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
x \cdot 0.5 + \left(\left(\log \left({z}^{\frac{1}{3}}\right) + \left(1 - z\right)\right) + \log \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)\right) \cdot ydouble f(double x, double y, double z) {
double r246383 = x;
double r246384 = 0.5;
double r246385 = r246383 * r246384;
double r246386 = y;
double r246387 = 1.0;
double r246388 = z;
double r246389 = r246387 - r246388;
double r246390 = log(r246388);
double r246391 = r246389 + r246390;
double r246392 = r246386 * r246391;
double r246393 = r246385 + r246392;
return r246393;
}
double f(double x, double y, double z) {
double r246394 = x;
double r246395 = 0.5;
double r246396 = r246394 * r246395;
double r246397 = z;
double r246398 = 0.3333333333333333;
double r246399 = pow(r246397, r246398);
double r246400 = log(r246399);
double r246401 = 1.0;
double r246402 = r246401 - r246397;
double r246403 = r246400 + r246402;
double r246404 = cbrt(r246397);
double r246405 = r246404 * r246404;
double r246406 = log(r246405);
double r246407 = r246403 + r246406;
double r246408 = y;
double r246409 = r246407 * r246408;
double r246410 = r246396 + r246409;
return r246410;
}




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
Simplified0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.1
Applied associate-+l+0.1
Simplified0.1
rmApplied pow1/30.1
Final simplification0.1
herbie shell --seed 2019194
(FPCore (x y z)
:name "System.Random.MWC.Distributions:gamma from mwc-random-0.13.3.2"
:herbie-target
(- (+ y (* 0.5 x)) (* y (- z (log z))))
(+ (* x 0.5) (* y (+ (- 1.0 z) (log z)))))