\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 -5.110014296461794 \cdot 10^{-199}:\\
\;\;\;\;\frac{\sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}}{\sqrt[3]{2 \cdot a}} + \frac{\sqrt[3]{\sqrt[3]{\sqrt{g \cdot g - h \cdot h}} \cdot \left(\sqrt[3]{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}\right) + \left(-g\right)}}{\sqrt[3]{2 \cdot a}}\\
\mathbf{elif}\;g \le 6.420654691865451 \cdot 10^{-40}:\\
\;\;\;\;\sqrt[3]{\left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right) \cdot \frac{1}{2 \cdot a}} + \frac{\sqrt[3]{\left(-g\right) - g}}{\sqrt[3]{2 \cdot a}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{g \cdot g - \sqrt{g \cdot g - h \cdot h} \cdot \sqrt{g \cdot g - h \cdot h}}}{\sqrt[3]{\left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right) \cdot \left(2 \cdot a\right)}} + \frac{\sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}}{\sqrt[3]{2 \cdot a}}\\
\end{array}double f(double g, double h, double a) {
double r5121979 = 1.0;
double r5121980 = 2.0;
double r5121981 = a;
double r5121982 = r5121980 * r5121981;
double r5121983 = r5121979 / r5121982;
double r5121984 = g;
double r5121985 = -r5121984;
double r5121986 = r5121984 * r5121984;
double r5121987 = h;
double r5121988 = r5121987 * r5121987;
double r5121989 = r5121986 - r5121988;
double r5121990 = sqrt(r5121989);
double r5121991 = r5121985 + r5121990;
double r5121992 = r5121983 * r5121991;
double r5121993 = cbrt(r5121992);
double r5121994 = r5121985 - r5121990;
double r5121995 = r5121983 * r5121994;
double r5121996 = cbrt(r5121995);
double r5121997 = r5121993 + r5121996;
return r5121997;
}
double f(double g, double h, double a) {
double r5121998 = g;
double r5121999 = -5.110014296461794e-199;
bool r5122000 = r5121998 <= r5121999;
double r5122001 = -r5121998;
double r5122002 = r5121998 * r5121998;
double r5122003 = h;
double r5122004 = r5122003 * r5122003;
double r5122005 = r5122002 - r5122004;
double r5122006 = sqrt(r5122005);
double r5122007 = r5122001 - r5122006;
double r5122008 = cbrt(r5122007);
double r5122009 = 2.0;
double r5122010 = a;
double r5122011 = r5122009 * r5122010;
double r5122012 = cbrt(r5122011);
double r5122013 = r5122008 / r5122012;
double r5122014 = cbrt(r5122006);
double r5122015 = r5122014 * r5122014;
double r5122016 = r5122014 * r5122015;
double r5122017 = r5122016 + r5122001;
double r5122018 = cbrt(r5122017);
double r5122019 = r5122018 / r5122012;
double r5122020 = r5122013 + r5122019;
double r5122021 = 6.420654691865451e-40;
bool r5122022 = r5121998 <= r5122021;
double r5122023 = r5122001 + r5122006;
double r5122024 = 1.0;
double r5122025 = r5122024 / r5122011;
double r5122026 = r5122023 * r5122025;
double r5122027 = cbrt(r5122026);
double r5122028 = r5122001 - r5121998;
double r5122029 = cbrt(r5122028);
double r5122030 = r5122029 / r5122012;
double r5122031 = r5122027 + r5122030;
double r5122032 = r5122006 * r5122006;
double r5122033 = r5122002 - r5122032;
double r5122034 = cbrt(r5122033);
double r5122035 = r5122007 * r5122011;
double r5122036 = cbrt(r5122035);
double r5122037 = r5122034 / r5122036;
double r5122038 = r5122037 + r5122013;
double r5122039 = r5122022 ? r5122031 : r5122038;
double r5122040 = r5122000 ? r5122020 : r5122039;
return r5122040;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -5.110014296461794e-199Initial program 33.9
rmApplied associate-*l/33.9
Applied cbrt-div33.8
rmApplied associate-*l/33.8
Applied cbrt-div30.6
rmApplied add-cube-cbrt30.6
if -5.110014296461794e-199 < g < 6.420654691865451e-40Initial program 28.8
rmApplied associate-*l/28.8
Applied cbrt-div23.1
Taylor expanded around inf 18.0
if 6.420654691865451e-40 < g Initial program 38.2
rmApplied associate-*l/38.2
Applied cbrt-div34.9
rmApplied flip-+34.9
Applied frac-times34.9
Applied cbrt-div34.8
Final simplification30.9
herbie shell --seed 2019138
(FPCore (g h a)
:name "2-ancestry mixing, positive discriminant"
(+ (cbrt (* (/ 1 (* 2 a)) (+ (- g) (sqrt (- (* g g) (* h h)))))) (cbrt (* (/ 1 (* 2 a)) (- (- g) (sqrt (- (* g g) (* h h))))))))