double f(double g, double h, double a) {
double r17884739 = 1.0;
double r17884740 = 2.0;
double r17884741 = a;
double r17884742 = r17884740 * r17884741;
double r17884743 = r17884739 / r17884742;
double r17884744 = g;
double r17884745 = -r17884744;
double r17884746 = r17884744 * r17884744;
double r17884747 = h;
double r17884748 = r17884747 * r17884747;
double r17884749 = r17884746 - r17884748;
double r17884750 = sqrt(r17884749);
double r17884751 = r17884745 + r17884750;
double r17884752 = r17884743 * r17884751;
double r17884753 = cbrt(r17884752);
double r17884754 = r17884745 - r17884750;
double r17884755 = r17884743 * r17884754;
double r17884756 = cbrt(r17884755);
double r17884757 = r17884753 + r17884756;
return r17884757;
}
double f(double g, double h, double a) {
double r17884758 = g;
double r17884759 = -3.2849414813215076e-182;
bool r17884760 = r17884758 <= r17884759;
double r17884761 = 1.0;
double r17884762 = a;
double r17884763 = r17884761 / r17884762;
double r17884764 = cbrt(r17884763);
double r17884765 = -r17884758;
double r17884766 = r17884765 - r17884765;
double r17884767 = 2.0;
double r17884768 = r17884766 / r17884767;
double r17884769 = cbrt(r17884768);
double r17884770 = r17884764 * r17884769;
double r17884771 = r17884758 * r17884758;
double r17884772 = h;
double r17884773 = r17884772 * r17884772;
double r17884774 = r17884771 - r17884773;
double r17884775 = sqrt(r17884774);
double r17884776 = r17884775 - r17884758;
double r17884777 = cbrt(r17884776);
double r17884778 = 0.5;
double r17884779 = r17884762 / r17884778;
double r17884780 = cbrt(r17884779);
double r17884781 = r17884777 / r17884780;
double r17884782 = r17884770 + r17884781;
double r17884783 = r17884776 / r17884779;
double r17884784 = cbrt(r17884783);
double r17884785 = r17884765 - r17884758;
double r17884786 = r17884785 / r17884767;
double r17884787 = cbrt(r17884786);
double r17884788 = r17884787 * r17884764;
double r17884789 = r17884784 + r17884788;
double r17884790 = r17884760 ? r17884782 : r17884789;
return r17884790;
}
\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 -3.2849414813215076 \cdot 10^{-182}:\\
\;\;\;\;\sqrt[3]{\frac{1}{a}} \cdot \sqrt[3]{\frac{\left(-g\right) - \left(-g\right)}{2}} + \frac{\sqrt[3]{\sqrt{g \cdot g - h \cdot h} - g}}{\sqrt[3]{\frac{a}{\frac{1}{2}}}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\frac{\sqrt{g \cdot g - h \cdot h} - g}{\frac{a}{\frac{1}{2}}}} + \sqrt[3]{\frac{\left(-g\right) - g}{2}} \cdot \sqrt[3]{\frac{1}{a}}\\
\end{array}


Bits error versus g



Bits error versus h



Bits error versus a
if g < -3.2849414813215076e-182Initial program 35.0
Simplified35.0
rmApplied div-inv35.0
Applied *-un-lft-identity35.0
Applied *-un-lft-identity35.0
Applied distribute-lft-out--35.0
Applied times-frac35.0
Applied cbrt-prod34.9
rmApplied cbrt-div31.7
Taylor expanded around -inf 31.5
Simplified31.5
if -3.2849414813215076e-182 < g Initial program 35.5
Simplified35.5
rmApplied div-inv35.5
Applied *-un-lft-identity35.5
Applied *-un-lft-identity35.5
Applied distribute-lft-out--35.5
Applied times-frac35.5
Applied cbrt-prod32.1
Taylor expanded around inf 31.5
Final simplification31.5
herbie shell --seed 2019101
(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))))))))