double f(double g, double h, double a) {
double r30473210 = 1.0;
double r30473211 = 2.0;
double r30473212 = a;
double r30473213 = r30473211 * r30473212;
double r30473214 = r30473210 / r30473213;
double r30473215 = g;
double r30473216 = -r30473215;
double r30473217 = r30473215 * r30473215;
double r30473218 = h;
double r30473219 = r30473218 * r30473218;
double r30473220 = r30473217 - r30473219;
double r30473221 = sqrt(r30473220);
double r30473222 = r30473216 + r30473221;
double r30473223 = r30473214 * r30473222;
double r30473224 = cbrt(r30473223);
double r30473225 = r30473216 - r30473221;
double r30473226 = r30473214 * r30473225;
double r30473227 = cbrt(r30473226);
double r30473228 = r30473224 + r30473227;
return r30473228;
}
double f(double g, double h, double a) {
double r30473229 = g;
double r30473230 = -1.5642964097194712e-162;
bool r30473231 = r30473229 <= r30473230;
double r30473232 = -r30473229;
double r30473233 = r30473229 * r30473229;
double r30473234 = h;
double r30473235 = r30473234 * r30473234;
double r30473236 = r30473233 - r30473235;
double r30473237 = sqrt(r30473236);
double r30473238 = r30473232 - r30473237;
double r30473239 = a;
double r30473240 = 0.5;
double r30473241 = r30473239 / r30473240;
double r30473242 = r30473238 / r30473241;
double r30473243 = cbrt(r30473242);
double r30473244 = r30473237 - r30473229;
double r30473245 = cbrt(r30473244);
double r30473246 = cbrt(r30473241);
double r30473247 = r30473245 / r30473246;
double r30473248 = r30473243 + r30473247;
double r30473249 = cbrt(r30473238);
double r30473250 = r30473249 / r30473246;
double r30473251 = r30473229 - r30473229;
double r30473252 = r30473251 / r30473241;
double r30473253 = cbrt(r30473252);
double r30473254 = r30473250 + r30473253;
double r30473255 = r30473231 ? r30473248 : r30473254;
return r30473255;
}
\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.5642964097194712 \cdot 10^{-162}:\\
\;\;\;\;\sqrt[3]{\frac{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}{\frac{a}{\frac{1}{2}}}} + \frac{\sqrt[3]{\sqrt{g \cdot g - h \cdot h} - g}}{\sqrt[3]{\frac{a}{\frac{1}{2}}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}}{\sqrt[3]{\frac{a}{\frac{1}{2}}}} + \sqrt[3]{\frac{g - g}{\frac{a}{\frac{1}{2}}}}\\
\end{array}


Bits error versus g



Bits error versus h



Bits error versus a
if g < -1.5642964097194712e-162Initial program 33.6
Simplified33.6
rmApplied cbrt-div29.8
if -1.5642964097194712e-162 < g Initial program 36.6
Simplified36.6
rmApplied cbrt-div33.2
Taylor expanded around inf 33.0
Final simplification31.5
herbie shell --seed 2019102
(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))))))))