\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\left(\frac{x}{z} \cdot \left(\frac{1}{\sqrt[3]{z + 1} \cdot \sqrt[3]{z + 1}} \cdot \frac{y}{\sqrt[3]{z + 1}}\right)\right) \cdot \frac{1}{z}double f(double x, double y, double z) {
double r258767 = x;
double r258768 = y;
double r258769 = r258767 * r258768;
double r258770 = z;
double r258771 = r258770 * r258770;
double r258772 = 1.0;
double r258773 = r258770 + r258772;
double r258774 = r258771 * r258773;
double r258775 = r258769 / r258774;
return r258775;
}
double f(double x, double y, double z) {
double r258776 = x;
double r258777 = z;
double r258778 = r258776 / r258777;
double r258779 = 1.0;
double r258780 = 1.0;
double r258781 = r258777 + r258780;
double r258782 = cbrt(r258781);
double r258783 = r258782 * r258782;
double r258784 = r258779 / r258783;
double r258785 = y;
double r258786 = r258785 / r258782;
double r258787 = r258784 * r258786;
double r258788 = r258778 * r258787;
double r258789 = r258779 / r258777;
double r258790 = r258788 * r258789;
return r258790;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.8 |
|---|---|
| Target | 4.1 |
| Herbie | 2.7 |
Initial program 14.8
rmApplied times-frac10.9
Simplified10.9
rmApplied sqr-pow10.9
Applied *-un-lft-identity10.9
Applied times-frac6.1
Applied associate-*l*2.5
Simplified2.5
rmApplied add-cube-cbrt2.7
Applied *-un-lft-identity2.7
Applied times-frac2.7
Final simplification2.7
herbie shell --seed 2019209 +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.618281453230708) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1))))