Average Error: 39.4 → 15.9
Time: 6.6s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -8.6681134187816791 \cdot 10^{-13}:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{\left(\left(\sin x \cdot \sin x\right) \cdot \sin x\right) \cdot \left(\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon\right)}\right) - \cos x\\ \mathbf{elif}\;\varepsilon \le 3.4911106815067981 \cdot 10^{-10}:\\ \;\;\;\;1 \cdot \left(\varepsilon \cdot \left({\varepsilon}^{3} \cdot \frac{1}{24} - \mathsf{fma}\left(\frac{1}{2}, \varepsilon, x\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -8.6681134187816791 \cdot 10^{-13}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{\left(\left(\sin x \cdot \sin x\right) \cdot \sin x\right) \cdot \left(\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon\right)}\right) - \cos x\\

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

\mathbf{else}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\

\end{array}
double f(double x, double eps) {
        double r42905 = x;
        double r42906 = eps;
        double r42907 = r42905 + r42906;
        double r42908 = cos(r42907);
        double r42909 = cos(r42905);
        double r42910 = r42908 - r42909;
        return r42910;
}

double f(double x, double eps) {
        double r42911 = eps;
        double r42912 = -8.668113418781679e-13;
        bool r42913 = r42911 <= r42912;
        double r42914 = x;
        double r42915 = cos(r42914);
        double r42916 = cos(r42911);
        double r42917 = r42915 * r42916;
        double r42918 = sin(r42914);
        double r42919 = r42918 * r42918;
        double r42920 = r42919 * r42918;
        double r42921 = sin(r42911);
        double r42922 = r42921 * r42921;
        double r42923 = r42922 * r42921;
        double r42924 = r42920 * r42923;
        double r42925 = cbrt(r42924);
        double r42926 = r42917 - r42925;
        double r42927 = r42926 - r42915;
        double r42928 = 3.491110681506798e-10;
        bool r42929 = r42911 <= r42928;
        double r42930 = 1.0;
        double r42931 = 3.0;
        double r42932 = pow(r42911, r42931);
        double r42933 = 0.041666666666666664;
        double r42934 = r42932 * r42933;
        double r42935 = 0.5;
        double r42936 = fma(r42935, r42911, r42914);
        double r42937 = r42934 - r42936;
        double r42938 = r42911 * r42937;
        double r42939 = r42930 * r42938;
        double r42940 = r42918 * r42921;
        double r42941 = r42917 - r42940;
        double r42942 = pow(r42941, r42931);
        double r42943 = pow(r42915, r42931);
        double r42944 = r42942 - r42943;
        double r42945 = r42916 * r42915;
        double r42946 = r42945 - r42940;
        double r42947 = r42941 + r42915;
        double r42948 = r42946 * r42947;
        double r42949 = r42915 * r42915;
        double r42950 = r42948 + r42949;
        double r42951 = r42944 / r42950;
        double r42952 = r42929 ? r42939 : r42951;
        double r42953 = r42913 ? r42927 : r42952;
        return r42953;
}

Error

Bits error versus x

Bits error versus eps

Derivation

  1. Split input into 3 regimes
  2. if eps < -8.668113418781679e-13

    1. Initial program 31.0

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

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

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

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

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

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \sqrt[3]{\color{blue}{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}}}\right) - \cos x\]
    9. Using strategy rm
    10. Applied add-cbrt-cube1.8

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\sin x \cdot \color{blue}{\sqrt[3]{\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon}}\right)}^{3}}\right) - \cos x\]
    11. Applied add-cbrt-cube1.9

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\color{blue}{\sqrt[3]{\left(\sin x \cdot \sin x\right) \cdot \sin x}} \cdot \sqrt[3]{\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon}\right)}^{3}}\right) - \cos x\]
    12. Applied cbrt-unprod1.8

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\color{blue}{\left(\sqrt[3]{\left(\left(\sin x \cdot \sin x\right) \cdot \sin x\right) \cdot \left(\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon\right)}\right)}}^{3}}\right) - \cos x\]
    13. Applied rem-cube-cbrt1.8

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

    if -8.668113418781679e-13 < eps < 3.491110681506798e-10

    1. Initial program 48.2

      \[\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. Using strategy rm
    5. Applied *-un-lft-identity48.0

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

      \[\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--48.0

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

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

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

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

    if 3.491110681506798e-10 < eps

    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. Using strategy rm
    5. Applied flip3--1.5

      \[\leadsto \color{blue}{\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\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) + \left(\cos x \cdot \cos x + \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) \cdot \cos x\right)}}\]
    6. Simplified1.5

      \[\leadsto \frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\color{blue}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification15.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -8.6681134187816791 \cdot 10^{-13}:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{\left(\left(\sin x \cdot \sin x\right) \cdot \sin x\right) \cdot \left(\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon\right)}\right) - \cos x\\ \mathbf{elif}\;\varepsilon \le 3.4911106815067981 \cdot 10^{-10}:\\ \;\;\;\;1 \cdot \left(\varepsilon \cdot \left({\varepsilon}^{3} \cdot \frac{1}{24} - \mathsf{fma}\left(\frac{1}{2}, \varepsilon, x\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\ \end{array}\]

Reproduce

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