\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -4.40285186539907399 \cdot 10^{-5}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 2.68480080325460108 \cdot 10^{-5}:\\
\;\;\;\;\left(-2 \cdot \sin \left(\frac{\varepsilon}{2}\right)\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\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 r52761 = x;
double r52762 = eps;
double r52763 = r52761 + r52762;
double r52764 = cos(r52763);
double r52765 = cos(r52761);
double r52766 = r52764 - r52765;
return r52766;
}
double f(double x, double eps) {
double r52767 = eps;
double r52768 = -4.402851865399074e-05;
bool r52769 = r52767 <= r52768;
double r52770 = x;
double r52771 = cos(r52770);
double r52772 = cos(r52767);
double r52773 = r52771 * r52772;
double r52774 = sin(r52770);
double r52775 = sin(r52767);
double r52776 = r52774 * r52775;
double r52777 = r52773 - r52776;
double r52778 = r52777 - r52771;
double r52779 = 2.684800803254601e-05;
bool r52780 = r52767 <= r52779;
double r52781 = -2.0;
double r52782 = 2.0;
double r52783 = r52767 / r52782;
double r52784 = sin(r52783);
double r52785 = r52781 * r52784;
double r52786 = r52770 + r52767;
double r52787 = r52786 + r52770;
double r52788 = r52787 / r52782;
double r52789 = sin(r52788);
double r52790 = r52785 * r52789;
double r52791 = r52776 + r52771;
double r52792 = r52773 - r52791;
double r52793 = r52780 ? r52790 : r52792;
double r52794 = r52769 ? r52778 : r52793;
return r52794;
}



Bits error versus x



Bits error versus eps
Results
if eps < -4.402851865399074e-05Initial program 30.2
rmApplied cos-sum0.9
if -4.402851865399074e-05 < eps < 2.684800803254601e-05Initial program 49.0
rmApplied diff-cos37.5
Simplified0.4
rmApplied associate-*r*0.4
if 2.684800803254601e-05 < eps Initial program 31.1
rmApplied cos-sum1.0
Applied associate--l-1.0
Final simplification0.7
herbie shell --seed 2020046
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))