Average Error: 0.6 → 0.8
Time: 22.6s
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(v \cdot v, v \cdot v, v \cdot v\right) \cdot 4 - 1\right)\]
\cos^{-1} \left(\frac{1 - 5 \cdot \left(v \cdot v\right)}{v \cdot v - 1}\right)
\cos^{-1} \left(\mathsf{fma}\left(v \cdot v, v \cdot v, v \cdot v\right) \cdot 4 - 1\right)
double f(double v) {
        double r9102203 = 1.0;
        double r9102204 = 5.0;
        double r9102205 = v;
        double r9102206 = r9102205 * r9102205;
        double r9102207 = r9102204 * r9102206;
        double r9102208 = r9102203 - r9102207;
        double r9102209 = r9102206 - r9102203;
        double r9102210 = r9102208 / r9102209;
        double r9102211 = acos(r9102210);
        return r9102211;
}

double f(double v) {
        double r9102212 = v;
        double r9102213 = r9102212 * r9102212;
        double r9102214 = fma(r9102213, r9102213, r9102213);
        double r9102215 = 4.0;
        double r9102216 = r9102214 * r9102215;
        double r9102217 = 1.0;
        double r9102218 = r9102216 - r9102217;
        double r9102219 = acos(r9102218);
        return r9102219;
}

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. Taylor expanded around 0 0.8

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

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

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

Reproduce

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