\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -4.517751507358619699596019186183573409913 \cdot 10^{-14}:\\
\;\;\;\;\frac{{\left(\cos \varepsilon \cdot \cos x\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\left(\sin x \cdot \sin \varepsilon + \cos x\right) + \cos \varepsilon \cdot \cos x\right) + \left(\cos \varepsilon \cdot \cos x\right) \cdot \left(\cos \varepsilon \cdot \cos x\right)}\\
\mathbf{elif}\;\varepsilon \le 3.868259295745755680238551175997852027422 \cdot 10^{-7}:\\
\;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}}\right) - \cos x\\
\end{array}double f(double x, double eps) {
double r56907 = x;
double r56908 = eps;
double r56909 = r56907 + r56908;
double r56910 = cos(r56909);
double r56911 = cos(r56907);
double r56912 = r56910 - r56911;
return r56912;
}
double f(double x, double eps) {
double r56913 = eps;
double r56914 = -4.51775150735862e-14;
bool r56915 = r56913 <= r56914;
double r56916 = cos(r56913);
double r56917 = x;
double r56918 = cos(r56917);
double r56919 = r56916 * r56918;
double r56920 = 3.0;
double r56921 = pow(r56919, r56920);
double r56922 = sin(r56917);
double r56923 = sin(r56913);
double r56924 = r56922 * r56923;
double r56925 = r56924 + r56918;
double r56926 = pow(r56925, r56920);
double r56927 = r56921 - r56926;
double r56928 = r56925 + r56919;
double r56929 = r56925 * r56928;
double r56930 = r56919 * r56919;
double r56931 = r56929 + r56930;
double r56932 = r56927 / r56931;
double r56933 = 3.8682592957457557e-07;
bool r56934 = r56913 <= r56933;
double r56935 = 0.041666666666666664;
double r56936 = 4.0;
double r56937 = pow(r56913, r56936);
double r56938 = r56935 * r56937;
double r56939 = r56917 * r56913;
double r56940 = 0.5;
double r56941 = 2.0;
double r56942 = pow(r56913, r56941);
double r56943 = r56940 * r56942;
double r56944 = r56939 + r56943;
double r56945 = r56938 - r56944;
double r56946 = r56918 * r56916;
double r56947 = pow(r56924, r56920);
double r56948 = cbrt(r56947);
double r56949 = r56946 - r56948;
double r56950 = r56949 - r56918;
double r56951 = r56934 ? r56945 : r56950;
double r56952 = r56915 ? r56932 : r56951;
return r56952;
}



Bits error versus x



Bits error versus eps
Results
if eps < -4.51775150735862e-14Initial program 32.1
rmApplied cos-sum1.9
Taylor expanded around inf 1.9
rmApplied flip3--2.1
Simplified2.1
if -4.51775150735862e-14 < eps < 3.8682592957457557e-07Initial program 49.0
rmApplied cos-sum48.7
Taylor expanded around inf 48.7
Taylor expanded around 0 30.6
if 3.8682592957457557e-07 < eps Initial program 29.5
rmApplied cos-sum1.1
rmApplied add-cbrt-cube1.1
Applied add-cbrt-cube1.2
Applied cbrt-unprod1.1
Simplified1.1
Final simplification15.4
herbie shell --seed 2019354
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))