\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.3976165695423843 \cdot 10^{-14} \lor \neg \left(\varepsilon \le 2.63597490420144011 \cdot 10^{-8}\right):\\
\;\;\;\;\frac{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right)} - \cos x\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\
\end{array}double f(double x, double eps) {
double r79055 = x;
double r79056 = eps;
double r79057 = r79055 + r79056;
double r79058 = cos(r79057);
double r79059 = cos(r79055);
double r79060 = r79058 - r79059;
return r79060;
}
double f(double x, double eps) {
double r79061 = eps;
double r79062 = -1.3976165695423843e-14;
bool r79063 = r79061 <= r79062;
double r79064 = 2.63597490420144e-08;
bool r79065 = r79061 <= r79064;
double r79066 = !r79065;
bool r79067 = r79063 || r79066;
double r79068 = x;
double r79069 = cos(r79068);
double r79070 = cos(r79061);
double r79071 = sin(r79068);
double r79072 = sin(r79061);
double r79073 = r79071 * r79072;
double r79074 = fma(r79069, r79070, r79073);
double r79075 = r79069 * r79070;
double r79076 = r79075 - r79073;
double r79077 = r79074 * r79076;
double r79078 = r79077 / r79074;
double r79079 = r79078 - r79069;
double r79080 = 0.041666666666666664;
double r79081 = 4.0;
double r79082 = pow(r79061, r79081);
double r79083 = 0.5;
double r79084 = 2.0;
double r79085 = pow(r79061, r79084);
double r79086 = r79083 * r79085;
double r79087 = fma(r79068, r79061, r79086);
double r79088 = -r79087;
double r79089 = fma(r79080, r79082, r79088);
double r79090 = r79067 ? r79079 : r79089;
return r79090;
}



Bits error versus x



Bits error versus eps
if eps < -1.3976165695423843e-14 or 2.63597490420144e-08 < eps Initial program 30.7
rmApplied cos-sum1.6
rmApplied flip--1.8
Simplified1.8
Simplified1.7
if -1.3976165695423843e-14 < eps < 2.63597490420144e-08Initial program 49.3
rmApplied cos-sum49.1
rmApplied flip--49.1
Simplified49.1
Taylor expanded around 0 30.9
Simplified30.9
Final simplification15.7
herbie shell --seed 2020024 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))