\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]{\sqrt{g \cdot g - h \cdot h} - g} + \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 r113867 = 1.0;
double r113868 = 2.0;
double r113869 = a;
double r113870 = r113868 * r113869;
double r113871 = r113867 / r113870;
double r113872 = g;
double r113873 = -r113872;
double r113874 = r113872 * r113872;
double r113875 = h;
double r113876 = r113875 * r113875;
double r113877 = r113874 - r113876;
double r113878 = sqrt(r113877);
double r113879 = r113873 + r113878;
double r113880 = r113871 * r113879;
double r113881 = cbrt(r113880);
double r113882 = r113873 - r113878;
double r113883 = r113871 * r113882;
double r113884 = cbrt(r113883);
double r113885 = r113881 + r113884;
return r113885;
}
double f(double g, double h, double a) {
double r113886 = 1.0;
double r113887 = 2.0;
double r113888 = a;
double r113889 = r113887 * r113888;
double r113890 = r113886 / r113889;
double r113891 = cbrt(r113890);
double r113892 = g;
double r113893 = r113892 * r113892;
double r113894 = h;
double r113895 = r113894 * r113894;
double r113896 = r113893 - r113895;
double r113897 = sqrt(r113896);
double r113898 = r113897 - r113892;
double r113899 = cbrt(r113898);
double r113900 = r113891 * r113899;
double r113901 = -r113892;
double r113902 = r113901 - r113897;
double r113903 = r113886 * r113902;
double r113904 = cbrt(r113903);
double r113905 = cbrt(r113889);
double r113906 = r113904 / r113905;
double r113907 = r113900 + r113906;
return r113907;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.8
Simplified35.8
rmApplied associate-*l/35.8
Applied cbrt-div34.0
rmApplied cbrt-prod32.2
Final simplification32.2
herbie shell --seed 2020042
(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))))))))