\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)}\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}}double f(double g, double h, double a) {
double r164375 = 1.0;
double r164376 = 2.0;
double r164377 = a;
double r164378 = r164376 * r164377;
double r164379 = r164375 / r164378;
double r164380 = g;
double r164381 = -r164380;
double r164382 = r164380 * r164380;
double r164383 = h;
double r164384 = r164383 * r164383;
double r164385 = r164382 - r164384;
double r164386 = sqrt(r164385);
double r164387 = r164381 + r164386;
double r164388 = r164379 * r164387;
double r164389 = cbrt(r164388);
double r164390 = r164381 - r164386;
double r164391 = r164379 * r164390;
double r164392 = cbrt(r164391);
double r164393 = r164389 + r164392;
return r164393;
}
double f(double g, double h, double a) {
double r164394 = 1.0;
double r164395 = 2.0;
double r164396 = a;
double r164397 = r164395 * r164396;
double r164398 = r164394 / r164397;
double r164399 = cbrt(r164398);
double r164400 = g;
double r164401 = -r164400;
double r164402 = r164400 * r164400;
double r164403 = h;
double r164404 = r164403 * r164403;
double r164405 = r164402 - r164404;
double r164406 = sqrt(r164405);
double r164407 = r164401 + r164406;
double r164408 = cbrt(r164407);
double r164409 = r164399 * r164408;
double r164410 = r164401 - r164406;
double r164411 = r164394 * r164410;
double r164412 = cbrt(r164411);
double r164413 = cbrt(r164397);
double r164414 = r164412 / r164413;
double r164415 = r164409 + r164414;
return r164415;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.7
rmApplied associate-*l/35.7
Applied cbrt-div33.6
rmApplied cbrt-prod31.8
Final simplification31.8
herbie shell --seed 2020003
(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))))))))