\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.58830305949180278 \cdot 10^{-164}:\\
\;\;\;\;\frac{\sqrt[3]{1 \cdot \left(\left(-g\right) + \left(\sqrt[3]{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}\right) \cdot \sqrt[3]{\sqrt{g \cdot g - h \cdot h}}\right)}}{\sqrt[3]{2 \cdot a}} + \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 r169177 = 1.0;
double r169178 = 2.0;
double r169179 = a;
double r169180 = r169178 * r169179;
double r169181 = r169177 / r169180;
double r169182 = g;
double r169183 = -r169182;
double r169184 = r169182 * r169182;
double r169185 = h;
double r169186 = r169185 * r169185;
double r169187 = r169184 - r169186;
double r169188 = sqrt(r169187);
double r169189 = r169183 + r169188;
double r169190 = r169181 * r169189;
double r169191 = cbrt(r169190);
double r169192 = r169183 - r169188;
double r169193 = r169181 * r169192;
double r169194 = cbrt(r169193);
double r169195 = r169191 + r169194;
return r169195;
}
double f(double g, double h, double a) {
double r169196 = g;
double r169197 = -1.5883030594918028e-164;
bool r169198 = r169196 <= r169197;
double r169199 = 1.0;
double r169200 = -r169196;
double r169201 = r169196 * r169196;
double r169202 = h;
double r169203 = r169202 * r169202;
double r169204 = r169201 - r169203;
double r169205 = sqrt(r169204);
double r169206 = cbrt(r169205);
double r169207 = r169206 * r169206;
double r169208 = r169207 * r169206;
double r169209 = r169200 + r169208;
double r169210 = r169199 * r169209;
double r169211 = cbrt(r169210);
double r169212 = 2.0;
double r169213 = a;
double r169214 = r169212 * r169213;
double r169215 = cbrt(r169214);
double r169216 = r169211 / r169215;
double r169217 = r169200 - r169205;
double r169218 = r169199 * r169217;
double r169219 = cbrt(r169218);
double r169220 = r169219 / r169215;
double r169221 = r169216 + r169220;
double r169222 = r169199 / r169214;
double r169223 = r169200 + r169205;
double r169224 = r169222 * r169223;
double r169225 = cbrt(r169224);
double r169226 = r169200 - r169196;
double r169227 = r169199 * r169226;
double r169228 = cbrt(r169227);
double r169229 = r169228 / r169215;
double r169230 = r169225 + r169229;
double r169231 = r169198 ? r169221 : r169230;
return r169231;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -1.5883030594918028e-164Initial program 35.7
rmApplied associate-*l/35.7
Applied cbrt-div35.7
rmApplied associate-*l/35.7
Applied cbrt-div31.6
rmApplied add-cube-cbrt31.6
if -1.5883030594918028e-164 < g Initial program 36.6
rmApplied associate-*l/36.6
Applied cbrt-div32.8
Taylor expanded around inf 31.6
Final simplification31.6
herbie shell --seed 2020062
(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))))))))