\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]{\sqrt{g \cdot g - h \cdot h} - g}}{\sqrt[3]{\frac{a}{\frac{1}{2}}}} + \sqrt[3]{\left(\frac{\sqrt[3]{\frac{1}{2}}}{\sqrt[3]{a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\right) \cdot \left(\frac{\sqrt[3]{\frac{1}{2}}}{\sqrt[3]{a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\right)} \cdot \sqrt[3]{\frac{\sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}}{\frac{\sqrt[3]{a}}{\sqrt[3]{\frac{1}{2}}}}}double f(double g, double h, double a) {
double r34864662 = 1.0;
double r34864663 = 2.0;
double r34864664 = a;
double r34864665 = r34864663 * r34864664;
double r34864666 = r34864662 / r34864665;
double r34864667 = g;
double r34864668 = -r34864667;
double r34864669 = r34864667 * r34864667;
double r34864670 = h;
double r34864671 = r34864670 * r34864670;
double r34864672 = r34864669 - r34864671;
double r34864673 = sqrt(r34864672);
double r34864674 = r34864668 + r34864673;
double r34864675 = r34864666 * r34864674;
double r34864676 = cbrt(r34864675);
double r34864677 = r34864668 - r34864673;
double r34864678 = r34864666 * r34864677;
double r34864679 = cbrt(r34864678);
double r34864680 = r34864676 + r34864679;
return r34864680;
}
double f(double g, double h, double a) {
double r34864681 = g;
double r34864682 = r34864681 * r34864681;
double r34864683 = h;
double r34864684 = r34864683 * r34864683;
double r34864685 = r34864682 - r34864684;
double r34864686 = sqrt(r34864685);
double r34864687 = r34864686 - r34864681;
double r34864688 = cbrt(r34864687);
double r34864689 = a;
double r34864690 = 0.5;
double r34864691 = r34864689 / r34864690;
double r34864692 = cbrt(r34864691);
double r34864693 = r34864688 / r34864692;
double r34864694 = cbrt(r34864690);
double r34864695 = cbrt(r34864689);
double r34864696 = r34864694 / r34864695;
double r34864697 = -r34864681;
double r34864698 = r34864697 - r34864686;
double r34864699 = cbrt(r34864698);
double r34864700 = r34864696 * r34864699;
double r34864701 = r34864700 * r34864700;
double r34864702 = cbrt(r34864701);
double r34864703 = r34864695 / r34864694;
double r34864704 = r34864699 / r34864703;
double r34864705 = cbrt(r34864704);
double r34864706 = r34864702 * r34864705;
double r34864707 = r34864693 + r34864706;
return r34864707;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 35.7
Simplified35.7
rmApplied cbrt-div33.6
rmApplied add-cube-cbrt33.6
Applied add-cube-cbrt33.6
Applied times-frac33.6
Applied add-cube-cbrt33.7
Applied times-frac33.6
Applied cbrt-prod32.0
Simplified32.0
Final simplification32.0
herbie shell --seed 2019120
(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))))))))