Average Error: 40.0 → 15.9
Time: 6.6s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -3.9043345518077538 \cdot 10^{-4}:\\ \;\;\;\;\log \left(e^{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x}\right)\\ \mathbf{elif}\;\varepsilon \le 2.2931718725747495 \cdot 10^{-15}:\\ \;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\log \left(e^{\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon}\right) - \cos x\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -3.9043345518077538 \cdot 10^{-4}:\\
\;\;\;\;\log \left(e^{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x}\right)\\

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

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

\end{array}
double f(double x, double eps) {
        double r54577 = x;
        double r54578 = eps;
        double r54579 = r54577 + r54578;
        double r54580 = cos(r54579);
        double r54581 = cos(r54577);
        double r54582 = r54580 - r54581;
        return r54582;
}

double f(double x, double eps) {
        double r54583 = eps;
        double r54584 = -0.0003904334551807754;
        bool r54585 = r54583 <= r54584;
        double r54586 = x;
        double r54587 = cos(r54586);
        double r54588 = cos(r54583);
        double r54589 = r54587 * r54588;
        double r54590 = sin(r54586);
        double r54591 = sin(r54583);
        double r54592 = r54590 * r54591;
        double r54593 = r54589 - r54592;
        double r54594 = r54593 - r54587;
        double r54595 = exp(r54594);
        double r54596 = log(r54595);
        double r54597 = 2.2931718725747495e-15;
        bool r54598 = r54583 <= r54597;
        double r54599 = 0.041666666666666664;
        double r54600 = 4.0;
        double r54601 = pow(r54583, r54600);
        double r54602 = r54599 * r54601;
        double r54603 = r54586 * r54583;
        double r54604 = 0.5;
        double r54605 = 2.0;
        double r54606 = pow(r54583, r54605);
        double r54607 = r54604 * r54606;
        double r54608 = r54603 + r54607;
        double r54609 = r54602 - r54608;
        double r54610 = exp(r54593);
        double r54611 = log(r54610);
        double r54612 = r54611 - r54587;
        double r54613 = r54598 ? r54609 : r54612;
        double r54614 = r54585 ? r54596 : r54613;
        return r54614;
}

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

    1. Initial program 31.0

      \[\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 add-log-exp0.9

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

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

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

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

      \[\leadsto \color{blue}{\log \left(\frac{\frac{e^{\cos x \cdot \cos \varepsilon}}{e^{\sin x \cdot \sin \varepsilon}}}{e^{\cos x}}\right)}\]
    10. Simplified0.9

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

    if -0.0003904334551807754 < eps < 2.2931718725747495e-15

    1. Initial program 49.4

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

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Taylor expanded around inf 49.0

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

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

    if 2.2931718725747495e-15 < eps

    1. Initial program 31.1

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

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

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

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

      \[\leadsto \color{blue}{\log \left(\frac{e^{\cos x \cdot \cos \varepsilon}}{e^{\sin x \cdot \sin \varepsilon}}\right)} - \cos x\]
    8. Simplified2.6

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

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

Reproduce

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