Average Error: 1.0 → 1.0
Time: 22.2s
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{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{\sqrt{3}}}{\sqrt{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{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{\sqrt{3}}}{\sqrt{3}}\right)\right) \cdot 2
double f(double g, double h) {
        double r6108598 = 2.0;
        double r6108599 = atan2(1.0, 0.0);
        double r6108600 = r6108598 * r6108599;
        double r6108601 = 3.0;
        double r6108602 = r6108600 / r6108601;
        double r6108603 = g;
        double r6108604 = -r6108603;
        double r6108605 = h;
        double r6108606 = r6108604 / r6108605;
        double r6108607 = acos(r6108606);
        double r6108608 = r6108607 / r6108601;
        double r6108609 = r6108602 + r6108608;
        double r6108610 = cos(r6108609);
        double r6108611 = r6108598 * r6108610;
        return r6108611;
}

double f(double g, double h) {
        double r6108612 = 2.0;
        double r6108613 = 3.0;
        double r6108614 = r6108612 / r6108613;
        double r6108615 = atan2(1.0, 0.0);
        double r6108616 = g;
        double r6108617 = -r6108616;
        double r6108618 = h;
        double r6108619 = r6108617 / r6108618;
        double r6108620 = acos(r6108619);
        double r6108621 = sqrt(r6108613);
        double r6108622 = r6108620 / r6108621;
        double r6108623 = r6108622 / r6108621;
        double r6108624 = fma(r6108614, r6108615, r6108623);
        double r6108625 = cos(r6108624);
        double r6108626 = r6108625 * r6108612;
        return r6108626;
}

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. Using strategy rm
  4. Applied add-sqr-sqrt1.0

    \[\leadsto \cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{\color{blue}{\sqrt{3} \cdot \sqrt{3}}}\right)\right) \cdot 2\]
  5. Applied associate-/r*1.0

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

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

Reproduce

herbie shell --seed 2019169 +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)))))