\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]{\sqrt{g \cdot g - h \cdot h} - g} \cdot \sqrt[3]{\frac{1}{a \cdot 2}} + \frac{\sqrt[3]{\left(\sqrt{g \cdot g - h \cdot h} + g\right) \cdot \frac{-1}{2}}}{\sqrt[3]{a}}double f(double g, double h, double a) {
double r4606072 = 1.0;
double r4606073 = 2.0;
double r4606074 = a;
double r4606075 = r4606073 * r4606074;
double r4606076 = r4606072 / r4606075;
double r4606077 = g;
double r4606078 = -r4606077;
double r4606079 = r4606077 * r4606077;
double r4606080 = h;
double r4606081 = r4606080 * r4606080;
double r4606082 = r4606079 - r4606081;
double r4606083 = sqrt(r4606082);
double r4606084 = r4606078 + r4606083;
double r4606085 = r4606076 * r4606084;
double r4606086 = cbrt(r4606085);
double r4606087 = r4606078 - r4606083;
double r4606088 = r4606076 * r4606087;
double r4606089 = cbrt(r4606088);
double r4606090 = r4606086 + r4606089;
return r4606090;
}
double f(double g, double h, double a) {
double r4606091 = g;
double r4606092 = r4606091 * r4606091;
double r4606093 = h;
double r4606094 = r4606093 * r4606093;
double r4606095 = r4606092 - r4606094;
double r4606096 = sqrt(r4606095);
double r4606097 = r4606096 - r4606091;
double r4606098 = cbrt(r4606097);
double r4606099 = 1.0;
double r4606100 = a;
double r4606101 = 2.0;
double r4606102 = r4606100 * r4606101;
double r4606103 = r4606099 / r4606102;
double r4606104 = cbrt(r4606103);
double r4606105 = r4606098 * r4606104;
double r4606106 = r4606096 + r4606091;
double r4606107 = -0.5;
double r4606108 = r4606106 * r4606107;
double r4606109 = cbrt(r4606108);
double r4606110 = cbrt(r4606100);
double r4606111 = r4606109 / r4606110;
double r4606112 = r4606105 + r4606111;
return r4606112;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.3
Simplified35.2
rmApplied associate-*r/35.2
Applied cbrt-div33.2
rmApplied div-inv33.2
Applied cbrt-prod31.4
Final simplification31.4
herbie shell --seed 2019152
(FPCore (g h a)
:name "2-ancestry mixing, positive discriminant"
(+ (cbrt (* (/ 1 (* 2 a)) (+ (- g) (sqrt (- (* g g) (* h h)))))) (cbrt (* (/ 1 (* 2 a)) (- (- g) (sqrt (- (* g g) (* h h))))))))