\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)}\frac{\sqrt[3]{1 \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}} + \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 r150769 = 1.0;
double r150770 = 2.0;
double r150771 = a;
double r150772 = r150770 * r150771;
double r150773 = r150769 / r150772;
double r150774 = g;
double r150775 = -r150774;
double r150776 = r150774 * r150774;
double r150777 = h;
double r150778 = r150777 * r150777;
double r150779 = r150776 - r150778;
double r150780 = sqrt(r150779);
double r150781 = r150775 + r150780;
double r150782 = r150773 * r150781;
double r150783 = cbrt(r150782);
double r150784 = r150775 - r150780;
double r150785 = r150773 * r150784;
double r150786 = cbrt(r150785);
double r150787 = r150783 + r150786;
return r150787;
}
double f(double g, double h, double a) {
double r150788 = 1.0;
double r150789 = g;
double r150790 = -r150789;
double r150791 = r150789 * r150789;
double r150792 = h;
double r150793 = r150792 * r150792;
double r150794 = r150791 - r150793;
double r150795 = sqrt(r150794);
double r150796 = r150790 + r150795;
double r150797 = r150788 * r150796;
double r150798 = cbrt(r150797);
double r150799 = 2.0;
double r150800 = a;
double r150801 = r150799 * r150800;
double r150802 = cbrt(r150801);
double r150803 = r150798 / r150802;
double r150804 = r150790 - r150795;
double r150805 = r150788 * r150804;
double r150806 = cbrt(r150805);
double r150807 = r150806 / r150802;
double r150808 = r150803 + r150807;
return r150808;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 36.2
rmApplied associate-*l/36.2
Applied cbrt-div34.2
rmApplied associate-*l/34.2
Applied cbrt-div32.3
Final simplification32.3
herbie shell --seed 2020100
(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))))))))