\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\begin{array}{l}
\mathbf{if}\;x \le -4.866719630833749754680862212046528178418 \cdot 10^{-200}:\\
\;\;\;\;\frac{1}{z} \cdot \left(\frac{x}{z} \cdot \left(\frac{\frac{1}{\sqrt[3]{z + 1}}}{\sqrt[3]{z + 1}} \cdot \frac{y}{\sqrt[3]{z + 1}}\right)\right)\\
\mathbf{elif}\;x \le 1.613947613481181922181386382488618302971 \cdot 10^{-188}:\\
\;\;\;\;\frac{\frac{x}{z}}{z} \cdot \frac{y}{z + 1}\\
\mathbf{elif}\;x \le 8.146317473810848493984639309229108513334 \cdot 10^{202}:\\
\;\;\;\;\frac{1}{z} \cdot \left(\frac{x}{z} \cdot \left(\frac{\frac{1}{\sqrt[3]{z + 1}}}{\sqrt[3]{z + 1}} \cdot \frac{y}{\sqrt[3]{z + 1}}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{z} \cdot \left(\frac{1}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \left(\frac{\frac{y}{\sqrt[3]{z + 1} \cdot \sqrt[3]{z + 1}}}{\sqrt[3]{z + 1}} \cdot \frac{x}{\sqrt[3]{z}}\right)\right)\\
\end{array}double f(double x, double y, double z) {
double r199039 = x;
double r199040 = y;
double r199041 = r199039 * r199040;
double r199042 = z;
double r199043 = r199042 * r199042;
double r199044 = 1.0;
double r199045 = r199042 + r199044;
double r199046 = r199043 * r199045;
double r199047 = r199041 / r199046;
return r199047;
}
double f(double x, double y, double z) {
double r199048 = x;
double r199049 = -4.86671963083375e-200;
bool r199050 = r199048 <= r199049;
double r199051 = 1.0;
double r199052 = z;
double r199053 = r199051 / r199052;
double r199054 = r199048 / r199052;
double r199055 = 1.0;
double r199056 = r199052 + r199055;
double r199057 = cbrt(r199056);
double r199058 = r199051 / r199057;
double r199059 = r199058 / r199057;
double r199060 = y;
double r199061 = r199060 / r199057;
double r199062 = r199059 * r199061;
double r199063 = r199054 * r199062;
double r199064 = r199053 * r199063;
double r199065 = 1.613947613481182e-188;
bool r199066 = r199048 <= r199065;
double r199067 = r199054 / r199052;
double r199068 = r199060 / r199056;
double r199069 = r199067 * r199068;
double r199070 = 8.146317473810848e+202;
bool r199071 = r199048 <= r199070;
double r199072 = cbrt(r199052);
double r199073 = r199072 * r199072;
double r199074 = r199051 / r199073;
double r199075 = r199057 * r199057;
double r199076 = r199060 / r199075;
double r199077 = r199076 / r199057;
double r199078 = r199048 / r199072;
double r199079 = r199077 * r199078;
double r199080 = r199074 * r199079;
double r199081 = r199053 * r199080;
double r199082 = r199071 ? r199064 : r199081;
double r199083 = r199066 ? r199069 : r199082;
double r199084 = r199050 ? r199064 : r199083;
return r199084;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.4 |
|---|---|
| Target | 4.2 |
| Herbie | 2.7 |
if x < -4.86671963083375e-200 or 1.613947613481182e-188 < x < 8.146317473810848e+202Initial program 13.4
rmApplied times-frac9.7
rmApplied *-un-lft-identity9.7
Applied times-frac6.0
Applied associate-*l*1.8
rmApplied add-cube-cbrt2.0
Applied *-un-lft-identity2.0
Applied times-frac2.1
Simplified2.1
if -4.86671963083375e-200 < x < 1.613947613481182e-188Initial program 14.5
rmApplied times-frac12.7
rmApplied associate-/r*3.5
if 8.146317473810848e+202 < x Initial program 24.7
rmApplied times-frac16.7
rmApplied *-un-lft-identity16.7
Applied times-frac8.7
Applied associate-*l*8.8
rmApplied add-cube-cbrt9.1
Applied *-un-lft-identity9.1
Applied times-frac9.1
Simplified9.1
rmApplied add-cube-cbrt9.4
Applied *-un-lft-identity9.4
Applied times-frac9.4
Applied associate-*l*7.3
Simplified7.3
Final simplification2.7
herbie shell --seed 2019322 +o rules:numerics
(FPCore (x y z)
:name "Statistics.Distribution.Beta:$cvariance from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(if (< z 249.6182814532307) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1))))