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 r149774 = 2.0;
double r149775 = atan2(1.0, 0.0);
double r149776 = r149774 * r149775;
double r149777 = 3.0;
double r149778 = r149776 / r149777;
double r149779 = g;
double r149780 = -r149779;
double r149781 = h;
double r149782 = r149780 / r149781;
double r149783 = acos(r149782);
double r149784 = r149783 / r149777;
double r149785 = r149778 + r149784;
double r149786 = cos(r149785);
double r149787 = r149774 * r149786;
return r149787;
}
double f(double g, double h) {
double r149788 = 2.0;
double r149789 = atan2(1.0, 0.0);
double r149790 = r149788 * r149789;
double r149791 = 3.0;
double r149792 = r149790 / r149791;
double r149793 = r149789 / r149791;
double r149794 = r149792 + r149793;
double r149795 = cos(r149794);
double r149796 = g;
double r149797 = h;
double r149798 = r149796 / r149797;
double r149799 = acos(r149798);
double r149800 = r149799 / r149791;
double r149801 = cos(r149800);
double r149802 = r149795 * r149801;
double r149803 = sin(r149794);
double r149804 = sin(r149800);
double r149805 = r149803 * r149804;
double r149806 = r149802 + r149805;
double r149807 = r149788 * r149806;
return r149807;
}



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