\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 r114096 = 1.0;
double r114097 = 2.0;
double r114098 = a;
double r114099 = r114097 * r114098;
double r114100 = r114096 / r114099;
double r114101 = g;
double r114102 = -r114101;
double r114103 = r114101 * r114101;
double r114104 = h;
double r114105 = r114104 * r114104;
double r114106 = r114103 - r114105;
double r114107 = sqrt(r114106);
double r114108 = r114102 + r114107;
double r114109 = r114100 * r114108;
double r114110 = cbrt(r114109);
double r114111 = r114102 - r114107;
double r114112 = r114100 * r114111;
double r114113 = cbrt(r114112);
double r114114 = r114110 + r114113;
return r114114;
}
double f(double g, double h, double a) {
double r114115 = 1.0;
double r114116 = 2.0;
double r114117 = a;
double r114118 = r114116 * r114117;
double r114119 = r114115 / r114118;
double r114120 = cbrt(r114119);
double r114121 = g;
double r114122 = -r114121;
double r114123 = r114121 * r114121;
double r114124 = h;
double r114125 = r114124 * r114124;
double r114126 = r114123 - r114125;
double r114127 = sqrt(r114126);
double r114128 = r114122 + r114127;
double r114129 = cbrt(r114128);
double r114130 = r114120 * r114129;
double r114131 = r114122 - r114127;
double r114132 = r114115 * r114131;
double r114133 = cbrt(r114132);
double r114134 = cbrt(r114118);
double r114135 = r114133 / r114134;
double r114136 = r114130 + r114135;
return r114136;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.8
rmApplied associate-*l/35.8
Applied cbrt-div33.7
rmApplied cbrt-prod31.9
Final simplification31.9
herbie shell --seed 2019298
(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))))))))