2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)2 \cdot \sqrt[3]{{\left(\log \left(e^{\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}}}\right) \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 r30172 = 2.0;
double r30173 = atan2(1.0, 0.0);
double r30174 = r30172 * r30173;
double r30175 = 3.0;
double r30176 = r30174 / r30175;
double r30177 = g;
double r30178 = -r30177;
double r30179 = h;
double r30180 = r30178 / r30179;
double r30181 = acos(r30180);
double r30182 = r30181 / r30175;
double r30183 = r30176 + r30182;
double r30184 = cos(r30183);
double r30185 = r30172 * r30184;
return r30185;
}
double f(double g, double h) {
double r30186 = 2.0;
double r30187 = 3.0;
double r30188 = r30186 / r30187;
double r30189 = atan2(1.0, 0.0);
double r30190 = g;
double r30191 = -r30190;
double r30192 = h;
double r30193 = r30191 / r30192;
double r30194 = acos(r30193);
double r30195 = r30194 / r30187;
double r30196 = fma(r30188, r30189, r30195);
double r30197 = cos(r30196);
double r30198 = 2.0;
double r30199 = pow(r30197, r30198);
double r30200 = cbrt(r30199);
double r30201 = exp(r30200);
double r30202 = log(r30201);
double r30203 = cbrt(r30197);
double r30204 = r30202 * r30203;
double r30205 = 3.0;
double r30206 = pow(r30204, r30205);
double r30207 = cbrt(r30206);
double r30208 = r30186 * r30207;
return r30208;
}



Bits error versus g



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