\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 -6.3921017940024375 \cdot 10^{-161}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{1}{2} \cdot \left(\sqrt{\left(g - h\right) \cdot \left(g + h\right)} - g\right)}}{\sqrt[3]{a}} + \sqrt[3]{\frac{\frac{-1}{2}}{a}} \cdot \sqrt[3]{\frac{h \cdot h}{g - \sqrt{\left(g - h\right) \cdot \left(g + h\right)}}}\\
\mathbf{elif}\;g \le 1.1669440241605785 \cdot 10^{-166}:\\
\;\;\;\;\sqrt[3]{\frac{\frac{1}{2}}{a} \cdot \left(\sqrt{\left(g - h\right) \cdot \left(g + h\right)} - g\right)} + \sqrt[3]{g + g} \cdot \sqrt[3]{\frac{\frac{-1}{2}}{a}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\frac{-h \cdot h}{g + \sqrt{\left(g - h\right) \cdot \left(g + h\right)}}} \cdot \sqrt[3]{\frac{\frac{1}{2}}{a}} + \sqrt[3]{g + \sqrt{\left(g - h\right) \cdot \left(g + h\right)}} \cdot \sqrt[3]{\frac{\frac{-1}{2}}{a}}\\
\end{array}double f(double g, double h, double a) {
double r4927328 = 1.0;
double r4927329 = 2.0;
double r4927330 = a;
double r4927331 = r4927329 * r4927330;
double r4927332 = r4927328 / r4927331;
double r4927333 = g;
double r4927334 = -r4927333;
double r4927335 = r4927333 * r4927333;
double r4927336 = h;
double r4927337 = r4927336 * r4927336;
double r4927338 = r4927335 - r4927337;
double r4927339 = sqrt(r4927338);
double r4927340 = r4927334 + r4927339;
double r4927341 = r4927332 * r4927340;
double r4927342 = cbrt(r4927341);
double r4927343 = r4927334 - r4927339;
double r4927344 = r4927332 * r4927343;
double r4927345 = cbrt(r4927344);
double r4927346 = r4927342 + r4927345;
return r4927346;
}
double f(double g, double h, double a) {
double r4927347 = g;
double r4927348 = -6.3921017940024375e-161;
bool r4927349 = r4927347 <= r4927348;
double r4927350 = 0.5;
double r4927351 = h;
double r4927352 = r4927347 - r4927351;
double r4927353 = r4927347 + r4927351;
double r4927354 = r4927352 * r4927353;
double r4927355 = sqrt(r4927354);
double r4927356 = r4927355 - r4927347;
double r4927357 = r4927350 * r4927356;
double r4927358 = cbrt(r4927357);
double r4927359 = a;
double r4927360 = cbrt(r4927359);
double r4927361 = r4927358 / r4927360;
double r4927362 = -0.5;
double r4927363 = r4927362 / r4927359;
double r4927364 = cbrt(r4927363);
double r4927365 = r4927351 * r4927351;
double r4927366 = r4927347 - r4927355;
double r4927367 = r4927365 / r4927366;
double r4927368 = cbrt(r4927367);
double r4927369 = r4927364 * r4927368;
double r4927370 = r4927361 + r4927369;
double r4927371 = 1.1669440241605785e-166;
bool r4927372 = r4927347 <= r4927371;
double r4927373 = r4927350 / r4927359;
double r4927374 = r4927373 * r4927356;
double r4927375 = cbrt(r4927374);
double r4927376 = r4927347 + r4927347;
double r4927377 = cbrt(r4927376);
double r4927378 = r4927377 * r4927364;
double r4927379 = r4927375 + r4927378;
double r4927380 = -r4927365;
double r4927381 = r4927347 + r4927355;
double r4927382 = r4927380 / r4927381;
double r4927383 = cbrt(r4927382);
double r4927384 = cbrt(r4927373);
double r4927385 = r4927383 * r4927384;
double r4927386 = cbrt(r4927381);
double r4927387 = r4927386 * r4927364;
double r4927388 = r4927385 + r4927387;
double r4927389 = r4927372 ? r4927379 : r4927388;
double r4927390 = r4927349 ? r4927370 : r4927389;
return r4927390;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -6.3921017940024375e-161Initial program 34.4
Simplified34.4
rmApplied cbrt-prod34.3
rmApplied associate-*l/34.3
Applied cbrt-div30.4
rmApplied flip-+30.2
Simplified29.1
if -6.3921017940024375e-161 < g < 1.1669440241605785e-166Initial program 55.0
Simplified55.0
rmApplied cbrt-prod51.1
Taylor expanded around inf 36.0
if 1.1669440241605785e-166 < g Initial program 33.8
Simplified33.8
rmApplied cbrt-prod30.1
rmApplied cbrt-prod30.1
rmApplied flip--29.9
Simplified28.9
Final simplification29.4
herbie shell --seed 2019162
(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))))))))