\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -6.111174932312063087791464965903287520632 \cdot 10^{-4}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 4.781000628187973338029202047261279062695 \cdot 10^{-6}:\\
\;\;\;\;-2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)\\
\end{array}double f(double x, double eps) {
double r30226 = x;
double r30227 = eps;
double r30228 = r30226 + r30227;
double r30229 = cos(r30228);
double r30230 = cos(r30226);
double r30231 = r30229 - r30230;
return r30231;
}
double f(double x, double eps) {
double r30232 = eps;
double r30233 = -0.0006111174932312063;
bool r30234 = r30232 <= r30233;
double r30235 = x;
double r30236 = cos(r30235);
double r30237 = cos(r30232);
double r30238 = r30236 * r30237;
double r30239 = sin(r30235);
double r30240 = sin(r30232);
double r30241 = r30239 * r30240;
double r30242 = r30238 - r30241;
double r30243 = r30242 - r30236;
double r30244 = 4.781000628187973e-06;
bool r30245 = r30232 <= r30244;
double r30246 = -2.0;
double r30247 = 2.0;
double r30248 = r30232 / r30247;
double r30249 = sin(r30248);
double r30250 = r30235 + r30232;
double r30251 = r30250 + r30235;
double r30252 = r30251 / r30247;
double r30253 = sin(r30252);
double r30254 = r30249 * r30253;
double r30255 = r30246 * r30254;
double r30256 = r30241 + r30236;
double r30257 = r30238 - r30256;
double r30258 = r30245 ? r30255 : r30257;
double r30259 = r30234 ? r30243 : r30258;
return r30259;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.0006111174932312063Initial program 30.8
rmApplied cos-sum0.8
if -0.0006111174932312063 < eps < 4.781000628187973e-06Initial program 48.7
rmApplied diff-cos37.4
Simplified0.5
if 4.781000628187973e-06 < eps Initial program 29.6
rmApplied cos-sum0.9
Applied associate--l-1.0
Final simplification0.7
herbie shell --seed 2019303
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))