\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1.0\right)}\frac{\left(\sqrt[3]{\sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{x} \cdot \sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x} \cdot \sqrt[3]{x}}\right)}{z} \cdot \left(\frac{y}{1.0 + z} \cdot \frac{\sqrt[3]{x}}{z}\right)double f(double x, double y, double z) {
double r20334492 = x;
double r20334493 = y;
double r20334494 = r20334492 * r20334493;
double r20334495 = z;
double r20334496 = r20334495 * r20334495;
double r20334497 = 1.0;
double r20334498 = r20334495 + r20334497;
double r20334499 = r20334496 * r20334498;
double r20334500 = r20334494 / r20334499;
return r20334500;
}
double f(double x, double y, double z) {
double r20334501 = x;
double r20334502 = cbrt(r20334501);
double r20334503 = cbrt(r20334502);
double r20334504 = r20334503 * r20334503;
double r20334505 = r20334502 * r20334502;
double r20334506 = cbrt(r20334505);
double r20334507 = r20334506 * r20334506;
double r20334508 = r20334504 * r20334507;
double r20334509 = z;
double r20334510 = r20334508 / r20334509;
double r20334511 = y;
double r20334512 = 1.0;
double r20334513 = r20334512 + r20334509;
double r20334514 = r20334511 / r20334513;
double r20334515 = r20334502 / r20334509;
double r20334516 = r20334514 * r20334515;
double r20334517 = r20334510 * r20334516;
return r20334517;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 15.4 |
|---|---|
| Target | 4.3 |
| Herbie | 1.6 |
Initial program 15.4
rmApplied times-frac11.2
rmApplied add-cube-cbrt11.6
Applied times-frac6.5
Applied associate-*l*1.3
rmApplied add-cube-cbrt1.4
Applied cbrt-prod1.4
Applied add-cube-cbrt1.5
Applied cbrt-prod1.6
Applied swap-sqr1.6
Final simplification1.6
herbie shell --seed 2019165
(FPCore (x y z)
:name "Statistics.Distribution.Beta:$cvariance from math-functions-0.1.5.2"
:herbie-target
(if (< z 249.6182814532307) (/ (* y (/ x z)) (+ z (* z z))) (/ (* (/ (/ y z) (+ 1.0 z)) x) z))
(/ (* x y) (* (* z z) (+ z 1.0))))