\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -8.9118824918033931 \cdot 10^{-16}:\\
\;\;\;\;1 \cdot \mathsf{fma}\left(\cos \varepsilon, \cos x, -\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)\\
\mathbf{elif}\;\varepsilon \le 2.2379838828549683 \cdot 10^{-7}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon + \left(-\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)\\
\end{array}double f(double x, double eps) {
double r50871 = x;
double r50872 = eps;
double r50873 = r50871 + r50872;
double r50874 = cos(r50873);
double r50875 = cos(r50871);
double r50876 = r50874 - r50875;
return r50876;
}
double f(double x, double eps) {
double r50877 = eps;
double r50878 = -8.911882491803393e-16;
bool r50879 = r50877 <= r50878;
double r50880 = 1.0;
double r50881 = cos(r50877);
double r50882 = x;
double r50883 = cos(r50882);
double r50884 = sin(r50882);
double r50885 = sin(r50877);
double r50886 = fma(r50884, r50885, r50883);
double r50887 = -r50886;
double r50888 = fma(r50881, r50883, r50887);
double r50889 = r50880 * r50888;
double r50890 = 2.2379838828549683e-07;
bool r50891 = r50877 <= r50890;
double r50892 = 0.16666666666666666;
double r50893 = 3.0;
double r50894 = pow(r50882, r50893);
double r50895 = r50892 * r50894;
double r50896 = r50895 - r50882;
double r50897 = 0.5;
double r50898 = r50877 * r50897;
double r50899 = r50896 - r50898;
double r50900 = r50877 * r50899;
double r50901 = r50883 * r50881;
double r50902 = r50901 + r50887;
double r50903 = r50891 ? r50900 : r50902;
double r50904 = r50879 ? r50889 : r50903;
return r50904;
}



Bits error versus x



Bits error versus eps
if eps < -8.911882491803393e-16Initial program 31.0
rmApplied cos-sum2.2
rmApplied fma-neg2.2
Simplified2.2
rmApplied log1p-expm1-u2.3
rmApplied *-un-lft-identity2.3
Applied *-un-lft-identity2.3
Applied distribute-lft-out--2.3
Simplified2.2
if -8.911882491803393e-16 < eps < 2.2379838828549683e-07Initial program 48.9
Taylor expanded around 0 31.8
Simplified31.8
if 2.2379838828549683e-07 < eps Initial program 31.2
rmApplied cos-sum1.2
rmApplied sub-neg1.2
Applied associate--l+1.2
Simplified1.1
Final simplification16.3
herbie shell --seed 2020046 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))