\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.359356862874829159472492534077743049279 \cdot 10^{-185}:\\
\;\;\;\;\frac{\sqrt[3]{1 \cdot \left(\sqrt{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt{\sqrt{g \cdot g - h \cdot h}} - g\right)}}{\sqrt[3]{2 \cdot a}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\sqrt{g \cdot g - h \cdot h} - g\right)} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - g}\\
\end{array}double f(double g, double h, double a) {
double r115813 = 1.0;
double r115814 = 2.0;
double r115815 = a;
double r115816 = r115814 * r115815;
double r115817 = r115813 / r115816;
double r115818 = g;
double r115819 = -r115818;
double r115820 = r115818 * r115818;
double r115821 = h;
double r115822 = r115821 * r115821;
double r115823 = r115820 - r115822;
double r115824 = sqrt(r115823);
double r115825 = r115819 + r115824;
double r115826 = r115817 * r115825;
double r115827 = cbrt(r115826);
double r115828 = r115819 - r115824;
double r115829 = r115817 * r115828;
double r115830 = cbrt(r115829);
double r115831 = r115827 + r115830;
return r115831;
}
double f(double g, double h, double a) {
double r115832 = g;
double r115833 = -8.359356862874829e-185;
bool r115834 = r115832 <= r115833;
double r115835 = 1.0;
double r115836 = r115832 * r115832;
double r115837 = h;
double r115838 = r115837 * r115837;
double r115839 = r115836 - r115838;
double r115840 = sqrt(r115839);
double r115841 = sqrt(r115840);
double r115842 = r115841 * r115841;
double r115843 = r115842 - r115832;
double r115844 = r115835 * r115843;
double r115845 = cbrt(r115844);
double r115846 = 2.0;
double r115847 = a;
double r115848 = r115846 * r115847;
double r115849 = cbrt(r115848);
double r115850 = r115845 / r115849;
double r115851 = r115835 / r115848;
double r115852 = cbrt(r115851);
double r115853 = -r115832;
double r115854 = r115853 - r115840;
double r115855 = cbrt(r115854);
double r115856 = r115852 * r115855;
double r115857 = r115850 + r115856;
double r115858 = r115840 - r115832;
double r115859 = r115851 * r115858;
double r115860 = cbrt(r115859);
double r115861 = r115853 - r115832;
double r115862 = cbrt(r115861);
double r115863 = r115852 * r115862;
double r115864 = r115860 + r115863;
double r115865 = r115834 ? r115857 : r115864;
return r115865;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -8.359356862874829e-185Initial program 35.3
Simplified35.3
rmApplied cbrt-prod35.2
rmApplied associate-*l/35.2
Applied cbrt-div31.3
rmApplied add-sqr-sqrt31.3
Applied sqrt-prod31.3
if -8.359356862874829e-185 < g Initial program 36.8
Simplified36.8
rmApplied cbrt-prod33.4
Taylor expanded around inf 32.5
Final simplification31.9
herbie shell --seed 2019326
(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))))))))