\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)}\sqrt[3]{\frac{1}{2}} \cdot \left(\sqrt[3]{\frac{1}{a}} \cdot \sqrt[3]{\left(-g\right) - \sqrt{g \cdot g - h \cdot h}}\right) + \frac{\sqrt[3]{1 \cdot \left(\left(-g\right) + \sqrt{g \cdot g - h \cdot h}\right)}}{\sqrt[3]{2 \cdot a}}double f(double g, double h, double a) {
double r7695848 = 1.0;
double r7695849 = 2.0;
double r7695850 = a;
double r7695851 = r7695849 * r7695850;
double r7695852 = r7695848 / r7695851;
double r7695853 = g;
double r7695854 = -r7695853;
double r7695855 = r7695853 * r7695853;
double r7695856 = h;
double r7695857 = r7695856 * r7695856;
double r7695858 = r7695855 - r7695857;
double r7695859 = sqrt(r7695858);
double r7695860 = r7695854 + r7695859;
double r7695861 = r7695852 * r7695860;
double r7695862 = cbrt(r7695861);
double r7695863 = r7695854 - r7695859;
double r7695864 = r7695852 * r7695863;
double r7695865 = cbrt(r7695864);
double r7695866 = r7695862 + r7695865;
return r7695866;
}
double f(double g, double h, double a) {
double r7695867 = 1.0;
double r7695868 = 2.0;
double r7695869 = r7695867 / r7695868;
double r7695870 = cbrt(r7695869);
double r7695871 = 1.0;
double r7695872 = a;
double r7695873 = r7695871 / r7695872;
double r7695874 = cbrt(r7695873);
double r7695875 = g;
double r7695876 = -r7695875;
double r7695877 = r7695875 * r7695875;
double r7695878 = h;
double r7695879 = r7695878 * r7695878;
double r7695880 = r7695877 - r7695879;
double r7695881 = sqrt(r7695880);
double r7695882 = r7695876 - r7695881;
double r7695883 = cbrt(r7695882);
double r7695884 = r7695874 * r7695883;
double r7695885 = r7695870 * r7695884;
double r7695886 = r7695876 + r7695881;
double r7695887 = r7695867 * r7695886;
double r7695888 = cbrt(r7695887);
double r7695889 = r7695868 * r7695872;
double r7695890 = cbrt(r7695889);
double r7695891 = r7695888 / r7695890;
double r7695892 = r7695885 + r7695891;
return r7695892;
}



Bits error versus g



Bits error versus h



Bits error versus a
Results
Initial program 36.3
rmApplied associate-*l/36.3
Applied cbrt-div34.6
rmApplied add-cbrt-cube34.6
Simplified34.6
rmApplied times-frac34.6
Applied cbrt-prod34.6
rmApplied div-inv34.6
Applied cbrt-prod32.6
Simplified32.6
Final simplification32.6
herbie shell --seed 2019200
(FPCore (g h a)
:name "2-ancestry mixing, positive discriminant"
(+ (cbrt (* (/ 1.0 (* 2.0 a)) (+ (- g) (sqrt (- (* g g) (* h h)))))) (cbrt (* (/ 1.0 (* 2.0 a)) (- (- g) (sqrt (- (* g g) (* h h))))))))