\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]{\sqrt{\left(g - h\right) \cdot \left(h + g\right)} + g}}{\frac{\sqrt[3]{a}}{\sqrt[3]{\frac{-1}{2}}}} + \frac{\sqrt[3]{\frac{1}{2} \cdot \left(\sqrt{\left(g - h\right) \cdot \left(h + g\right)} - g\right)}}{\sqrt[3]{a}}double f(double g, double h, double a) {
double r5553938 = 1.0;
double r5553939 = 2.0;
double r5553940 = a;
double r5553941 = r5553939 * r5553940;
double r5553942 = r5553938 / r5553941;
double r5553943 = g;
double r5553944 = -r5553943;
double r5553945 = r5553943 * r5553943;
double r5553946 = h;
double r5553947 = r5553946 * r5553946;
double r5553948 = r5553945 - r5553947;
double r5553949 = sqrt(r5553948);
double r5553950 = r5553944 + r5553949;
double r5553951 = r5553942 * r5553950;
double r5553952 = cbrt(r5553951);
double r5553953 = r5553944 - r5553949;
double r5553954 = r5553942 * r5553953;
double r5553955 = cbrt(r5553954);
double r5553956 = r5553952 + r5553955;
return r5553956;
}
double f(double g, double h, double a) {
double r5553957 = g;
double r5553958 = h;
double r5553959 = r5553957 - r5553958;
double r5553960 = r5553958 + r5553957;
double r5553961 = r5553959 * r5553960;
double r5553962 = sqrt(r5553961);
double r5553963 = r5553962 + r5553957;
double r5553964 = cbrt(r5553963);
double r5553965 = a;
double r5553966 = cbrt(r5553965);
double r5553967 = -0.5;
double r5553968 = cbrt(r5553967);
double r5553969 = r5553966 / r5553968;
double r5553970 = r5553964 / r5553969;
double r5553971 = 0.5;
double r5553972 = r5553962 - r5553957;
double r5553973 = r5553971 * r5553972;
double r5553974 = cbrt(r5553973);
double r5553975 = r5553974 / r5553966;
double r5553976 = r5553970 + r5553975;
return r5553976;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.2
Simplified35.2
rmApplied associate-*l/35.2
Applied cbrt-div33.4
rmApplied add-cbrt-cube33.4
Simplified33.4
rmApplied cbrt-div31.6
rmApplied cbrt-div31.7
Final simplification31.7
herbie shell --seed 2019164 +o rules:numerics
(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))))))))