2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)2 \cdot \left(\cos \left(\frac{2 \cdot \pi}{3} + \frac{\pi}{3}\right) \cdot \cos \left(\frac{\cos^{-1} \left(\frac{g}{h}\right)}{3}\right) + \sin \left(\frac{2 \cdot \pi}{3} + \frac{\pi}{3}\right) \cdot \sin \left(\frac{\cos^{-1} \left(\frac{g}{h}\right)}{3}\right)\right)double f(double g, double h) {
double r144024 = 2.0;
double r144025 = atan2(1.0, 0.0);
double r144026 = r144024 * r144025;
double r144027 = 3.0;
double r144028 = r144026 / r144027;
double r144029 = g;
double r144030 = -r144029;
double r144031 = h;
double r144032 = r144030 / r144031;
double r144033 = acos(r144032);
double r144034 = r144033 / r144027;
double r144035 = r144028 + r144034;
double r144036 = cos(r144035);
double r144037 = r144024 * r144036;
return r144037;
}
double f(double g, double h) {
double r144038 = 2.0;
double r144039 = atan2(1.0, 0.0);
double r144040 = r144038 * r144039;
double r144041 = 3.0;
double r144042 = r144040 / r144041;
double r144043 = r144039 / r144041;
double r144044 = r144042 + r144043;
double r144045 = cos(r144044);
double r144046 = g;
double r144047 = h;
double r144048 = r144046 / r144047;
double r144049 = acos(r144048);
double r144050 = r144049 / r144041;
double r144051 = cos(r144050);
double r144052 = r144045 * r144051;
double r144053 = sin(r144044);
double r144054 = sin(r144050);
double r144055 = r144053 * r144054;
double r144056 = r144052 + r144055;
double r144057 = r144038 * r144056;
return r144057;
}



Bits error versus g



Bits error versus h
Results
Initial program 1.0
rmApplied distribute-frac-neg1.0
Applied acos-neg1.0
Applied div-sub1.0
Applied associate-+r-1.0
Applied cos-diff0.1
Final simplification0.1
herbie shell --seed 2020056
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
:precision binary64
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))