\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{\frac{1}{\sqrt[3]{a} \cdot \sqrt[3]{a}}}{2}} \cdot \sqrt[3]{\frac{\sqrt{\mathsf{fma}\left(h, -h, g \cdot g\right)} - g}{\sqrt[3]{a}}} + \frac{\sqrt[3]{-1 \cdot \left(\sqrt{\mathsf{fma}\left(-h, h, g \cdot g\right)} + g\right)}}{\sqrt[3]{2 \cdot a}}double f(double g, double h, double a) {
double r153760 = 1.0;
double r153761 = 2.0;
double r153762 = a;
double r153763 = r153761 * r153762;
double r153764 = r153760 / r153763;
double r153765 = g;
double r153766 = -r153765;
double r153767 = r153765 * r153765;
double r153768 = h;
double r153769 = r153768 * r153768;
double r153770 = r153767 - r153769;
double r153771 = sqrt(r153770);
double r153772 = r153766 + r153771;
double r153773 = r153764 * r153772;
double r153774 = cbrt(r153773);
double r153775 = r153766 - r153771;
double r153776 = r153764 * r153775;
double r153777 = cbrt(r153776);
double r153778 = r153774 + r153777;
return r153778;
}
double f(double g, double h, double a) {
double r153779 = 1.0;
double r153780 = a;
double r153781 = cbrt(r153780);
double r153782 = r153781 * r153781;
double r153783 = r153779 / r153782;
double r153784 = 2.0;
double r153785 = r153783 / r153784;
double r153786 = cbrt(r153785);
double r153787 = h;
double r153788 = -r153787;
double r153789 = g;
double r153790 = r153789 * r153789;
double r153791 = fma(r153787, r153788, r153790);
double r153792 = sqrt(r153791);
double r153793 = r153792 - r153789;
double r153794 = r153793 / r153781;
double r153795 = cbrt(r153794);
double r153796 = r153786 * r153795;
double r153797 = fma(r153788, r153787, r153790);
double r153798 = sqrt(r153797);
double r153799 = r153798 + r153789;
double r153800 = r153779 * r153799;
double r153801 = -r153800;
double r153802 = cbrt(r153801);
double r153803 = r153784 * r153780;
double r153804 = cbrt(r153803);
double r153805 = r153802 / r153804;
double r153806 = r153796 + r153805;
return r153806;
}



Bits error versus g



Bits error versus h



Bits error versus a
Initial program 36.4
Simplified36.4
rmApplied frac-times36.4
Applied cbrt-div34.5
Simplified34.5
rmApplied add-cube-cbrt34.5
Applied times-frac34.5
Applied cbrt-prod32.6
Simplified32.6
Simplified32.6
Final simplification32.6
herbie shell --seed 2019196 +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))))))))