\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{z} \cdot \left(\left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \frac{\sqrt[3]{x}}{z}\right) \cdot \frac{\sqrt[3]{y}}{z + 1}\right)double f(double x, double y, double z) {
double r374036 = x;
double r374037 = y;
double r374038 = r374036 * r374037;
double r374039 = z;
double r374040 = r374039 * r374039;
double r374041 = 1.0;
double r374042 = r374039 + r374041;
double r374043 = r374040 * r374042;
double r374044 = r374038 / r374043;
return r374044;
}
double f(double x, double y, double z) {
double r374045 = x;
double r374046 = cbrt(r374045);
double r374047 = r374046 * r374046;
double r374048 = z;
double r374049 = r374047 / r374048;
double r374050 = y;
double r374051 = cbrt(r374050);
double r374052 = r374051 * r374051;
double r374053 = r374046 / r374048;
double r374054 = r374052 * r374053;
double r374055 = 1.0;
double r374056 = r374048 + r374055;
double r374057 = r374051 / r374056;
double r374058 = r374054 * r374057;
double r374059 = r374049 * r374058;
return r374059;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.5 |
|---|---|
| Target | 3.7 |
| Herbie | 1.4 |
Initial program 14.5
rmApplied times-frac10.9
rmApplied add-cube-cbrt11.2
Applied times-frac6.2
Applied associate-*l*1.3
rmApplied *-un-lft-identity1.3
Applied add-cube-cbrt1.4
Applied times-frac1.4
Applied associate-*r*1.4
Simplified1.4
Final simplification1.4
herbie shell --seed 2020043 +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))))