\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]{\sqrt{g \cdot g - h \cdot h} - g} + \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 r157696 = 1.0;
double r157697 = 2.0;
double r157698 = a;
double r157699 = r157697 * r157698;
double r157700 = r157696 / r157699;
double r157701 = g;
double r157702 = -r157701;
double r157703 = r157701 * r157701;
double r157704 = h;
double r157705 = r157704 * r157704;
double r157706 = r157703 - r157705;
double r157707 = sqrt(r157706);
double r157708 = r157702 + r157707;
double r157709 = r157700 * r157708;
double r157710 = cbrt(r157709);
double r157711 = r157702 - r157707;
double r157712 = r157700 * r157711;
double r157713 = cbrt(r157712);
double r157714 = r157710 + r157713;
return r157714;
}
double f(double g, double h, double a) {
double r157715 = 1.0;
double r157716 = 2.0;
double r157717 = a;
double r157718 = r157716 * r157717;
double r157719 = r157715 / r157718;
double r157720 = cbrt(r157719);
double r157721 = g;
double r157722 = r157721 * r157721;
double r157723 = h;
double r157724 = r157723 * r157723;
double r157725 = r157722 - r157724;
double r157726 = sqrt(r157725);
double r157727 = r157726 - r157721;
double r157728 = cbrt(r157727);
double r157729 = r157720 * r157728;
double r157730 = -r157721;
double r157731 = r157730 - r157726;
double r157732 = r157715 * r157731;
double r157733 = cbrt(r157732);
double r157734 = cbrt(r157718);
double r157735 = r157733 / r157734;
double r157736 = r157729 + r157735;
return r157736;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.8
Simplified35.8
rmApplied associate-*l/35.8
Applied cbrt-div34.0
rmApplied cbrt-prod32.2
Final simplification32.2
herbie shell --seed 2020042
(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))))))))