\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 r299961 = x;
double r299962 = y;
double r299963 = r299961 * r299962;
double r299964 = z;
double r299965 = r299964 * r299964;
double r299966 = 1.0;
double r299967 = r299964 + r299966;
double r299968 = r299965 * r299967;
double r299969 = r299963 / r299968;
return r299969;
}
double f(double x, double y, double z) {
double r299970 = x;
double r299971 = z;
double r299972 = r299970 / r299971;
double r299973 = y;
double r299974 = 1.0;
double r299975 = r299971 + r299974;
double r299976 = r299973 / r299975;
double r299977 = r299972 * r299976;
double r299978 = r299977 / r299971;
return r299978;
}




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 associate-*l/5.7
Applied associate-*r/5.7
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))))