\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)}\begin{array}{l}
\mathbf{if}\;g \le -8.359356862874829159472492534077743049279 \cdot 10^{-185}:\\
\;\;\;\;\frac{\sqrt[3]{1 \cdot \left(\sqrt{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt{\sqrt{g \cdot g - h \cdot h}} - g\right)}}{\sqrt[3]{2 \cdot a}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\\
\mathbf{else}:\\
\;\;\;\;\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]{\left(-g\right) - g}\\
\end{array}double f(double g, double h, double a) {
double r81787 = 1.0;
double r81788 = 2.0;
double r81789 = a;
double r81790 = r81788 * r81789;
double r81791 = r81787 / r81790;
double r81792 = g;
double r81793 = -r81792;
double r81794 = r81792 * r81792;
double r81795 = h;
double r81796 = r81795 * r81795;
double r81797 = r81794 - r81796;
double r81798 = sqrt(r81797);
double r81799 = r81793 + r81798;
double r81800 = r81791 * r81799;
double r81801 = cbrt(r81800);
double r81802 = r81793 - r81798;
double r81803 = r81791 * r81802;
double r81804 = cbrt(r81803);
double r81805 = r81801 + r81804;
return r81805;
}
double f(double g, double h, double a) {
double r81806 = g;
double r81807 = -8.359356862874829e-185;
bool r81808 = r81806 <= r81807;
double r81809 = 1.0;
double r81810 = r81806 * r81806;
double r81811 = h;
double r81812 = r81811 * r81811;
double r81813 = r81810 - r81812;
double r81814 = sqrt(r81813);
double r81815 = sqrt(r81814);
double r81816 = r81815 * r81815;
double r81817 = r81816 - r81806;
double r81818 = r81809 * r81817;
double r81819 = cbrt(r81818);
double r81820 = 2.0;
double r81821 = a;
double r81822 = r81820 * r81821;
double r81823 = cbrt(r81822);
double r81824 = r81819 / r81823;
double r81825 = r81809 / r81822;
double r81826 = cbrt(r81825);
double r81827 = -r81806;
double r81828 = r81827 - r81814;
double r81829 = cbrt(r81828);
double r81830 = r81826 * r81829;
double r81831 = r81824 + r81830;
double r81832 = r81827 + r81814;
double r81833 = r81825 * r81832;
double r81834 = cbrt(r81833);
double r81835 = r81827 - r81806;
double r81836 = cbrt(r81835);
double r81837 = r81826 * r81836;
double r81838 = r81834 + r81837;
double r81839 = r81808 ? r81831 : r81838;
return r81839;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -8.359356862874829e-185Initial program 35.3
rmApplied cbrt-prod35.2
rmApplied associate-*l/35.2
Applied cbrt-div31.3
Simplified31.3
rmApplied add-sqr-sqrt31.3
Applied sqrt-prod31.3
if -8.359356862874829e-185 < g Initial program 36.8
rmApplied cbrt-prod33.4
Taylor expanded around inf 32.5
Final simplification31.9
herbie shell --seed 2019326 +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))))))))