\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2.169750629612618572292226382103308424121 \cdot 10^{-4}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\\
\mathbf{elif}\;\varepsilon \le 2.000223524114807400060530098717670455244 \cdot 10^{-6}:\\
\;\;\;\;\left(-2 \cdot \sin \left(\frac{\varepsilon}{2}\right)\right) \cdot \sin \left(\frac{\mathsf{fma}\left(2, x, \varepsilon\right)}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\end{array}double f(double x, double eps) {
double r18821 = x;
double r18822 = eps;
double r18823 = r18821 + r18822;
double r18824 = cos(r18823);
double r18825 = cos(r18821);
double r18826 = r18824 - r18825;
return r18826;
}
double f(double x, double eps) {
double r18827 = eps;
double r18828 = -0.00021697506296126186;
bool r18829 = r18827 <= r18828;
double r18830 = x;
double r18831 = cos(r18830);
double r18832 = cos(r18827);
double r18833 = r18831 * r18832;
double r18834 = sin(r18830);
double r18835 = sin(r18827);
double r18836 = fma(r18834, r18835, r18831);
double r18837 = r18833 - r18836;
double r18838 = 2.0002235241148074e-06;
bool r18839 = r18827 <= r18838;
double r18840 = -2.0;
double r18841 = 2.0;
double r18842 = r18827 / r18841;
double r18843 = sin(r18842);
double r18844 = r18840 * r18843;
double r18845 = fma(r18841, r18830, r18827);
double r18846 = r18845 / r18841;
double r18847 = sin(r18846);
double r18848 = r18844 * r18847;
double r18849 = r18834 * r18835;
double r18850 = r18833 - r18849;
double r18851 = r18850 - r18831;
double r18852 = r18839 ? r18848 : r18851;
double r18853 = r18829 ? r18837 : r18852;
return r18853;
}



Bits error versus x



Bits error versus eps
if eps < -0.00021697506296126186Initial program 30.7
rmApplied cos-sum0.8
Applied associate--l-0.9
Simplified0.8
if -0.00021697506296126186 < eps < 2.0002235241148074e-06Initial program 48.8
rmApplied diff-cos37.2
Simplified0.4
rmApplied associate-*r*0.4
if 2.0002235241148074e-06 < eps Initial program 28.6
rmApplied cos-sum1.0
Final simplification0.7
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))