\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]{\sqrt{g \cdot g - h \cdot h} - g} + \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 r130562 = 1.0;
double r130563 = 2.0;
double r130564 = a;
double r130565 = r130563 * r130564;
double r130566 = r130562 / r130565;
double r130567 = g;
double r130568 = -r130567;
double r130569 = r130567 * r130567;
double r130570 = h;
double r130571 = r130570 * r130570;
double r130572 = r130569 - r130571;
double r130573 = sqrt(r130572);
double r130574 = r130568 + r130573;
double r130575 = r130566 * r130574;
double r130576 = cbrt(r130575);
double r130577 = r130568 - r130573;
double r130578 = r130566 * r130577;
double r130579 = cbrt(r130578);
double r130580 = r130576 + r130579;
return r130580;
}
double f(double g, double h, double a) {
double r130581 = 1.0;
double r130582 = 2.0;
double r130583 = a;
double r130584 = r130582 * r130583;
double r130585 = r130581 / r130584;
double r130586 = cbrt(r130585);
double r130587 = g;
double r130588 = r130587 * r130587;
double r130589 = h;
double r130590 = r130589 * r130589;
double r130591 = r130588 - r130590;
double r130592 = sqrt(r130591);
double r130593 = r130592 - r130587;
double r130594 = cbrt(r130593);
double r130595 = r130586 * r130594;
double r130596 = -r130587;
double r130597 = r130596 - r130592;
double r130598 = r130581 * r130597;
double r130599 = cbrt(r130598);
double r130600 = cbrt(r130584);
double r130601 = r130599 / r130600;
double r130602 = r130595 + r130601;
return r130602;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 36.6
rmApplied cbrt-prod34.6
Simplified34.6
rmApplied associate-*l/34.6
Applied cbrt-div32.8
Final simplification32.8
herbie shell --seed 2019351 +o rules:numerics
(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))))))))