2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\left(\cos \left(\frac{2}{3} \cdot \pi\right) \cdot \cos \left(\frac{\cos^{-1} \left(-\frac{g}{h}\right)}{3}\right) - \sin \left(\left(\sqrt{\pi} \cdot \frac{2}{3}\right) \cdot \sqrt{\pi}\right) \cdot \sin \left(\frac{\cos^{-1} \left(-\frac{g}{h}\right)}{3}\right)\right) \cdot 2double f(double g, double h) {
double r5268866 = 2.0;
double r5268867 = atan2(1.0, 0.0);
double r5268868 = r5268866 * r5268867;
double r5268869 = 3.0;
double r5268870 = r5268868 / r5268869;
double r5268871 = g;
double r5268872 = -r5268871;
double r5268873 = h;
double r5268874 = r5268872 / r5268873;
double r5268875 = acos(r5268874);
double r5268876 = r5268875 / r5268869;
double r5268877 = r5268870 + r5268876;
double r5268878 = cos(r5268877);
double r5268879 = r5268866 * r5268878;
return r5268879;
}
double f(double g, double h) {
double r5268880 = 0.6666666666666666;
double r5268881 = atan2(1.0, 0.0);
double r5268882 = r5268880 * r5268881;
double r5268883 = cos(r5268882);
double r5268884 = g;
double r5268885 = h;
double r5268886 = r5268884 / r5268885;
double r5268887 = -r5268886;
double r5268888 = acos(r5268887);
double r5268889 = 3.0;
double r5268890 = r5268888 / r5268889;
double r5268891 = cos(r5268890);
double r5268892 = r5268883 * r5268891;
double r5268893 = sqrt(r5268881);
double r5268894 = r5268893 * r5268880;
double r5268895 = r5268894 * r5268893;
double r5268896 = sin(r5268895);
double r5268897 = sin(r5268890);
double r5268898 = r5268896 * r5268897;
double r5268899 = r5268892 - r5268898;
double r5268900 = 2.0;
double r5268901 = r5268899 * r5268900;
return r5268901;
}



Bits error versus g



Bits error versus h
Results
Initial program 1.0
Simplified1.0
rmApplied fma-udef1.0
Applied cos-sum1.0
rmApplied add-sqr-sqrt0.0
Applied associate-*r*0.0
Final simplification0.0
herbie shell --seed 2019142 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))