Average Error: 1.0 → 1.0
Time: 17.5s
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, \sqrt{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}} \cdot \sqrt{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{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, \sqrt{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}} \cdot \sqrt{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}}\right)\right)
double f(double g, double h) {
        double r2643298 = 2.0;
        double r2643299 = atan2(1.0, 0.0);
        double r2643300 = r2643298 * r2643299;
        double r2643301 = 3.0;
        double r2643302 = r2643300 / r2643301;
        double r2643303 = g;
        double r2643304 = -r2643303;
        double r2643305 = h;
        double r2643306 = r2643304 / r2643305;
        double r2643307 = acos(r2643306);
        double r2643308 = r2643307 / r2643301;
        double r2643309 = r2643302 + r2643308;
        double r2643310 = cos(r2643309);
        double r2643311 = r2643298 * r2643310;
        return r2643311;
}

double f(double g, double h) {
        double r2643312 = 2.0;
        double r2643313 = 0.6666666666666666;
        double r2643314 = atan2(1.0, 0.0);
        double r2643315 = g;
        double r2643316 = -r2643315;
        double r2643317 = h;
        double r2643318 = r2643316 / r2643317;
        double r2643319 = acos(r2643318);
        double r2643320 = 3.0;
        double r2643321 = r2643319 / r2643320;
        double r2643322 = sqrt(r2643321);
        double r2643323 = r2643322 * r2643322;
        double r2643324 = fma(r2643313, r2643314, r2643323);
        double r2643325 = cos(r2643324);
        double r2643326 = r2643312 * r2643325;
        return r2643326;
}

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

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

Reproduce

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