\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)}\frac{\sqrt[3]{\left(\sqrt{g \cdot g - h \cdot h} + g\right) \cdot \frac{-1}{2}}}{\sqrt[3]{a}} + \frac{\sqrt[3]{\sqrt{g \cdot g - h \cdot h} - g}}{\sqrt[3]{\frac{a}{\frac{1}{2}}}}double f(double g, double h, double a) {
double r2141272 = 1.0;
double r2141273 = 2.0;
double r2141274 = a;
double r2141275 = r2141273 * r2141274;
double r2141276 = r2141272 / r2141275;
double r2141277 = g;
double r2141278 = -r2141277;
double r2141279 = r2141277 * r2141277;
double r2141280 = h;
double r2141281 = r2141280 * r2141280;
double r2141282 = r2141279 - r2141281;
double r2141283 = sqrt(r2141282);
double r2141284 = r2141278 + r2141283;
double r2141285 = r2141276 * r2141284;
double r2141286 = cbrt(r2141285);
double r2141287 = r2141278 - r2141283;
double r2141288 = r2141276 * r2141287;
double r2141289 = cbrt(r2141288);
double r2141290 = r2141286 + r2141289;
return r2141290;
}
double f(double g, double h, double a) {
double r2141291 = g;
double r2141292 = r2141291 * r2141291;
double r2141293 = h;
double r2141294 = r2141293 * r2141293;
double r2141295 = r2141292 - r2141294;
double r2141296 = sqrt(r2141295);
double r2141297 = r2141296 + r2141291;
double r2141298 = -0.5;
double r2141299 = r2141297 * r2141298;
double r2141300 = cbrt(r2141299);
double r2141301 = a;
double r2141302 = cbrt(r2141301);
double r2141303 = r2141300 / r2141302;
double r2141304 = r2141296 - r2141291;
double r2141305 = cbrt(r2141304);
double r2141306 = 0.5;
double r2141307 = r2141301 / r2141306;
double r2141308 = cbrt(r2141307);
double r2141309 = r2141305 / r2141308;
double r2141310 = r2141303 + r2141309;
return r2141310;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.3
Simplified35.2
rmApplied associate-*l/35.2
Applied cbrt-div33.2
rmApplied cbrt-div31.4
Final simplification31.4
herbie shell --seed 2019152 +o rules:numerics
(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))))))))