\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]{\frac{-1}{2} \cdot \left(\sqrt{g \cdot g - h \cdot h} + g\right)}}{\sqrt[3]{a}} + \sqrt[3]{\frac{\frac{1}{2}}{a}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h} - g}double f(double g, double h, double a) {
double r7523353 = 1.0;
double r7523354 = 2.0;
double r7523355 = a;
double r7523356 = r7523354 * r7523355;
double r7523357 = r7523353 / r7523356;
double r7523358 = g;
double r7523359 = -r7523358;
double r7523360 = r7523358 * r7523358;
double r7523361 = h;
double r7523362 = r7523361 * r7523361;
double r7523363 = r7523360 - r7523362;
double r7523364 = sqrt(r7523363);
double r7523365 = r7523359 + r7523364;
double r7523366 = r7523357 * r7523365;
double r7523367 = cbrt(r7523366);
double r7523368 = r7523359 - r7523364;
double r7523369 = r7523357 * r7523368;
double r7523370 = cbrt(r7523369);
double r7523371 = r7523367 + r7523370;
return r7523371;
}
double f(double g, double h, double a) {
double r7523372 = -0.5;
double r7523373 = g;
double r7523374 = r7523373 * r7523373;
double r7523375 = h;
double r7523376 = r7523375 * r7523375;
double r7523377 = r7523374 - r7523376;
double r7523378 = sqrt(r7523377);
double r7523379 = r7523378 + r7523373;
double r7523380 = r7523372 * r7523379;
double r7523381 = cbrt(r7523380);
double r7523382 = a;
double r7523383 = cbrt(r7523382);
double r7523384 = r7523381 / r7523383;
double r7523385 = 0.5;
double r7523386 = r7523385 / r7523382;
double r7523387 = cbrt(r7523386);
double r7523388 = r7523378 - r7523373;
double r7523389 = cbrt(r7523388);
double r7523390 = r7523387 * r7523389;
double r7523391 = r7523384 + r7523390;
return r7523391;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.6
Simplified35.6
rmApplied div-inv35.6
Applied cbrt-prod33.9
Simplified33.9
rmApplied associate-*r/33.9
Applied cbrt-div32.1
Final simplification32.1
herbie shell --seed 2019165
(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))))))))