\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 r125169 = 1.0;
double r125170 = 2.0;
double r125171 = a;
double r125172 = r125170 * r125171;
double r125173 = r125169 / r125172;
double r125174 = g;
double r125175 = -r125174;
double r125176 = r125174 * r125174;
double r125177 = h;
double r125178 = r125177 * r125177;
double r125179 = r125176 - r125178;
double r125180 = sqrt(r125179);
double r125181 = r125175 + r125180;
double r125182 = r125173 * r125181;
double r125183 = cbrt(r125182);
double r125184 = r125175 - r125180;
double r125185 = r125173 * r125184;
double r125186 = cbrt(r125185);
double r125187 = r125183 + r125186;
return r125187;
}
double f(double g, double h, double a) {
double r125188 = g;
double r125189 = -1.5883030594918028e-164;
bool r125190 = r125188 <= r125189;
double r125191 = 1.0;
double r125192 = -r125188;
double r125193 = r125188 * r125188;
double r125194 = h;
double r125195 = r125194 * r125194;
double r125196 = r125193 - r125195;
double r125197 = sqrt(r125196);
double r125198 = cbrt(r125197);
double r125199 = r125198 * r125198;
double r125200 = r125199 * r125198;
double r125201 = r125192 + r125200;
double r125202 = r125191 * r125201;
double r125203 = cbrt(r125202);
double r125204 = 2.0;
double r125205 = a;
double r125206 = r125204 * r125205;
double r125207 = cbrt(r125206);
double r125208 = r125203 / r125207;
double r125209 = r125192 - r125197;
double r125210 = r125191 * r125209;
double r125211 = cbrt(r125210);
double r125212 = r125211 / r125207;
double r125213 = r125208 + r125212;
double r125214 = r125191 / r125206;
double r125215 = r125192 + r125197;
double r125216 = r125214 * r125215;
double r125217 = cbrt(r125216);
double r125218 = r125192 - r125188;
double r125219 = r125191 * r125218;
double r125220 = cbrt(r125219);
double r125221 = r125220 / r125207;
double r125222 = r125217 + r125221;
double r125223 = r125190 ? r125213 : r125222;
return r125223;
}



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 +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))))))))