\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1.0\right)}\begin{array}{l}
\mathbf{if}\;z \le 4.913726010820968 \cdot 10^{-185}:\\
\;\;\;\;\left(x \cdot \left(\frac{1}{z} \cdot \frac{y}{z + 1.0}\right)\right) \cdot \frac{1}{z}\\
\mathbf{elif}\;z \le 1.0537074098609829 \cdot 10^{+80}:\\
\;\;\;\;\frac{y}{z + 1.0} \cdot \frac{\frac{x}{z}}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{z} \cdot \left(\frac{y}{z + 1.0} \cdot \frac{x}{z}\right)\\
\end{array}double f(double x, double y, double z) {
double r5386773 = x;
double r5386774 = y;
double r5386775 = r5386773 * r5386774;
double r5386776 = z;
double r5386777 = r5386776 * r5386776;
double r5386778 = 1.0;
double r5386779 = r5386776 + r5386778;
double r5386780 = r5386777 * r5386779;
double r5386781 = r5386775 / r5386780;
return r5386781;
}
double f(double x, double y, double z) {
double r5386782 = z;
double r5386783 = 4.913726010820968e-185;
bool r5386784 = r5386782 <= r5386783;
double r5386785 = x;
double r5386786 = 1.0;
double r5386787 = r5386786 / r5386782;
double r5386788 = y;
double r5386789 = 1.0;
double r5386790 = r5386782 + r5386789;
double r5386791 = r5386788 / r5386790;
double r5386792 = r5386787 * r5386791;
double r5386793 = r5386785 * r5386792;
double r5386794 = r5386793 * r5386787;
double r5386795 = 1.0537074098609829e+80;
bool r5386796 = r5386782 <= r5386795;
double r5386797 = r5386785 / r5386782;
double r5386798 = r5386797 / r5386782;
double r5386799 = r5386791 * r5386798;
double r5386800 = r5386791 * r5386797;
double r5386801 = r5386787 * r5386800;
double r5386802 = r5386796 ? r5386799 : r5386801;
double r5386803 = r5386784 ? r5386794 : r5386802;
return r5386803;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 13.9 |
|---|---|
| Target | 3.9 |
| Herbie | 3.3 |
if z < 4.913726010820968e-185Initial program 17.1
rmApplied times-frac13.9
rmApplied *-un-lft-identity13.9
Applied times-frac7.3
Applied associate-*l*2.5
rmApplied div-inv2.6
Applied associate-*l*2.9
if 4.913726010820968e-185 < z < 1.0537074098609829e+80Initial program 9.3
rmApplied times-frac9.5
rmApplied *-un-lft-identity9.5
Applied times-frac7.1
Applied associate-*l*4.9
rmApplied associate-*r*7.1
Simplified7.0
if 1.0537074098609829e+80 < z Initial program 11.1
rmApplied times-frac4.7
rmApplied *-un-lft-identity4.7
Applied times-frac1.5
Applied associate-*l*0.7
rmApplied *-commutative0.7
Final simplification3.3
herbie shell --seed 2019156 +o rules:numerics
(FPCore (x y z)
:name "Statistics.Distribution.Beta:$cvariance from math-functions-0.1.5.2"
:herbie-target
(if (< z 249.6182814532307) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1.0))))