2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)2 \cdot \left(\sin \left(\frac{\cos^{-1} \left(\frac{g}{h}\right)}{3} - \frac{\pi}{\frac{3}{2}}\right) \cdot \sin \left(\frac{\pi}{3}\right) + \cos \left(\frac{\cos^{-1} \left(\frac{g}{h}\right)}{3} - \frac{\pi}{\frac{3}{2}}\right) \cdot \frac{1}{2}\right)double f(double g, double h) {
double r21229729 = 2.0;
double r21229730 = atan2(1.0, 0.0);
double r21229731 = r21229729 * r21229730;
double r21229732 = 3.0;
double r21229733 = r21229731 / r21229732;
double r21229734 = g;
double r21229735 = -r21229734;
double r21229736 = h;
double r21229737 = r21229735 / r21229736;
double r21229738 = acos(r21229737);
double r21229739 = r21229738 / r21229732;
double r21229740 = r21229733 + r21229739;
double r21229741 = cos(r21229740);
double r21229742 = r21229729 * r21229741;
return r21229742;
}
double f(double g, double h) {
double r21229743 = 2.0;
double r21229744 = g;
double r21229745 = h;
double r21229746 = r21229744 / r21229745;
double r21229747 = acos(r21229746);
double r21229748 = 3.0;
double r21229749 = r21229747 / r21229748;
double r21229750 = atan2(1.0, 0.0);
double r21229751 = 1.5;
double r21229752 = r21229750 / r21229751;
double r21229753 = r21229749 - r21229752;
double r21229754 = sin(r21229753);
double r21229755 = r21229750 / r21229748;
double r21229756 = sin(r21229755);
double r21229757 = r21229754 * r21229756;
double r21229758 = cos(r21229753);
double r21229759 = 0.5;
double r21229760 = r21229758 * r21229759;
double r21229761 = r21229757 + r21229760;
double r21229762 = r21229743 * r21229761;
return r21229762;
}



Bits error versus g



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