double f(double g, double h, double a) {
double r18105408 = 1.0;
double r18105409 = 2.0;
double r18105410 = a;
double r18105411 = r18105409 * r18105410;
double r18105412 = r18105408 / r18105411;
double r18105413 = g;
double r18105414 = -r18105413;
double r18105415 = r18105413 * r18105413;
double r18105416 = h;
double r18105417 = r18105416 * r18105416;
double r18105418 = r18105415 - r18105417;
double r18105419 = sqrt(r18105418);
double r18105420 = r18105414 + r18105419;
double r18105421 = r18105412 * r18105420;
double r18105422 = cbrt(r18105421);
double r18105423 = r18105414 - r18105419;
double r18105424 = r18105412 * r18105423;
double r18105425 = cbrt(r18105424);
double r18105426 = r18105422 + r18105425;
return r18105426;
}
double f(double g, double h, double a) {
double r18105427 = g;
double r18105428 = -1.5642964097194712e-162;
bool r18105429 = r18105427 <= r18105428;
double r18105430 = r18105427 * r18105427;
double r18105431 = h;
double r18105432 = r18105431 * r18105431;
double r18105433 = r18105430 - r18105432;
double r18105434 = sqrt(r18105433);
double r18105435 = r18105434 - r18105427;
double r18105436 = cbrt(r18105435);
double r18105437 = 2.0;
double r18105438 = a;
double r18105439 = r18105437 * r18105438;
double r18105440 = cbrt(r18105439);
double r18105441 = r18105436 / r18105440;
double r18105442 = 1.0;
double r18105443 = r18105442 / r18105439;
double r18105444 = -r18105427;
double r18105445 = r18105444 - r18105434;
double r18105446 = r18105443 * r18105445;
double r18105447 = cbrt(r18105446);
double r18105448 = r18105441 + r18105447;
double r18105449 = r18105444 + r18105427;
double r18105450 = r18105449 * r18105443;
double r18105451 = cbrt(r18105450);
double r18105452 = cbrt(r18105445);
double r18105453 = r18105452 / r18105440;
double r18105454 = r18105451 + r18105453;
double r18105455 = r18105429 ? r18105448 : r18105454;
return r18105455;
}
\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.5642964097194712 \cdot 10^{-162}:\\
\;\;\;\;\frac{\sqrt[3]{\sqrt{g \cdot g - h \cdot h} - g}}{\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}:\\
\;\;\;\;\sqrt[3]{\left(\left(-g\right) + g\right) \cdot \frac{1}{2 \cdot a}} + \frac{\sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}}{\sqrt[3]{2 \cdot a}}\\
\end{array}


Bits error versus g



Bits error versus h



Bits error versus a
if g < -1.5642964097194712e-162Initial program 33.6
rmApplied associate-*l/33.6
Applied cbrt-div29.8
Simplified29.8
if -1.5642964097194712e-162 < g Initial program 36.6
rmApplied associate-*l/36.6
Applied cbrt-div33.2
Simplified33.2
Taylor expanded around inf 33.0
Final simplification31.5
herbie shell --seed 2019102 +o rules:numerics
(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))))))))