\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\begin{array}{l}
\mathbf{if}\;y \le -2.008657820930775364619461458065368021473 \cdot 10^{-70}:\\
\;\;\;\;\frac{y}{1 + z} \cdot \frac{\frac{x}{z}}{z}\\
\mathbf{elif}\;y \le 5.191568567623518734884755687671880461994 \cdot 10^{158}:\\
\;\;\;\;\frac{\left(\sqrt[3]{x} \cdot \left(\frac{y}{z} \cdot \sqrt[3]{x}\right)\right) \cdot \frac{\sqrt[3]{x}}{z}}{1 + z}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \frac{\frac{x}{z} \cdot \sqrt[3]{y}}{z}}{1 + z}\\
\end{array}double f(double x, double y, double z) {
double r200160 = x;
double r200161 = y;
double r200162 = r200160 * r200161;
double r200163 = z;
double r200164 = r200163 * r200163;
double r200165 = 1.0;
double r200166 = r200163 + r200165;
double r200167 = r200164 * r200166;
double r200168 = r200162 / r200167;
return r200168;
}
double f(double x, double y, double z) {
double r200169 = y;
double r200170 = -2.0086578209307754e-70;
bool r200171 = r200169 <= r200170;
double r200172 = 1.0;
double r200173 = z;
double r200174 = r200172 + r200173;
double r200175 = r200169 / r200174;
double r200176 = x;
double r200177 = r200176 / r200173;
double r200178 = r200177 / r200173;
double r200179 = r200175 * r200178;
double r200180 = 5.191568567623519e+158;
bool r200181 = r200169 <= r200180;
double r200182 = cbrt(r200176);
double r200183 = r200169 / r200173;
double r200184 = r200183 * r200182;
double r200185 = r200182 * r200184;
double r200186 = r200182 / r200173;
double r200187 = r200185 * r200186;
double r200188 = r200187 / r200174;
double r200189 = cbrt(r200169);
double r200190 = r200189 * r200189;
double r200191 = r200177 * r200189;
double r200192 = r200191 / r200173;
double r200193 = r200190 * r200192;
double r200194 = r200193 / r200174;
double r200195 = r200181 ? r200188 : r200194;
double r200196 = r200171 ? r200179 : r200195;
return r200196;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.2 |
|---|---|
| Target | 4.1 |
| Herbie | 1.9 |
if y < -2.0086578209307754e-70Initial program 16.7
rmApplied times-frac8.3
Simplified2.3
Simplified2.3
if -2.0086578209307754e-70 < y < 5.191568567623519e+158Initial program 13.0
rmApplied associate-/r*11.7
Simplified2.3
rmApplied *-un-lft-identity2.3
Applied add-cube-cbrt2.8
Applied times-frac2.8
Applied associate-*r*1.3
Simplified1.3
if 5.191568567623519e+158 < y Initial program 26.1
rmApplied associate-/r*22.0
Simplified6.7
rmApplied *-un-lft-identity6.7
Applied add-cube-cbrt7.2
Applied times-frac7.2
Applied associate-*l*3.9
Simplified3.9
Final simplification1.9
herbie shell --seed 2019174 +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.0 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1.0))))