Average Error: 39.3 → 0.7
Time: 24.3s
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 r30226 = x;
        double r30227 = eps;
        double r30228 = r30226 + r30227;
        double r30229 = cos(r30228);
        double r30230 = cos(r30226);
        double r30231 = r30229 - r30230;
        return r30231;
}

double f(double x, double eps) {
        double r30232 = eps;
        double r30233 = -0.0006111174932312063;
        bool r30234 = r30232 <= r30233;
        double r30235 = x;
        double r30236 = cos(r30235);
        double r30237 = cos(r30232);
        double r30238 = r30236 * r30237;
        double r30239 = sin(r30235);
        double r30240 = sin(r30232);
        double r30241 = r30239 * r30240;
        double r30242 = r30238 - r30241;
        double r30243 = r30242 - r30236;
        double r30244 = 4.781000628187973e-06;
        bool r30245 = r30232 <= r30244;
        double r30246 = -2.0;
        double r30247 = 2.0;
        double r30248 = r30232 / r30247;
        double r30249 = sin(r30248);
        double r30250 = r30235 + r30232;
        double r30251 = r30250 + r30235;
        double r30252 = r30251 / r30247;
        double r30253 = sin(r30252);
        double r30254 = r30249 * r30253;
        double r30255 = r30246 * r30254;
        double r30256 = r30241 + r30236;
        double r30257 = r30238 - r30256;
        double r30258 = r30245 ? r30255 : r30257;
        double r30259 = r30234 ? r30243 : r30258;
        return r30259;
}

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