Average Error: 40.3 → 16.4
Time: 17.7s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -1.72564008479518688056280045078905160949 \cdot 10^{-6} \lor \neg \left(\varepsilon \le 1.87590820399492939339237629011759855846 \cdot 10^{-9}\right):\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\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.72564008479518688056280045078905160949 \cdot 10^{-6} \lor \neg \left(\varepsilon \le 1.87590820399492939339237629011759855846 \cdot 10^{-9}\right):\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\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 r56380 = x;
        double r56381 = eps;
        double r56382 = r56380 + r56381;
        double r56383 = cos(r56382);
        double r56384 = cos(r56380);
        double r56385 = r56383 - r56384;
        return r56385;
}

double f(double x, double eps) {
        double r56386 = eps;
        double r56387 = -1.7256400847951869e-06;
        bool r56388 = r56386 <= r56387;
        double r56389 = 1.8759082039949294e-09;
        bool r56390 = r56386 <= r56389;
        double r56391 = !r56390;
        bool r56392 = r56388 || r56391;
        double r56393 = x;
        double r56394 = cos(r56393);
        double r56395 = cos(r56386);
        double r56396 = r56394 * r56395;
        double r56397 = sin(r56393);
        double r56398 = sin(r56386);
        double r56399 = r56397 * r56398;
        double r56400 = 3.0;
        double r56401 = pow(r56399, r56400);
        double r56402 = cbrt(r56401);
        double r56403 = r56396 - r56402;
        double r56404 = r56403 - r56394;
        double r56405 = 0.16666666666666666;
        double r56406 = pow(r56393, r56400);
        double r56407 = r56405 * r56406;
        double r56408 = r56407 - r56393;
        double r56409 = 0.5;
        double r56410 = r56386 * r56409;
        double r56411 = r56408 - r56410;
        double r56412 = r56386 * r56411;
        double r56413 = r56392 ? r56404 : r56412;
        return r56413;
}

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.7256400847951869e-06 or 1.8759082039949294e-09 < eps

    1. Initial program 31.0

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

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

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

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \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\]
    7. Applied cbrt-unprod1.3

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \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\]
    8. Simplified1.3

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

    if -1.7256400847951869e-06 < eps < 1.8759082039949294e-09

    1. Initial program 50.0

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

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

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

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