\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\begin{array}{l}
\mathbf{if}\;x \cdot y = -\infty:\\
\;\;\;\;\frac{\frac{x}{z}}{\frac{z + 1}{\frac{y}{z}}}\\
\mathbf{elif}\;x \cdot y \le -7.653303258863243928721603622295786194715 \cdot 10^{-284}:\\
\;\;\;\;\frac{\frac{\frac{x \cdot y}{z}}{z}}{z + 1}\\
\mathbf{elif}\;x \cdot y \le 1.378637074935772518390950338565754852981 \cdot 10^{-313}:\\
\;\;\;\;\frac{\frac{x}{z}}{\frac{z + 1}{\frac{y}{z}}}\\
\mathbf{elif}\;x \cdot y \le 1.343562516935530241649700044866050336514 \cdot 10^{184}:\\
\;\;\;\;\frac{\frac{\frac{x \cdot y}{z}}{z}}{z + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot \frac{\frac{y}{z}}{z}}{z + 1}\\
\end{array}double f(double x, double y, double z) {
double r239730 = x;
double r239731 = y;
double r239732 = r239730 * r239731;
double r239733 = z;
double r239734 = r239733 * r239733;
double r239735 = 1.0;
double r239736 = r239733 + r239735;
double r239737 = r239734 * r239736;
double r239738 = r239732 / r239737;
return r239738;
}
double f(double x, double y, double z) {
double r239739 = x;
double r239740 = y;
double r239741 = r239739 * r239740;
double r239742 = -inf.0;
bool r239743 = r239741 <= r239742;
double r239744 = z;
double r239745 = r239739 / r239744;
double r239746 = 1.0;
double r239747 = r239744 + r239746;
double r239748 = r239740 / r239744;
double r239749 = r239747 / r239748;
double r239750 = r239745 / r239749;
double r239751 = -7.653303258863244e-284;
bool r239752 = r239741 <= r239751;
double r239753 = r239741 / r239744;
double r239754 = r239753 / r239744;
double r239755 = r239754 / r239747;
double r239756 = 1.3786370749358e-313;
bool r239757 = r239741 <= r239756;
double r239758 = 1.3435625169355302e+184;
bool r239759 = r239741 <= r239758;
double r239760 = r239748 / r239744;
double r239761 = r239739 * r239760;
double r239762 = r239761 / r239747;
double r239763 = r239759 ? r239755 : r239762;
double r239764 = r239757 ? r239750 : r239763;
double r239765 = r239752 ? r239755 : r239764;
double r239766 = r239743 ? r239750 : r239765;
return r239766;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.1 |
|---|---|
| Target | 4.0 |
| Herbie | 0.5 |
if (* x y) < -inf.0 or -7.653303258863244e-284 < (* x y) < 1.3786370749358e-313Initial program 32.6
rmApplied associate-/r*32.6
rmApplied times-frac0.8
rmApplied associate-*r/6.6
rmApplied *-un-lft-identity6.6
Applied times-frac0.8
Applied associate-/l*0.3
if -inf.0 < (* x y) < -7.653303258863244e-284 or 1.3786370749358e-313 < (* x y) < 1.3435625169355302e+184Initial program 7.1
rmApplied associate-/r*5.2
rmApplied times-frac3.2
rmApplied associate-*r/1.6
rmApplied *-un-lft-identity1.6
Applied associate-*l*1.6
Simplified0.2
if 1.3435625169355302e+184 < (* x y) Initial program 37.5
rmApplied associate-/r*32.1
rmApplied times-frac2.6
rmApplied div-inv2.7
Applied associate-*l*3.2
Simplified3.2
Final simplification0.5
herbie shell --seed 2019212
(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))))