\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]{\frac{-1}{2} \cdot \left(g + \sqrt{\left(h + g\right) \cdot \left(g - h\right)}\right)}}{\sqrt[3]{a}} + \left(\sqrt[3]{\frac{\sqrt{\left(h + g\right) \cdot \left(g - h\right)} - g}{\sqrt[3]{a}}} \cdot \sqrt[3]{\frac{1}{\sqrt[3]{a} \cdot \sqrt[3]{a}}}\right) \cdot \sqrt[3]{\frac{1}{2}}double f(double g, double h, double a) {
double r6399390 = 1.0;
double r6399391 = 2.0;
double r6399392 = a;
double r6399393 = r6399391 * r6399392;
double r6399394 = r6399390 / r6399393;
double r6399395 = g;
double r6399396 = -r6399395;
double r6399397 = r6399395 * r6399395;
double r6399398 = h;
double r6399399 = r6399398 * r6399398;
double r6399400 = r6399397 - r6399399;
double r6399401 = sqrt(r6399400);
double r6399402 = r6399396 + r6399401;
double r6399403 = r6399394 * r6399402;
double r6399404 = cbrt(r6399403);
double r6399405 = r6399396 - r6399401;
double r6399406 = r6399394 * r6399405;
double r6399407 = cbrt(r6399406);
double r6399408 = r6399404 + r6399407;
return r6399408;
}
double f(double g, double h, double a) {
double r6399409 = -0.5;
double r6399410 = g;
double r6399411 = h;
double r6399412 = r6399411 + r6399410;
double r6399413 = r6399410 - r6399411;
double r6399414 = r6399412 * r6399413;
double r6399415 = sqrt(r6399414);
double r6399416 = r6399410 + r6399415;
double r6399417 = r6399409 * r6399416;
double r6399418 = cbrt(r6399417);
double r6399419 = a;
double r6399420 = cbrt(r6399419);
double r6399421 = r6399418 / r6399420;
double r6399422 = r6399415 - r6399410;
double r6399423 = r6399422 / r6399420;
double r6399424 = cbrt(r6399423);
double r6399425 = 1.0;
double r6399426 = r6399420 * r6399420;
double r6399427 = r6399425 / r6399426;
double r6399428 = cbrt(r6399427);
double r6399429 = r6399424 * r6399428;
double r6399430 = 0.5;
double r6399431 = cbrt(r6399430);
double r6399432 = r6399429 * r6399431;
double r6399433 = r6399421 + r6399432;
return r6399433;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.3
Simplified35.3
rmApplied associate-*l/35.3
Applied cbrt-div33.4
rmApplied cbrt-prod33.4
rmApplied add-cube-cbrt33.5
Applied *-un-lft-identity33.5
Applied times-frac33.5
Applied cbrt-prod31.6
Final simplification31.6
herbie shell --seed 2019163 +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))))))))