Average Error: 39.5 → 15.6
Time: 7.3s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -8.5411563429199795 \cdot 10^{-10}:\\ \;\;\;\;\log \left(e^{\mathsf{fma}\left(\cos \varepsilon, \cos x, -\sqrt[3]{{\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)}^{3}}\right)}\right)\\ \mathbf{elif}\;\varepsilon \le 1.1618945885559161 \cdot 10^{-7}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right)}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x}\\ \mathbf{else}:\\ \;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon\right)}^{3}}{\mathsf{fma}\left(\sin x \cdot \sin \varepsilon, \mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right), \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)\right)} - \cos x\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -8.5411563429199795 \cdot 10^{-10}:\\
\;\;\;\;\log \left(e^{\mathsf{fma}\left(\cos \varepsilon, \cos x, -\sqrt[3]{{\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)}^{3}}\right)}\right)\\

\mathbf{elif}\;\varepsilon \le 1.1618945885559161 \cdot 10^{-7}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right)}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x}\\

\mathbf{else}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon\right)}^{3}}{\mathsf{fma}\left(\sin x \cdot \sin \varepsilon, \mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right), \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)\right)} - \cos x\\

\end{array}
double f(double x, double eps) {
        double r65592 = x;
        double r65593 = eps;
        double r65594 = r65592 + r65593;
        double r65595 = cos(r65594);
        double r65596 = cos(r65592);
        double r65597 = r65595 - r65596;
        return r65597;
}

double f(double x, double eps) {
        double r65598 = eps;
        double r65599 = -8.54115634291998e-10;
        bool r65600 = r65598 <= r65599;
        double r65601 = cos(r65598);
        double r65602 = x;
        double r65603 = cos(r65602);
        double r65604 = sin(r65602);
        double r65605 = sin(r65598);
        double r65606 = fma(r65604, r65605, r65603);
        double r65607 = 3.0;
        double r65608 = pow(r65606, r65607);
        double r65609 = cbrt(r65608);
        double r65610 = -r65609;
        double r65611 = fma(r65601, r65603, r65610);
        double r65612 = exp(r65611);
        double r65613 = log(r65612);
        double r65614 = 1.1618945885559161e-07;
        bool r65615 = r65598 <= r65614;
        double r65616 = 0.041666666666666664;
        double r65617 = 4.0;
        double r65618 = pow(r65598, r65617);
        double r65619 = 0.5;
        double r65620 = 2.0;
        double r65621 = pow(r65598, r65620);
        double r65622 = r65619 * r65621;
        double r65623 = fma(r65602, r65598, r65622);
        double r65624 = -r65623;
        double r65625 = fma(r65616, r65618, r65624);
        double r65626 = r65603 * r65601;
        double r65627 = r65604 * r65605;
        double r65628 = r65626 - r65627;
        double r65629 = r65628 + r65603;
        double r65630 = r65625 * r65629;
        double r65631 = r65630 / r65629;
        double r65632 = pow(r65626, r65607);
        double r65633 = pow(r65627, r65607);
        double r65634 = r65632 - r65633;
        double r65635 = fma(r65603, r65601, r65627);
        double r65636 = r65626 * r65626;
        double r65637 = fma(r65627, r65635, r65636);
        double r65638 = r65634 / r65637;
        double r65639 = r65638 - r65603;
        double r65640 = r65615 ? r65631 : r65639;
        double r65641 = r65600 ? r65613 : r65640;
        return r65641;
}

Error

Bits error versus x

Bits error versus eps

Derivation

  1. Split input into 3 regimes
  2. if eps < -8.54115634291998e-10

    1. Initial program 29.8

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

      \[\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-exp1.5

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

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

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

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

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

      \[\leadsto \log \color{blue}{\left(e^{\mathsf{fma}\left(\cos \varepsilon, \cos x, -\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)}\right)}\]
    11. Using strategy rm
    12. Applied add-cbrt-cube1.6

      \[\leadsto \log \left(e^{\mathsf{fma}\left(\cos \varepsilon, \cos x, -\color{blue}{\sqrt[3]{\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right) \cdot \mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right) \cdot \mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)}}\right)}\right)\]
    13. Simplified1.6

      \[\leadsto \log \left(e^{\mathsf{fma}\left(\cos \varepsilon, \cos x, -\sqrt[3]{\color{blue}{{\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)}^{3}}}\right)}\right)\]

    if -8.54115634291998e-10 < eps < 1.1618945885559161e-07

    1. Initial program 49.1

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

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

      \[\leadsto \color{blue}{\frac{\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) - \cos x \cdot \cos x}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x}}\]
    6. Simplified48.7

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\cos \varepsilon, \cos x, -\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right)}}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x}\]
    7. Taylor expanded around 0 30.7

      \[\leadsto \frac{\color{blue}{\left(\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)} \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right)}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x}\]
    8. Simplified30.7

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

    if 1.1618945885559161e-07 < eps

    1. Initial program 31.2

      \[\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 flip3--1.3

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

      \[\leadsto \frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon\right)}^{3}}{\color{blue}{\mathsf{fma}\left(\sin x \cdot \sin \varepsilon, \mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right), \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)\right)}} - \cos x\]
  3. Recombined 3 regimes into one program.
  4. Final simplification15.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -8.5411563429199795 \cdot 10^{-10}:\\ \;\;\;\;\log \left(e^{\mathsf{fma}\left(\cos \varepsilon, \cos x, -\sqrt[3]{{\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)}^{3}}\right)}\right)\\ \mathbf{elif}\;\varepsilon \le 1.1618945885559161 \cdot 10^{-7}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right)}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x}\\ \mathbf{else}:\\ \;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon\right)}^{3}}{\mathsf{fma}\left(\sin x \cdot \sin \varepsilon, \mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right), \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)\right)} - \cos x\\ \end{array}\]

Reproduce

herbie shell --seed 2020057 +o rules:numerics
(FPCore (x eps)
  :name "2cos (problem 3.3.5)"
  :precision binary64
  (- (cos (+ x eps)) (cos x)))