\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 - \mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\\
\mathbf{else}:\\
\;\;\;\;\left(-2 \cdot \sin \left(\frac{\varepsilon}{2}\right)\right) \cdot \sin \left(\frac{\mathsf{fma}\left(x, 2, \varepsilon\right)}{2}\right)\\
\end{array}double f(double x, double eps) {
double r53355 = x;
double r53356 = eps;
double r53357 = r53355 + r53356;
double r53358 = cos(r53357);
double r53359 = cos(r53355);
double r53360 = r53358 - r53359;
return r53360;
}
double f(double x, double eps) {
double r53361 = eps;
double r53362 = -0.0009635449186787686;
bool r53363 = r53361 <= r53362;
double r53364 = 95617.08388190389;
bool r53365 = r53361 <= r53364;
double r53366 = !r53365;
bool r53367 = r53363 || r53366;
double r53368 = x;
double r53369 = cos(r53368);
double r53370 = cos(r53361);
double r53371 = r53369 * r53370;
double r53372 = sin(r53368);
double r53373 = sin(r53361);
double r53374 = fma(r53372, r53373, r53369);
double r53375 = r53371 - r53374;
double r53376 = -2.0;
double r53377 = 2.0;
double r53378 = r53361 / r53377;
double r53379 = sin(r53378);
double r53380 = r53376 * r53379;
double r53381 = fma(r53368, r53377, r53361);
double r53382 = r53381 / r53377;
double r53383 = sin(r53382);
double r53384 = r53380 * r53383;
double r53385 = r53367 ? r53375 : r53384;
return r53385;
}



Bits error versus x



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