\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 r154458 = 1.0;
double r154459 = 2.0;
double r154460 = a;
double r154461 = r154459 * r154460;
double r154462 = r154458 / r154461;
double r154463 = g;
double r154464 = -r154463;
double r154465 = r154463 * r154463;
double r154466 = h;
double r154467 = r154466 * r154466;
double r154468 = r154465 - r154467;
double r154469 = sqrt(r154468);
double r154470 = r154464 + r154469;
double r154471 = r154462 * r154470;
double r154472 = cbrt(r154471);
double r154473 = r154464 - r154469;
double r154474 = r154462 * r154473;
double r154475 = cbrt(r154474);
double r154476 = r154472 + r154475;
return r154476;
}
double f(double g, double h, double a) {
double r154477 = 1.0;
double r154478 = 2.0;
double r154479 = a;
double r154480 = r154478 * r154479;
double r154481 = r154477 / r154480;
double r154482 = cbrt(r154481);
double r154483 = g;
double r154484 = -r154483;
double r154485 = r154483 * r154483;
double r154486 = h;
double r154487 = r154486 * r154486;
double r154488 = r154485 - r154487;
double r154489 = sqrt(r154488);
double r154490 = r154484 + r154489;
double r154491 = cbrt(r154490);
double r154492 = r154482 * r154491;
double r154493 = r154484 - r154489;
double r154494 = r154477 * r154493;
double r154495 = cbrt(r154494);
double r154496 = cbrt(r154480);
double r154497 = r154495 / r154496;
double r154498 = r154492 + r154497;
return r154498;
}



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 +o rules:numerics
(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))))))))