\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(\frac{\sqrt[3]{\sqrt[3]{x}}}{\sqrt[3]{z}} \cdot \sqrt[3]{\frac{\sqrt[3]{x}}{z}}\right) \cdot \left(\sqrt[3]{\frac{\sqrt[3]{x}}{z}} \cdot \frac{y}{z + 1}\right)\right)double f(double x, double y, double z) {
double r355425 = x;
double r355426 = y;
double r355427 = r355425 * r355426;
double r355428 = z;
double r355429 = r355428 * r355428;
double r355430 = 1.0;
double r355431 = r355428 + r355430;
double r355432 = r355429 * r355431;
double r355433 = r355427 / r355432;
return r355433;
}
double f(double x, double y, double z) {
double r355434 = x;
double r355435 = cbrt(r355434);
double r355436 = r355435 * r355435;
double r355437 = z;
double r355438 = r355436 / r355437;
double r355439 = cbrt(r355435);
double r355440 = cbrt(r355437);
double r355441 = r355439 / r355440;
double r355442 = r355435 / r355437;
double r355443 = cbrt(r355442);
double r355444 = r355441 * r355443;
double r355445 = y;
double r355446 = 1.0;
double r355447 = r355437 + r355446;
double r355448 = r355445 / r355447;
double r355449 = r355443 * r355448;
double r355450 = r355444 * r355449;
double r355451 = r355438 * r355450;
return r355451;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.7 |
|---|---|
| Target | 4.4 |
| Herbie | 1.4 |
Initial program 15.7
rmApplied times-frac11.8
rmApplied add-cube-cbrt12.1
Applied times-frac7.0
Applied associate-*l*1.3
rmApplied add-cube-cbrt1.5
Applied associate-*l*1.5
rmApplied cbrt-div1.4
Final simplification1.4
herbie shell --seed 2020047
(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))))