Average Error: 39.8 → 16.5
Time: 6.5s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -1.0538197704106062 \cdot 10^{-8}:\\ \;\;\;\;\mathsf{fma}\left(\cos \varepsilon, \cos x, -\mathsf{log1p}\left(\mathsf{expm1}\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)\right)\right) + \mathsf{fma}\left(-\cos x, 1, \cos x\right)\\ \mathbf{elif}\;\varepsilon \le 3.27571737283016462 \cdot 10^{-56}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right) + \mathsf{fma}\left(-\cos x, 1, \cos x\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{expm1}\left(\mathsf{log1p}\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)\right) - \cos x\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.0538197704106062 \cdot 10^{-8}:\\
\;\;\;\;\mathsf{fma}\left(\cos \varepsilon, \cos x, -\mathsf{log1p}\left(\mathsf{expm1}\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)\right)\right) + \mathsf{fma}\left(-\cos x, 1, \cos x\right)\\

\mathbf{elif}\;\varepsilon \le 3.27571737283016462 \cdot 10^{-56}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right) + \mathsf{fma}\left(-\cos x, 1, \cos x\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{expm1}\left(\mathsf{log1p}\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)\right) - \cos x\\

\end{array}
double f(double x, double eps) {
        double r61771 = x;
        double r61772 = eps;
        double r61773 = r61771 + r61772;
        double r61774 = cos(r61773);
        double r61775 = cos(r61771);
        double r61776 = r61774 - r61775;
        return r61776;
}

double f(double x, double eps) {
        double r61777 = eps;
        double r61778 = -1.0538197704106062e-08;
        bool r61779 = r61777 <= r61778;
        double r61780 = cos(r61777);
        double r61781 = x;
        double r61782 = cos(r61781);
        double r61783 = sin(r61781);
        double r61784 = sin(r61777);
        double r61785 = fma(r61783, r61784, r61782);
        double r61786 = expm1(r61785);
        double r61787 = log1p(r61786);
        double r61788 = -r61787;
        double r61789 = fma(r61780, r61782, r61788);
        double r61790 = -r61782;
        double r61791 = 1.0;
        double r61792 = fma(r61790, r61791, r61782);
        double r61793 = r61789 + r61792;
        double r61794 = 3.2757173728301646e-56;
        bool r61795 = r61777 <= r61794;
        double r61796 = 0.041666666666666664;
        double r61797 = 4.0;
        double r61798 = pow(r61777, r61797);
        double r61799 = 0.5;
        double r61800 = 2.0;
        double r61801 = pow(r61777, r61800);
        double r61802 = r61799 * r61801;
        double r61803 = fma(r61781, r61777, r61802);
        double r61804 = -r61803;
        double r61805 = fma(r61796, r61798, r61804);
        double r61806 = r61805 + r61792;
        double r61807 = r61782 * r61780;
        double r61808 = r61783 * r61784;
        double r61809 = r61807 - r61808;
        double r61810 = log1p(r61809);
        double r61811 = expm1(r61810);
        double r61812 = r61811 - r61782;
        double r61813 = r61795 ? r61806 : r61812;
        double r61814 = r61779 ? r61793 : r61813;
        return r61814;
}

Error

Bits error versus x

Bits error versus eps

Derivation

  1. Split input into 3 regimes
  2. if eps < -1.0538197704106062e-08

    1. Initial program 31.0

      \[\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 add-cube-cbrt1.5

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \color{blue}{\left(\sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}\right) \cdot \sqrt[3]{\cos x}}\]
    6. Applied add-sqr-sqrt32.7

      \[\leadsto \color{blue}{\sqrt{\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon} \cdot \sqrt{\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon}} - \left(\sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}\right) \cdot \sqrt[3]{\cos x}\]
    7. Applied prod-diff32.7

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

      \[\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]{\cos x}, \sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}, \sqrt[3]{\cos x} \cdot \left(\sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}\right)\right)\]
    9. Simplified1.1

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

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

    if -1.0538197704106062e-08 < eps < 3.2757173728301646e-56

    1. Initial program 48.4

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

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

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \color{blue}{\left(\sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}\right) \cdot \sqrt[3]{\cos x}}\]
    6. Applied add-sqr-sqrt49.5

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

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

      \[\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]{\cos x}, \sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}, \sqrt[3]{\cos x} \cdot \left(\sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}\right)\right)\]
    9. Simplified48.2

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

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

      \[\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(-\cos x, 1, \cos x\right)\]
    13. Simplified30.7

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

    if 3.2757173728301646e-56 < eps

    1. Initial program 34.9

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

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

      \[\leadsto \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)\right)} - \cos x\]
  3. Recombined 3 regimes into one program.
  4. Final simplification16.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -1.0538197704106062 \cdot 10^{-8}:\\ \;\;\;\;\mathsf{fma}\left(\cos \varepsilon, \cos x, -\mathsf{log1p}\left(\mathsf{expm1}\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)\right)\right) + \mathsf{fma}\left(-\cos x, 1, \cos x\right)\\ \mathbf{elif}\;\varepsilon \le 3.27571737283016462 \cdot 10^{-56}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right) + \mathsf{fma}\left(-\cos x, 1, \cos x\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{expm1}\left(\mathsf{log1p}\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)\right) - \cos x\\ \end{array}\]

Reproduce

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