\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\frac{\frac{\sqrt[3]{x}}{z} \cdot \left(\left(\sqrt[3]{x} \cdot \frac{y}{z}\right) \cdot \sqrt[3]{x}\right)}{z + 1}double f(double x, double y, double z) {
double r185978 = x;
double r185979 = y;
double r185980 = r185978 * r185979;
double r185981 = z;
double r185982 = r185981 * r185981;
double r185983 = 1.0;
double r185984 = r185981 + r185983;
double r185985 = r185982 * r185984;
double r185986 = r185980 / r185985;
return r185986;
}
double f(double x, double y, double z) {
double r185987 = x;
double r185988 = cbrt(r185987);
double r185989 = z;
double r185990 = r185988 / r185989;
double r185991 = y;
double r185992 = r185991 / r185989;
double r185993 = r185988 * r185992;
double r185994 = r185993 * r185988;
double r185995 = r185990 * r185994;
double r185996 = 1.0;
double r185997 = r185989 + r185996;
double r185998 = r185995 / r185997;
return r185998;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.9 |
|---|---|
| Target | 3.9 |
| Herbie | 2.3 |
Initial program 14.9
rmApplied associate-/r*13.2
Simplified2.6
rmApplied *-un-lft-identity2.6
Applied add-cube-cbrt3.1
Applied times-frac3.1
Applied associate-*r*2.3
Simplified2.3
Final simplification2.3
herbie shell --seed 2019179 +o rules:numerics
(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))))