\frac{x \cdot y}{\left(z \cdot z\right) \cdot \left(z + 1\right)}\left(\left(\frac{\sqrt[3]{x}}{\sqrt[3]{z}} \cdot \frac{y}{1 + z}\right) \cdot \frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{z} \cdot \sqrt[3]{z}}\right) \cdot \frac{1}{z}double f(double x, double y, double z) {
double r16056782 = x;
double r16056783 = y;
double r16056784 = r16056782 * r16056783;
double r16056785 = z;
double r16056786 = r16056785 * r16056785;
double r16056787 = 1.0;
double r16056788 = r16056785 + r16056787;
double r16056789 = r16056786 * r16056788;
double r16056790 = r16056784 / r16056789;
return r16056790;
}
double f(double x, double y, double z) {
double r16056791 = x;
double r16056792 = cbrt(r16056791);
double r16056793 = z;
double r16056794 = cbrt(r16056793);
double r16056795 = r16056792 / r16056794;
double r16056796 = y;
double r16056797 = 1.0;
double r16056798 = r16056797 + r16056793;
double r16056799 = r16056796 / r16056798;
double r16056800 = r16056795 * r16056799;
double r16056801 = r16056792 * r16056792;
double r16056802 = r16056794 * r16056794;
double r16056803 = r16056801 / r16056802;
double r16056804 = r16056800 * r16056803;
double r16056805 = 1.0;
double r16056806 = r16056805 / r16056793;
double r16056807 = r16056804 * r16056806;
return r16056807;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 14.6 |
|---|---|
| Target | 3.9 |
| Herbie | 2.0 |
Initial program 14.6
rmApplied times-frac10.9
rmApplied *-un-lft-identity10.9
Applied times-frac5.9
Applied associate-*l*2.5
rmApplied add-cube-cbrt3.0
Applied add-cube-cbrt3.2
Applied times-frac3.2
Applied associate-*l*2.0
Final simplification2.0
herbie shell --seed 2019172
(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))))