Average Error: 39.5 → 15.5
Time: 6.6s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -4.366573983933027 \cdot 10^{-4} \lor \neg \left(\varepsilon \le 2.17240038846879428 \cdot 10^{-10}\right):\\ \;\;\;\;1 \cdot \mathsf{fma}\left(\cos \varepsilon, \cos x, -\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\varepsilon \cdot \left({\varepsilon}^{3} \cdot \frac{1}{24} - \mathsf{fma}\left(\frac{1}{2}, \varepsilon, x\right)\right) + \mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right) \cdot \left(\left(-1\right) + 1\right)\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -4.366573983933027 \cdot 10^{-4} \lor \neg \left(\varepsilon \le 2.17240038846879428 \cdot 10^{-10}\right):\\
\;\;\;\;1 \cdot \mathsf{fma}\left(\cos \varepsilon, \cos x, -\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)\\

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

\end{array}
double f(double x, double eps) {
        double r60476 = x;
        double r60477 = eps;
        double r60478 = r60476 + r60477;
        double r60479 = cos(r60478);
        double r60480 = cos(r60476);
        double r60481 = r60479 - r60480;
        return r60481;
}

double f(double x, double eps) {
        double r60482 = eps;
        double r60483 = -0.00043665739839330274;
        bool r60484 = r60482 <= r60483;
        double r60485 = 2.1724003884687943e-10;
        bool r60486 = r60482 <= r60485;
        double r60487 = !r60486;
        bool r60488 = r60484 || r60487;
        double r60489 = 1.0;
        double r60490 = cos(r60482);
        double r60491 = x;
        double r60492 = cos(r60491);
        double r60493 = sin(r60491);
        double r60494 = sin(r60482);
        double r60495 = fma(r60493, r60494, r60492);
        double r60496 = -r60495;
        double r60497 = fma(r60490, r60492, r60496);
        double r60498 = r60489 * r60497;
        double r60499 = 3.0;
        double r60500 = pow(r60482, r60499);
        double r60501 = 0.041666666666666664;
        double r60502 = r60500 * r60501;
        double r60503 = 0.5;
        double r60504 = fma(r60503, r60482, r60491);
        double r60505 = r60502 - r60504;
        double r60506 = r60482 * r60505;
        double r60507 = -r60489;
        double r60508 = r60507 + r60489;
        double r60509 = r60495 * r60508;
        double r60510 = r60506 + r60509;
        double r60511 = r60488 ? r60498 : r60510;
        return r60511;
}

Error

Bits error versus x

Bits error versus eps

Derivation

  1. Split input into 2 regimes
  2. if eps < -0.00043665739839330274 or 2.1724003884687943e-10 < eps

    1. Initial program 30.7

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

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Using strategy rm
    5. Applied *-un-lft-identity1.1

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \color{blue}{1 \cdot \cos x}\]
    6. Applied *-un-lft-identity1.1

      \[\leadsto \color{blue}{1 \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - 1 \cdot \cos x\]
    7. Applied distribute-lft-out--1.1

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

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

    if -0.00043665739839330274 < eps < 2.1724003884687943e-10

    1. Initial program 49.2

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

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

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

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

      \[\leadsto \cos x \cdot \cos \varepsilon - \color{blue}{\left(\sqrt[3]{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)}}\]
    8. Applied prod-diff49.3

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\cos \varepsilon, \cos x, -\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)} + \mathsf{fma}\left(-\sqrt[3]{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)}, \sqrt[3]{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)}, \sqrt[3]{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)}\right)\right)\]
    10. Simplified48.8

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

      \[\leadsto \color{blue}{\left(\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)} + \mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right) \cdot \left(\left(-1\right) + 1\right)\]
    12. Simplified31.1

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

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

Reproduce

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