Average Error: 1.0 → 1.0
Time: 28.9s
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}}}{\sqrt{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}}}{\sqrt{3}}\right)\right)
double f(double g, double h) {
        double r5308231 = 2.0;
        double r5308232 = atan2(1.0, 0.0);
        double r5308233 = r5308231 * r5308232;
        double r5308234 = 3.0;
        double r5308235 = r5308233 / r5308234;
        double r5308236 = g;
        double r5308237 = -r5308236;
        double r5308238 = h;
        double r5308239 = r5308237 / r5308238;
        double r5308240 = acos(r5308239);
        double r5308241 = r5308240 / r5308234;
        double r5308242 = r5308235 + r5308241;
        double r5308243 = cos(r5308242);
        double r5308244 = r5308231 * r5308243;
        return r5308244;
}

double f(double g, double h) {
        double r5308245 = 2.0;
        double r5308246 = 0.6666666666666666;
        double r5308247 = atan2(1.0, 0.0);
        double r5308248 = g;
        double r5308249 = -r5308248;
        double r5308250 = h;
        double r5308251 = r5308249 / r5308250;
        double r5308252 = acos(r5308251);
        double r5308253 = 3.0;
        double r5308254 = sqrt(r5308253);
        double r5308255 = r5308252 / r5308254;
        double r5308256 = r5308255 / r5308254;
        double r5308257 = fma(r5308246, r5308247, r5308256);
        double r5308258 = cos(r5308257);
        double r5308259 = r5308245 * r5308258;
        return r5308259;
}

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 2 \cdot \cos \left(\mathsf{fma}\left(\frac{2}{3}, \pi, \frac{\frac{\cos^{-1} \left(\frac{-g}{h}\right)}{\sqrt{3}}}{\sqrt{3}}\right)\right)\]

Reproduce

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