\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(\frac{\sqrt[3]{\sqrt[3]{x} \cdot \sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}}{z} \cdot \frac{y}{z + 1}\right)double f(double x, double y, double z) {
double r297590 = x;
double r297591 = y;
double r297592 = r297590 * r297591;
double r297593 = z;
double r297594 = r297593 * r297593;
double r297595 = 1.0;
double r297596 = r297593 + r297595;
double r297597 = r297594 * r297596;
double r297598 = r297592 / r297597;
return r297598;
}
double f(double x, double y, double z) {
double r297599 = x;
double r297600 = cbrt(r297599);
double r297601 = r297600 * r297600;
double r297602 = z;
double r297603 = r297601 / r297602;
double r297604 = cbrt(r297601);
double r297605 = cbrt(r297600);
double r297606 = r297604 * r297605;
double r297607 = r297606 / r297602;
double r297608 = y;
double r297609 = 1.0;
double r297610 = r297602 + r297609;
double r297611 = r297608 / r297610;
double r297612 = r297607 * r297611;
double r297613 = r297603 * r297612;
return r297613;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.4 |
|---|---|
| Target | 4.1 |
| Herbie | 1.4 |
Initial program 15.4
rmApplied times-frac10.8
rmApplied add-cube-cbrt11.1
Applied times-frac6.2
Applied associate-*l*1.3
rmApplied add-cube-cbrt1.4
Applied cbrt-prod1.4
Final simplification1.4
herbie shell --seed 2020064 +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))))