\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\frac{\frac{x}{z} \cdot \frac{y}{z + 1}}{z}double f(double x, double y, double z) {
double r349741 = x;
double r349742 = y;
double r349743 = r349741 * r349742;
double r349744 = z;
double r349745 = r349744 * r349744;
double r349746 = 1.0;
double r349747 = r349744 + r349746;
double r349748 = r349745 * r349747;
double r349749 = r349743 / r349748;
return r349749;
}
double f(double x, double y, double z) {
double r349750 = x;
double r349751 = z;
double r349752 = r349750 / r349751;
double r349753 = y;
double r349754 = 1.0;
double r349755 = r349751 + r349754;
double r349756 = r349753 / r349755;
double r349757 = r349752 * r349756;
double r349758 = r349757 / r349751;
return r349758;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.3 |
|---|---|
| Target | 4.1 |
| Herbie | 2.5 |
Initial program 15.3
rmApplied times-frac11.0
rmApplied *-un-lft-identity11.0
Applied times-frac5.8
Applied associate-*l*2.6
rmApplied *-un-lft-identity2.6
Applied associate-*l*2.6
Simplified2.5
Final simplification2.5
herbie shell --seed 2020001
(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))))