\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\left(\frac{y}{z + 1} \cdot \frac{x}{z}\right) \cdot \frac{1}{z}double f(double x, double y, double z) {
double r273873 = x;
double r273874 = y;
double r273875 = r273873 * r273874;
double r273876 = z;
double r273877 = r273876 * r273876;
double r273878 = 1.0;
double r273879 = r273876 + r273878;
double r273880 = r273877 * r273879;
double r273881 = r273875 / r273880;
return r273881;
}
double f(double x, double y, double z) {
double r273882 = y;
double r273883 = z;
double r273884 = 1.0;
double r273885 = r273883 + r273884;
double r273886 = r273882 / r273885;
double r273887 = x;
double r273888 = r273887 / r273883;
double r273889 = r273886 * r273888;
double r273890 = 1.0;
double r273891 = r273890 / r273883;
double r273892 = r273889 * r273891;
return r273892;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.6 |
|---|---|
| Target | 4.2 |
| Herbie | 2.6 |
Initial program 15.6
rmApplied times-frac11.4
rmApplied *-un-lft-identity11.4
Applied times-frac6.1
Applied associate-*l*2.6
rmApplied div-inv2.6
rmApplied pow12.6
Applied pow12.6
Applied pow-prod-down2.6
Simplified2.6
Final simplification2.6
herbie shell --seed 2019354 +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))))