\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 4.0263109172966606 \cdot 10^{-175}:\\
\;\;\;\;\sqrt[3]{\frac{\frac{-1}{2}}{a} \cdot \left(\sqrt{g \cdot g - h \cdot h} + g\right)} + \sqrt[3]{\frac{\left(-g\right) - g}{2}} \cdot \sqrt[3]{\frac{1}{a}}\\
\mathbf{elif}\;g \le 4.929200091909158 \cdot 10^{-08}:\\
\;\;\;\;\frac{\sqrt[3]{\left(\sqrt{g \cdot g - h \cdot h} + g\right) \cdot \frac{-1}{2}}}{\sqrt[3]{a}} + \sqrt[3]{\frac{g - g}{2}} \cdot \sqrt[3]{\frac{1}{a}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\sqrt{g \cdot g - h \cdot h} + g} \cdot \sqrt[3]{\frac{\frac{-1}{2}}{a}} + \sqrt[3]{\frac{1}{a}} \cdot \sqrt[3]{\frac{\sqrt{g \cdot g - h \cdot h} - g}{2}}\\
\end{array}double f(double g, double h, double a) {
double r4200080 = 1.0;
double r4200081 = 2.0;
double r4200082 = a;
double r4200083 = r4200081 * r4200082;
double r4200084 = r4200080 / r4200083;
double r4200085 = g;
double r4200086 = -r4200085;
double r4200087 = r4200085 * r4200085;
double r4200088 = h;
double r4200089 = r4200088 * r4200088;
double r4200090 = r4200087 - r4200089;
double r4200091 = sqrt(r4200090);
double r4200092 = r4200086 + r4200091;
double r4200093 = r4200084 * r4200092;
double r4200094 = cbrt(r4200093);
double r4200095 = r4200086 - r4200091;
double r4200096 = r4200084 * r4200095;
double r4200097 = cbrt(r4200096);
double r4200098 = r4200094 + r4200097;
return r4200098;
}
double f(double g, double h, double a) {
double r4200099 = g;
double r4200100 = 4.0263109172966606e-175;
bool r4200101 = r4200099 <= r4200100;
double r4200102 = -0.5;
double r4200103 = a;
double r4200104 = r4200102 / r4200103;
double r4200105 = r4200099 * r4200099;
double r4200106 = h;
double r4200107 = r4200106 * r4200106;
double r4200108 = r4200105 - r4200107;
double r4200109 = sqrt(r4200108);
double r4200110 = r4200109 + r4200099;
double r4200111 = r4200104 * r4200110;
double r4200112 = cbrt(r4200111);
double r4200113 = -r4200099;
double r4200114 = r4200113 - r4200099;
double r4200115 = 2.0;
double r4200116 = r4200114 / r4200115;
double r4200117 = cbrt(r4200116);
double r4200118 = 1.0;
double r4200119 = r4200118 / r4200103;
double r4200120 = cbrt(r4200119);
double r4200121 = r4200117 * r4200120;
double r4200122 = r4200112 + r4200121;
double r4200123 = 4.929200091909158e-08;
bool r4200124 = r4200099 <= r4200123;
double r4200125 = r4200110 * r4200102;
double r4200126 = cbrt(r4200125);
double r4200127 = cbrt(r4200103);
double r4200128 = r4200126 / r4200127;
double r4200129 = r4200099 - r4200099;
double r4200130 = r4200129 / r4200115;
double r4200131 = cbrt(r4200130);
double r4200132 = r4200131 * r4200120;
double r4200133 = r4200128 + r4200132;
double r4200134 = cbrt(r4200110);
double r4200135 = cbrt(r4200104);
double r4200136 = r4200134 * r4200135;
double r4200137 = r4200109 - r4200099;
double r4200138 = r4200137 / r4200115;
double r4200139 = cbrt(r4200138);
double r4200140 = r4200120 * r4200139;
double r4200141 = r4200136 + r4200140;
double r4200142 = r4200124 ? r4200133 : r4200141;
double r4200143 = r4200101 ? r4200122 : r4200142;
return r4200143;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < 4.0263109172966606e-175Initial program 35.9
Simplified35.9
rmApplied *-un-lft-identity35.9
Applied *-un-lft-identity35.9
Applied distribute-lft-out--35.9
Applied times-frac35.9
Applied cbrt-prod31.8
Taylor expanded around -inf 30.9
Simplified30.9
if 4.0263109172966606e-175 < g < 4.929200091909158e-08Initial program 11.0
Simplified11.0
rmApplied *-un-lft-identity11.0
Applied *-un-lft-identity11.0
Applied distribute-lft-out--11.0
Applied times-frac11.0
Applied cbrt-prod10.9
rmApplied associate-*r/10.9
Applied cbrt-div5.7
Taylor expanded around inf 5.9
if 4.929200091909158e-08 < g Initial program 39.4
Simplified39.4
rmApplied *-un-lft-identity39.4
Applied *-un-lft-identity39.4
Applied distribute-lft-out--39.4
Applied times-frac39.4
Applied cbrt-prod39.4
rmApplied cbrt-prod36.1
Final simplification30.5
herbie shell --seed 2019143
(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))))))))