\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2.68449879533306243542534197388249594951 \cdot 10^{-4} \lor \neg \left(\varepsilon \le 3.028675491606891100851602083299241030545 \cdot 10^{-6}\right):\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{else}:\\
\;\;\;\;-2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\\
\end{array}double f(double x, double eps) {
double r33992 = x;
double r33993 = eps;
double r33994 = r33992 + r33993;
double r33995 = cos(r33994);
double r33996 = cos(r33992);
double r33997 = r33995 - r33996;
return r33997;
}
double f(double x, double eps) {
double r33998 = eps;
double r33999 = -0.00026844987953330624;
bool r34000 = r33998 <= r33999;
double r34001 = 3.028675491606891e-06;
bool r34002 = r33998 <= r34001;
double r34003 = !r34002;
bool r34004 = r34000 || r34003;
double r34005 = x;
double r34006 = cos(r34005);
double r34007 = cos(r33998);
double r34008 = r34006 * r34007;
double r34009 = sin(r34005);
double r34010 = sin(r33998);
double r34011 = r34009 * r34010;
double r34012 = r34008 - r34011;
double r34013 = r34012 - r34006;
double r34014 = -2.0;
double r34015 = 2.0;
double r34016 = r33998 / r34015;
double r34017 = sin(r34016);
double r34018 = r34005 + r33998;
double r34019 = r34018 + r34005;
double r34020 = r34019 / r34015;
double r34021 = sin(r34020);
double r34022 = r34017 * r34021;
double r34023 = r34014 * r34022;
double r34024 = r34004 ? r34013 : r34023;
return r34024;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.00026844987953330624 or 3.028675491606891e-06 < eps Initial program 29.4
rmApplied cos-sum1.0
if -0.00026844987953330624 < eps < 3.028675491606891e-06Initial program 49.2
rmApplied diff-cos38.3
Simplified0.5
Final simplification0.7
herbie shell --seed 2019325
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))