\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\begin{array}{l}
\mathbf{if}\;z \le -2.782439850078144232179047902810204166481 \cdot 10^{92}:\\
\;\;\;\;\left(\frac{x}{z} \cdot \frac{y}{z}\right) \cdot \frac{1}{1 + z}\\
\mathbf{elif}\;z \le 1.369198787813574730522271894888499920798 \cdot 10^{63}:\\
\;\;\;\;\frac{\frac{1}{z}}{1 + z} \cdot \left(\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(\frac{\sqrt[3]{x}}{z} \cdot y\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{z} \cdot \frac{1}{\frac{1 + z}{\frac{y}{z}}}\\
\end{array}double f(double x, double y, double z) {
double r260666 = x;
double r260667 = y;
double r260668 = r260666 * r260667;
double r260669 = z;
double r260670 = r260669 * r260669;
double r260671 = 1.0;
double r260672 = r260669 + r260671;
double r260673 = r260670 * r260672;
double r260674 = r260668 / r260673;
return r260674;
}
double f(double x, double y, double z) {
double r260675 = z;
double r260676 = -2.782439850078144e+92;
bool r260677 = r260675 <= r260676;
double r260678 = x;
double r260679 = r260678 / r260675;
double r260680 = y;
double r260681 = r260680 / r260675;
double r260682 = r260679 * r260681;
double r260683 = 1.0;
double r260684 = 1.0;
double r260685 = r260684 + r260675;
double r260686 = r260683 / r260685;
double r260687 = r260682 * r260686;
double r260688 = 1.3691987878135747e+63;
bool r260689 = r260675 <= r260688;
double r260690 = r260683 / r260675;
double r260691 = r260690 / r260685;
double r260692 = cbrt(r260678);
double r260693 = r260692 * r260692;
double r260694 = r260692 / r260675;
double r260695 = r260694 * r260680;
double r260696 = r260693 * r260695;
double r260697 = r260691 * r260696;
double r260698 = r260685 / r260681;
double r260699 = r260683 / r260698;
double r260700 = r260679 * r260699;
double r260701 = r260689 ? r260697 : r260700;
double r260702 = r260677 ? r260687 : r260701;
return r260702;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.0 |
|---|---|
| Target | 3.9 |
| Herbie | 2.3 |
if z < -2.782439850078144e+92Initial program 12.7
rmApplied associate-/r*8.9
Simplified8.9
rmApplied *-un-lft-identity8.9
Applied add-sqr-sqrt64.0
Applied unpow-prod-down64.0
Applied times-frac64.0
Applied times-frac64.0
Simplified64.0
Simplified1.4
rmApplied div-inv1.5
Applied associate-*r*0.3
if -2.782439850078144e+92 < z < 1.3691987878135747e+63Initial program 17.3
rmApplied associate-/r*17.3
Simplified17.3
rmApplied *-un-lft-identity17.3
Applied add-sqr-sqrt42.8
Applied unpow-prod-down42.8
Applied times-frac36.6
Applied times-frac36.5
Simplified36.4
Simplified4.9
rmApplied *-un-lft-identity4.9
Applied div-inv4.9
Applied times-frac4.9
Applied associate-*r*4.6
Simplified4.6
rmApplied *-un-lft-identity4.6
Applied add-cube-cbrt5.4
Applied times-frac5.4
Applied associate-*l*3.5
if 1.3691987878135747e+63 < z Initial program 12.8
rmApplied associate-/r*9.3
Simplified9.3
rmApplied *-un-lft-identity9.3
Applied add-sqr-sqrt9.4
Applied unpow-prod-down9.4
Applied times-frac1.0
Applied times-frac1.9
Simplified1.8
Simplified1.8
rmApplied *-un-lft-identity1.8
Applied *-un-lft-identity1.8
Applied times-frac1.8
Applied associate-/l*2.0
Final simplification2.3
herbie shell --seed 2019208 +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))))