\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{\sqrt{1}}{\sqrt[3]{\frac{2 \cdot a}{\sqrt{g \cdot g - h \cdot h} - g}} \cdot \sqrt[3]{\frac{2 \cdot a}{\sqrt{g \cdot g - h \cdot h} - g}}}} \cdot \sqrt[3]{\frac{\sqrt{1}}{\sqrt[3]{\frac{2 \cdot a}{\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 r109552 = 1.0;
double r109553 = 2.0;
double r109554 = a;
double r109555 = r109553 * r109554;
double r109556 = r109552 / r109555;
double r109557 = g;
double r109558 = -r109557;
double r109559 = r109557 * r109557;
double r109560 = h;
double r109561 = r109560 * r109560;
double r109562 = r109559 - r109561;
double r109563 = sqrt(r109562);
double r109564 = r109558 + r109563;
double r109565 = r109556 * r109564;
double r109566 = cbrt(r109565);
double r109567 = r109558 - r109563;
double r109568 = r109556 * r109567;
double r109569 = cbrt(r109568);
double r109570 = r109566 + r109569;
return r109570;
}
double f(double g, double h, double a) {
double r109571 = 1.0;
double r109572 = sqrt(r109571);
double r109573 = 2.0;
double r109574 = a;
double r109575 = r109573 * r109574;
double r109576 = g;
double r109577 = r109576 * r109576;
double r109578 = h;
double r109579 = r109578 * r109578;
double r109580 = r109577 - r109579;
double r109581 = sqrt(r109580);
double r109582 = r109581 - r109576;
double r109583 = r109575 / r109582;
double r109584 = cbrt(r109583);
double r109585 = r109584 * r109584;
double r109586 = r109572 / r109585;
double r109587 = cbrt(r109586);
double r109588 = r109572 / r109584;
double r109589 = cbrt(r109588);
double r109590 = r109587 * r109589;
double r109591 = -r109576;
double r109592 = r109591 - r109581;
double r109593 = r109571 * r109592;
double r109594 = cbrt(r109593);
double r109595 = cbrt(r109575);
double r109596 = r109594 / r109595;
double r109597 = r109590 + r109596;
return r109597;
}



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.8
rmApplied add-cbrt-cube33.8
Simplified33.9
rmApplied add-cube-cbrt33.9
Applied add-sqr-sqrt33.9
Applied times-frac33.9
Applied cbrt-prod33.7
Final simplification33.7
herbie shell --seed 2019306 +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))))))))