\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\begin{array}{l}
\mathbf{if}\;x \cdot y = -\infty \lor \neg \left(x \cdot y \le -7.653303258863243928721603622295786194715 \cdot 10^{-284} \lor \neg \left(x \cdot y \le 1.137508288798888459719974341598011528755 \cdot 10^{-219}\right) \land x \cdot y \le 1.528832091076191138986851859282284286275 \cdot 10^{175}\right):\\
\;\;\;\;\frac{x}{\left|z\right|} \cdot \frac{\frac{y}{\left|z\right|}}{z + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{x \cdot y}{z}}{z}}{z + 1}\\
\end{array}double f(double x, double y, double z) {
double r253374 = x;
double r253375 = y;
double r253376 = r253374 * r253375;
double r253377 = z;
double r253378 = r253377 * r253377;
double r253379 = 1.0;
double r253380 = r253377 + r253379;
double r253381 = r253378 * r253380;
double r253382 = r253376 / r253381;
return r253382;
}
double f(double x, double y, double z) {
double r253383 = x;
double r253384 = y;
double r253385 = r253383 * r253384;
double r253386 = -inf.0;
bool r253387 = r253385 <= r253386;
double r253388 = -7.653303258863244e-284;
bool r253389 = r253385 <= r253388;
double r253390 = 1.1375082887988885e-219;
bool r253391 = r253385 <= r253390;
double r253392 = !r253391;
double r253393 = 1.5288320910761911e+175;
bool r253394 = r253385 <= r253393;
bool r253395 = r253392 && r253394;
bool r253396 = r253389 || r253395;
double r253397 = !r253396;
bool r253398 = r253387 || r253397;
double r253399 = z;
double r253400 = fabs(r253399);
double r253401 = r253383 / r253400;
double r253402 = r253384 / r253400;
double r253403 = 1.0;
double r253404 = r253399 + r253403;
double r253405 = r253402 / r253404;
double r253406 = r253401 * r253405;
double r253407 = r253385 / r253399;
double r253408 = r253407 / r253399;
double r253409 = r253408 / r253404;
double r253410 = r253398 ? r253406 : r253409;
return r253410;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.1 |
|---|---|
| Target | 4.0 |
| Herbie | 0.4 |
if (* x y) < -inf.0 or -7.653303258863244e-284 < (* x y) < 1.1375082887988885e-219 or 1.5288320910761911e+175 < (* x y) Initial program 30.3
rmApplied associate-/r*29.0
Simplified29.0
rmApplied add-sqr-sqrt29.0
Applied times-frac16.1
Simplified16.1
Simplified1.2
rmApplied *-un-lft-identity1.2
Applied times-frac0.7
Simplified0.7
if -inf.0 < (* x y) < -7.653303258863244e-284 or 1.1375082887988885e-219 < (* x y) < 1.5288320910761911e+175Initial program 6.6
rmApplied associate-/r*4.6
Simplified4.6
rmApplied unpow24.6
Applied associate-/r*0.2
Final simplification0.4
herbie shell --seed 2019212 +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.618281453230708) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1))))