\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 -1.1125630341124718 \cdot 10^{-161}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \sqrt{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt{\sqrt{g \cdot g - h \cdot h}}} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)} + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - g\right)}}{\sqrt[3]{2 \cdot a}}\\
\end{array}double f(double g, double h, double a) {
double r179165 = 1.0;
double r179166 = 2.0;
double r179167 = a;
double r179168 = r179166 * r179167;
double r179169 = r179165 / r179168;
double r179170 = g;
double r179171 = -r179170;
double r179172 = r179170 * r179170;
double r179173 = h;
double r179174 = r179173 * r179173;
double r179175 = r179172 - r179174;
double r179176 = sqrt(r179175);
double r179177 = r179171 + r179176;
double r179178 = r179169 * r179177;
double r179179 = cbrt(r179178);
double r179180 = r179171 - r179176;
double r179181 = r179169 * r179180;
double r179182 = cbrt(r179181);
double r179183 = r179179 + r179182;
return r179183;
}
double f(double g, double h, double a) {
double r179184 = g;
double r179185 = -1.1125630341124718e-161;
bool r179186 = r179184 <= r179185;
double r179187 = 1.0;
double r179188 = 2.0;
double r179189 = a;
double r179190 = r179188 * r179189;
double r179191 = r179187 / r179190;
double r179192 = cbrt(r179191);
double r179193 = -r179184;
double r179194 = r179184 * r179184;
double r179195 = h;
double r179196 = r179195 * r179195;
double r179197 = r179194 - r179196;
double r179198 = sqrt(r179197);
double r179199 = sqrt(r179198);
double r179200 = r179199 * r179199;
double r179201 = r179193 + r179200;
double r179202 = cbrt(r179201);
double r179203 = r179192 * r179202;
double r179204 = r179193 - r179198;
double r179205 = r179187 * r179204;
double r179206 = cbrt(r179205);
double r179207 = cbrt(r179190);
double r179208 = r179206 / r179207;
double r179209 = r179203 + r179208;
double r179210 = r179193 + r179198;
double r179211 = r179191 * r179210;
double r179212 = cbrt(r179211);
double r179213 = r179193 - r179184;
double r179214 = r179187 * r179213;
double r179215 = cbrt(r179214);
double r179216 = r179215 / r179207;
double r179217 = r179212 + r179216;
double r179218 = r179186 ? r179209 : r179217;
return r179218;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -1.1125630341124718e-161Initial program 33.9
rmApplied associate-*l/33.9
Applied cbrt-div33.9
rmApplied cbrt-prod30.2
rmApplied add-sqr-sqrt30.2
Applied sqrt-prod30.2
if -1.1125630341124718e-161 < g Initial program 36.9
rmApplied associate-*l/36.9
Applied cbrt-div33.1
Taylor expanded around inf 32.0
Final simplification31.1
herbie shell --seed 2020036 +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))))))))