\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\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 r311298 = x;
double r311299 = y;
double r311300 = r311298 * r311299;
double r311301 = z;
double r311302 = r311301 * r311301;
double r311303 = 1.0;
double r311304 = r311301 + r311303;
double r311305 = r311302 * r311304;
double r311306 = r311300 / r311305;
return r311306;
}
double f(double x, double y, double z) {
double r311307 = x;
double r311308 = cbrt(r311307);
double r311309 = z;
double r311310 = cbrt(r311309);
double r311311 = r311310 * r311310;
double r311312 = r311308 / r311311;
double r311313 = r311308 / r311310;
double r311314 = r311308 / r311309;
double r311315 = y;
double r311316 = 1.0;
double r311317 = r311309 + r311316;
double r311318 = r311315 / r311317;
double r311319 = r311314 * r311318;
double r311320 = r311313 * r311319;
double r311321 = r311312 * r311320;
return r311321;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.5 |
|---|---|
| Target | 4.2 |
| Herbie | 1.3 |
Initial program 14.5
rmApplied times-frac10.6
rmApplied add-cube-cbrt11.0
Applied times-frac6.0
Applied associate-*l*1.3
rmApplied add-cube-cbrt1.4
Applied times-frac1.4
Applied associate-*l*1.3
Final simplification1.3
herbie shell --seed 2020024 +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))))