Average Error: 39.4 → 16.3
Time: 18.4s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -3.262150939480161652747637737520189360474 \cdot 10^{-9}:\\ \;\;\;\;\mathsf{fma}\left(\cos x, \cos \varepsilon, -\left(\sin x \cdot \sin \varepsilon + \cos x\right)\right)\\ \mathbf{elif}\;\varepsilon \le 1.628861255227420308764477650686573596197 \cdot 10^{-35}:\\ \;\;\;\;\varepsilon \cdot \left(\mathsf{fma}\left(\left(x \cdot x\right) \cdot \frac{1}{6}, x, \varepsilon \cdot \frac{-1}{2}\right) - x\right)\\ \mathbf{else}:\\ \;\;\;\;\log \left(e^{\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)}\right)\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -3.262150939480161652747637737520189360474 \cdot 10^{-9}:\\
\;\;\;\;\mathsf{fma}\left(\cos x, \cos \varepsilon, -\left(\sin x \cdot \sin \varepsilon + \cos x\right)\right)\\

\mathbf{elif}\;\varepsilon \le 1.628861255227420308764477650686573596197 \cdot 10^{-35}:\\
\;\;\;\;\varepsilon \cdot \left(\mathsf{fma}\left(\left(x \cdot x\right) \cdot \frac{1}{6}, x, \varepsilon \cdot \frac{-1}{2}\right) - x\right)\\

\mathbf{else}:\\
\;\;\;\;\log \left(e^{\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)}\right)\\

\end{array}
double f(double x, double eps) {
        double r2547803 = x;
        double r2547804 = eps;
        double r2547805 = r2547803 + r2547804;
        double r2547806 = cos(r2547805);
        double r2547807 = cos(r2547803);
        double r2547808 = r2547806 - r2547807;
        return r2547808;
}

double f(double x, double eps) {
        double r2547809 = eps;
        double r2547810 = -3.2621509394801617e-09;
        bool r2547811 = r2547809 <= r2547810;
        double r2547812 = x;
        double r2547813 = cos(r2547812);
        double r2547814 = cos(r2547809);
        double r2547815 = sin(r2547812);
        double r2547816 = sin(r2547809);
        double r2547817 = r2547815 * r2547816;
        double r2547818 = r2547817 + r2547813;
        double r2547819 = -r2547818;
        double r2547820 = fma(r2547813, r2547814, r2547819);
        double r2547821 = 1.6288612552274203e-35;
        bool r2547822 = r2547809 <= r2547821;
        double r2547823 = r2547812 * r2547812;
        double r2547824 = 0.16666666666666666;
        double r2547825 = r2547823 * r2547824;
        double r2547826 = -0.5;
        double r2547827 = r2547809 * r2547826;
        double r2547828 = fma(r2547825, r2547812, r2547827);
        double r2547829 = r2547828 - r2547812;
        double r2547830 = r2547809 * r2547829;
        double r2547831 = r2547813 * r2547814;
        double r2547832 = fma(r2547816, r2547815, r2547813);
        double r2547833 = r2547831 - r2547832;
        double r2547834 = exp(r2547833);
        double r2547835 = log(r2547834);
        double r2547836 = r2547822 ? r2547830 : r2547835;
        double r2547837 = r2547811 ? r2547820 : r2547836;
        return r2547837;
}

Error

Bits error versus x

Bits error versus eps

Derivation

  1. Split input into 3 regimes
  2. if eps < -3.2621509394801617e-09

    1. Initial program 30.7

      \[\cos \left(x + \varepsilon\right) - \cos x\]
    2. Using strategy rm
    3. Applied cos-sum1.3

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Applied associate--l-1.3

      \[\leadsto \color{blue}{\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)}\]
    5. Simplified1.3

      \[\leadsto \cos x \cdot \cos \varepsilon - \color{blue}{\mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)}\]
    6. Using strategy rm
    7. Applied fma-neg1.3

      \[\leadsto \color{blue}{\mathsf{fma}\left(\cos x, \cos \varepsilon, -\mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)\right)}\]
    8. Using strategy rm
    9. Applied fma-udef1.3

      \[\leadsto \mathsf{fma}\left(\cos x, \cos \varepsilon, -\color{blue}{\left(\sin \varepsilon \cdot \sin x + \cos x\right)}\right)\]

    if -3.2621509394801617e-09 < eps < 1.6288612552274203e-35

    1. Initial program 48.1

      \[\cos \left(x + \varepsilon\right) - \cos x\]
    2. Using strategy rm
    3. Applied cos-sum48.0

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Applied associate--l-48.0

      \[\leadsto \color{blue}{\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)}\]
    5. Simplified48.0

      \[\leadsto \cos x \cdot \cos \varepsilon - \color{blue}{\mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)}\]
    6. Using strategy rm
    7. Applied fma-neg48.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\cos x, \cos \varepsilon, -\mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)\right)}\]
    8. Taylor expanded around 0 31.0

      \[\leadsto \color{blue}{\frac{1}{6} \cdot \left({x}^{3} \cdot \varepsilon\right) - \left(\frac{1}{2} \cdot {\varepsilon}^{2} + x \cdot \varepsilon\right)}\]
    9. Simplified31.0

      \[\leadsto \color{blue}{\varepsilon \cdot \left(\mathsf{fma}\left(\frac{1}{6} \cdot \left(x \cdot x\right), x, \varepsilon \cdot \frac{-1}{2}\right) - x\right)}\]

    if 1.6288612552274203e-35 < eps

    1. Initial program 32.9

      \[\cos \left(x + \varepsilon\right) - \cos x\]
    2. Using strategy rm
    3. Applied cos-sum5.4

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Applied associate--l-5.4

      \[\leadsto \color{blue}{\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)}\]
    5. Simplified5.4

      \[\leadsto \cos x \cdot \cos \varepsilon - \color{blue}{\mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)}\]
    6. Using strategy rm
    7. Applied fma-neg5.4

      \[\leadsto \color{blue}{\mathsf{fma}\left(\cos x, \cos \varepsilon, -\mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)\right)}\]
    8. Using strategy rm
    9. Applied fma-udef5.4

      \[\leadsto \mathsf{fma}\left(\cos x, \cos \varepsilon, -\color{blue}{\left(\sin \varepsilon \cdot \sin x + \cos x\right)}\right)\]
    10. Using strategy rm
    11. Applied add-log-exp5.5

      \[\leadsto \color{blue}{\log \left(e^{\mathsf{fma}\left(\cos x, \cos \varepsilon, -\left(\sin \varepsilon \cdot \sin x + \cos x\right)\right)}\right)}\]
    12. Simplified5.5

      \[\leadsto \log \color{blue}{\left(e^{\cos \varepsilon \cdot \cos x - \mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification16.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -3.262150939480161652747637737520189360474 \cdot 10^{-9}:\\ \;\;\;\;\mathsf{fma}\left(\cos x, \cos \varepsilon, -\left(\sin x \cdot \sin \varepsilon + \cos x\right)\right)\\ \mathbf{elif}\;\varepsilon \le 1.628861255227420308764477650686573596197 \cdot 10^{-35}:\\ \;\;\;\;\varepsilon \cdot \left(\mathsf{fma}\left(\left(x \cdot x\right) \cdot \frac{1}{6}, x, \varepsilon \cdot \frac{-1}{2}\right) - x\right)\\ \mathbf{else}:\\ \;\;\;\;\log \left(e^{\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019192 +o rules:numerics
(FPCore (x eps)
  :name "2cos (problem 3.3.5)"
  (- (cos (+ x eps)) (cos x)))