\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]{1 \cdot \left(\sqrt{g \cdot g - h \cdot h} - g\right)}}{\sqrt[3]{2 \cdot a}} + \sqrt[3]{\frac{1}{2 \cdot a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}double f(double g, double h, double a) {
double r177253 = 1.0;
double r177254 = 2.0;
double r177255 = a;
double r177256 = r177254 * r177255;
double r177257 = r177253 / r177256;
double r177258 = g;
double r177259 = -r177258;
double r177260 = r177258 * r177258;
double r177261 = h;
double r177262 = r177261 * r177261;
double r177263 = r177260 - r177262;
double r177264 = sqrt(r177263);
double r177265 = r177259 + r177264;
double r177266 = r177257 * r177265;
double r177267 = cbrt(r177266);
double r177268 = r177259 - r177264;
double r177269 = r177257 * r177268;
double r177270 = cbrt(r177269);
double r177271 = r177267 + r177270;
return r177271;
}
double f(double g, double h, double a) {
double r177272 = 1.0;
double r177273 = g;
double r177274 = r177273 * r177273;
double r177275 = h;
double r177276 = r177275 * r177275;
double r177277 = r177274 - r177276;
double r177278 = sqrt(r177277);
double r177279 = r177278 - r177273;
double r177280 = r177272 * r177279;
double r177281 = cbrt(r177280);
double r177282 = 2.0;
double r177283 = a;
double r177284 = r177282 * r177283;
double r177285 = cbrt(r177284);
double r177286 = r177281 / r177285;
double r177287 = r177272 / r177284;
double r177288 = cbrt(r177287);
double r177289 = -r177273;
double r177290 = r177289 - r177278;
double r177291 = cbrt(r177290);
double r177292 = r177288 * r177291;
double r177293 = r177286 + r177292;
return r177293;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 36.4
Simplified36.4
rmApplied associate-*l/36.4
Applied cbrt-div34.2
rmApplied cbrt-prod32.3
Final simplification32.3
herbie shell --seed 2019323
(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))))))))