\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\begin{array}{l}
\mathbf{if}\;x \cdot y = -\infty:\\
\;\;\;\;\frac{\frac{x}{z}}{z + 1} \cdot \frac{y}{z}\\
\mathbf{elif}\;x \cdot y \le -1.814014124122721601274999944866048262097 \cdot 10^{-209}:\\
\;\;\;\;\frac{\frac{\frac{x \cdot y}{z}}{z + 1}}{z}\\
\mathbf{elif}\;x \cdot y \le 1.750595912654215494473187029654764471159 \cdot 10^{-301}:\\
\;\;\;\;\frac{1}{\frac{z \cdot \left(z + 1\right)}{x} \cdot \frac{z}{y}}\\
\mathbf{elif}\;x \cdot y \le 1.553506472362988828548190535276053063294 \cdot 10^{240}:\\
\;\;\;\;\frac{\frac{\frac{x \cdot y}{z}}{z + 1}}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{z}}{z + 1} \cdot \frac{y}{z}\\
\end{array}double f(double x, double y, double z) {
double r237500 = x;
double r237501 = y;
double r237502 = r237500 * r237501;
double r237503 = z;
double r237504 = r237503 * r237503;
double r237505 = 1.0;
double r237506 = r237503 + r237505;
double r237507 = r237504 * r237506;
double r237508 = r237502 / r237507;
return r237508;
}
double f(double x, double y, double z) {
double r237509 = x;
double r237510 = y;
double r237511 = r237509 * r237510;
double r237512 = -inf.0;
bool r237513 = r237511 <= r237512;
double r237514 = z;
double r237515 = r237509 / r237514;
double r237516 = 1.0;
double r237517 = r237514 + r237516;
double r237518 = r237515 / r237517;
double r237519 = r237510 / r237514;
double r237520 = r237518 * r237519;
double r237521 = -1.8140141241227216e-209;
bool r237522 = r237511 <= r237521;
double r237523 = r237511 / r237514;
double r237524 = r237523 / r237517;
double r237525 = r237524 / r237514;
double r237526 = 1.7505959126542155e-301;
bool r237527 = r237511 <= r237526;
double r237528 = 1.0;
double r237529 = r237514 * r237517;
double r237530 = r237529 / r237509;
double r237531 = r237514 / r237510;
double r237532 = r237530 * r237531;
double r237533 = r237528 / r237532;
double r237534 = 1.5535064723629888e+240;
bool r237535 = r237511 <= r237534;
double r237536 = r237535 ? r237525 : r237520;
double r237537 = r237527 ? r237533 : r237536;
double r237538 = r237522 ? r237525 : r237537;
double r237539 = r237513 ? r237520 : r237538;
return r237539;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.8 |
|---|---|
| Target | 3.8 |
| Herbie | 0.4 |
if (* x y) < -inf.0 or 1.5535064723629888e+240 < (* x y) Initial program 53.8
Simplified1.1
if -inf.0 < (* x y) < -1.8140141241227216e-209 or 1.7505959126542155e-301 < (* x y) < 1.5535064723629888e+240Initial program 6.9
Simplified4.3
rmApplied *-un-lft-identity4.3
Applied *-un-lft-identity4.3
Applied times-frac4.3
Applied associate-*l*4.3
Simplified3.3
rmApplied *-un-lft-identity3.3
Applied associate-/r*3.3
Simplified1.9
rmApplied associate-*r/0.2
Simplified0.2
if -1.8140141241227216e-209 < (* x y) < 1.7505959126542155e-301Initial program 21.7
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied *-un-lft-identity0.4
Applied times-frac0.4
Applied associate-*l*0.4
Simplified3.1
rmApplied *-un-lft-identity3.1
Applied associate-/r*3.1
Simplified3.1
rmApplied clear-num3.2
Simplified0.6
Final simplification0.4
herbie shell --seed 2019194
(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))))