\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1.0\right)}\frac{\frac{\frac{1}{\frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}}}{\frac{z}{\frac{x}{\frac{\sqrt[3]{z}}{\sqrt[3]{y}}}}}}{z + 1.0}double f(double x, double y, double z) {
double r19009887 = x;
double r19009888 = y;
double r19009889 = r19009887 * r19009888;
double r19009890 = z;
double r19009891 = r19009890 * r19009890;
double r19009892 = 1.0;
double r19009893 = r19009890 + r19009892;
double r19009894 = r19009891 * r19009893;
double r19009895 = r19009889 / r19009894;
return r19009895;
}
double f(double x, double y, double z) {
double r19009896 = 1.0;
double r19009897 = z;
double r19009898 = cbrt(r19009897);
double r19009899 = r19009898 * r19009898;
double r19009900 = y;
double r19009901 = cbrt(r19009900);
double r19009902 = r19009901 * r19009901;
double r19009903 = r19009899 / r19009902;
double r19009904 = r19009896 / r19009903;
double r19009905 = x;
double r19009906 = r19009898 / r19009901;
double r19009907 = r19009905 / r19009906;
double r19009908 = r19009897 / r19009907;
double r19009909 = r19009904 / r19009908;
double r19009910 = 1.0;
double r19009911 = r19009897 + r19009910;
double r19009912 = r19009909 / r19009911;
return r19009912;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.2 |
|---|---|
| Target | 3.9 |
| Herbie | 1.6 |
Initial program 14.2
rmApplied times-frac10.4
rmApplied *-un-lft-identity10.4
Applied times-frac5.5
Applied associate-*l*2.5
rmApplied associate-*r/3.0
Applied associate-*r/3.0
Simplified3.0
rmApplied add-cube-cbrt3.5
Applied add-cube-cbrt3.6
Applied times-frac3.6
Applied *-un-lft-identity3.6
Applied times-frac2.6
Applied associate-/l*1.6
Final simplification1.6
herbie shell --seed 2019164
(FPCore (x y z)
:name "Statistics.Distribution.Beta:$cvariance from math-functions-0.1.5.2"
:herbie-target
(if (< z 249.6182814532307) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1.0))))