Average Error: 40.0 → 16.3
Time: 12.0s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -1.821618172153552 \cdot 10^{-16} \lor \neg \left(\varepsilon \le 4.8191518634182737 \cdot 10^{-8}\right):\\ \;\;\;\;\mathsf{fma}\left(\cos \varepsilon, \cos x, -\frac{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon - \cos x\right)}{\sin x \cdot \sin \varepsilon - \cos x}\right)\\ \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.821618172153552 \cdot 10^{-16} \lor \neg \left(\varepsilon \le 4.8191518634182737 \cdot 10^{-8}\right):\\
\;\;\;\;\mathsf{fma}\left(\cos \varepsilon, \cos x, -\frac{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon - \cos x\right)}{\sin x \cdot \sin \varepsilon - \cos x}\right)\\

\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 r271 = x;
        double r272 = eps;
        double r273 = r271 + r272;
        double r274 = cos(r273);
        double r275 = cos(r271);
        double r276 = r274 - r275;
        return r276;
}

double f(double x, double eps) {
        double r277 = eps;
        double r278 = -1.8216181721535518e-16;
        bool r279 = r277 <= r278;
        double r280 = 4.819151863418274e-08;
        bool r281 = r277 <= r280;
        double r282 = !r281;
        bool r283 = r279 || r282;
        double r284 = cos(r277);
        double r285 = x;
        double r286 = cos(r285);
        double r287 = sin(r285);
        double r288 = sin(r277);
        double r289 = fma(r287, r288, r286);
        double r290 = r287 * r288;
        double r291 = r290 - r286;
        double r292 = r289 * r291;
        double r293 = r292 / r291;
        double r294 = -r293;
        double r295 = fma(r284, r286, r294);
        double r296 = 0.041666666666666664;
        double r297 = 4.0;
        double r298 = pow(r277, r297);
        double r299 = 0.5;
        double r300 = 2.0;
        double r301 = pow(r277, r300);
        double r302 = r299 * r301;
        double r303 = fma(r285, r277, r302);
        double r304 = -r303;
        double r305 = fma(r296, r298, r304);
        double r306 = r283 ? r295 : r305;
        return r306;
}

Error

Bits error versus x

Bits error versus eps

Derivation

  1. Split input into 2 regimes
  2. if eps < -1.8216181721535518e-16 or 4.819151863418274e-08 < eps

    1. Initial program 31.2

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

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

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

      \[\leadsto \cos x \cdot \cos \varepsilon - \color{blue}{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)}\]
    6. Taylor expanded around inf 1.9

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

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

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

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

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

    if -1.8216181721535518e-16 < eps < 4.819151863418274e-08

    1. Initial program 49.7

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

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

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

      \[\leadsto \cos x \cdot \cos \varepsilon - \color{blue}{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)}\]
    6. Taylor expanded around inf 49.6

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

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

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

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

      \[\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 simplification16.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -1.821618172153552 \cdot 10^{-16} \lor \neg \left(\varepsilon \le 4.8191518634182737 \cdot 10^{-8}\right):\\ \;\;\;\;\mathsf{fma}\left(\cos \varepsilon, \cos x, -\frac{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon - \cos x\right)}{\sin x \cdot \sin \varepsilon - \cos x}\right)\\ \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 2020025 +o rules:numerics
(FPCore (x eps)
  :name "2cos (problem 3.3.5)"
  :precision binary64
  (- (cos (+ x eps)) (cos x)))