\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -3.32396073668591 \cdot 10^{-19} \lor \neg \left(\varepsilon \le 1.984905203293518 \cdot 10^{-8}\right):\\
\;\;\;\;1 \cdot \mathsf{fma}\left(\cos \varepsilon, \cos x, -\left(\sin x \cdot \sin \varepsilon + \cos x\right)\right)\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\varepsilon \cdot \left({\varepsilon}^{3} \cdot \frac{1}{24} - \mathsf{fma}\left(\frac{1}{2}, \varepsilon, x\right)\right)\right)\\
\end{array}double f(double x, double eps) {
double r73908 = x;
double r73909 = eps;
double r73910 = r73908 + r73909;
double r73911 = cos(r73910);
double r73912 = cos(r73908);
double r73913 = r73911 - r73912;
return r73913;
}
double f(double x, double eps) {
double r73914 = eps;
double r73915 = -3.3239607366859096e-19;
bool r73916 = r73914 <= r73915;
double r73917 = 1.984905203293518e-08;
bool r73918 = r73914 <= r73917;
double r73919 = !r73918;
bool r73920 = r73916 || r73919;
double r73921 = 1.0;
double r73922 = cos(r73914);
double r73923 = x;
double r73924 = cos(r73923);
double r73925 = sin(r73923);
double r73926 = sin(r73914);
double r73927 = r73925 * r73926;
double r73928 = r73927 + r73924;
double r73929 = -r73928;
double r73930 = fma(r73922, r73924, r73929);
double r73931 = r73921 * r73930;
double r73932 = 3.0;
double r73933 = pow(r73914, r73932);
double r73934 = 0.041666666666666664;
double r73935 = r73933 * r73934;
double r73936 = 0.5;
double r73937 = fma(r73936, r73914, r73923);
double r73938 = r73935 - r73937;
double r73939 = r73914 * r73938;
double r73940 = r73921 * r73939;
double r73941 = r73920 ? r73931 : r73940;
return r73941;
}



Bits error versus x



Bits error versus eps
if eps < -3.3239607366859096e-19 or 1.984905203293518e-08 < eps Initial program 30.7
rmApplied cos-sum2.1
rmApplied fma-neg2.1
Simplified2.1
rmApplied *-un-lft-identity2.1
Applied *-un-lft-identity2.1
Applied distribute-lft-out--2.1
Simplified2.1
rmApplied fma-udef2.1
if -3.3239607366859096e-19 < eps < 1.984905203293518e-08Initial program 49.3
rmApplied cos-sum49.1
rmApplied fma-neg49.1
Simplified49.1
rmApplied *-un-lft-identity49.1
Applied *-un-lft-identity49.1
Applied distribute-lft-out--49.1
Simplified49.1
Taylor expanded around 0 30.8
Simplified30.8
Final simplification15.6
herbie shell --seed 2020034 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))