\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1.0\right)}\begin{array}{l}
\mathbf{if}\;z \le 1.687008558896401 \cdot 10^{-106}:\\
\;\;\;\;\frac{\frac{\frac{x}{z}}{\frac{\sqrt[3]{z}}{\sqrt[3]{y}} \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{y}}} \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{z}}}{1.0 + z}\\
\mathbf{elif}\;z \le 1.0635760468403562 \cdot 10^{+63}:\\
\;\;\;\;\frac{\frac{\frac{x \cdot y}{z}}{z}}{1.0 + z}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{1.0 + z}{\frac{y}{z} \cdot \frac{x}{z}}}\\
\end{array}double f(double x, double y, double z) {
double r12244785 = x;
double r12244786 = y;
double r12244787 = r12244785 * r12244786;
double r12244788 = z;
double r12244789 = r12244788 * r12244788;
double r12244790 = 1.0;
double r12244791 = r12244788 + r12244790;
double r12244792 = r12244789 * r12244791;
double r12244793 = r12244787 / r12244792;
return r12244793;
}
double f(double x, double y, double z) {
double r12244794 = z;
double r12244795 = 1.687008558896401e-106;
bool r12244796 = r12244794 <= r12244795;
double r12244797 = x;
double r12244798 = r12244797 / r12244794;
double r12244799 = cbrt(r12244794);
double r12244800 = y;
double r12244801 = cbrt(r12244800);
double r12244802 = r12244799 / r12244801;
double r12244803 = r12244802 * r12244802;
double r12244804 = r12244798 / r12244803;
double r12244805 = r12244801 / r12244799;
double r12244806 = r12244804 * r12244805;
double r12244807 = 1.0;
double r12244808 = r12244807 + r12244794;
double r12244809 = r12244806 / r12244808;
double r12244810 = 1.0635760468403562e+63;
bool r12244811 = r12244794 <= r12244810;
double r12244812 = r12244797 * r12244800;
double r12244813 = r12244812 / r12244794;
double r12244814 = r12244813 / r12244794;
double r12244815 = r12244814 / r12244808;
double r12244816 = 1.0;
double r12244817 = r12244800 / r12244794;
double r12244818 = r12244817 * r12244798;
double r12244819 = r12244808 / r12244818;
double r12244820 = r12244816 / r12244819;
double r12244821 = r12244811 ? r12244815 : r12244820;
double r12244822 = r12244796 ? r12244809 : r12244821;
return r12244822;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.2 |
|---|---|
| Target | 3.9 |
| Herbie | 2.7 |
if z < 1.687008558896401e-106Initial program 17.5
rmApplied associate-/r*15.9
rmApplied times-frac3.1
rmApplied add-cube-cbrt3.7
Applied add-cube-cbrt3.8
Applied times-frac3.8
Applied associate-*r*2.7
Simplified2.7
if 1.687008558896401e-106 < z < 1.0635760468403562e+63Initial program 5.1
rmApplied associate-/r*5.1
rmApplied associate-/r*5.2
if 1.0635760468403562e+63 < z Initial program 12.1
rmApplied associate-/r*8.6
rmApplied times-frac0.9
rmApplied clear-num1.2
Final simplification2.7
herbie shell --seed 2019158 +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))))