\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}}double f(double g, double h, double a) {
double r137913 = 1.0;
double r137914 = 2.0;
double r137915 = a;
double r137916 = r137914 * r137915;
double r137917 = r137913 / r137916;
double r137918 = g;
double r137919 = -r137918;
double r137920 = r137918 * r137918;
double r137921 = h;
double r137922 = r137921 * r137921;
double r137923 = r137920 - r137922;
double r137924 = sqrt(r137923);
double r137925 = r137919 + r137924;
double r137926 = r137917 * r137925;
double r137927 = cbrt(r137926);
double r137928 = r137919 - r137924;
double r137929 = r137917 * r137928;
double r137930 = cbrt(r137929);
double r137931 = r137927 + r137930;
return r137931;
}
double f(double g, double h, double a) {
double r137932 = 1.0;
double r137933 = 2.0;
double r137934 = a;
double r137935 = r137933 * r137934;
double r137936 = r137932 / r137935;
double r137937 = cbrt(r137936);
double r137938 = g;
double r137939 = -r137938;
double r137940 = r137938 * r137938;
double r137941 = h;
double r137942 = r137941 * r137941;
double r137943 = r137940 - r137942;
double r137944 = sqrt(r137943);
double r137945 = r137939 + r137944;
double r137946 = cbrt(r137945);
double r137947 = r137937 * r137946;
double r137948 = r137939 - r137944;
double r137949 = r137932 * r137948;
double r137950 = cbrt(r137949);
double r137951 = cbrt(r137935);
double r137952 = r137950 / r137951;
double r137953 = r137947 + r137952;
return r137953;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 36.0
rmApplied associate-*l/36.0
Applied cbrt-div34.1
rmApplied cbrt-prod32.3
Final simplification32.3
herbie shell --seed 2019308
(FPCore (g h a)
:name "2-ancestry mixing, positive discriminant"
:precision binary64
(+ (cbrt (* (/ 1 (* 2 a)) (+ (- g) (sqrt (- (* g g) (* h h)))))) (cbrt (* (/ 1 (* 2 a)) (- (- g) (sqrt (- (* g g) (* h h))))))))