\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -9.63544918678768572 \cdot 10^{-4} \lor \neg \left(\varepsilon \le 95617.0838819038909\right):\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)\\
\mathbf{else}:\\
\;\;\;\;\left(-2 \cdot \sin \left(\frac{\varepsilon}{2}\right)\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\\
\end{array}double f(double x, double eps) {
double r49078 = x;
double r49079 = eps;
double r49080 = r49078 + r49079;
double r49081 = cos(r49080);
double r49082 = cos(r49078);
double r49083 = r49081 - r49082;
return r49083;
}
double f(double x, double eps) {
double r49084 = eps;
double r49085 = -0.0009635449186787686;
bool r49086 = r49084 <= r49085;
double r49087 = 95617.08388190389;
bool r49088 = r49084 <= r49087;
double r49089 = !r49088;
bool r49090 = r49086 || r49089;
double r49091 = x;
double r49092 = cos(r49091);
double r49093 = cos(r49084);
double r49094 = r49092 * r49093;
double r49095 = sin(r49091);
double r49096 = sin(r49084);
double r49097 = r49095 * r49096;
double r49098 = r49097 + r49092;
double r49099 = r49094 - r49098;
double r49100 = -2.0;
double r49101 = 2.0;
double r49102 = r49084 / r49101;
double r49103 = sin(r49102);
double r49104 = r49100 * r49103;
double r49105 = r49091 + r49084;
double r49106 = r49105 + r49091;
double r49107 = r49106 / r49101;
double r49108 = sin(r49107);
double r49109 = r49104 * r49108;
double r49110 = r49090 ? r49099 : r49109;
return r49110;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.0009635449186787686 or 95617.08388190389 < eps Initial program 30.3
rmApplied cos-sum0.8
Applied associate--l-0.8
if -0.0009635449186787686 < eps < 95617.08388190389Initial program 49.5
rmApplied diff-cos38.6
Simplified1.0
rmApplied associate-*r*1.0
Final simplification0.9
herbie shell --seed 2020043
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))