Average Error: 1.0 → 1.0
Time: 17.8s
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, \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\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, \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)\right) \cdot 2
double f(double g, double h) {
        double r4538734 = 2.0;
        double r4538735 = atan2(1.0, 0.0);
        double r4538736 = r4538734 * r4538735;
        double r4538737 = 3.0;
        double r4538738 = r4538736 / r4538737;
        double r4538739 = g;
        double r4538740 = -r4538739;
        double r4538741 = h;
        double r4538742 = r4538740 / r4538741;
        double r4538743 = acos(r4538742);
        double r4538744 = r4538743 / r4538737;
        double r4538745 = r4538738 + r4538744;
        double r4538746 = cos(r4538745);
        double r4538747 = r4538734 * r4538746;
        return r4538747;
}

double f(double g, double h) {
        double r4538748 = 0.6666666666666666;
        double r4538749 = atan2(1.0, 0.0);
        double r4538750 = g;
        double r4538751 = -r4538750;
        double r4538752 = h;
        double r4538753 = r4538751 / r4538752;
        double r4538754 = acos(r4538753);
        double r4538755 = 3.0;
        double r4538756 = r4538754 / r4538755;
        double r4538757 = fma(r4538748, r4538749, r4538756);
        double r4538758 = cos(r4538757);
        double r4538759 = 2.0;
        double r4538760 = r4538758 * r4538759;
        return r4538760;
}

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, \left(\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)\right) \cdot 2}\]
  3. Final simplification1.0

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

Reproduce

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