\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(g + \sqrt{\left(g - h\right) \cdot \left(g + h\right)}\right) \cdot \frac{-1}{2}}}{\sqrt[3]{\sqrt[3]{a} \cdot \sqrt[3]{a}} \cdot \sqrt[3]{\sqrt[3]{a}}} + \frac{\sqrt[3]{\left(\sqrt{\left(g - h\right) \cdot \left(g + h\right)} - g\right) \cdot \frac{1}{2}}}{\sqrt[3]{a}}double f(double g, double h, double a) {
double r3928325 = 1.0;
double r3928326 = 2.0;
double r3928327 = a;
double r3928328 = r3928326 * r3928327;
double r3928329 = r3928325 / r3928328;
double r3928330 = g;
double r3928331 = -r3928330;
double r3928332 = r3928330 * r3928330;
double r3928333 = h;
double r3928334 = r3928333 * r3928333;
double r3928335 = r3928332 - r3928334;
double r3928336 = sqrt(r3928335);
double r3928337 = r3928331 + r3928336;
double r3928338 = r3928329 * r3928337;
double r3928339 = cbrt(r3928338);
double r3928340 = r3928331 - r3928336;
double r3928341 = r3928329 * r3928340;
double r3928342 = cbrt(r3928341);
double r3928343 = r3928339 + r3928342;
return r3928343;
}
double f(double g, double h, double a) {
double r3928344 = g;
double r3928345 = h;
double r3928346 = r3928344 - r3928345;
double r3928347 = r3928344 + r3928345;
double r3928348 = r3928346 * r3928347;
double r3928349 = sqrt(r3928348);
double r3928350 = r3928344 + r3928349;
double r3928351 = -0.5;
double r3928352 = r3928350 * r3928351;
double r3928353 = cbrt(r3928352);
double r3928354 = a;
double r3928355 = cbrt(r3928354);
double r3928356 = r3928355 * r3928355;
double r3928357 = cbrt(r3928356);
double r3928358 = cbrt(r3928355);
double r3928359 = r3928357 * r3928358;
double r3928360 = r3928353 / r3928359;
double r3928361 = r3928349 - r3928344;
double r3928362 = 0.5;
double r3928363 = r3928361 * r3928362;
double r3928364 = cbrt(r3928363);
double r3928365 = r3928364 / r3928355;
double r3928366 = r3928360 + r3928365;
return r3928366;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.6
Simplified35.6
rmApplied associate-*l/35.6
Applied cbrt-div33.9
rmApplied associate-*l/33.9
Applied cbrt-div32.1
rmApplied add-cube-cbrt32.2
Applied cbrt-prod32.2
Final simplification32.2
herbie shell --seed 2019165 +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))))))))