Average Error: 40.0 → 16.7
Time: 7.8s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -1.821618172153552 \cdot 10^{-16}:\\ \;\;\;\;\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}\\ \mathbf{elif}\;\varepsilon \le 4.6754847779555244 \cdot 10^{-8}:\\ \;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\cos x \cdot \cos \varepsilon + \log \left(e^{\left(-\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.821618172153552 \cdot 10^{-16}:\\
\;\;\;\;\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}\\

\mathbf{elif}\;\varepsilon \le 4.6754847779555244 \cdot 10^{-8}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\

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

\end{array}
double f(double x, double eps) {
        double r85713 = x;
        double r85714 = eps;
        double r85715 = r85713 + r85714;
        double r85716 = cos(r85715);
        double r85717 = cos(r85713);
        double r85718 = r85716 - r85717;
        return r85718;
}

double f(double x, double eps) {
        double r85719 = eps;
        double r85720 = -1.8216181721535518e-16;
        bool r85721 = r85719 <= r85720;
        double r85722 = x;
        double r85723 = cos(r85722);
        double r85724 = cos(r85719);
        double r85725 = r85723 * r85724;
        double r85726 = sin(r85722);
        double r85727 = sin(r85719);
        double r85728 = r85726 * r85727;
        double r85729 = r85725 - r85728;
        double r85730 = 3.0;
        double r85731 = pow(r85729, r85730);
        double r85732 = pow(r85723, r85730);
        double r85733 = r85731 - r85732;
        double r85734 = r85724 * r85723;
        double r85735 = r85734 - r85728;
        double r85736 = r85729 + r85723;
        double r85737 = r85735 * r85736;
        double r85738 = r85723 * r85723;
        double r85739 = r85737 + r85738;
        double r85740 = r85733 / r85739;
        double r85741 = 4.6754847779555244e-08;
        bool r85742 = r85719 <= r85741;
        double r85743 = 0.16666666666666666;
        double r85744 = pow(r85722, r85730);
        double r85745 = r85743 * r85744;
        double r85746 = r85745 - r85722;
        double r85747 = 0.5;
        double r85748 = r85719 * r85747;
        double r85749 = r85746 - r85748;
        double r85750 = r85719 * r85749;
        double r85751 = -r85728;
        double r85752 = r85751 - r85723;
        double r85753 = exp(r85752);
        double r85754 = log(r85753);
        double r85755 = r85725 + r85754;
        double r85756 = r85742 ? r85750 : r85755;
        double r85757 = r85721 ? r85740 : r85756;
        return r85757;
}

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 < -1.8216181721535518e-16

    1. Initial program 31.9

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

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

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

      \[\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}}\]

    if -1.8216181721535518e-16 < eps < 4.6754847779555244e-08

    1. Initial program 49.7

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

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

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

    if 4.6754847779555244e-08 < eps

    1. Initial program 30.5

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

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

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon + \left(-\sin x \cdot \sin \varepsilon\right)\right)} - \cos x\]
    6. Applied associate--l+1.1

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -1.821618172153552 \cdot 10^{-16}:\\ \;\;\;\;\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}\\ \mathbf{elif}\;\varepsilon \le 4.6754847779555244 \cdot 10^{-8}:\\ \;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\cos x \cdot \cos \varepsilon + \log \left(e^{\left(-\sin x \cdot \sin \varepsilon\right) - \cos x}\right)\\ \end{array}\]

Reproduce

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