Average Error: 0.6 → 0.8
Time: 23.4s
Precision: 64
\[\cos^{-1} \left(\frac{1 - 5 \cdot \left(v \cdot v\right)}{v \cdot v - 1}\right)\]
\[\cos^{-1} \left(\mathsf{fma}\left(\mathsf{fma}\left(v \cdot v, v \cdot v, v \cdot v\right), 4, -1\right)\right)\]
\cos^{-1} \left(\frac{1 - 5 \cdot \left(v \cdot v\right)}{v \cdot v - 1}\right)
\cos^{-1} \left(\mathsf{fma}\left(\mathsf{fma}\left(v \cdot v, v \cdot v, v \cdot v\right), 4, -1\right)\right)
double f(double v) {
        double r7329029 = 1.0;
        double r7329030 = 5.0;
        double r7329031 = v;
        double r7329032 = r7329031 * r7329031;
        double r7329033 = r7329030 * r7329032;
        double r7329034 = r7329029 - r7329033;
        double r7329035 = r7329032 - r7329029;
        double r7329036 = r7329034 / r7329035;
        double r7329037 = acos(r7329036);
        return r7329037;
}

double f(double v) {
        double r7329038 = v;
        double r7329039 = r7329038 * r7329038;
        double r7329040 = fma(r7329039, r7329039, r7329039);
        double r7329041 = 4.0;
        double r7329042 = -1.0;
        double r7329043 = fma(r7329040, r7329041, r7329042);
        double r7329044 = acos(r7329043);
        return r7329044;
}

Error

Bits error versus v

Derivation

  1. Initial program 0.6

    \[\cos^{-1} \left(\frac{1 - 5 \cdot \left(v \cdot v\right)}{v \cdot v - 1}\right)\]
  2. Simplified0.6

    \[\leadsto \color{blue}{\cos^{-1} \left(\frac{\mathsf{fma}\left(-5 \cdot v, v, 1\right)}{\mathsf{fma}\left(v, v, -1\right)}\right)}\]
  3. Taylor expanded around 0 0.8

    \[\leadsto \cos^{-1} \color{blue}{\left(\left(4 \cdot {v}^{4} + 4 \cdot {v}^{2}\right) - 1\right)}\]
  4. Simplified0.8

    \[\leadsto \cos^{-1} \color{blue}{\left(\mathsf{fma}\left(\mathsf{fma}\left(v \cdot v, v \cdot v, v \cdot v\right), 4, -1\right)\right)}\]
  5. Final simplification0.8

    \[\leadsto \cos^{-1} \left(\mathsf{fma}\left(\mathsf{fma}\left(v \cdot v, v \cdot v, v \cdot v\right), 4, -1\right)\right)\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(FPCore (v)
  :name "Falkner and Boettcher, Appendix B, 1"
  (acos (/ (- 1 (* 5 (* v v))) (- (* v v) 1))))