\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 8.856201020375248 \cdot 10^{-207}:\\
\;\;\;\;\sqrt[3]{\frac{1}{a \cdot 2} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)} + \frac{\sqrt[3]{-\left(g + g\right)}}{\sqrt[3]{a \cdot 2}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\left(g + \left(-g\right)\right) \cdot \frac{1}{a \cdot 2}} + \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\frac{1}{a \cdot 2}}\\
\end{array}double f(double g, double h, double a) {
double r5188508 = 1.0;
double r5188509 = 2.0;
double r5188510 = a;
double r5188511 = r5188509 * r5188510;
double r5188512 = r5188508 / r5188511;
double r5188513 = g;
double r5188514 = -r5188513;
double r5188515 = r5188513 * r5188513;
double r5188516 = h;
double r5188517 = r5188516 * r5188516;
double r5188518 = r5188515 - r5188517;
double r5188519 = sqrt(r5188518);
double r5188520 = r5188514 + r5188519;
double r5188521 = r5188512 * r5188520;
double r5188522 = cbrt(r5188521);
double r5188523 = r5188514 - r5188519;
double r5188524 = r5188512 * r5188523;
double r5188525 = cbrt(r5188524);
double r5188526 = r5188522 + r5188525;
return r5188526;
}
double f(double g, double h, double a) {
double r5188527 = g;
double r5188528 = 8.856201020375248e-207;
bool r5188529 = r5188527 <= r5188528;
double r5188530 = 1.0;
double r5188531 = a;
double r5188532 = 2.0;
double r5188533 = r5188531 * r5188532;
double r5188534 = r5188530 / r5188533;
double r5188535 = -r5188527;
double r5188536 = r5188527 * r5188527;
double r5188537 = h;
double r5188538 = r5188537 * r5188537;
double r5188539 = r5188536 - r5188538;
double r5188540 = sqrt(r5188539);
double r5188541 = r5188535 - r5188540;
double r5188542 = r5188534 * r5188541;
double r5188543 = cbrt(r5188542);
double r5188544 = r5188527 + r5188527;
double r5188545 = -r5188544;
double r5188546 = cbrt(r5188545);
double r5188547 = cbrt(r5188533);
double r5188548 = r5188546 / r5188547;
double r5188549 = r5188543 + r5188548;
double r5188550 = r5188527 + r5188535;
double r5188551 = r5188550 * r5188534;
double r5188552 = cbrt(r5188551);
double r5188553 = cbrt(r5188541);
double r5188554 = cbrt(r5188534);
double r5188555 = r5188553 * r5188554;
double r5188556 = r5188552 + r5188555;
double r5188557 = r5188529 ? r5188549 : r5188556;
return r5188557;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < 8.856201020375248e-207Initial program 35.5
rmApplied associate-*l/35.5
Applied cbrt-div31.8
Taylor expanded around -inf 31.2
Simplified31.2
if 8.856201020375248e-207 < g Initial program 34.4
rmApplied cbrt-prod30.8
Taylor expanded around inf 30.6
Final simplification30.9
herbie shell --seed 2019130
(FPCore (g h a)
:name "2-ancestry mixing, positive discriminant"
(+ (cbrt (* (/ 1 (* 2 a)) (+ (- g) (sqrt (- (* g g) (* h h)))))) (cbrt (* (/ 1 (* 2 a)) (- (- g) (sqrt (- (* g g) (* h h))))))))