Average Error: 39.4 → 15.4
Time: 6.9s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -4.517751507358619699596019186183573409913 \cdot 10^{-14}:\\ \;\;\;\;\frac{{\left(\cos \varepsilon \cdot \cos x\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\left(\sin x \cdot \sin \varepsilon + \cos x\right) + \cos \varepsilon \cdot \cos x\right) + \left(\cos \varepsilon \cdot \cos x\right) \cdot \left(\cos \varepsilon \cdot \cos x\right)}\\ \mathbf{elif}\;\varepsilon \le 3.868259295745755680238551175997852027422 \cdot 10^{-7}:\\ \;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}}\right) - \cos x\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -4.517751507358619699596019186183573409913 \cdot 10^{-14}:\\
\;\;\;\;\frac{{\left(\cos \varepsilon \cdot \cos x\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\left(\sin x \cdot \sin \varepsilon + \cos x\right) + \cos \varepsilon \cdot \cos x\right) + \left(\cos \varepsilon \cdot \cos x\right) \cdot \left(\cos \varepsilon \cdot \cos x\right)}\\

\mathbf{elif}\;\varepsilon \le 3.868259295745755680238551175997852027422 \cdot 10^{-7}:\\
\;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\

\mathbf{else}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}}\right) - \cos x\\

\end{array}
double f(double x, double eps) {
        double r56907 = x;
        double r56908 = eps;
        double r56909 = r56907 + r56908;
        double r56910 = cos(r56909);
        double r56911 = cos(r56907);
        double r56912 = r56910 - r56911;
        return r56912;
}

double f(double x, double eps) {
        double r56913 = eps;
        double r56914 = -4.51775150735862e-14;
        bool r56915 = r56913 <= r56914;
        double r56916 = cos(r56913);
        double r56917 = x;
        double r56918 = cos(r56917);
        double r56919 = r56916 * r56918;
        double r56920 = 3.0;
        double r56921 = pow(r56919, r56920);
        double r56922 = sin(r56917);
        double r56923 = sin(r56913);
        double r56924 = r56922 * r56923;
        double r56925 = r56924 + r56918;
        double r56926 = pow(r56925, r56920);
        double r56927 = r56921 - r56926;
        double r56928 = r56925 + r56919;
        double r56929 = r56925 * r56928;
        double r56930 = r56919 * r56919;
        double r56931 = r56929 + r56930;
        double r56932 = r56927 / r56931;
        double r56933 = 3.8682592957457557e-07;
        bool r56934 = r56913 <= r56933;
        double r56935 = 0.041666666666666664;
        double r56936 = 4.0;
        double r56937 = pow(r56913, r56936);
        double r56938 = r56935 * r56937;
        double r56939 = r56917 * r56913;
        double r56940 = 0.5;
        double r56941 = 2.0;
        double r56942 = pow(r56913, r56941);
        double r56943 = r56940 * r56942;
        double r56944 = r56939 + r56943;
        double r56945 = r56938 - r56944;
        double r56946 = r56918 * r56916;
        double r56947 = pow(r56924, r56920);
        double r56948 = cbrt(r56947);
        double r56949 = r56946 - r56948;
        double r56950 = r56949 - r56918;
        double r56951 = r56934 ? r56945 : r56950;
        double r56952 = r56915 ? r56932 : r56951;
        return r56952;
}

Error

Bits error versus x

Bits error versus eps

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if eps < -4.51775150735862e-14

    1. Initial program 32.1

      \[\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. Taylor expanded around inf 1.9

      \[\leadsto \color{blue}{\cos \varepsilon \cdot \cos x - \left(\sin x \cdot \sin \varepsilon + \cos x\right)}\]
    5. Using strategy rm
    6. Applied flip3--2.1

      \[\leadsto \color{blue}{\frac{{\left(\cos \varepsilon \cdot \cos x\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x\right) \cdot \left(\cos \varepsilon \cdot \cos x\right) + \left(\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x\right) + \left(\cos \varepsilon \cdot \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x\right)\right)}}\]
    7. Simplified2.1

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

    if -4.51775150735862e-14 < eps < 3.8682592957457557e-07

    1. Initial program 49.0

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

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Taylor expanded around inf 48.7

      \[\leadsto \color{blue}{\cos \varepsilon \cdot \cos x - \left(\sin x \cdot \sin \varepsilon + \cos x\right)}\]
    5. Taylor expanded around 0 30.6

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

    if 3.8682592957457557e-07 < eps

    1. Initial program 29.5

      \[\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-cbrt-cube1.1

      \[\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.2

      \[\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.1

      \[\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.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -4.517751507358619699596019186183573409913 \cdot 10^{-14}:\\ \;\;\;\;\frac{{\left(\cos \varepsilon \cdot \cos x\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\left(\sin x \cdot \sin \varepsilon + \cos x\right) + \cos \varepsilon \cdot \cos x\right) + \left(\cos \varepsilon \cdot \cos x\right) \cdot \left(\cos \varepsilon \cdot \cos x\right)}\\ \mathbf{elif}\;\varepsilon \le 3.868259295745755680238551175997852027422 \cdot 10^{-7}:\\ \;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}}\right) - \cos x\\ \end{array}\]

Reproduce

herbie shell --seed 2019354 
(FPCore (x eps)
  :name "2cos (problem 3.3.5)"
  :precision binary64
  (- (cos (+ x eps)) (cos x)))