Average Error: 39.8 → 17.0
Time: 6.5s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -1.47794773121464287 \cdot 10^{-28} \lor \neg \left(\varepsilon \le 3.6043668904446245 \cdot 10^{-50}\right):\\ \;\;\;\;\left(1 \cdot \left(\cos x \cdot \cos \varepsilon\right) - \sqrt[3]{\sqrt[3]{{\left({\left(\sin x \cdot \sin \varepsilon\right)}^{3}\right)}^{3}}}\right) - \cos x\\ \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.47794773121464287 \cdot 10^{-28} \lor \neg \left(\varepsilon \le 3.6043668904446245 \cdot 10^{-50}\right):\\
\;\;\;\;\left(1 \cdot \left(\cos x \cdot \cos \varepsilon\right) - \sqrt[3]{\sqrt[3]{{\left({\left(\sin x \cdot \sin \varepsilon\right)}^{3}\right)}^{3}}}\right) - \cos x\\

\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 r53425 = x;
        double r53426 = eps;
        double r53427 = r53425 + r53426;
        double r53428 = cos(r53427);
        double r53429 = cos(r53425);
        double r53430 = r53428 - r53429;
        return r53430;
}

double f(double x, double eps) {
        double r53431 = eps;
        double r53432 = -1.4779477312146429e-28;
        bool r53433 = r53431 <= r53432;
        double r53434 = 3.6043668904446245e-50;
        bool r53435 = r53431 <= r53434;
        double r53436 = !r53435;
        bool r53437 = r53433 || r53436;
        double r53438 = 1.0;
        double r53439 = x;
        double r53440 = cos(r53439);
        double r53441 = cos(r53431);
        double r53442 = r53440 * r53441;
        double r53443 = r53438 * r53442;
        double r53444 = sin(r53439);
        double r53445 = sin(r53431);
        double r53446 = r53444 * r53445;
        double r53447 = 3.0;
        double r53448 = pow(r53446, r53447);
        double r53449 = pow(r53448, r53447);
        double r53450 = cbrt(r53449);
        double r53451 = cbrt(r53450);
        double r53452 = r53443 - r53451;
        double r53453 = r53452 - r53440;
        double r53454 = 0.16666666666666666;
        double r53455 = pow(r53439, r53447);
        double r53456 = r53454 * r53455;
        double r53457 = r53456 - r53439;
        double r53458 = 0.5;
        double r53459 = r53431 * r53458;
        double r53460 = r53457 - r53459;
        double r53461 = r53431 * r53460;
        double r53462 = r53437 ? r53453 : r53461;
        return r53462;
}

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.4779477312146429e-28 or 3.6043668904446245e-50 < eps

    1. Initial program 33.6

      \[\cos \left(x + \varepsilon\right) - \cos x\]
    2. Using strategy rm
    3. Applied cos-sum6.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-identity6.0

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

      \[\leadsto \left(1 \cdot \left(\cos x \cdot \cos \varepsilon\right) - \sin x \cdot \color{blue}{\sqrt[3]{\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon}}\right) - \cos x\]
    8. Applied add-cbrt-cube6.1

      \[\leadsto \left(1 \cdot \left(\cos x \cdot \cos \varepsilon\right) - \color{blue}{\sqrt[3]{\left(\sin x \cdot \sin x\right) \cdot \sin x}} \cdot \sqrt[3]{\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon}\right) - \cos x\]
    9. Applied cbrt-unprod6.1

      \[\leadsto \left(1 \cdot \left(\cos x \cdot \cos \varepsilon\right) - \color{blue}{\sqrt[3]{\left(\left(\sin x \cdot \sin x\right) \cdot \sin x\right) \cdot \left(\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon\right)}}\right) - \cos x\]
    10. Simplified6.1

      \[\leadsto \left(1 \cdot \left(\cos x \cdot \cos \varepsilon\right) - \sqrt[3]{\color{blue}{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}}}\right) - \cos x\]
    11. Using strategy rm
    12. Applied add-cbrt-cube6.1

      \[\leadsto \left(1 \cdot \left(\cos x \cdot \cos \varepsilon\right) - \sqrt[3]{\color{blue}{\sqrt[3]{\left({\left(\sin x \cdot \sin \varepsilon\right)}^{3} \cdot {\left(\sin x \cdot \sin \varepsilon\right)}^{3}\right) \cdot {\left(\sin x \cdot \sin \varepsilon\right)}^{3}}}}\right) - \cos x\]
    13. Simplified6.1

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

    if -1.4779477312146429e-28 < eps < 3.6043668904446245e-50

    1. Initial program 48.1

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

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

      \[\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 simplification17.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -1.47794773121464287 \cdot 10^{-28} \lor \neg \left(\varepsilon \le 3.6043668904446245 \cdot 10^{-50}\right):\\ \;\;\;\;\left(1 \cdot \left(\cos x \cdot \cos \varepsilon\right) - \sqrt[3]{\sqrt[3]{{\left({\left(\sin x \cdot \sin \varepsilon\right)}^{3}\right)}^{3}}}\right) - \cos x\\ \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 2020033 
(FPCore (x eps)
  :name "2cos (problem 3.3.5)"
  :precision binary64
  (- (cos (+ x eps)) (cos x)))