Average Error: 1.0 → 1.0
Time: 24.7s
Precision: 64
\[2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\]
\[\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right) \cdot 2\]
2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)
\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right) \cdot 2
double f(double g, double h) {
        double r6631507 = 2.0;
        double r6631508 = atan2(1.0, 0.0);
        double r6631509 = r6631507 * r6631508;
        double r6631510 = 3.0;
        double r6631511 = r6631509 / r6631510;
        double r6631512 = g;
        double r6631513 = -r6631512;
        double r6631514 = h;
        double r6631515 = r6631513 / r6631514;
        double r6631516 = acos(r6631515);
        double r6631517 = r6631516 / r6631510;
        double r6631518 = r6631511 + r6631517;
        double r6631519 = cos(r6631518);
        double r6631520 = r6631507 * r6631519;
        return r6631520;
}

double f(double g, double h) {
        double r6631521 = 0.6666666666666666;
        double r6631522 = atan2(1.0, 0.0);
        double r6631523 = g;
        double r6631524 = -r6631523;
        double r6631525 = h;
        double r6631526 = r6631524 / r6631525;
        double r6631527 = acos(r6631526);
        double r6631528 = 3.0;
        double r6631529 = r6631527 / r6631528;
        double r6631530 = fma(r6631521, r6631522, r6631529);
        double r6631531 = cos(r6631530);
        double r6631532 = 2.0;
        double r6631533 = r6631531 * r6631532;
        return r6631533;
}

Error

Bits error versus g

Bits error versus h

Derivation

  1. Initial program 1.0

    \[2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\]
  2. Simplified1.0

    \[\leadsto \color{blue}{\cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right) \cdot 2}\]
  3. Final simplification1.0

    \[\leadsto \cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right) \cdot 2\]

Reproduce

herbie shell --seed 2019158 +o rules:numerics
(FPCore (g h)
  :name "2-ancestry mixing, negative discriminant"
  (* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))