\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 r191728 = 1.0;
double r191729 = 2.0;
double r191730 = a;
double r191731 = r191729 * r191730;
double r191732 = r191728 / r191731;
double r191733 = g;
double r191734 = -r191733;
double r191735 = r191733 * r191733;
double r191736 = h;
double r191737 = r191736 * r191736;
double r191738 = r191735 - r191737;
double r191739 = sqrt(r191738);
double r191740 = r191734 + r191739;
double r191741 = r191732 * r191740;
double r191742 = cbrt(r191741);
double r191743 = r191734 - r191739;
double r191744 = r191732 * r191743;
double r191745 = cbrt(r191744);
double r191746 = r191742 + r191745;
return r191746;
}
double f(double g, double h, double a) {
double r191747 = 1.0;
double r191748 = 2.0;
double r191749 = a;
double r191750 = r191748 * r191749;
double r191751 = r191747 / r191750;
double r191752 = cbrt(r191751);
double r191753 = g;
double r191754 = -r191753;
double r191755 = r191753 * r191753;
double r191756 = h;
double r191757 = r191756 * r191756;
double r191758 = r191755 - r191757;
double r191759 = sqrt(r191758);
double r191760 = r191754 + r191759;
double r191761 = cbrt(r191760);
double r191762 = r191752 * r191761;
double r191763 = r191754 - r191759;
double r191764 = r191747 * r191763;
double r191765 = cbrt(r191764);
double r191766 = cbrt(r191750);
double r191767 = r191765 / r191766;
double r191768 = r191762 + r191767;
return r191768;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 36.5
rmApplied cbrt-prod34.4
rmApplied associate-*l/34.4
Applied cbrt-div32.6
Final simplification32.6
herbie shell --seed 2019322
(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))))))))