Average Error: 1.0 → 1.0
Time: 19.6s
Precision: 64
\[2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\]
\[2 \cdot \cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{\sqrt[3]{3} \cdot \sqrt[3]{3}}}{\sqrt[3]{3}}\right)\right)\]
2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)
2 \cdot \cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{\sqrt[3]{3} \cdot \sqrt[3]{3}}}{\sqrt[3]{3}}\right)\right)
double f(double g, double h) {
        double r86943 = 2.0;
        double r86944 = atan2(1.0, 0.0);
        double r86945 = r86943 * r86944;
        double r86946 = 3.0;
        double r86947 = r86945 / r86946;
        double r86948 = g;
        double r86949 = -r86948;
        double r86950 = h;
        double r86951 = r86949 / r86950;
        double r86952 = acos(r86951);
        double r86953 = r86952 / r86946;
        double r86954 = r86947 + r86953;
        double r86955 = cos(r86954);
        double r86956 = r86943 * r86955;
        return r86956;
}

double f(double g, double h) {
        double r86957 = 2.0;
        double r86958 = 3.0;
        double r86959 = r86957 / r86958;
        double r86960 = atan2(1.0, 0.0);
        double r86961 = g;
        double r86962 = -r86961;
        double r86963 = h;
        double r86964 = r86962 / r86963;
        double r86965 = acos(r86964);
        double r86966 = cbrt(r86958);
        double r86967 = r86966 * r86966;
        double r86968 = r86965 / r86967;
        double r86969 = r86968 / r86966;
        double r86970 = fma(r86959, r86960, r86969);
        double r86971 = cos(r86970);
        double r86972 = r86957 * r86971;
        return r86972;
}

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}{2 \cdot \cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)}\]
  3. Using strategy rm
  4. Applied add-cube-cbrt1.0

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

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

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

Reproduce

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