\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 -3.421984391530689600469067551996753796002 \cdot 10^{-165}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{h \cdot h}{\frac{2 \cdot a}{1}}}}{\sqrt[3]{\sqrt{g \cdot g - h \cdot h} - g}} + \frac{\sqrt[3]{1 \cdot \left(\sqrt{g \cdot g - h \cdot h} - g\right)}}{\sqrt[3]{2 \cdot a}}\\
\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 r85597 = 1.0;
double r85598 = 2.0;
double r85599 = a;
double r85600 = r85598 * r85599;
double r85601 = r85597 / r85600;
double r85602 = g;
double r85603 = -r85602;
double r85604 = r85602 * r85602;
double r85605 = h;
double r85606 = r85605 * r85605;
double r85607 = r85604 - r85606;
double r85608 = sqrt(r85607);
double r85609 = r85603 + r85608;
double r85610 = r85601 * r85609;
double r85611 = cbrt(r85610);
double r85612 = r85603 - r85608;
double r85613 = r85601 * r85612;
double r85614 = cbrt(r85613);
double r85615 = r85611 + r85614;
return r85615;
}
double f(double g, double h, double a) {
double r85616 = g;
double r85617 = -3.4219843915306896e-165;
bool r85618 = r85616 <= r85617;
double r85619 = h;
double r85620 = r85619 * r85619;
double r85621 = 2.0;
double r85622 = a;
double r85623 = r85621 * r85622;
double r85624 = 1.0;
double r85625 = r85623 / r85624;
double r85626 = r85620 / r85625;
double r85627 = cbrt(r85626);
double r85628 = r85616 * r85616;
double r85629 = r85628 - r85620;
double r85630 = sqrt(r85629);
double r85631 = r85630 - r85616;
double r85632 = cbrt(r85631);
double r85633 = r85627 / r85632;
double r85634 = r85624 * r85631;
double r85635 = cbrt(r85634);
double r85636 = cbrt(r85623);
double r85637 = r85635 / r85636;
double r85638 = r85633 + r85637;
double r85639 = r85624 / r85623;
double r85640 = -r85616;
double r85641 = r85640 + r85630;
double r85642 = r85639 * r85641;
double r85643 = cbrt(r85642);
double r85644 = cbrt(r85639);
double r85645 = r85640 - r85616;
double r85646 = cbrt(r85645);
double r85647 = r85644 * r85646;
double r85648 = r85643 + r85647;
double r85649 = r85618 ? r85638 : r85648;
return r85649;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -3.4219843915306896e-165Initial program 35.3
rmApplied associate-*l/35.3
Applied cbrt-div31.4
Simplified31.4
rmApplied flip--31.3
Applied associate-*r/31.4
Applied cbrt-div31.4
Simplified31.5
Simplified31.5
if -3.4219843915306896e-165 < g Initial program 36.9
rmApplied cbrt-prod33.0
Taylor expanded around inf 31.7
Final simplification31.6
herbie shell --seed 2019325
(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))))))))