Average Error: 39.1 → 0.7
Time: 19.3s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -0.03196418493759398127274096168548567220569:\\ \;\;\;\;\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)\\ \mathbf{elif}\;\varepsilon \le 9.763543264731029431170022947483744246711 \cdot 10^{-5}:\\ \;\;\;\;\left(-2 \cdot \sin \left(\frac{\varepsilon}{2}\right)\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -0.03196418493759398127274096168548567220569:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)\\

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

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

\end{array}
double f(double x, double eps) {
        double r20279 = x;
        double r20280 = eps;
        double r20281 = r20279 + r20280;
        double r20282 = cos(r20281);
        double r20283 = cos(r20279);
        double r20284 = r20282 - r20283;
        return r20284;
}

double f(double x, double eps) {
        double r20285 = eps;
        double r20286 = -0.03196418493759398;
        bool r20287 = r20285 <= r20286;
        double r20288 = x;
        double r20289 = cos(r20288);
        double r20290 = cos(r20285);
        double r20291 = r20289 * r20290;
        double r20292 = sin(r20288);
        double r20293 = sin(r20285);
        double r20294 = r20292 * r20293;
        double r20295 = r20294 + r20289;
        double r20296 = r20291 - r20295;
        double r20297 = 9.76354326473103e-05;
        bool r20298 = r20285 <= r20297;
        double r20299 = -2.0;
        double r20300 = 2.0;
        double r20301 = r20285 / r20300;
        double r20302 = sin(r20301);
        double r20303 = r20299 * r20302;
        double r20304 = r20288 + r20285;
        double r20305 = r20304 + r20288;
        double r20306 = r20305 / r20300;
        double r20307 = sin(r20306);
        double r20308 = r20303 * r20307;
        double r20309 = r20291 - r20294;
        double r20310 = r20309 - r20289;
        double r20311 = r20298 ? r20308 : r20310;
        double r20312 = r20287 ? r20296 : r20311;
        return r20312;
}

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.03196418493759398

    1. Initial program 29.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\]
    4. Applied associate--l-0.8

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

    if -0.03196418493759398 < eps < 9.76354326473103e-05

    1. Initial program 49.1

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

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

      \[\leadsto -2 \cdot \color{blue}{\left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)}\]
    5. Using strategy rm
    6. Applied associate-*r*0.6

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

    if 9.76354326473103e-05 < eps

    1. Initial program 29.1

      \[\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\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.7

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

Reproduce

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