\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(\sqrt{g \cdot g - h \cdot h} + \left(-g\right)\right)}}{\sqrt[3]{2 \cdot a}}double f(double g, double h, double a) {
double r4287451 = 1.0;
double r4287452 = 2.0;
double r4287453 = a;
double r4287454 = r4287452 * r4287453;
double r4287455 = r4287451 / r4287454;
double r4287456 = g;
double r4287457 = -r4287456;
double r4287458 = r4287456 * r4287456;
double r4287459 = h;
double r4287460 = r4287459 * r4287459;
double r4287461 = r4287458 - r4287460;
double r4287462 = sqrt(r4287461);
double r4287463 = r4287457 + r4287462;
double r4287464 = r4287455 * r4287463;
double r4287465 = cbrt(r4287464);
double r4287466 = r4287457 - r4287462;
double r4287467 = r4287455 * r4287466;
double r4287468 = cbrt(r4287467);
double r4287469 = r4287465 + r4287468;
return r4287469;
}
double f(double g, double h, double a) {
double r4287470 = 1.0;
double r4287471 = g;
double r4287472 = -r4287471;
double r4287473 = r4287471 * r4287471;
double r4287474 = h;
double r4287475 = r4287474 * r4287474;
double r4287476 = r4287473 - r4287475;
double r4287477 = sqrt(r4287476);
double r4287478 = r4287472 - r4287477;
double r4287479 = r4287470 * r4287478;
double r4287480 = cbrt(r4287479);
double r4287481 = 2.0;
double r4287482 = a;
double r4287483 = r4287481 * r4287482;
double r4287484 = cbrt(r4287483);
double r4287485 = r4287480 / r4287484;
double r4287486 = r4287477 + r4287472;
double r4287487 = r4287470 * r4287486;
double r4287488 = cbrt(r4287487);
double r4287489 = r4287488 / r4287484;
double r4287490 = r4287485 + r4287489;
return r4287490;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.9
rmApplied associate-*l/35.9
Applied cbrt-div33.9
rmApplied associate-*l/33.9
Applied cbrt-div32.2
Final simplification32.2
herbie shell --seed 2019170 +o rules:numerics
(FPCore (g h a)
:name "2-ancestry mixing, positive discriminant"
(+ (cbrt (* (/ 1.0 (* 2.0 a)) (+ (- g) (sqrt (- (* g g) (* h h)))))) (cbrt (* (/ 1.0 (* 2.0 a)) (- (- g) (sqrt (- (* g g) (* h h))))))))