Average Error: 39.2 → 15.6
Time: 7.1s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -1.894912541714580426696623582927259121789 \cdot 10^{-4}:\\ \;\;\;\;\frac{{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\ \mathbf{elif}\;\varepsilon \le 1.339671104451643834974770147505651607389 \cdot 10^{-5}:\\ \;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\log \left(e^{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) - \cos x}\right)\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.894912541714580426696623582927259121789 \cdot 10^{-4}:\\
\;\;\;\;\frac{{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\

\mathbf{elif}\;\varepsilon \le 1.339671104451643834974770147505651607389 \cdot 10^{-5}:\\
\;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\

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

\end{array}
double f(double x, double eps) {
        double r85419 = x;
        double r85420 = eps;
        double r85421 = r85419 + r85420;
        double r85422 = cos(r85421);
        double r85423 = cos(r85419);
        double r85424 = r85422 - r85423;
        return r85424;
}

double f(double x, double eps) {
        double r85425 = eps;
        double r85426 = -0.00018949125417145804;
        bool r85427 = r85425 <= r85426;
        double r85428 = cos(r85425);
        double r85429 = x;
        double r85430 = cos(r85429);
        double r85431 = r85428 * r85430;
        double r85432 = sin(r85429);
        double r85433 = sin(r85425);
        double r85434 = r85432 * r85433;
        double r85435 = r85431 - r85434;
        double r85436 = 3.0;
        double r85437 = pow(r85435, r85436);
        double r85438 = pow(r85430, r85436);
        double r85439 = r85437 - r85438;
        double r85440 = r85435 + r85430;
        double r85441 = r85435 * r85440;
        double r85442 = r85430 * r85430;
        double r85443 = r85441 + r85442;
        double r85444 = r85439 / r85443;
        double r85445 = 1.3396711044516438e-05;
        bool r85446 = r85425 <= r85445;
        double r85447 = 0.041666666666666664;
        double r85448 = 4.0;
        double r85449 = pow(r85425, r85448);
        double r85450 = r85447 * r85449;
        double r85451 = r85429 * r85425;
        double r85452 = 0.5;
        double r85453 = 2.0;
        double r85454 = pow(r85425, r85453);
        double r85455 = r85452 * r85454;
        double r85456 = r85451 + r85455;
        double r85457 = r85450 - r85456;
        double r85458 = r85435 - r85430;
        double r85459 = exp(r85458);
        double r85460 = log(r85459);
        double r85461 = r85446 ? r85457 : r85460;
        double r85462 = r85427 ? r85444 : r85461;
        return r85462;
}

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

    1. Initial program 29.6

      \[\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. Using strategy rm
    5. Applied *-commutative0.8

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

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

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

    if -0.00018949125417145804 < eps < 1.3396711044516438e-05

    1. Initial program 49.1

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

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

      \[\leadsto \left(\color{blue}{\cos \varepsilon \cdot \cos x} - \sin x \cdot \sin \varepsilon\right) - \cos x\]
    6. Taylor expanded around 0 30.7

      \[\leadsto \color{blue}{\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)}\]

    if 1.3396711044516438e-05 < eps

    1. Initial program 29.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. Using strategy rm
    5. Applied *-commutative0.9

      \[\leadsto \left(\color{blue}{\cos \varepsilon \cdot \cos x} - \sin x \cdot \sin \varepsilon\right) - \cos x\]
    6. Using strategy rm
    7. Applied add-log-exp1.0

      \[\leadsto \left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) - \color{blue}{\log \left(e^{\cos x}\right)}\]
    8. Applied add-log-exp1.1

      \[\leadsto \left(\cos \varepsilon \cdot \cos x - \color{blue}{\log \left(e^{\sin x \cdot \sin \varepsilon}\right)}\right) - \log \left(e^{\cos x}\right)\]
    9. Applied add-log-exp1.3

      \[\leadsto \left(\color{blue}{\log \left(e^{\cos \varepsilon \cdot \cos x}\right)} - \log \left(e^{\sin x \cdot \sin \varepsilon}\right)\right) - \log \left(e^{\cos x}\right)\]
    10. Applied diff-log1.3

      \[\leadsto \color{blue}{\log \left(\frac{e^{\cos \varepsilon \cdot \cos x}}{e^{\sin x \cdot \sin \varepsilon}}\right)} - \log \left(e^{\cos x}\right)\]
    11. Applied diff-log1.4

      \[\leadsto \color{blue}{\log \left(\frac{\frac{e^{\cos \varepsilon \cdot \cos x}}{e^{\sin x \cdot \sin \varepsilon}}}{e^{\cos x}}\right)}\]
    12. Simplified1.1

      \[\leadsto \log \color{blue}{\left(e^{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) - \cos x}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification15.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -1.894912541714580426696623582927259121789 \cdot 10^{-4}:\\ \;\;\;\;\frac{{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\ \mathbf{elif}\;\varepsilon \le 1.339671104451643834974770147505651607389 \cdot 10^{-5}:\\ \;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\log \left(e^{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) - \cos x}\right)\\ \end{array}\]

Reproduce

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