Average Error: 40.1 → 16.2
Time: 8.7s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -1.1888021786142176 \cdot 10^{-8} \lor \neg \left(\varepsilon \le 7.56729564966743332 \cdot 10^{-6}\right):\\ \;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \frac{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x\right) + \left(-{\left(\cos x\right)}^{2} \cdot {\left(\cos \varepsilon\right)}^{2}\right)}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) - \cos x \cdot \cos \varepsilon} + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)}\\ \mathbf{else}:\\ \;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.1888021786142176 \cdot 10^{-8} \lor \neg \left(\varepsilon \le 7.56729564966743332 \cdot 10^{-6}\right):\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \frac{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x\right) + \left(-{\left(\cos x\right)}^{2} \cdot {\left(\cos \varepsilon\right)}^{2}\right)}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) - \cos x \cdot \cos \varepsilon} + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)}\\

\mathbf{else}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\

\end{array}
double f(double x, double eps) {
        double r38339 = x;
        double r38340 = eps;
        double r38341 = r38339 + r38340;
        double r38342 = cos(r38341);
        double r38343 = cos(r38339);
        double r38344 = r38342 - r38343;
        return r38344;
}

double f(double x, double eps) {
        double r38345 = eps;
        double r38346 = -1.1888021786142176e-08;
        bool r38347 = r38345 <= r38346;
        double r38348 = 7.567295649667433e-06;
        bool r38349 = r38345 <= r38348;
        double r38350 = !r38349;
        bool r38351 = r38347 || r38350;
        double r38352 = x;
        double r38353 = cos(r38352);
        double r38354 = cos(r38345);
        double r38355 = r38353 * r38354;
        double r38356 = 3.0;
        double r38357 = pow(r38355, r38356);
        double r38358 = sin(r38352);
        double r38359 = sin(r38345);
        double r38360 = r38358 * r38359;
        double r38361 = r38360 + r38353;
        double r38362 = pow(r38361, r38356);
        double r38363 = r38357 - r38362;
        double r38364 = r38361 * r38361;
        double r38365 = 2.0;
        double r38366 = pow(r38353, r38365);
        double r38367 = pow(r38354, r38365);
        double r38368 = r38366 * r38367;
        double r38369 = -r38368;
        double r38370 = r38364 + r38369;
        double r38371 = r38361 - r38355;
        double r38372 = r38370 / r38371;
        double r38373 = r38361 * r38372;
        double r38374 = r38355 * r38355;
        double r38375 = r38373 + r38374;
        double r38376 = r38363 / r38375;
        double r38377 = 0.16666666666666666;
        double r38378 = pow(r38352, r38356);
        double r38379 = r38377 * r38378;
        double r38380 = r38379 - r38352;
        double r38381 = 0.5;
        double r38382 = r38345 * r38381;
        double r38383 = r38380 - r38382;
        double r38384 = r38345 * r38383;
        double r38385 = r38351 ? r38376 : r38384;
        return r38385;
}

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 < -1.1888021786142176e-08 or 7.567295649667433e-06 < eps

    1. Initial program 31.2

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

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

      \[\leadsto \color{blue}{\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)}\]
    5. Using strategy rm
    6. Applied flip3--1.3

      \[\leadsto \color{blue}{\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right) + \left(\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x\right) + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x\right)\right)}}\]
    7. Simplified1.3

      \[\leadsto \frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\color{blue}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\left(\sin x \cdot \sin \varepsilon + \cos x\right) + \cos x \cdot \cos \varepsilon\right) + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)}}\]
    8. Using strategy rm
    9. Applied flip-+1.3

      \[\leadsto \frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \color{blue}{\frac{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x\right) - \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) - \cos x \cdot \cos \varepsilon}} + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)}\]
    10. Simplified1.3

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

    if -1.1888021786142176e-08 < eps < 7.567295649667433e-06

    1. Initial program 49.1

      \[\cos \left(x + \varepsilon\right) - \cos x\]
    2. Taylor expanded around 0 31.5

      \[\leadsto \color{blue}{\frac{1}{6} \cdot \left({x}^{3} \cdot \varepsilon\right) - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)}\]
    3. Simplified31.5

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -1.1888021786142176 \cdot 10^{-8} \lor \neg \left(\varepsilon \le 7.56729564966743332 \cdot 10^{-6}\right):\\ \;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \frac{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x\right) + \left(-{\left(\cos x\right)}^{2} \cdot {\left(\cos \varepsilon\right)}^{2}\right)}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) - \cos x \cdot \cos \varepsilon} + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)}\\ \mathbf{else}:\\ \;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\ \end{array}\]

Reproduce

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