Average Error: 39.5 → 1.2
Time: 26.5s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -7.2509140556996545 \cdot 10^{-06}:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\ \mathbf{elif}\;\varepsilon \le 6.905261741219337 \cdot 10^{-05}:\\ \;\;\;\;\sin \left(\frac{\varepsilon}{2}\right) \cdot \left(-2 \cdot \left(\sqrt[3]{\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)} \cdot \left(\sqrt[3]{\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)} \cdot \sqrt[3]{\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)}\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\cos x \cdot \cos \varepsilon - \left(\cos x + \sin x \cdot \sin \varepsilon\right)\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -7.2509140556996545 \cdot 10^{-06}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\

\mathbf{elif}\;\varepsilon \le 6.905261741219337 \cdot 10^{-05}:\\
\;\;\;\;\sin \left(\frac{\varepsilon}{2}\right) \cdot \left(-2 \cdot \left(\sqrt[3]{\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)} \cdot \left(\sqrt[3]{\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)} \cdot \sqrt[3]{\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)}\right)\right)\right)\\

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

\end{array}
double f(double x, double eps) {
        double r2921349 = x;
        double r2921350 = eps;
        double r2921351 = r2921349 + r2921350;
        double r2921352 = cos(r2921351);
        double r2921353 = cos(r2921349);
        double r2921354 = r2921352 - r2921353;
        return r2921354;
}

double f(double x, double eps) {
        double r2921355 = eps;
        double r2921356 = -7.2509140556996545e-06;
        bool r2921357 = r2921355 <= r2921356;
        double r2921358 = x;
        double r2921359 = cos(r2921358);
        double r2921360 = cos(r2921355);
        double r2921361 = r2921359 * r2921360;
        double r2921362 = sin(r2921358);
        double r2921363 = sin(r2921355);
        double r2921364 = r2921362 * r2921363;
        double r2921365 = r2921361 - r2921364;
        double r2921366 = r2921365 - r2921359;
        double r2921367 = 6.905261741219337e-05;
        bool r2921368 = r2921355 <= r2921367;
        double r2921369 = 2.0;
        double r2921370 = r2921355 / r2921369;
        double r2921371 = sin(r2921370);
        double r2921372 = -2.0;
        double r2921373 = r2921358 + r2921355;
        double r2921374 = r2921373 + r2921358;
        double r2921375 = r2921374 / r2921369;
        double r2921376 = sin(r2921375);
        double r2921377 = cbrt(r2921376);
        double r2921378 = r2921377 * r2921377;
        double r2921379 = r2921377 * r2921378;
        double r2921380 = r2921372 * r2921379;
        double r2921381 = r2921371 * r2921380;
        double r2921382 = r2921359 + r2921364;
        double r2921383 = r2921361 - r2921382;
        double r2921384 = r2921368 ? r2921381 : r2921383;
        double r2921385 = r2921357 ? r2921366 : r2921384;
        return r2921385;
}

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 < -7.2509140556996545e-06

    1. Initial program 30.3

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

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

    if -7.2509140556996545e-06 < eps < 6.905261741219337e-05

    1. Initial program 49.0

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

      \[\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{x + \left(\varepsilon + x\right)}{2}\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)}\]
    5. Using strategy rm
    6. Applied associate-*r*0.5

      \[\leadsto \color{blue}{\left(-2 \cdot \sin \left(\frac{x + \left(\varepsilon + x\right)}{2}\right)\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt1.4

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

    if 6.905261741219337e-05 < eps

    1. Initial program 30.7

      \[\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-0.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -7.2509140556996545 \cdot 10^{-06}:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\ \mathbf{elif}\;\varepsilon \le 6.905261741219337 \cdot 10^{-05}:\\ \;\;\;\;\sin \left(\frac{\varepsilon}{2}\right) \cdot \left(-2 \cdot \left(\sqrt[3]{\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)} \cdot \left(\sqrt[3]{\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)} \cdot \sqrt[3]{\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)}\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\cos x \cdot \cos \varepsilon - \left(\cos x + \sin x \cdot \sin \varepsilon\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019124 +o rules:numerics
(FPCore (x eps)
  :name "2cos (problem 3.3.5)"
  (- (cos (+ x eps)) (cos x)))