2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\mathsf{log1p}\left(\left(\mathsf{expm1}\left(\left(\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \left(\left(\sqrt[3]{\cos^{-1} \left(\frac{-g}{h}\right)} \cdot \sqrt[3]{\cos^{-1} \left(\frac{-g}{h}\right)}\right) \cdot \frac{\sqrt[3]{\cos^{-1} \left(\frac{-g}{h}\right)}}{3}\right)\right)\right)\right)\right)\right)\right) \cdot 2double f(double g, double h) {
double r11112173 = 2.0;
double r11112174 = atan2(1.0, 0.0);
double r11112175 = r11112173 * r11112174;
double r11112176 = 3.0;
double r11112177 = r11112175 / r11112176;
double r11112178 = g;
double r11112179 = -r11112178;
double r11112180 = h;
double r11112181 = r11112179 / r11112180;
double r11112182 = acos(r11112181);
double r11112183 = r11112182 / r11112176;
double r11112184 = r11112177 + r11112183;
double r11112185 = cos(r11112184);
double r11112186 = r11112173 * r11112185;
return r11112186;
}
double f(double g, double h) {
double r11112187 = 0.6666666666666666;
double r11112188 = atan2(1.0, 0.0);
double r11112189 = g;
double r11112190 = -r11112189;
double r11112191 = h;
double r11112192 = r11112190 / r11112191;
double r11112193 = acos(r11112192);
double r11112194 = cbrt(r11112193);
double r11112195 = r11112194 * r11112194;
double r11112196 = 3.0;
double r11112197 = r11112194 / r11112196;
double r11112198 = r11112195 * r11112197;
double r11112199 = fma(r11112187, r11112188, r11112198);
double r11112200 = cos(r11112199);
double r11112201 = expm1(r11112200);
double r11112202 = log1p(r11112201);
double r11112203 = 2.0;
double r11112204 = r11112202 * r11112203;
return r11112204;
}



Bits error versus g



Bits error versus h
Initial program 1.0
Simplified1.0
rmApplied log1p-expm1-u1.0
rmApplied *-un-lft-identity1.0
Applied add-cube-cbrt1.0
Applied times-frac1.0
Simplified1.0
Final simplification1.0
herbie shell --seed 2019120 +o rules:numerics
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
(* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))