Average Error: 39.8 → 16.1
Time: 10.5s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -2.090532721168427568252633219625380434081 \cdot 10^{-5}:\\ \;\;\;\;1 \cdot \left(\cos \varepsilon \cdot \cos x - \log \left(e^{\sin x \cdot \sin \varepsilon + \cos x}\right)\right)\\ \mathbf{elif}\;\varepsilon \le 1.615658339035005690257933106717015652842 \cdot 10^{-13}:\\ \;\;\;\;1 \cdot \left(\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \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 x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2.090532721168427568252633219625380434081 \cdot 10^{-5}:\\
\;\;\;\;1 \cdot \left(\cos \varepsilon \cdot \cos x - \log \left(e^{\sin x \cdot \sin \varepsilon + \cos x}\right)\right)\\

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

\mathbf{else}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \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 x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\

\end{array}
double f(double x, double eps) {
        double r49498 = x;
        double r49499 = eps;
        double r49500 = r49498 + r49499;
        double r49501 = cos(r49500);
        double r49502 = cos(r49498);
        double r49503 = r49501 - r49502;
        return r49503;
}

double f(double x, double eps) {
        double r49504 = eps;
        double r49505 = -2.0905327211684276e-05;
        bool r49506 = r49504 <= r49505;
        double r49507 = 1.0;
        double r49508 = cos(r49504);
        double r49509 = x;
        double r49510 = cos(r49509);
        double r49511 = r49508 * r49510;
        double r49512 = sin(r49509);
        double r49513 = sin(r49504);
        double r49514 = r49512 * r49513;
        double r49515 = r49514 + r49510;
        double r49516 = exp(r49515);
        double r49517 = log(r49516);
        double r49518 = r49511 - r49517;
        double r49519 = r49507 * r49518;
        double r49520 = 1.6156583390350057e-13;
        bool r49521 = r49504 <= r49520;
        double r49522 = 0.041666666666666664;
        double r49523 = 4.0;
        double r49524 = pow(r49504, r49523);
        double r49525 = r49522 * r49524;
        double r49526 = r49509 * r49504;
        double r49527 = 0.5;
        double r49528 = 2.0;
        double r49529 = pow(r49504, r49528);
        double r49530 = r49527 * r49529;
        double r49531 = r49526 + r49530;
        double r49532 = r49525 - r49531;
        double r49533 = r49507 * r49532;
        double r49534 = r49510 * r49508;
        double r49535 = r49534 - r49514;
        double r49536 = 3.0;
        double r49537 = pow(r49535, r49536);
        double r49538 = pow(r49510, r49536);
        double r49539 = r49537 - r49538;
        double r49540 = r49511 - r49514;
        double r49541 = r49535 + r49510;
        double r49542 = r49540 * r49541;
        double r49543 = r49510 * r49510;
        double r49544 = r49542 + r49543;
        double r49545 = r49539 / r49544;
        double r49546 = r49521 ? r49533 : r49545;
        double r49547 = r49506 ? r49519 : r49546;
        return r49547;
}

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 < -2.0905327211684276e-05

    1. Initial program 30.2

      \[\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\]
    4. Using strategy rm
    5. Applied *-un-lft-identity1.0

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \color{blue}{1 \cdot \cos x}\]
    6. Applied *-un-lft-identity1.0

      \[\leadsto \color{blue}{1 \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - 1 \cdot \cos x\]
    7. Applied distribute-lft-out--1.0

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

      \[\leadsto 1 \cdot \color{blue}{\left(\cos \varepsilon \cdot \cos x - \left(\sin x \cdot \sin \varepsilon + \cos x\right)\right)}\]
    9. Using strategy rm
    10. Applied add-log-exp1.1

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

      \[\leadsto 1 \cdot \left(\cos \varepsilon \cdot \cos x - \left(\color{blue}{\log \left(e^{\sin x \cdot \sin \varepsilon}\right)} + \log \left(e^{\cos x}\right)\right)\right)\]
    12. Applied sum-log1.2

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

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

    if -2.0905327211684276e-05 < eps < 1.6156583390350057e-13

    1. Initial program 49.4

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

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

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \color{blue}{1 \cdot \cos x}\]
    6. Applied *-un-lft-identity49.2

      \[\leadsto \color{blue}{1 \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - 1 \cdot \cos x\]
    7. Applied distribute-lft-out--49.2

      \[\leadsto \color{blue}{1 \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\right)}\]
    8. Simplified49.2

      \[\leadsto 1 \cdot \color{blue}{\left(\cos \varepsilon \cdot \cos x - \left(\sin x \cdot \sin \varepsilon + \cos x\right)\right)}\]
    9. Taylor expanded around 0 31.4

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

    if 1.6156583390350057e-13 < eps

    1. Initial program 31.2

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

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

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

      \[\leadsto \frac{{\left(\cos x \cdot \cos \varepsilon - \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 x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification16.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -2.090532721168427568252633219625380434081 \cdot 10^{-5}:\\ \;\;\;\;1 \cdot \left(\cos \varepsilon \cdot \cos x - \log \left(e^{\sin x \cdot \sin \varepsilon + \cos x}\right)\right)\\ \mathbf{elif}\;\varepsilon \le 1.615658339035005690257933106717015652842 \cdot 10^{-13}:\\ \;\;\;\;1 \cdot \left(\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \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 x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\ \end{array}\]

Reproduce

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