2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)2 \cdot \left(\log \left(\sqrt[3]{e^{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \sqrt[3]{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}} \cdot \left(\sqrt[3]{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}} \cdot \sqrt[3]{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}}\right)\right)\right)}}\right) + \log \left(\sqrt[3]{e^{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)}} \cdot \sqrt[3]{e^{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)}}\right)\right)double f(double g, double h) {
double r5992403 = 2.0;
double r5992404 = atan2(1.0, 0.0);
double r5992405 = r5992403 * r5992404;
double r5992406 = 3.0;
double r5992407 = r5992405 / r5992406;
double r5992408 = g;
double r5992409 = -r5992408;
double r5992410 = h;
double r5992411 = r5992409 / r5992410;
double r5992412 = acos(r5992411);
double r5992413 = r5992412 / r5992406;
double r5992414 = r5992407 + r5992413;
double r5992415 = cos(r5992414);
double r5992416 = r5992403 * r5992415;
return r5992416;
}
double f(double g, double h) {
double r5992417 = 2.0;
double r5992418 = 3.0;
double r5992419 = r5992417 / r5992418;
double r5992420 = atan2(1.0, 0.0);
double r5992421 = g;
double r5992422 = -r5992421;
double r5992423 = h;
double r5992424 = r5992422 / r5992423;
double r5992425 = acos(r5992424);
double r5992426 = r5992425 / r5992418;
double r5992427 = cbrt(r5992426);
double r5992428 = r5992427 * r5992427;
double r5992429 = r5992427 * r5992428;
double r5992430 = fma(r5992419, r5992420, r5992429);
double r5992431 = cos(r5992430);
double r5992432 = exp(r5992431);
double r5992433 = cbrt(r5992432);
double r5992434 = log(r5992433);
double r5992435 = fma(r5992419, r5992420, r5992426);
double r5992436 = cos(r5992435);
double r5992437 = exp(r5992436);
double r5992438 = cbrt(r5992437);
double r5992439 = r5992438 * r5992438;
double r5992440 = log(r5992439);
double r5992441 = r5992434 + r5992440;
double r5992442 = r5992417 * r5992441;
return r5992442;
}



Bits error versus g



Bits error versus h
Initial program 1.0
Simplified1.0
rmApplied add-log-exp1.0
rmApplied add-cube-cbrt0.1
Applied log-prod0.1
rmApplied add-cube-cbrt0.1
Final simplification0.1
herbie shell --seed 2019168 +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)))))