\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.824957770492126269462751713124247080079 \cdot 10^{-179}:\\
\;\;\;\;\sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) + \sqrt{g \cdot g - h \cdot h}} + \sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}} \cdot \sqrt[3]{\sqrt[3]{\frac{1}{2 \cdot a} \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}}\right) \cdot \sqrt[3]{\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 r168237 = 1.0;
double r168238 = 2.0;
double r168239 = a;
double r168240 = r168238 * r168239;
double r168241 = r168237 / r168240;
double r168242 = g;
double r168243 = -r168242;
double r168244 = r168242 * r168242;
double r168245 = h;
double r168246 = r168245 * r168245;
double r168247 = r168244 - r168246;
double r168248 = sqrt(r168247);
double r168249 = r168243 + r168248;
double r168250 = r168241 * r168249;
double r168251 = cbrt(r168250);
double r168252 = r168243 - r168248;
double r168253 = r168241 * r168252;
double r168254 = cbrt(r168253);
double r168255 = r168251 + r168254;
return r168255;
}
double f(double g, double h, double a) {
double r168256 = g;
double r168257 = -8.824957770492126e-179;
bool r168258 = r168256 <= r168257;
double r168259 = 1.0;
double r168260 = 2.0;
double r168261 = a;
double r168262 = r168260 * r168261;
double r168263 = r168259 / r168262;
double r168264 = cbrt(r168263);
double r168265 = -r168256;
double r168266 = r168256 * r168256;
double r168267 = h;
double r168268 = r168267 * r168267;
double r168269 = r168266 - r168268;
double r168270 = sqrt(r168269);
double r168271 = r168265 + r168270;
double r168272 = cbrt(r168271);
double r168273 = r168264 * r168272;
double r168274 = r168265 - r168270;
double r168275 = r168263 * r168274;
double r168276 = cbrt(r168275);
double r168277 = r168273 + r168276;
double r168278 = r168263 * r168271;
double r168279 = cbrt(r168278);
double r168280 = cbrt(r168279);
double r168281 = r168280 * r168280;
double r168282 = r168281 * r168280;
double r168283 = r168265 - r168256;
double r168284 = r168259 * r168283;
double r168285 = cbrt(r168284);
double r168286 = cbrt(r168262);
double r168287 = r168285 / r168286;
double r168288 = r168282 + r168287;
double r168289 = r168258 ? r168277 : r168288;
return r168289;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -8.824957770492126e-179Initial program 35.5
rmApplied cbrt-prod31.7
if -8.824957770492126e-179 < g Initial program 37.3
rmApplied associate-*l/37.3
Applied cbrt-div33.8
rmApplied add-cube-cbrt33.8
Taylor expanded around inf 32.5
Final simplification32.1
herbie shell --seed 2019353
(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))))))))