\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 r253834 = 1.0;
double r253835 = 2.0;
double r253836 = a;
double r253837 = r253835 * r253836;
double r253838 = r253834 / r253837;
double r253839 = g;
double r253840 = -r253839;
double r253841 = r253839 * r253839;
double r253842 = h;
double r253843 = r253842 * r253842;
double r253844 = r253841 - r253843;
double r253845 = sqrt(r253844);
double r253846 = r253840 + r253845;
double r253847 = r253838 * r253846;
double r253848 = cbrt(r253847);
double r253849 = r253840 - r253845;
double r253850 = r253838 * r253849;
double r253851 = cbrt(r253850);
double r253852 = r253848 + r253851;
return r253852;
}
double f(double g, double h, double a) {
double r253853 = 1.0;
double r253854 = 2.0;
double r253855 = a;
double r253856 = r253854 * r253855;
double r253857 = r253853 / r253856;
double r253858 = cbrt(r253857);
double r253859 = g;
double r253860 = -r253859;
double r253861 = r253859 * r253859;
double r253862 = h;
double r253863 = r253862 * r253862;
double r253864 = r253861 - r253863;
double r253865 = sqrt(r253864);
double r253866 = r253860 + r253865;
double r253867 = cbrt(r253866);
double r253868 = r253858 * r253867;
double r253869 = r253860 - r253865;
double r253870 = r253853 * r253869;
double r253871 = cbrt(r253870);
double r253872 = cbrt(r253856);
double r253873 = r253871 / r253872;
double r253874 = r253868 + r253873;
return r253874;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 36.0
rmApplied cbrt-prod34.0
rmApplied associate-*l/34.0
Applied cbrt-div32.3
Final simplification32.3
herbie shell --seed 2020024
(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))))))))