\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\begin{array}{l}
\mathbf{if}\;y \le -7.665174777463242308531259519255040294958 \cdot 10^{-170}:\\
\;\;\;\;\frac{\frac{x}{z} \cdot \frac{y}{z}}{1 + z}\\
\mathbf{elif}\;y \le 2.402727200575820227351893685764344920999 \cdot 10^{-272}:\\
\;\;\;\;\frac{\frac{x}{\frac{z}{y} \cdot z}}{1 + z}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{1 + z} \cdot \left(\frac{x}{z} \cdot \frac{y}{z}\right)\\
\end{array}double f(double x, double y, double z) {
double r214845 = x;
double r214846 = y;
double r214847 = r214845 * r214846;
double r214848 = z;
double r214849 = r214848 * r214848;
double r214850 = 1.0;
double r214851 = r214848 + r214850;
double r214852 = r214849 * r214851;
double r214853 = r214847 / r214852;
return r214853;
}
double f(double x, double y, double z) {
double r214854 = y;
double r214855 = -7.665174777463242e-170;
bool r214856 = r214854 <= r214855;
double r214857 = x;
double r214858 = z;
double r214859 = r214857 / r214858;
double r214860 = r214854 / r214858;
double r214861 = r214859 * r214860;
double r214862 = 1.0;
double r214863 = r214862 + r214858;
double r214864 = r214861 / r214863;
double r214865 = 2.4027272005758202e-272;
bool r214866 = r214854 <= r214865;
double r214867 = r214858 / r214854;
double r214868 = r214867 * r214858;
double r214869 = r214857 / r214868;
double r214870 = r214869 / r214863;
double r214871 = 1.0;
double r214872 = r214871 / r214863;
double r214873 = r214872 * r214861;
double r214874 = r214866 ? r214870 : r214873;
double r214875 = r214856 ? r214864 : r214874;
return r214875;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.5 |
|---|---|
| Target | 4.0 |
| Herbie | 2.8 |
if y < -7.665174777463242e-170Initial program 15.6
Simplified3.4
rmApplied associate-*r/2.5
Simplified2.5
if -7.665174777463242e-170 < y < 2.4027272005758202e-272Initial program 15.0
Simplified4.4
rmApplied associate-*r/4.4
Simplified4.4
rmApplied *-un-lft-identity4.4
Applied associate-*l*4.4
Simplified4.0
if 2.4027272005758202e-272 < y Initial program 15.5
Simplified2.9
rmApplied associate-*r/2.6
Simplified2.6
rmApplied div-inv2.6
Simplified2.6
Final simplification2.8
herbie shell --seed 2019195
(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.0 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1.0))))