\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{\frac{1}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \left(\frac{x}{\sqrt[3]{z}} \cdot \frac{y}{z + 1}\right)}{z}\\
\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 r330548 = x;
double r330549 = y;
double r330550 = r330548 * r330549;
double r330551 = z;
double r330552 = r330551 * r330551;
double r330553 = 1.0;
double r330554 = r330551 + r330553;
double r330555 = r330552 * r330554;
double r330556 = r330550 / r330555;
return r330556;
}
double f(double x, double y, double z) {
double r330557 = y;
double r330558 = -1.180222502452717e+219;
bool r330559 = r330557 <= r330558;
double r330560 = 1.0;
double r330561 = z;
double r330562 = cbrt(r330561);
double r330563 = r330562 * r330562;
double r330564 = r330560 / r330563;
double r330565 = x;
double r330566 = r330565 / r330562;
double r330567 = 1.0;
double r330568 = r330561 + r330567;
double r330569 = r330557 / r330568;
double r330570 = r330566 * r330569;
double r330571 = r330564 * r330570;
double r330572 = r330571 / r330561;
double r330573 = r330560 / r330561;
double r330574 = r330569 / r330561;
double r330575 = r330565 * r330574;
double r330576 = r330573 * r330575;
double r330577 = r330559 ? r330572 : r330576;
return r330577;
}




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 associate-*l/6.4
Applied associate-*r/6.4
Simplified3.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))))