Average Error: 39.8 → 15.8
Time: 22.4s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -7.850247975532501380682010028166928350402 \cdot 10^{-5}:\\ \;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x \cdot \cos \varepsilon\right) + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)} - \cos x\\ \mathbf{elif}\;\varepsilon \le 6.093000978565237042935986457037333963171 \cdot 10^{-8}:\\ \;\;\;\;1 \cdot \left(\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\cos \varepsilon \cdot \cos x - \log \left(e^{\sin x \cdot \sin \varepsilon + \cos x}\right)\right)\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -7.850247975532501380682010028166928350402 \cdot 10^{-5}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x \cdot \cos \varepsilon\right) + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)} - \cos x\\

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

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

\end{array}
double f(double x, double eps) {
        double r50739 = x;
        double r50740 = eps;
        double r50741 = r50739 + r50740;
        double r50742 = cos(r50741);
        double r50743 = cos(r50739);
        double r50744 = r50742 - r50743;
        return r50744;
}

double f(double x, double eps) {
        double r50745 = eps;
        double r50746 = -7.850247975532501e-05;
        bool r50747 = r50745 <= r50746;
        double r50748 = x;
        double r50749 = cos(r50748);
        double r50750 = cos(r50745);
        double r50751 = r50749 * r50750;
        double r50752 = 3.0;
        double r50753 = pow(r50751, r50752);
        double r50754 = sin(r50748);
        double r50755 = sin(r50745);
        double r50756 = r50754 * r50755;
        double r50757 = pow(r50756, r50752);
        double r50758 = r50753 - r50757;
        double r50759 = r50756 + r50751;
        double r50760 = r50756 * r50759;
        double r50761 = r50751 * r50751;
        double r50762 = r50760 + r50761;
        double r50763 = r50758 / r50762;
        double r50764 = r50763 - r50749;
        double r50765 = 6.093000978565237e-08;
        bool r50766 = r50745 <= r50765;
        double r50767 = 1.0;
        double r50768 = 0.041666666666666664;
        double r50769 = 4.0;
        double r50770 = pow(r50745, r50769);
        double r50771 = r50768 * r50770;
        double r50772 = r50748 * r50745;
        double r50773 = 0.5;
        double r50774 = 2.0;
        double r50775 = pow(r50745, r50774);
        double r50776 = r50773 * r50775;
        double r50777 = r50772 + r50776;
        double r50778 = r50771 - r50777;
        double r50779 = r50767 * r50778;
        double r50780 = r50750 * r50749;
        double r50781 = r50756 + r50749;
        double r50782 = exp(r50781);
        double r50783 = log(r50782);
        double r50784 = r50780 - r50783;
        double r50785 = r50767 * r50784;
        double r50786 = r50766 ? r50779 : r50785;
        double r50787 = r50747 ? r50764 : r50786;
        return r50787;
}

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 < -7.850247975532501e-05

    1. Initial program 30.3

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

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

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

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

    if -7.850247975532501e-05 < eps < 6.093000978565237e-08

    1. Initial program 49.1

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

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

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \color{blue}{1 \cdot \cos x}\]
    6. Applied *-un-lft-identity48.5

      \[\leadsto \color{blue}{1 \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - 1 \cdot \cos x\]
    7. Applied distribute-lft-out--48.5

      \[\leadsto \color{blue}{1 \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\right)}\]
    8. Simplified48.5

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

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

    if 6.093000978565237e-08 < eps

    1. Initial program 31.3

      \[\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 *-un-lft-identity1.1

      \[\leadsto \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \color{blue}{1 \cdot \cos x}\]
    6. Applied *-un-lft-identity1.1

      \[\leadsto \color{blue}{1 \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - 1 \cdot \cos x\]
    7. Applied distribute-lft-out--1.1

      \[\leadsto \color{blue}{1 \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\right)}\]
    8. Simplified1.1

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

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

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

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

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

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

Reproduce

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