\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.30056245054299891 \cdot 10^{-159}:\\
\;\;\;\;\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}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}} + \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 r142313 = 1.0;
double r142314 = 2.0;
double r142315 = a;
double r142316 = r142314 * r142315;
double r142317 = r142313 / r142316;
double r142318 = g;
double r142319 = -r142318;
double r142320 = r142318 * r142318;
double r142321 = h;
double r142322 = r142321 * r142321;
double r142323 = r142320 - r142322;
double r142324 = sqrt(r142323);
double r142325 = r142319 + r142324;
double r142326 = r142317 * r142325;
double r142327 = cbrt(r142326);
double r142328 = r142319 - r142324;
double r142329 = r142317 * r142328;
double r142330 = cbrt(r142329);
double r142331 = r142327 + r142330;
return r142331;
}
double f(double g, double h, double a) {
double r142332 = g;
double r142333 = 6.300562450542999e-159;
bool r142334 = r142332 <= r142333;
double r142335 = 1.0;
double r142336 = -r142332;
double r142337 = -1.0;
double r142338 = r142337 * r142332;
double r142339 = r142336 + r142338;
double r142340 = r142335 * r142339;
double r142341 = cbrt(r142340);
double r142342 = 2.0;
double r142343 = a;
double r142344 = r142342 * r142343;
double r142345 = cbrt(r142344);
double r142346 = r142341 / r142345;
double r142347 = r142335 / r142344;
double r142348 = r142332 * r142332;
double r142349 = h;
double r142350 = r142349 * r142349;
double r142351 = r142348 - r142350;
double r142352 = sqrt(r142351);
double r142353 = r142336 - r142352;
double r142354 = r142347 * r142353;
double r142355 = cbrt(r142354);
double r142356 = r142346 + r142355;
double r142357 = cbrt(r142347);
double r142358 = r142336 + r142352;
double r142359 = cbrt(r142358);
double r142360 = r142357 * r142359;
double r142361 = cbrt(r142352);
double r142362 = r142361 * r142361;
double r142363 = r142362 * r142361;
double r142364 = r142336 - r142363;
double r142365 = cbrt(r142364);
double r142366 = r142357 * r142365;
double r142367 = r142360 + r142366;
double r142368 = r142334 ? r142356 : r142367;
return r142368;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < 6.300562450542999e-159Initial program 37.1
rmApplied associate-*l/37.1
Applied cbrt-div33.2
Taylor expanded around -inf 32.0
if 6.300562450542999e-159 < g Initial program 34.8
rmApplied cbrt-prod34.8
rmApplied cbrt-prod31.6
rmApplied add-cube-cbrt31.6
Final simplification31.8
herbie shell --seed 2020083
(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))))))))