\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.764066339061834934650093734982364279507 \cdot 10^{-157}:\\
\;\;\;\;\sqrt[3]{\left(-g\right) + \sqrt{\sqrt{g \cdot g - h \cdot h}} \cdot \sqrt{\sqrt{g \cdot g - h \cdot h}}} \cdot \sqrt[3]{\frac{1}{2 \cdot a}} + \frac{\sqrt[3]{\left(\left(-g\right) - \sqrt{g \cdot g - h \cdot h}\right) \cdot 1}}{\sqrt[3]{2 \cdot a}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{1 \cdot \left(\left(-g\right) - g\right)}}{\sqrt[3]{2 \cdot a}} + \sqrt[3]{\left(\sqrt{g \cdot g - h \cdot h} + \left(-g\right)\right) \cdot \frac{1}{2 \cdot a}}\\
\end{array}double f(double g, double h, double a) {
double r6170115 = 1.0;
double r6170116 = 2.0;
double r6170117 = a;
double r6170118 = r6170116 * r6170117;
double r6170119 = r6170115 / r6170118;
double r6170120 = g;
double r6170121 = -r6170120;
double r6170122 = r6170120 * r6170120;
double r6170123 = h;
double r6170124 = r6170123 * r6170123;
double r6170125 = r6170122 - r6170124;
double r6170126 = sqrt(r6170125);
double r6170127 = r6170121 + r6170126;
double r6170128 = r6170119 * r6170127;
double r6170129 = cbrt(r6170128);
double r6170130 = r6170121 - r6170126;
double r6170131 = r6170119 * r6170130;
double r6170132 = cbrt(r6170131);
double r6170133 = r6170129 + r6170132;
return r6170133;
}
double f(double g, double h, double a) {
double r6170134 = g;
double r6170135 = -8.764066339061835e-157;
bool r6170136 = r6170134 <= r6170135;
double r6170137 = -r6170134;
double r6170138 = r6170134 * r6170134;
double r6170139 = h;
double r6170140 = r6170139 * r6170139;
double r6170141 = r6170138 - r6170140;
double r6170142 = sqrt(r6170141);
double r6170143 = sqrt(r6170142);
double r6170144 = r6170143 * r6170143;
double r6170145 = r6170137 + r6170144;
double r6170146 = cbrt(r6170145);
double r6170147 = 1.0;
double r6170148 = 2.0;
double r6170149 = a;
double r6170150 = r6170148 * r6170149;
double r6170151 = r6170147 / r6170150;
double r6170152 = cbrt(r6170151);
double r6170153 = r6170146 * r6170152;
double r6170154 = r6170137 - r6170142;
double r6170155 = r6170154 * r6170147;
double r6170156 = cbrt(r6170155);
double r6170157 = cbrt(r6170150);
double r6170158 = r6170156 / r6170157;
double r6170159 = r6170153 + r6170158;
double r6170160 = r6170137 - r6170134;
double r6170161 = r6170147 * r6170160;
double r6170162 = cbrt(r6170161);
double r6170163 = r6170162 / r6170157;
double r6170164 = r6170142 + r6170137;
double r6170165 = r6170164 * r6170151;
double r6170166 = cbrt(r6170165);
double r6170167 = r6170163 + r6170166;
double r6170168 = r6170136 ? r6170159 : r6170167;
return r6170168;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
if g < -8.764066339061835e-157Initial program 35.5
rmApplied associate-*l/35.5
Applied cbrt-div35.5
rmApplied cbrt-prod32.1
rmApplied add-sqr-sqrt32.1
Applied sqrt-prod32.1
if -8.764066339061835e-157 < g Initial program 37.3
rmApplied associate-*l/37.3
Applied cbrt-div33.3
Taylor expanded around inf 31.9
Final simplification32.0
herbie shell --seed 2019169 +o rules:numerics
(FPCore (g h a)
:name "2-ancestry mixing, positive discriminant"
(+ (cbrt (* (/ 1.0 (* 2.0 a)) (+ (- g) (sqrt (- (* g g) (* h h)))))) (cbrt (* (/ 1.0 (* 2.0 a)) (- (- g) (sqrt (- (* g g) (* h h))))))))