\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 r310318 = x;
double r310319 = y;
double r310320 = r310318 * r310319;
double r310321 = z;
double r310322 = r310321 * r310321;
double r310323 = 1.0;
double r310324 = r310321 + r310323;
double r310325 = r310322 * r310324;
double r310326 = r310320 / r310325;
return r310326;
}
double f(double x, double y, double z) {
double r310327 = x;
double r310328 = z;
double r310329 = r310327 / r310328;
double r310330 = y;
double r310331 = 1.0;
double r310332 = r310328 + r310331;
double r310333 = r310330 / r310332;
double r310334 = r310329 * r310333;
double r310335 = r310334 / r310328;
return r310335;
}




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 pow12.6
Applied pow12.6
Applied pow-prod-down2.6
Applied pow12.6
Applied pow-prod-down2.6
Simplified2.5
Final simplification2.5
herbie shell --seed 2020001 +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))))