Average Error: 0.6 → 0.6
Time: 20.8s
Precision: 64
\[\cos^{-1} \left(\frac{1 - 5 \cdot \left(v \cdot v\right)}{v \cdot v - 1}\right)\]
\[\cos^{-1} \left(\frac{1}{\mathsf{fma}\left(v, v, -1\right)} \cdot \mathsf{fma}\left(-5 \cdot v, v, 1\right)\right)\]
\cos^{-1} \left(\frac{1 - 5 \cdot \left(v \cdot v\right)}{v \cdot v - 1}\right)
\cos^{-1} \left(\frac{1}{\mathsf{fma}\left(v, v, -1\right)} \cdot \mathsf{fma}\left(-5 \cdot v, v, 1\right)\right)
double f(double v) {
        double r8383853 = 1.0;
        double r8383854 = 5.0;
        double r8383855 = v;
        double r8383856 = r8383855 * r8383855;
        double r8383857 = r8383854 * r8383856;
        double r8383858 = r8383853 - r8383857;
        double r8383859 = r8383856 - r8383853;
        double r8383860 = r8383858 / r8383859;
        double r8383861 = acos(r8383860);
        return r8383861;
}

double f(double v) {
        double r8383862 = 1.0;
        double r8383863 = v;
        double r8383864 = -1.0;
        double r8383865 = fma(r8383863, r8383863, r8383864);
        double r8383866 = r8383862 / r8383865;
        double r8383867 = -5.0;
        double r8383868 = r8383867 * r8383863;
        double r8383869 = fma(r8383868, r8383863, r8383862);
        double r8383870 = r8383866 * r8383869;
        double r8383871 = acos(r8383870);
        return r8383871;
}

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. Using strategy rm
  4. Applied div-inv0.6

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

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

Reproduce

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