\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -3.59746672523127812 \cdot 10^{-5} \lor \neg \left(\varepsilon \le 2.86080349302899809 \cdot 10^{-8}\right):\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\\
\mathbf{else}:\\
\;\;\;\;-2 \cdot \left(\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)\\
\end{array}double f(double x, double eps) {
double r42052 = x;
double r42053 = eps;
double r42054 = r42052 + r42053;
double r42055 = cos(r42054);
double r42056 = cos(r42052);
double r42057 = r42055 - r42056;
return r42057;
}
double f(double x, double eps) {
double r42058 = eps;
double r42059 = -3.597466725231278e-05;
bool r42060 = r42058 <= r42059;
double r42061 = 2.860803493028998e-08;
bool r42062 = r42058 <= r42061;
double r42063 = !r42062;
bool r42064 = r42060 || r42063;
double r42065 = x;
double r42066 = cos(r42065);
double r42067 = cos(r42058);
double r42068 = r42066 * r42067;
double r42069 = sin(r42065);
double r42070 = sin(r42058);
double r42071 = fma(r42069, r42070, r42066);
double r42072 = r42068 - r42071;
double r42073 = -2.0;
double r42074 = r42065 + r42058;
double r42075 = r42074 + r42065;
double r42076 = 2.0;
double r42077 = r42075 / r42076;
double r42078 = sin(r42077);
double r42079 = r42058 / r42076;
double r42080 = sin(r42079);
double r42081 = r42078 * r42080;
double r42082 = r42073 * r42081;
double r42083 = r42064 ? r42072 : r42082;
return r42083;
}



Bits error versus x



Bits error versus eps
if eps < -3.597466725231278e-05 or 2.860803493028998e-08 < eps Initial program 30.4
rmApplied cos-sum1.0
Applied associate--l-1.0
Simplified1.0
if -3.597466725231278e-05 < eps < 2.860803493028998e-08Initial program 49.5
rmApplied diff-cos37.9
Simplified0.5
Final simplification0.7
herbie shell --seed 2019199 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))