\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\left(\sqrt[3]{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{z} \cdot \left(\frac{\sqrt[3]{x}}{z} \cdot \frac{y}{z + 1}\right)} \cdot \sqrt[3]{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{z} \cdot \left(\frac{\sqrt[3]{x}}{z} \cdot \frac{y}{z + 1}\right)}\right) \cdot \sqrt[3]{\frac{\sqrt[3]{x}}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \left(\frac{\sqrt[3]{x}}{\sqrt[3]{z}} \cdot \left(\frac{\sqrt[3]{x}}{z} \cdot \frac{y}{z + 1}\right)\right)}double f(double x, double y, double z) {
double r322113 = x;
double r322114 = y;
double r322115 = r322113 * r322114;
double r322116 = z;
double r322117 = r322116 * r322116;
double r322118 = 1.0;
double r322119 = r322116 + r322118;
double r322120 = r322117 * r322119;
double r322121 = r322115 / r322120;
return r322121;
}
double f(double x, double y, double z) {
double r322122 = x;
double r322123 = cbrt(r322122);
double r322124 = r322123 * r322123;
double r322125 = z;
double r322126 = r322124 / r322125;
double r322127 = r322123 / r322125;
double r322128 = y;
double r322129 = 1.0;
double r322130 = r322125 + r322129;
double r322131 = r322128 / r322130;
double r322132 = r322127 * r322131;
double r322133 = r322126 * r322132;
double r322134 = cbrt(r322133);
double r322135 = r322134 * r322134;
double r322136 = cbrt(r322125);
double r322137 = r322136 * r322136;
double r322138 = r322123 / r322137;
double r322139 = r322123 / r322136;
double r322140 = r322139 * r322132;
double r322141 = r322138 * r322140;
double r322142 = cbrt(r322141);
double r322143 = r322135 * r322142;
return r322143;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.6 |
|---|---|
| Target | 4.0 |
| Herbie | 1.4 |
Initial program 14.6
rmApplied times-frac10.9
rmApplied add-cube-cbrt11.2
Applied times-frac6.4
Applied associate-*l*1.2
rmApplied add-cube-cbrt1.4
rmApplied add-cube-cbrt1.4
Applied times-frac1.4
Applied associate-*l*1.4
Final simplification1.4
herbie shell --seed 2020021 +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.6182814532307) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1))))