Average Error: 39.3 → 0.7
Time: 23.8s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -6.111174932312063087791464965903287520632 \cdot 10^{-4}:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\ \mathbf{elif}\;\varepsilon \le 4.781000628187973338029202047261279062695 \cdot 10^{-6}:\\ \;\;\;\;-2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -6.111174932312063087791464965903287520632 \cdot 10^{-4}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\

\mathbf{elif}\;\varepsilon \le 4.781000628187973338029202047261279062695 \cdot 10^{-6}:\\
\;\;\;\;-2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\\

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

\end{array}
double f(double x, double eps) {
        double r31705 = x;
        double r31706 = eps;
        double r31707 = r31705 + r31706;
        double r31708 = cos(r31707);
        double r31709 = cos(r31705);
        double r31710 = r31708 - r31709;
        return r31710;
}

double f(double x, double eps) {
        double r31711 = eps;
        double r31712 = -0.0006111174932312063;
        bool r31713 = r31711 <= r31712;
        double r31714 = x;
        double r31715 = cos(r31714);
        double r31716 = cos(r31711);
        double r31717 = r31715 * r31716;
        double r31718 = sin(r31714);
        double r31719 = sin(r31711);
        double r31720 = r31718 * r31719;
        double r31721 = r31717 - r31720;
        double r31722 = r31721 - r31715;
        double r31723 = 4.781000628187973e-06;
        bool r31724 = r31711 <= r31723;
        double r31725 = -2.0;
        double r31726 = 2.0;
        double r31727 = r31711 / r31726;
        double r31728 = sin(r31727);
        double r31729 = r31714 + r31711;
        double r31730 = r31729 + r31714;
        double r31731 = r31730 / r31726;
        double r31732 = sin(r31731);
        double r31733 = r31728 * r31732;
        double r31734 = r31725 * r31733;
        double r31735 = r31720 + r31715;
        double r31736 = r31717 - r31735;
        double r31737 = r31724 ? r31734 : r31736;
        double r31738 = r31713 ? r31722 : r31737;
        return r31738;
}

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 < -0.0006111174932312063

    1. Initial program 30.8

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

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

    if -0.0006111174932312063 < eps < 4.781000628187973e-06

    1. Initial program 48.7

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

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

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

    if 4.781000628187973e-06 < eps

    1. Initial program 29.6

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -6.111174932312063087791464965903287520632 \cdot 10^{-4}:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\ \mathbf{elif}\;\varepsilon \le 4.781000628187973338029202047261279062695 \cdot 10^{-6}:\\ \;\;\;\;-2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)\\ \end{array}\]

Reproduce

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