2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\left(\cos \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right) \cdot \cos \left(\frac{2}{3} \cdot \pi\right) - \sin \left(\sqrt{\pi} \cdot \left(\frac{2}{3} \cdot \sqrt{\pi}\right)\right) \cdot \sin \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right) \cdot 2double f(double g, double h) {
double r6467147 = 2.0;
double r6467148 = atan2(1.0, 0.0);
double r6467149 = r6467147 * r6467148;
double r6467150 = 3.0;
double r6467151 = r6467149 / r6467150;
double r6467152 = g;
double r6467153 = -r6467152;
double r6467154 = h;
double r6467155 = r6467153 / r6467154;
double r6467156 = acos(r6467155);
double r6467157 = r6467156 / r6467150;
double r6467158 = r6467151 + r6467157;
double r6467159 = cos(r6467158);
double r6467160 = r6467147 * r6467159;
return r6467160;
}
double f(double g, double h) {
double r6467161 = g;
double r6467162 = -r6467161;
double r6467163 = h;
double r6467164 = r6467162 / r6467163;
double r6467165 = acos(r6467164);
double r6467166 = 3.0;
double r6467167 = r6467165 / r6467166;
double r6467168 = cos(r6467167);
double r6467169 = 2.0;
double r6467170 = r6467169 / r6467166;
double r6467171 = atan2(1.0, 0.0);
double r6467172 = r6467170 * r6467171;
double r6467173 = cos(r6467172);
double r6467174 = r6467168 * r6467173;
double r6467175 = sqrt(r6467171);
double r6467176 = r6467170 * r6467175;
double r6467177 = r6467175 * r6467176;
double r6467178 = sin(r6467177);
double r6467179 = sin(r6467167);
double r6467180 = r6467178 * r6467179;
double r6467181 = r6467174 - r6467180;
double r6467182 = r6467181 * r6467169;
return r6467182;
}



Bits error versus g



Bits error versus h
Results
Initial program 1.0
Simplified1.0
rmApplied fma-udef1.0
Applied cos-sum1.0
rmApplied add-sqr-sqrt0.0
Applied associate-*r*0.0
Final simplification0.0
herbie shell --seed 2019200 +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)))))