2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)2 \cdot \sqrt[3]{{\left(\sqrt[3]{{\left(\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)\right)}^{2}} \cdot \sqrt[3]{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)}\right)}^{3}}double f(double g, double h) {
double r98375 = 2.0;
double r98376 = atan2(1.0, 0.0);
double r98377 = r98375 * r98376;
double r98378 = 3.0;
double r98379 = r98377 / r98378;
double r98380 = g;
double r98381 = -r98380;
double r98382 = h;
double r98383 = r98381 / r98382;
double r98384 = acos(r98383);
double r98385 = r98384 / r98378;
double r98386 = r98379 + r98385;
double r98387 = cos(r98386);
double r98388 = r98375 * r98387;
return r98388;
}
double f(double g, double h) {
double r98389 = 2.0;
double r98390 = 3.0;
double r98391 = r98389 / r98390;
double r98392 = atan2(1.0, 0.0);
double r98393 = g;
double r98394 = -r98393;
double r98395 = h;
double r98396 = r98394 / r98395;
double r98397 = acos(r98396);
double r98398 = r98397 / r98390;
double r98399 = fma(r98391, r98392, r98398);
double r98400 = cos(r98399);
double r98401 = 2.0;
double r98402 = pow(r98400, r98401);
double r98403 = cbrt(r98402);
double r98404 = cbrt(r98400);
double r98405 = r98403 * r98404;
double r98406 = 3.0;
double r98407 = pow(r98405, r98406);
double r98408 = cbrt(r98407);
double r98409 = r98389 * r98408;
return r98409;
}



Bits error versus g



Bits error versus h
Initial program 1.0
Simplified1.0
rmApplied add-sqr-sqrt1.0
Applied associate-/r*1.0
rmApplied add-cbrt-cube1.0
Simplified1.0
rmApplied add-cube-cbrt1.0
Simplified0.1
Final simplification0.1
herbie shell --seed 2019303 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
:precision binary64
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))