\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.8946190630550178 \cdot 10^{-162}:\\
\;\;\;\;\frac{\sqrt[3]{1 \cdot \left(\left(-g\right) + -1 \cdot g\right)}}{\sqrt[3]{2 \cdot a}} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) \cdot \left(-g\right) - \sqrt{g \cdot g - h \cdot h} \cdot \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}}\\
\end{array}double f(double g, double h, double a) {
double r128488 = 1.0;
double r128489 = 2.0;
double r128490 = a;
double r128491 = r128489 * r128490;
double r128492 = r128488 / r128491;
double r128493 = g;
double r128494 = -r128493;
double r128495 = r128493 * r128493;
double r128496 = h;
double r128497 = r128496 * r128496;
double r128498 = r128495 - r128497;
double r128499 = sqrt(r128498);
double r128500 = r128494 + r128499;
double r128501 = r128492 * r128500;
double r128502 = cbrt(r128501);
double r128503 = r128494 - r128499;
double r128504 = r128492 * r128503;
double r128505 = cbrt(r128504);
double r128506 = r128502 + r128505;
return r128506;
}
double f(double g, double h, double a) {
double r128507 = g;
double r128508 = 5.894619063055018e-162;
bool r128509 = r128507 <= r128508;
double r128510 = 1.0;
double r128511 = -r128507;
double r128512 = -1.0;
double r128513 = r128512 * r128507;
double r128514 = r128511 + r128513;
double r128515 = r128510 * r128514;
double r128516 = cbrt(r128515);
double r128517 = 2.0;
double r128518 = a;
double r128519 = r128517 * r128518;
double r128520 = cbrt(r128519);
double r128521 = r128516 / r128520;
double r128522 = r128510 / r128519;
double r128523 = r128507 * r128507;
double r128524 = h;
double r128525 = r128524 * r128524;
double r128526 = r128523 - r128525;
double r128527 = sqrt(r128526);
double r128528 = r128511 - r128527;
double r128529 = r128522 * r128528;
double r128530 = cbrt(r128529);
double r128531 = r128521 + r128530;
double r128532 = r128511 * r128511;
double r128533 = r128527 * r128527;
double r128534 = r128532 - r128533;
double r128535 = r128522 * r128534;
double r128536 = cbrt(r128535);
double r128537 = cbrt(r128528);
double r128538 = r128536 / r128537;
double r128539 = r128510 * r128528;
double r128540 = cbrt(r128539);
double r128541 = r128540 / r128520;
double r128542 = r128538 + r128541;
double r128543 = r128509 ? r128531 : r128542;
return r128543;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < 5.894619063055018e-162Initial program 37.4
rmApplied associate-*l/37.4
Applied cbrt-div33.1
Taylor expanded around -inf 31.8
if 5.894619063055018e-162 < g Initial program 34.3
rmApplied associate-*l/34.3
Applied cbrt-div30.7
rmApplied flip-+30.6
Applied associate-*r/30.7
Applied cbrt-div30.7
Final simplification31.3
herbie shell --seed 2020018
(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))))))))