\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(\sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot -2\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\\
\end{array}double f(double x, double eps) {
double r49831 = x;
double r49832 = eps;
double r49833 = r49831 + r49832;
double r49834 = cos(r49833);
double r49835 = cos(r49831);
double r49836 = r49834 - r49835;
return r49836;
}
double f(double x, double eps) {
double r49837 = eps;
double r49838 = -4.402851865399074e-05;
bool r49839 = r49837 <= r49838;
double r49840 = x;
double r49841 = cos(r49840);
double r49842 = cos(r49837);
double r49843 = r49841 * r49842;
double r49844 = sin(r49840);
double r49845 = sin(r49837);
double r49846 = r49844 * r49845;
double r49847 = r49843 - r49846;
double r49848 = r49847 - r49841;
double r49849 = 2.684800803254601e-05;
bool r49850 = r49837 <= r49849;
double r49851 = 0.5;
double r49852 = r49851 * r49837;
double r49853 = sin(r49852);
double r49854 = -2.0;
double r49855 = r49853 * r49854;
double r49856 = r49840 + r49837;
double r49857 = r49856 + r49840;
double r49858 = 2.0;
double r49859 = r49857 / r49858;
double r49860 = sin(r49859);
double r49861 = r49855 * r49860;
double r49862 = fma(r49844, r49845, r49841);
double r49863 = r49843 - r49862;
double r49864 = r49850 ? r49861 : r49863;
double r49865 = r49839 ? r49848 : r49864;
return r49865;
}



Bits error versus x



Bits error versus eps
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
Simplified0.4
if 2.684800803254601e-05 < eps Initial program 31.1
rmApplied cos-sum1.0
Applied associate--l-1.0
Simplified1.0
Final simplification0.7
herbie shell --seed 2020046 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))