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 r103083 = 2.0;
double r103084 = atan2(1.0, 0.0);
double r103085 = r103083 * r103084;
double r103086 = 3.0;
double r103087 = r103085 / r103086;
double r103088 = g;
double r103089 = -r103088;
double r103090 = h;
double r103091 = r103089 / r103090;
double r103092 = acos(r103091);
double r103093 = r103092 / r103086;
double r103094 = r103087 + r103093;
double r103095 = cos(r103094);
double r103096 = r103083 * r103095;
return r103096;
}
double f(double g, double h) {
double r103097 = 2.0;
double r103098 = atan2(1.0, 0.0);
double r103099 = r103097 * r103098;
double r103100 = 3.0;
double r103101 = r103099 / r103100;
double r103102 = r103098 / r103100;
double r103103 = r103101 + r103102;
double r103104 = cos(r103103);
double r103105 = g;
double r103106 = h;
double r103107 = r103105 / r103106;
double r103108 = acos(r103107);
double r103109 = r103108 / r103100;
double r103110 = cos(r103109);
double r103111 = r103104 * r103110;
double r103112 = sin(r103103);
double r103113 = sin(r103109);
double r103114 = r103112 * r103113;
double r103115 = r103111 + r103114;
double r103116 = r103097 * r103115;
return r103116;
}



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 2019326
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
:precision binary64
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))