2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right) \cdot 2double f(double g, double h) {
double r6025836 = 2.0;
double r6025837 = atan2(1.0, 0.0);
double r6025838 = r6025836 * r6025837;
double r6025839 = 3.0;
double r6025840 = r6025838 / r6025839;
double r6025841 = g;
double r6025842 = -r6025841;
double r6025843 = h;
double r6025844 = r6025842 / r6025843;
double r6025845 = acos(r6025844);
double r6025846 = r6025845 / r6025839;
double r6025847 = r6025840 + r6025846;
double r6025848 = cos(r6025847);
double r6025849 = r6025836 * r6025848;
return r6025849;
}
double f(double g, double h) {
double r6025850 = 0.6666666666666666;
double r6025851 = atan2(1.0, 0.0);
double r6025852 = g;
double r6025853 = -r6025852;
double r6025854 = h;
double r6025855 = r6025853 / r6025854;
double r6025856 = acos(r6025855);
double r6025857 = 3.0;
double r6025858 = r6025856 / r6025857;
double r6025859 = fma(r6025850, r6025851, r6025858);
double r6025860 = cos(r6025859);
double r6025861 = 2.0;
double r6025862 = r6025860 * r6025861;
return r6025862;
}



Bits error versus g



Bits error versus h
Initial program 1.0
Simplified1.0
Final simplification1.0
herbie shell --seed 2019158 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))