\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 r39101 = x;
double r39102 = eps;
double r39103 = r39101 + r39102;
double r39104 = cos(r39103);
double r39105 = cos(r39101);
double r39106 = r39104 - r39105;
return r39106;
}
double f(double x, double eps) {
double r39107 = eps;
double r39108 = -0.00026844987953330624;
bool r39109 = r39107 <= r39108;
double r39110 = 3.028675491606891e-06;
bool r39111 = r39107 <= r39110;
double r39112 = !r39111;
bool r39113 = r39109 || r39112;
double r39114 = x;
double r39115 = cos(r39114);
double r39116 = cos(r39107);
double r39117 = r39115 * r39116;
double r39118 = sin(r39114);
double r39119 = sin(r39107);
double r39120 = r39118 * r39119;
double r39121 = r39117 - r39120;
double r39122 = r39121 - r39115;
double r39123 = -2.0;
double r39124 = 2.0;
double r39125 = r39107 / r39124;
double r39126 = sin(r39125);
double r39127 = r39114 + r39107;
double r39128 = r39127 + r39114;
double r39129 = r39128 / r39124;
double r39130 = sin(r39129);
double r39131 = r39126 * r39130;
double r39132 = r39123 * r39131;
double r39133 = r39113 ? r39122 : r39132;
return r39133;
}



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)))