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{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{\sqrt{3}}}{\sqrt{3}}\right)\right) \cdot 2double f(double g, double h) {
double r6108598 = 2.0;
double r6108599 = atan2(1.0, 0.0);
double r6108600 = r6108598 * r6108599;
double r6108601 = 3.0;
double r6108602 = r6108600 / r6108601;
double r6108603 = g;
double r6108604 = -r6108603;
double r6108605 = h;
double r6108606 = r6108604 / r6108605;
double r6108607 = acos(r6108606);
double r6108608 = r6108607 / r6108601;
double r6108609 = r6108602 + r6108608;
double r6108610 = cos(r6108609);
double r6108611 = r6108598 * r6108610;
return r6108611;
}
double f(double g, double h) {
double r6108612 = 2.0;
double r6108613 = 3.0;
double r6108614 = r6108612 / r6108613;
double r6108615 = atan2(1.0, 0.0);
double r6108616 = g;
double r6108617 = -r6108616;
double r6108618 = h;
double r6108619 = r6108617 / r6108618;
double r6108620 = acos(r6108619);
double r6108621 = sqrt(r6108613);
double r6108622 = r6108620 / r6108621;
double r6108623 = r6108622 / r6108621;
double r6108624 = fma(r6108614, r6108615, r6108623);
double r6108625 = cos(r6108624);
double r6108626 = r6108625 * r6108612;
return r6108626;
}



Bits error versus g



Bits error versus h
Initial program 1.0
Simplified1.0
rmApplied add-sqr-sqrt1.0
Applied associate-/r*1.0
Final simplification1.0
herbie shell --seed 2019169 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
(* 2.0 (cos (+ (/ (* 2.0 PI) 3.0) (/ (acos (/ (- g) h)) 3.0)))))