Average Error: 1.0 → 1.0
Time: 15.0s
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 r2537207 = 2.0;
        double r2537208 = atan2(1.0, 0.0);
        double r2537209 = r2537207 * r2537208;
        double r2537210 = 3.0;
        double r2537211 = r2537209 / r2537210;
        double r2537212 = g;
        double r2537213 = -r2537212;
        double r2537214 = h;
        double r2537215 = r2537213 / r2537214;
        double r2537216 = acos(r2537215);
        double r2537217 = r2537216 / r2537210;
        double r2537218 = r2537211 + r2537217;
        double r2537219 = cos(r2537218);
        double r2537220 = r2537207 * r2537219;
        return r2537220;
}

double f(double g, double h) {
        double r2537221 = 2.0;
        double r2537222 = 0.6666666666666666;
        double r2537223 = atan2(1.0, 0.0);
        double r2537224 = g;
        double r2537225 = -r2537224;
        double r2537226 = h;
        double r2537227 = r2537225 / r2537226;
        double r2537228 = acos(r2537227);
        double r2537229 = 3.0;
        double r2537230 = sqrt(r2537229);
        double r2537231 = r2537228 / r2537230;
        double r2537232 = r2537231 / r2537230;
        double r2537233 = fma(r2537222, r2537223, r2537232);
        double r2537234 = cos(r2537233);
        double r2537235 = r2537221 * r2537234;
        return r2537235;
}

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 2019154 +o rules:numerics
(FPCore (g h)
  :name "2-ancestry mixing, negative discriminant"
  (* 2 (cos (+ (/ (* 2 PI) 3) (/ (acos (/ (- g) h)) 3)))))