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



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 36.2
rmApplied associate-*l/36.2
Applied cbrt-div33.9
rmApplied cbrt-prod32.1
Final simplification32.1
herbie shell --seed 2020021
(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))))))))