\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\frac{\sqrt[3]{x}}{\frac{z}{\sqrt[3]{1} \cdot \left(\sqrt[3]{x} \cdot \frac{y}{z + 1}\right)}} \cdot \frac{\sqrt[3]{x}}{{\left(\sqrt[3]{z}\right)}^{3}}double f(double x, double y, double z) {
double r285877 = x;
double r285878 = y;
double r285879 = r285877 * r285878;
double r285880 = z;
double r285881 = r285880 * r285880;
double r285882 = 1.0;
double r285883 = r285880 + r285882;
double r285884 = r285881 * r285883;
double r285885 = r285879 / r285884;
return r285885;
}
double f(double x, double y, double z) {
double r285886 = x;
double r285887 = cbrt(r285886);
double r285888 = z;
double r285889 = 1.0;
double r285890 = cbrt(r285889);
double r285891 = y;
double r285892 = 1.0;
double r285893 = r285888 + r285892;
double r285894 = r285891 / r285893;
double r285895 = r285887 * r285894;
double r285896 = r285890 * r285895;
double r285897 = r285888 / r285896;
double r285898 = r285887 / r285897;
double r285899 = cbrt(r285888);
double r285900 = 3.0;
double r285901 = pow(r285899, r285900);
double r285902 = r285887 / r285901;
double r285903 = r285898 * r285902;
return r285903;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.8 |
|---|---|
| Target | 4.1 |
| Herbie | 2.3 |
Initial program 14.8
rmApplied times-frac10.9
rmApplied add-cube-cbrt11.3
Applied times-frac6.4
Applied associate-*l*1.3
rmApplied add-cube-cbrt1.5
Applied *-un-lft-identity1.5
Applied cbrt-prod1.5
Applied times-frac1.5
Applied associate-*l*1.6
Final simplification2.3
herbie shell --seed 1978988140
(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))))