Average Error: 39.6 → 15.7
Time: 8.0s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -1.3976165695423843 \cdot 10^{-14} \lor \neg \left(\varepsilon \le 2.63597490420144011 \cdot 10^{-8}\right):\\ \;\;\;\;\frac{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right)} - \cos x\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.3976165695423843 \cdot 10^{-14} \lor \neg \left(\varepsilon \le 2.63597490420144011 \cdot 10^{-8}\right):\\
\;\;\;\;\frac{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right)} - \cos x\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\

\end{array}
double f(double x, double eps) {
        double r79055 = x;
        double r79056 = eps;
        double r79057 = r79055 + r79056;
        double r79058 = cos(r79057);
        double r79059 = cos(r79055);
        double r79060 = r79058 - r79059;
        return r79060;
}

double f(double x, double eps) {
        double r79061 = eps;
        double r79062 = -1.3976165695423843e-14;
        bool r79063 = r79061 <= r79062;
        double r79064 = 2.63597490420144e-08;
        bool r79065 = r79061 <= r79064;
        double r79066 = !r79065;
        bool r79067 = r79063 || r79066;
        double r79068 = x;
        double r79069 = cos(r79068);
        double r79070 = cos(r79061);
        double r79071 = sin(r79068);
        double r79072 = sin(r79061);
        double r79073 = r79071 * r79072;
        double r79074 = fma(r79069, r79070, r79073);
        double r79075 = r79069 * r79070;
        double r79076 = r79075 - r79073;
        double r79077 = r79074 * r79076;
        double r79078 = r79077 / r79074;
        double r79079 = r79078 - r79069;
        double r79080 = 0.041666666666666664;
        double r79081 = 4.0;
        double r79082 = pow(r79061, r79081);
        double r79083 = 0.5;
        double r79084 = 2.0;
        double r79085 = pow(r79061, r79084);
        double r79086 = r79083 * r79085;
        double r79087 = fma(r79068, r79061, r79086);
        double r79088 = -r79087;
        double r79089 = fma(r79080, r79082, r79088);
        double r79090 = r79067 ? r79079 : r79089;
        return r79090;
}

Error

Bits error versus x

Bits error versus eps

Derivation

  1. Split input into 2 regimes
  2. if eps < -1.3976165695423843e-14 or 2.63597490420144e-08 < eps

    1. Initial program 30.7

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

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Using strategy rm
    5. Applied flip--1.8

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

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

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

    if -1.3976165695423843e-14 < eps < 2.63597490420144e-08

    1. Initial program 49.3

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

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Using strategy rm
    5. Applied flip--49.1

      \[\leadsto \color{blue}{\frac{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x \cdot \cos x}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x}}\]
    6. Simplified49.1

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\cos \varepsilon, \cos x, -\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right)}}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x}\]
    7. Taylor expanded around 0 30.9

      \[\leadsto \color{blue}{\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)}\]
    8. Simplified30.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification15.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -1.3976165695423843 \cdot 10^{-14} \lor \neg \left(\varepsilon \le 2.63597490420144011 \cdot 10^{-8}\right):\\ \;\;\;\;\frac{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right)} - \cos x\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\ \end{array}\]

Reproduce

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