\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\begin{array}{l}
\mathbf{if}\;y \le -1.18022250245271704 \cdot 10^{219}:\\
\;\;\;\;\frac{1}{z} \cdot \left(\frac{1}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \left(\frac{x}{\sqrt[3]{z}} \cdot \frac{y}{z + 1}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{z} \cdot \left(x \cdot \frac{\frac{y}{z + 1}}{z}\right)\\
\end{array}double f(double x, double y, double z) {
double r273285 = x;
double r273286 = y;
double r273287 = r273285 * r273286;
double r273288 = z;
double r273289 = r273288 * r273288;
double r273290 = 1.0;
double r273291 = r273288 + r273290;
double r273292 = r273289 * r273291;
double r273293 = r273287 / r273292;
return r273293;
}
double f(double x, double y, double z) {
double r273294 = y;
double r273295 = -1.180222502452717e+219;
bool r273296 = r273294 <= r273295;
double r273297 = 1.0;
double r273298 = z;
double r273299 = r273297 / r273298;
double r273300 = cbrt(r273298);
double r273301 = r273300 * r273300;
double r273302 = r273297 / r273301;
double r273303 = x;
double r273304 = r273303 / r273300;
double r273305 = 1.0;
double r273306 = r273298 + r273305;
double r273307 = r273294 / r273306;
double r273308 = r273304 * r273307;
double r273309 = r273302 * r273308;
double r273310 = r273299 * r273309;
double r273311 = r273307 / r273298;
double r273312 = r273303 * r273311;
double r273313 = r273299 * r273312;
double r273314 = r273296 ? r273310 : r273313;
return r273314;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.9 |
|---|---|
| Target | 4.2 |
| Herbie | 3.0 |
if y < -1.180222502452717e+219Initial program 24.1
rmApplied times-frac13.0
rmApplied *-un-lft-identity13.0
Applied times-frac6.7
Applied associate-*l*3.9
rmApplied add-cube-cbrt4.4
Applied *-un-lft-identity4.4
Applied times-frac4.4
Applied associate-*l*5.2
if -1.180222502452717e+219 < y Initial program 14.4
rmApplied times-frac11.0
rmApplied *-un-lft-identity11.0
Applied times-frac5.7
Applied associate-*l*2.6
rmApplied div-inv2.7
Applied associate-*l*2.9
Simplified2.8
Final simplification3.0
herbie shell --seed 2020060
(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))))