\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2.0140999975557835 \cdot 10^{-07}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 0.00017141206035122596:\\
\;\;\;\;\mathsf{log1p}\left(\left(\mathsf{expm1}\left(\left(\sin \left(\frac{x + \left(x + \varepsilon\right)}{2}\right) \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot -2\right)\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\left(\sin \varepsilon\right), \left(\sin x\right), \left(\cos x\right)\right)\\
\end{array}double f(double x, double eps) {
double r4234853 = x;
double r4234854 = eps;
double r4234855 = r4234853 + r4234854;
double r4234856 = cos(r4234855);
double r4234857 = cos(r4234853);
double r4234858 = r4234856 - r4234857;
return r4234858;
}
double f(double x, double eps) {
double r4234859 = eps;
double r4234860 = -2.0140999975557835e-07;
bool r4234861 = r4234859 <= r4234860;
double r4234862 = x;
double r4234863 = cos(r4234862);
double r4234864 = cos(r4234859);
double r4234865 = r4234863 * r4234864;
double r4234866 = sin(r4234862);
double r4234867 = sin(r4234859);
double r4234868 = r4234866 * r4234867;
double r4234869 = r4234865 - r4234868;
double r4234870 = r4234869 - r4234863;
double r4234871 = 0.00017141206035122596;
bool r4234872 = r4234859 <= r4234871;
double r4234873 = r4234862 + r4234859;
double r4234874 = r4234862 + r4234873;
double r4234875 = 2.0;
double r4234876 = r4234874 / r4234875;
double r4234877 = sin(r4234876);
double r4234878 = r4234859 / r4234875;
double r4234879 = sin(r4234878);
double r4234880 = -2.0;
double r4234881 = r4234879 * r4234880;
double r4234882 = r4234877 * r4234881;
double r4234883 = expm1(r4234882);
double r4234884 = log1p(r4234883);
double r4234885 = fma(r4234867, r4234866, r4234863);
double r4234886 = r4234865 - r4234885;
double r4234887 = r4234872 ? r4234884 : r4234886;
double r4234888 = r4234861 ? r4234870 : r4234887;
return r4234888;
}



Bits error versus x



Bits error versus eps
if eps < -2.0140999975557835e-07Initial program 30.1
rmApplied cos-sum1.1
if -2.0140999975557835e-07 < eps < 0.00017141206035122596Initial program 48.9
rmApplied diff-cos37.4
Simplified0.5
rmApplied associate-*r*0.5
rmApplied expm1-log1p-u0.6
rmApplied log1p-expm1-u0.6
Simplified0.5
if 0.00017141206035122596 < eps Initial program 30.1
rmApplied cos-sum0.9
Applied associate--l-0.9
Simplified0.9
Final simplification0.8
herbie shell --seed 2019125 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))