\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\frac{x}{z} \cdot \frac{\frac{y}{z + 1}}{z}double f(double x, double y, double z) {
double r289867 = x;
double r289868 = y;
double r289869 = r289867 * r289868;
double r289870 = z;
double r289871 = r289870 * r289870;
double r289872 = 1.0;
double r289873 = r289870 + r289872;
double r289874 = r289871 * r289873;
double r289875 = r289869 / r289874;
return r289875;
}
double f(double x, double y, double z) {
double r289876 = x;
double r289877 = z;
double r289878 = r289876 / r289877;
double r289879 = y;
double r289880 = 1.0;
double r289881 = r289877 + r289880;
double r289882 = r289879 / r289881;
double r289883 = r289882 / r289877;
double r289884 = r289878 * r289883;
return r289884;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.1 |
|---|---|
| Target | 4.1 |
| Herbie | 3.3 |
Initial program 15.1
rmApplied times-frac11.3
rmApplied *-un-lft-identity11.3
Applied times-frac6.0
Applied associate-*l*2.6
rmApplied *-un-lft-identity2.6
Applied associate-*l*2.6
Simplified2.6
rmApplied *-un-lft-identity2.6
Applied times-frac3.3
Simplified3.3
Final simplification3.3
herbie shell --seed 2019356 +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))))