Average Error: 39.5 → 0.9
Time: 16.3s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -8.608808965388138481969471094146229006583 \cdot 10^{-5} \lor \neg \left(\varepsilon \le 260530.52023522579111158847808837890625\right):\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin \varepsilon \cdot \sin x\right) - \cos x\\ \mathbf{else}:\\ \;\;\;\;\left(\sin \left(\frac{\varepsilon}{2}\right) \cdot -2\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -8.608808965388138481969471094146229006583 \cdot 10^{-5} \lor \neg \left(\varepsilon \le 260530.52023522579111158847808837890625\right):\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin \varepsilon \cdot \sin x\right) - \cos x\\

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

\end{array}
double f(double x, double eps) {
        double r46743 = x;
        double r46744 = eps;
        double r46745 = r46743 + r46744;
        double r46746 = cos(r46745);
        double r46747 = cos(r46743);
        double r46748 = r46746 - r46747;
        return r46748;
}

double f(double x, double eps) {
        double r46749 = eps;
        double r46750 = -8.608808965388138e-05;
        bool r46751 = r46749 <= r46750;
        double r46752 = 260530.5202352258;
        bool r46753 = r46749 <= r46752;
        double r46754 = !r46753;
        bool r46755 = r46751 || r46754;
        double r46756 = x;
        double r46757 = cos(r46756);
        double r46758 = cos(r46749);
        double r46759 = r46757 * r46758;
        double r46760 = sin(r46749);
        double r46761 = sin(r46756);
        double r46762 = r46760 * r46761;
        double r46763 = r46759 - r46762;
        double r46764 = r46763 - r46757;
        double r46765 = 2.0;
        double r46766 = r46749 / r46765;
        double r46767 = sin(r46766);
        double r46768 = -2.0;
        double r46769 = r46767 * r46768;
        double r46770 = r46756 + r46749;
        double r46771 = r46770 + r46756;
        double r46772 = r46771 / r46765;
        double r46773 = sin(r46772);
        double r46774 = r46769 * r46773;
        double r46775 = r46755 ? r46764 : r46774;
        return r46775;
}

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 2 regimes
  2. if eps < -8.608808965388138e-05 or 260530.5202352258 < eps

    1. Initial program 30.1

      \[\cos \left(x + \varepsilon\right) - \cos x\]
    2. Simplified30.1

      \[\leadsto \color{blue}{\cos \left(\varepsilon + x\right) - \cos x}\]
    3. Using strategy rm
    4. Applied cos-sum0.8

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

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

    if -8.608808965388138e-05 < eps < 260530.5202352258

    1. Initial program 49.1

      \[\cos \left(x + \varepsilon\right) - \cos x\]
    2. Simplified49.1

      \[\leadsto \color{blue}{\cos \left(\varepsilon + x\right) - \cos x}\]
    3. Using strategy rm
    4. Applied diff-cos37.6

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

      \[\leadsto -2 \cdot \color{blue}{\left(\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)}\]
    6. Using strategy rm
    7. Applied pow10.9

      \[\leadsto -2 \cdot \left(\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right) \cdot \color{blue}{{\left(\sin \left(\frac{\varepsilon}{2}\right)\right)}^{1}}\right)\]
    8. Applied pow10.9

      \[\leadsto -2 \cdot \left(\color{blue}{{\left(\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)}^{1}} \cdot {\left(\sin \left(\frac{\varepsilon}{2}\right)\right)}^{1}\right)\]
    9. Applied pow-prod-down0.9

      \[\leadsto -2 \cdot \color{blue}{{\left(\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)}^{1}}\]
    10. Applied pow10.9

      \[\leadsto \color{blue}{{-2}^{1}} \cdot {\left(\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)}^{1}\]
    11. Applied pow-prod-down0.9

      \[\leadsto \color{blue}{{\left(-2 \cdot \left(\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)\right)}^{1}}\]
    12. Simplified0.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -8.608808965388138481969471094146229006583 \cdot 10^{-5} \lor \neg \left(\varepsilon \le 260530.52023522579111158847808837890625\right):\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin \varepsilon \cdot \sin x\right) - \cos x\\ \mathbf{else}:\\ \;\;\;\;\left(\sin \left(\frac{\varepsilon}{2}\right) \cdot -2\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\\ \end{array}\]

Reproduce

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