\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.1125630341124718 \cdot 10^{-161}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \sqrt{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt{\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}}\\
\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) - g\right)}}{\sqrt[3]{2 \cdot a}}\\
\end{array}double f(double g, double h, double a) {
double r146525 = 1.0;
double r146526 = 2.0;
double r146527 = a;
double r146528 = r146526 * r146527;
double r146529 = r146525 / r146528;
double r146530 = g;
double r146531 = -r146530;
double r146532 = r146530 * r146530;
double r146533 = h;
double r146534 = r146533 * r146533;
double r146535 = r146532 - r146534;
double r146536 = sqrt(r146535);
double r146537 = r146531 + r146536;
double r146538 = r146529 * r146537;
double r146539 = cbrt(r146538);
double r146540 = r146531 - r146536;
double r146541 = r146529 * r146540;
double r146542 = cbrt(r146541);
double r146543 = r146539 + r146542;
return r146543;
}
double f(double g, double h, double a) {
double r146544 = g;
double r146545 = -1.1125630341124718e-161;
bool r146546 = r146544 <= r146545;
double r146547 = 1.0;
double r146548 = 2.0;
double r146549 = a;
double r146550 = r146548 * r146549;
double r146551 = r146547 / r146550;
double r146552 = cbrt(r146551);
double r146553 = -r146544;
double r146554 = r146544 * r146544;
double r146555 = h;
double r146556 = r146555 * r146555;
double r146557 = r146554 - r146556;
double r146558 = sqrt(r146557);
double r146559 = sqrt(r146558);
double r146560 = r146559 * r146559;
double r146561 = r146553 + r146560;
double r146562 = cbrt(r146561);
double r146563 = r146552 * r146562;
double r146564 = r146553 - r146558;
double r146565 = r146547 * r146564;
double r146566 = cbrt(r146565);
double r146567 = cbrt(r146550);
double r146568 = r146566 / r146567;
double r146569 = r146563 + r146568;
double r146570 = r146553 + r146558;
double r146571 = r146551 * r146570;
double r146572 = cbrt(r146571);
double r146573 = r146553 - r146544;
double r146574 = r146547 * r146573;
double r146575 = cbrt(r146574);
double r146576 = r146575 / r146567;
double r146577 = r146572 + r146576;
double r146578 = r146546 ? r146569 : r146577;
return r146578;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -1.1125630341124718e-161Initial program 33.9
rmApplied associate-*l/33.9
Applied cbrt-div33.9
rmApplied cbrt-prod30.2
rmApplied add-sqr-sqrt30.2
Applied sqrt-prod30.2
if -1.1125630341124718e-161 < g Initial program 36.9
rmApplied associate-*l/36.9
Applied cbrt-div33.1
Taylor expanded around inf 32.0
Final simplification31.1
herbie shell --seed 2020036
(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))))))))