\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 -1.1782238543655228 \cdot 10^{-238}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + -1 \cdot g} + \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)} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - \left(\sqrt[3]{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}\right) \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}\right)}}{\sqrt[3]{2 \cdot a}}\\
\end{array}double f(double g, double h, double a) {
double r172221 = 1.0;
double r172222 = 2.0;
double r172223 = a;
double r172224 = r172222 * r172223;
double r172225 = r172221 / r172224;
double r172226 = g;
double r172227 = -r172226;
double r172228 = r172226 * r172226;
double r172229 = h;
double r172230 = r172229 * r172229;
double r172231 = r172228 - r172230;
double r172232 = sqrt(r172231);
double r172233 = r172227 + r172232;
double r172234 = r172225 * r172233;
double r172235 = cbrt(r172234);
double r172236 = r172227 - r172232;
double r172237 = r172225 * r172236;
double r172238 = cbrt(r172237);
double r172239 = r172235 + r172238;
return r172239;
}
double f(double g, double h, double a) {
double r172240 = g;
double r172241 = -1.1782238543655228e-238;
bool r172242 = r172240 <= r172241;
double r172243 = 1.0;
double r172244 = 2.0;
double r172245 = a;
double r172246 = r172244 * r172245;
double r172247 = r172243 / r172246;
double r172248 = cbrt(r172247);
double r172249 = -r172240;
double r172250 = -1.0;
double r172251 = r172250 * r172240;
double r172252 = r172249 + r172251;
double r172253 = cbrt(r172252);
double r172254 = r172248 * r172253;
double r172255 = r172240 * r172240;
double r172256 = h;
double r172257 = r172256 * r172256;
double r172258 = r172255 - r172257;
double r172259 = sqrt(r172258);
double r172260 = r172249 - r172259;
double r172261 = r172247 * r172260;
double r172262 = cbrt(r172261);
double r172263 = r172254 + r172262;
double r172264 = r172249 + r172259;
double r172265 = r172247 * r172264;
double r172266 = cbrt(r172265);
double r172267 = cbrt(r172259);
double r172268 = r172267 * r172267;
double r172269 = r172268 * r172267;
double r172270 = r172249 - r172269;
double r172271 = r172243 * r172270;
double r172272 = cbrt(r172271);
double r172273 = cbrt(r172246);
double r172274 = r172272 / r172273;
double r172275 = r172266 + r172274;
double r172276 = r172242 ? r172263 : r172275;
return r172276;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -1.1782238543655228e-238Initial program 35.0
rmApplied cbrt-prod31.1
Taylor expanded around -inf 30.8
if -1.1782238543655228e-238 < g Initial program 35.9
rmApplied associate-*l/35.9
Applied cbrt-div32.4
rmApplied add-cube-cbrt32.4
Final simplification31.6
herbie shell --seed 2020035
(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))))))))