\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 r153173 = 1.0;
double r153174 = 2.0;
double r153175 = a;
double r153176 = r153174 * r153175;
double r153177 = r153173 / r153176;
double r153178 = g;
double r153179 = -r153178;
double r153180 = r153178 * r153178;
double r153181 = h;
double r153182 = r153181 * r153181;
double r153183 = r153180 - r153182;
double r153184 = sqrt(r153183);
double r153185 = r153179 + r153184;
double r153186 = r153177 * r153185;
double r153187 = cbrt(r153186);
double r153188 = r153179 - r153184;
double r153189 = r153177 * r153188;
double r153190 = cbrt(r153189);
double r153191 = r153187 + r153190;
return r153191;
}
double f(double g, double h, double a) {
double r153192 = 1.0;
double r153193 = g;
double r153194 = -r153193;
double r153195 = r153193 * r153193;
double r153196 = h;
double r153197 = r153196 * r153196;
double r153198 = r153195 - r153197;
double r153199 = sqrt(r153198);
double r153200 = r153194 + r153199;
double r153201 = r153192 * r153200;
double r153202 = cbrt(r153201);
double r153203 = 2.0;
double r153204 = a;
double r153205 = r153203 * r153204;
double r153206 = cbrt(r153205);
double r153207 = r153202 / r153206;
double r153208 = r153194 - r153199;
double r153209 = r153192 * r153208;
double r153210 = cbrt(r153209);
double r153211 = r153210 / r153206;
double r153212 = r153207 + r153211;
return r153212;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.6
rmApplied associate-*l/35.6
Applied cbrt-div33.7
rmApplied associate-*l/33.7
Applied cbrt-div32.0
Final simplification32.0
herbie shell --seed 2020056
(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))))))))