\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\left(\left(\sqrt[3]{\frac{\sqrt[3]{x}}{z}} \cdot \sqrt[3]{\frac{\sqrt[3]{x}}{z}}\right) \cdot \left(\sqrt[3]{\frac{\sqrt[3]{x}}{z}} \cdot \frac{y}{z + 1}\right)\right) \cdot \frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{z}double f(double x, double y, double z) {
double r398891 = x;
double r398892 = y;
double r398893 = r398891 * r398892;
double r398894 = z;
double r398895 = r398894 * r398894;
double r398896 = 1.0;
double r398897 = r398894 + r398896;
double r398898 = r398895 * r398897;
double r398899 = r398893 / r398898;
return r398899;
}
double f(double x, double y, double z) {
double r398900 = x;
double r398901 = cbrt(r398900);
double r398902 = z;
double r398903 = r398901 / r398902;
double r398904 = cbrt(r398903);
double r398905 = r398904 * r398904;
double r398906 = y;
double r398907 = 1.0;
double r398908 = r398902 + r398907;
double r398909 = r398906 / r398908;
double r398910 = r398904 * r398909;
double r398911 = r398905 * r398910;
double r398912 = r398901 * r398901;
double r398913 = r398912 / r398902;
double r398914 = r398911 * r398913;
return r398914;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.7 |
|---|---|
| Target | 4.4 |
| Herbie | 1.5 |
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 *-commutative1.5
Final simplification1.5
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))))