\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\begin{array}{l}
\mathbf{if}\;x \cdot y \le -3.676346882862387632104572682569721878778 \cdot 10^{266} \lor \left(x \cdot y \le -6.86607803514621678723744147253442238451 \cdot 10^{-196} \lor \left(x \cdot y \le -2.030967872118398397344276679320418172136 \cdot 10^{-277} \lor x \cdot y \le 4.760174277986658079177987348647452456326 \cdot 10^{-319}\right)\right):\\
\;\;\;\;\frac{x \cdot \frac{\frac{y}{z + 1}}{z}}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{x}{\sqrt[3]{z}} \cdot \frac{y}{z + 1}}{\sqrt[3]{z} \cdot \sqrt[3]{z}}}{z}\\
\end{array}double f(double x, double y, double z) {
double r263502 = x;
double r263503 = y;
double r263504 = r263502 * r263503;
double r263505 = z;
double r263506 = r263505 * r263505;
double r263507 = 1.0;
double r263508 = r263505 + r263507;
double r263509 = r263506 * r263508;
double r263510 = r263504 / r263509;
return r263510;
}
double f(double x, double y, double z) {
double r263511 = x;
double r263512 = y;
double r263513 = r263511 * r263512;
double r263514 = -3.6763468828623876e+266;
bool r263515 = r263513 <= r263514;
double r263516 = -6.866078035146217e-196;
bool r263517 = r263513 <= r263516;
double r263518 = -2.0309678721183984e-277;
bool r263519 = r263513 <= r263518;
double r263520 = 4.7601742779867e-319;
bool r263521 = r263513 <= r263520;
bool r263522 = r263519 || r263521;
bool r263523 = r263517 || r263522;
bool r263524 = r263515 || r263523;
double r263525 = z;
double r263526 = 1.0;
double r263527 = r263525 + r263526;
double r263528 = r263512 / r263527;
double r263529 = r263528 / r263525;
double r263530 = r263511 * r263529;
double r263531 = r263530 / r263525;
double r263532 = cbrt(r263525);
double r263533 = r263511 / r263532;
double r263534 = r263533 * r263528;
double r263535 = r263532 * r263532;
double r263536 = r263534 / r263535;
double r263537 = r263536 / r263525;
double r263538 = r263524 ? r263531 : r263537;
return r263538;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.9 |
|---|---|
| Target | 4.2 |
| Herbie | 2.9 |
if (* x y) < -3.6763468828623876e+266Initial program 53.0
rmApplied times-frac17.6
rmApplied *-un-lft-identity17.6
Applied times-frac2.1
Applied associate-*l*5.7
rmApplied add-cube-cbrt6.4
if -3.6763468828623876e+266 < (* x y) < -6.866078035146217e-196Initial program 6.2
rmApplied associate-/r*3.5
if -6.866078035146217e-196 < (* x y) < -2.0309678721183984e-277Initial program 13.3
rmApplied times-frac14.0
rmApplied *-un-lft-identity14.0
Applied times-frac8.3
Applied associate-*l*0.6
rmApplied div-inv0.7
Applied associate-*l*0.7
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied associate-*l*0.6
Simplified0.6
if -2.0309678721183984e-277 < (* x y) < 4.7601742779867e-319Initial program 25.5
rmApplied times-frac15.8
rmApplied associate-/r*5.3
if 4.7601742779867e-319 < (* x y) Initial program 12.9
rmApplied times-frac10.6
rmApplied *-un-lft-identity10.6
Applied times-frac6.6
Applied associate-*l*2.2
rmApplied add-cube-cbrt2.7
Applied *-un-lft-identity2.7
Applied times-frac2.7
Applied associate-*l*1.9
Final simplification2.9
herbie shell --seed 2019294
(FPCore (x y z)
:name "Statistics.Distribution.Beta:$cvariance from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(if (< z 249.618281453230708) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1))))