\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.7601370127167322 \cdot 10^{-167}:\\
\;\;\;\;\frac{\sqrt[3]{1 \cdot \left(\left(-g\right) + -1 \cdot g\right)}}{\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}:\\
\;\;\;\;\frac{\sqrt[3]{1 \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \left(\sqrt[3]{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}\right) \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}}\\
\end{array}double f(double g, double h, double a) {
double r126338 = 1.0;
double r126339 = 2.0;
double r126340 = a;
double r126341 = r126339 * r126340;
double r126342 = r126338 / r126341;
double r126343 = g;
double r126344 = -r126343;
double r126345 = r126343 * r126343;
double r126346 = h;
double r126347 = r126346 * r126346;
double r126348 = r126345 - r126347;
double r126349 = sqrt(r126348);
double r126350 = r126344 + r126349;
double r126351 = r126342 * r126350;
double r126352 = cbrt(r126351);
double r126353 = r126344 - r126349;
double r126354 = r126342 * r126353;
double r126355 = cbrt(r126354);
double r126356 = r126352 + r126355;
return r126356;
}
double f(double g, double h, double a) {
double r126357 = g;
double r126358 = 1.760137012716732e-167;
bool r126359 = r126357 <= r126358;
double r126360 = 1.0;
double r126361 = -r126357;
double r126362 = -1.0;
double r126363 = r126362 * r126357;
double r126364 = r126361 + r126363;
double r126365 = r126360 * r126364;
double r126366 = cbrt(r126365);
double r126367 = 2.0;
double r126368 = a;
double r126369 = r126367 * r126368;
double r126370 = cbrt(r126369);
double r126371 = r126366 / r126370;
double r126372 = r126360 / r126369;
double r126373 = r126357 * r126357;
double r126374 = h;
double r126375 = r126374 * r126374;
double r126376 = r126373 - r126375;
double r126377 = sqrt(r126376);
double r126378 = r126361 - r126377;
double r126379 = r126372 * r126378;
double r126380 = cbrt(r126379);
double r126381 = r126371 + r126380;
double r126382 = r126361 + r126377;
double r126383 = r126360 * r126382;
double r126384 = cbrt(r126383);
double r126385 = r126384 / r126370;
double r126386 = cbrt(r126372);
double r126387 = cbrt(r126377);
double r126388 = r126387 * r126387;
double r126389 = r126388 * r126387;
double r126390 = r126361 - r126389;
double r126391 = cbrt(r126390);
double r126392 = r126386 * r126391;
double r126393 = r126385 + r126392;
double r126394 = r126359 ? r126381 : r126393;
return r126394;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < 1.760137012716732e-167Initial program 37.6
rmApplied associate-*l/37.6
Applied cbrt-div34.2
Taylor expanded around -inf 32.9
if 1.760137012716732e-167 < g Initial program 35.5
rmApplied associate-*l/35.5
Applied cbrt-div35.4
rmApplied cbrt-prod31.4
rmApplied add-cube-cbrt31.4
Final simplification32.2
herbie shell --seed 2020025
(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))))))))