2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\left(\left(\left(\cos \left(\frac{2}{3} \cdot \pi\right)\right)\right) \cdot \cos \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right) - \sin \left(\frac{2}{3} \cdot \pi\right) \cdot \sin \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right) \cdot 2double f(double g, double h) {
double r4665250 = 2.0;
double r4665251 = atan2(1.0, 0.0);
double r4665252 = r4665250 * r4665251;
double r4665253 = 3.0;
double r4665254 = r4665252 / r4665253;
double r4665255 = g;
double r4665256 = -r4665255;
double r4665257 = h;
double r4665258 = r4665256 / r4665257;
double r4665259 = acos(r4665258);
double r4665260 = r4665259 / r4665253;
double r4665261 = r4665254 + r4665260;
double r4665262 = cos(r4665261);
double r4665263 = r4665250 * r4665262;
return r4665263;
}
double f(double g, double h) {
double r4665264 = 0.6666666666666666;
double r4665265 = atan2(1.0, 0.0);
double r4665266 = r4665264 * r4665265;
double r4665267 = cos(r4665266);
double r4665268 = /* ERROR: no posit support in C */;
double r4665269 = /* ERROR: no posit support in C */;
double r4665270 = g;
double r4665271 = -r4665270;
double r4665272 = h;
double r4665273 = r4665271 / r4665272;
double r4665274 = acos(r4665273);
double r4665275 = 3.0;
double r4665276 = r4665274 / r4665275;
double r4665277 = cos(r4665276);
double r4665278 = r4665269 * r4665277;
double r4665279 = sin(r4665266);
double r4665280 = sin(r4665276);
double r4665281 = r4665279 * r4665280;
double r4665282 = r4665278 - r4665281;
double r4665283 = 2.0;
double r4665284 = r4665282 * r4665283;
return r4665284;
}



Bits error versus g



Bits error versus h
Initial program 1.0
Simplified1.0
rmApplied fma-udef1.0
Applied cos-sum1.0
rmApplied insert-posit160.0
Final simplification0.0
herbie shell --seed 2019146 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))