\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1.0\right)}\begin{array}{l}
\mathbf{if}\;x \cdot y \le -3.213989145072931 \cdot 10^{+290}:\\
\;\;\;\;\left(\frac{1}{z + 1.0} \cdot y\right) \cdot \frac{\frac{x}{z}}{z}\\
\mathbf{elif}\;x \cdot y \le -3.5735687420491384 \cdot 10^{-183}:\\
\;\;\;\;\frac{\frac{\frac{x \cdot y}{z + 1.0}}{z}}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{z} \cdot \frac{\frac{y}{z + 1.0}}{z}\\
\end{array}double f(double x, double y, double z) {
double r16313671 = x;
double r16313672 = y;
double r16313673 = r16313671 * r16313672;
double r16313674 = z;
double r16313675 = r16313674 * r16313674;
double r16313676 = 1.0;
double r16313677 = r16313674 + r16313676;
double r16313678 = r16313675 * r16313677;
double r16313679 = r16313673 / r16313678;
return r16313679;
}
double f(double x, double y, double z) {
double r16313680 = x;
double r16313681 = y;
double r16313682 = r16313680 * r16313681;
double r16313683 = -3.213989145072931e+290;
bool r16313684 = r16313682 <= r16313683;
double r16313685 = 1.0;
double r16313686 = z;
double r16313687 = 1.0;
double r16313688 = r16313686 + r16313687;
double r16313689 = r16313685 / r16313688;
double r16313690 = r16313689 * r16313681;
double r16313691 = r16313680 / r16313686;
double r16313692 = r16313691 / r16313686;
double r16313693 = r16313690 * r16313692;
double r16313694 = -3.5735687420491384e-183;
bool r16313695 = r16313682 <= r16313694;
double r16313696 = r16313682 / r16313688;
double r16313697 = r16313696 / r16313686;
double r16313698 = r16313697 / r16313686;
double r16313699 = r16313681 / r16313688;
double r16313700 = r16313699 / r16313686;
double r16313701 = r16313691 * r16313700;
double r16313702 = r16313695 ? r16313698 : r16313701;
double r16313703 = r16313684 ? r16313693 : r16313702;
return r16313703;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.5 |
|---|---|
| Target | 3.9 |
| Herbie | 1.6 |
if (* x y) < -3.213989145072931e+290Initial program 56.0
rmApplied times-frac18.1
rmApplied associate-/r*0.8
rmApplied div-inv0.9
if -3.213989145072931e+290 < (* x y) < -3.5735687420491384e-183Initial program 6.3
rmApplied times-frac8.0
rmApplied *-un-lft-identity8.0
Applied times-frac6.5
Applied associate-*l*2.3
rmApplied associate-*l/0.7
Applied associate-*r/0.7
Simplified0.2
if -3.5735687420491384e-183 < (* x y) Initial program 15.5
rmApplied times-frac11.9
rmApplied associate-/r*5.9
rmApplied div-inv5.9
Applied associate-*l*2.3
Simplified2.3
Final simplification1.6
herbie shell --seed 2019162
(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))))