\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\left(\frac{\sqrt[3]{x}}{z} \cdot \sqrt[3]{x}\right) \cdot \frac{y \cdot {\left(\sqrt[3]{\frac{\sqrt[3]{x}}{z}}\right)}^{3}}{z + 1}double f(double x, double y, double z) {
double r366396 = x;
double r366397 = y;
double r366398 = r366396 * r366397;
double r366399 = z;
double r366400 = r366399 * r366399;
double r366401 = 1.0;
double r366402 = r366399 + r366401;
double r366403 = r366400 * r366402;
double r366404 = r366398 / r366403;
return r366404;
}
double f(double x, double y, double z) {
double r366405 = x;
double r366406 = cbrt(r366405);
double r366407 = z;
double r366408 = r366406 / r366407;
double r366409 = r366408 * r366406;
double r366410 = y;
double r366411 = cbrt(r366408);
double r366412 = 3.0;
double r366413 = pow(r366411, r366412);
double r366414 = r366410 * r366413;
double r366415 = 1.0;
double r366416 = r366407 + r366415;
double r366417 = r366414 / r366416;
double r366418 = r366409 * r366417;
return r366418;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.7 |
|---|---|
| Target | 4.4 |
| Herbie | 1.4 |
Initial program 15.7
rmApplied times-frac11.8
rmApplied add-cube-cbrt12.1
Applied times-frac7.0
Applied associate-*l*1.3
rmApplied add-cube-cbrt1.5
Applied associate-*l*1.5
rmApplied *-un-lft-identity1.5
Applied associate-*l*1.5
Simplified1.4
Final simplification1.4
herbie shell --seed 2020047 +o rules:numerics
(FPCore (x y z)
:name "Statistics.Distribution.Beta:$cvariance from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(if (< z 249.6182814532307) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1))))