\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\frac{\frac{x}{z} \cdot \left(1 \cdot \frac{y}{z + 1}\right)}{z}double f(double x, double y, double z) {
double r286727 = x;
double r286728 = y;
double r286729 = r286727 * r286728;
double r286730 = z;
double r286731 = r286730 * r286730;
double r286732 = 1.0;
double r286733 = r286730 + r286732;
double r286734 = r286731 * r286733;
double r286735 = r286729 / r286734;
return r286735;
}
double f(double x, double y, double z) {
double r286736 = x;
double r286737 = z;
double r286738 = r286736 / r286737;
double r286739 = 1.0;
double r286740 = y;
double r286741 = 1.0;
double r286742 = r286737 + r286741;
double r286743 = r286740 / r286742;
double r286744 = r286739 * r286743;
double r286745 = r286738 * r286744;
double r286746 = r286745 / r286737;
return r286746;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.1 |
|---|---|
| Target | 4.1 |
| Herbie | 2.4 |
Initial program 15.1
rmApplied times-frac11.3
rmApplied *-un-lft-identity11.3
Applied times-frac5.8
Applied associate-*l*2.5
rmApplied pow12.5
Applied pow12.5
Applied pow-prod-down2.5
Applied pow12.5
Applied pow-prod-down2.5
Simplified2.4
rmApplied *-un-lft-identity2.4
Applied *-un-lft-identity2.4
Applied times-frac2.4
Simplified2.4
Final simplification2.4
herbie shell --seed 2019353 +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))))