\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\frac{\frac{\frac{x}{z}}{\frac{z}{y}}}{z + 1}double f(double x, double y, double z) {
double r235663 = x;
double r235664 = y;
double r235665 = r235663 * r235664;
double r235666 = z;
double r235667 = r235666 * r235666;
double r235668 = 1.0;
double r235669 = r235666 + r235668;
double r235670 = r235667 * r235669;
double r235671 = r235665 / r235670;
return r235671;
}
double f(double x, double y, double z) {
double r235672 = x;
double r235673 = z;
double r235674 = r235672 / r235673;
double r235675 = y;
double r235676 = r235673 / r235675;
double r235677 = r235674 / r235676;
double r235678 = 1.0;
double r235679 = r235673 + r235678;
double r235680 = r235677 / r235679;
return r235680;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.8 |
|---|---|
| Target | 4.2 |
| Herbie | 2.6 |
Initial program 14.8
rmApplied times-frac10.9
rmApplied *-un-lft-identity10.9
Applied times-frac5.8
Applied associate-*l*2.6
rmApplied associate-*r/3.2
Applied associate-*r/3.2
Simplified3.1
rmApplied associate-/l*2.6
Final simplification2.6
herbie shell --seed 2019306 +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.618281453230708) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1))))