\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 r158247 = 1.0;
double r158248 = 2.0;
double r158249 = a;
double r158250 = r158248 * r158249;
double r158251 = r158247 / r158250;
double r158252 = g;
double r158253 = -r158252;
double r158254 = r158252 * r158252;
double r158255 = h;
double r158256 = r158255 * r158255;
double r158257 = r158254 - r158256;
double r158258 = sqrt(r158257);
double r158259 = r158253 + r158258;
double r158260 = r158251 * r158259;
double r158261 = cbrt(r158260);
double r158262 = r158253 - r158258;
double r158263 = r158251 * r158262;
double r158264 = cbrt(r158263);
double r158265 = r158261 + r158264;
return r158265;
}
double f(double g, double h, double a) {
double r158266 = 1.0;
double r158267 = g;
double r158268 = -r158267;
double r158269 = r158267 * r158267;
double r158270 = h;
double r158271 = r158270 * r158270;
double r158272 = r158269 - r158271;
double r158273 = sqrt(r158272);
double r158274 = r158268 + r158273;
double r158275 = r158266 * r158274;
double r158276 = cbrt(r158275);
double r158277 = 2.0;
double r158278 = a;
double r158279 = r158277 * r158278;
double r158280 = cbrt(r158279);
double r158281 = r158276 / r158280;
double r158282 = r158268 - r158273;
double r158283 = r158266 * r158282;
double r158284 = cbrt(r158283);
double r158285 = r158284 / r158280;
double r158286 = r158281 + r158285;
return r158286;
}



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))))))))