\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 \frac{-7088582881612913}{5.839923990556409879860699655296372895863 \cdot 10^{194}}:\\
\;\;\;\;\frac{\sqrt[3]{1 \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}} + \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)}}\\
\mathbf{else}:\\
\;\;\;\;\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) - g}\\
\end{array}double f(double g, double h, double a) {
double r119090 = 1.0;
double r119091 = 2.0;
double r119092 = a;
double r119093 = r119091 * r119092;
double r119094 = r119090 / r119093;
double r119095 = g;
double r119096 = -r119095;
double r119097 = r119095 * r119095;
double r119098 = h;
double r119099 = r119098 * r119098;
double r119100 = r119097 - r119099;
double r119101 = sqrt(r119100);
double r119102 = r119096 + r119101;
double r119103 = r119094 * r119102;
double r119104 = cbrt(r119103);
double r119105 = r119096 - r119101;
double r119106 = r119094 * r119105;
double r119107 = cbrt(r119106);
double r119108 = r119104 + r119107;
return r119108;
}
double f(double g, double h, double a) {
double r119109 = g;
double r119110 = -7088582881612913.0;
double r119111 = 5.83992399055641e+194;
double r119112 = r119110 / r119111;
bool r119113 = r119109 <= r119112;
double r119114 = 1.0;
double r119115 = -r119109;
double r119116 = r119109 * r119109;
double r119117 = h;
double r119118 = r119117 * r119117;
double r119119 = r119116 - r119118;
double r119120 = sqrt(r119119);
double r119121 = r119115 + r119120;
double r119122 = r119114 * r119121;
double r119123 = cbrt(r119122);
double r119124 = 2.0;
double r119125 = a;
double r119126 = r119124 * r119125;
double r119127 = cbrt(r119126);
double r119128 = r119123 / r119127;
double r119129 = r119114 / r119126;
double r119130 = r119115 - r119120;
double r119131 = r119129 * r119130;
double r119132 = cbrt(r119131);
double r119133 = cbrt(r119132);
double r119134 = r119133 * r119133;
double r119135 = r119134 * r119133;
double r119136 = r119128 + r119135;
double r119137 = r119129 * r119121;
double r119138 = cbrt(r119137);
double r119139 = cbrt(r119129);
double r119140 = r119115 - r119109;
double r119141 = cbrt(r119140);
double r119142 = r119139 * r119141;
double r119143 = r119138 + r119142;
double r119144 = r119113 ? r119136 : r119143;
return r119144;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -1.213814236807821e-179Initial program 34.5
rmApplied associate-*l/34.5
Applied cbrt-div30.8
rmApplied add-cube-cbrt30.8
if -1.213814236807821e-179 < g Initial program 35.4
rmApplied cbrt-prod31.4
Taylor expanded around inf 30.5
Final simplification30.6
herbie shell --seed 2019303
(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))))))))