\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)}\begin{array}{l}
\mathbf{if}\;g \le 3.0797478610904441 \cdot 10^{-234}:\\
\;\;\;\;\frac{\sqrt[3]{1 \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}} + \frac{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) \cdot \left(-g\right) - \sqrt{g \cdot g - h \cdot h} \cdot \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - \sqrt{g + h} \cdot \sqrt{g - h}\right)}}{\sqrt[3]{2 \cdot a}}\\
\end{array}double f(double g, double h, double a) {
double r171712 = 1.0;
double r171713 = 2.0;
double r171714 = a;
double r171715 = r171713 * r171714;
double r171716 = r171712 / r171715;
double r171717 = g;
double r171718 = -r171717;
double r171719 = r171717 * r171717;
double r171720 = h;
double r171721 = r171720 * r171720;
double r171722 = r171719 - r171721;
double r171723 = sqrt(r171722);
double r171724 = r171718 + r171723;
double r171725 = r171716 * r171724;
double r171726 = cbrt(r171725);
double r171727 = r171718 - r171723;
double r171728 = r171716 * r171727;
double r171729 = cbrt(r171728);
double r171730 = r171726 + r171729;
return r171730;
}
double f(double g, double h, double a) {
double r171731 = g;
double r171732 = 3.079747861090444e-234;
bool r171733 = r171731 <= r171732;
double r171734 = 1.0;
double r171735 = -r171731;
double r171736 = r171731 * r171731;
double r171737 = h;
double r171738 = r171737 * r171737;
double r171739 = r171736 - r171738;
double r171740 = sqrt(r171739);
double r171741 = r171735 + r171740;
double r171742 = r171734 * r171741;
double r171743 = cbrt(r171742);
double r171744 = 2.0;
double r171745 = a;
double r171746 = r171744 * r171745;
double r171747 = cbrt(r171746);
double r171748 = r171743 / r171747;
double r171749 = r171734 / r171746;
double r171750 = r171735 * r171735;
double r171751 = r171740 * r171740;
double r171752 = r171750 - r171751;
double r171753 = r171749 * r171752;
double r171754 = cbrt(r171753);
double r171755 = cbrt(r171741);
double r171756 = r171754 / r171755;
double r171757 = r171748 + r171756;
double r171758 = r171749 * r171741;
double r171759 = cbrt(r171758);
double r171760 = r171731 + r171737;
double r171761 = sqrt(r171760);
double r171762 = r171731 - r171737;
double r171763 = sqrt(r171762);
double r171764 = r171761 * r171763;
double r171765 = r171735 - r171764;
double r171766 = r171734 * r171765;
double r171767 = cbrt(r171766);
double r171768 = r171767 / r171747;
double r171769 = r171759 + r171768;
double r171770 = r171733 ? r171757 : r171769;
return r171770;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < 3.079747861090444e-234Initial program 35.9
rmApplied associate-*l/35.9
Applied cbrt-div32.3
rmApplied flip--32.1
Applied associate-*r/32.2
Applied cbrt-div32.2
if 3.079747861090444e-234 < g Initial program 34.9
rmApplied associate-*l/34.9
Applied cbrt-div31.4
rmApplied difference-of-squares31.4
Applied sqrt-prod30.8
Final simplification31.5
herbie shell --seed 2020049
(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))))))))