\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 -8.824957770492126269462751713124247080079 \cdot 10^{-179}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}} \cdot \sqrt[3]{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}}\right) \cdot \sqrt[3]{\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) - g\right)}}{\sqrt[3]{2 \cdot a}}\\
\end{array}double f(double g, double h, double a) {
double r188798 = 1.0;
double r188799 = 2.0;
double r188800 = a;
double r188801 = r188799 * r188800;
double r188802 = r188798 / r188801;
double r188803 = g;
double r188804 = -r188803;
double r188805 = r188803 * r188803;
double r188806 = h;
double r188807 = r188806 * r188806;
double r188808 = r188805 - r188807;
double r188809 = sqrt(r188808);
double r188810 = r188804 + r188809;
double r188811 = r188802 * r188810;
double r188812 = cbrt(r188811);
double r188813 = r188804 - r188809;
double r188814 = r188802 * r188813;
double r188815 = cbrt(r188814);
double r188816 = r188812 + r188815;
return r188816;
}
double f(double g, double h, double a) {
double r188817 = g;
double r188818 = -8.824957770492126e-179;
bool r188819 = r188817 <= r188818;
double r188820 = 1.0;
double r188821 = 2.0;
double r188822 = a;
double r188823 = r188821 * r188822;
double r188824 = r188820 / r188823;
double r188825 = cbrt(r188824);
double r188826 = -r188817;
double r188827 = r188817 * r188817;
double r188828 = h;
double r188829 = r188828 * r188828;
double r188830 = r188827 - r188829;
double r188831 = sqrt(r188830);
double r188832 = r188826 + r188831;
double r188833 = cbrt(r188832);
double r188834 = r188825 * r188833;
double r188835 = r188826 - r188831;
double r188836 = r188824 * r188835;
double r188837 = cbrt(r188836);
double r188838 = r188834 + r188837;
double r188839 = r188824 * r188832;
double r188840 = cbrt(r188839);
double r188841 = cbrt(r188840);
double r188842 = r188841 * r188841;
double r188843 = r188842 * r188841;
double r188844 = r188826 - r188817;
double r188845 = r188820 * r188844;
double r188846 = cbrt(r188845);
double r188847 = cbrt(r188823);
double r188848 = r188846 / r188847;
double r188849 = r188843 + r188848;
double r188850 = r188819 ? r188838 : r188849;
return r188850;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -8.824957770492126e-179Initial program 35.5
rmApplied cbrt-prod31.7
if -8.824957770492126e-179 < g Initial program 37.3
rmApplied associate-*l/37.3
Applied cbrt-div33.8
rmApplied add-cube-cbrt33.8
Taylor expanded around inf 32.5
Final simplification32.1
herbie shell --seed 2019353
(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))))))))