\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -6.111174932312063087791464965903287520632 \cdot 10^{-4}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 4.781000628187973338029202047261279062695 \cdot 10^{-6}:\\
\;\;\;\;-2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)\\
\end{array}double f(double x, double eps) {
double r31705 = x;
double r31706 = eps;
double r31707 = r31705 + r31706;
double r31708 = cos(r31707);
double r31709 = cos(r31705);
double r31710 = r31708 - r31709;
return r31710;
}
double f(double x, double eps) {
double r31711 = eps;
double r31712 = -0.0006111174932312063;
bool r31713 = r31711 <= r31712;
double r31714 = x;
double r31715 = cos(r31714);
double r31716 = cos(r31711);
double r31717 = r31715 * r31716;
double r31718 = sin(r31714);
double r31719 = sin(r31711);
double r31720 = r31718 * r31719;
double r31721 = r31717 - r31720;
double r31722 = r31721 - r31715;
double r31723 = 4.781000628187973e-06;
bool r31724 = r31711 <= r31723;
double r31725 = -2.0;
double r31726 = 2.0;
double r31727 = r31711 / r31726;
double r31728 = sin(r31727);
double r31729 = r31714 + r31711;
double r31730 = r31729 + r31714;
double r31731 = r31730 / r31726;
double r31732 = sin(r31731);
double r31733 = r31728 * r31732;
double r31734 = r31725 * r31733;
double r31735 = r31720 + r31715;
double r31736 = r31717 - r31735;
double r31737 = r31724 ? r31734 : r31736;
double r31738 = r31713 ? r31722 : r31737;
return r31738;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.0006111174932312063Initial program 30.8
rmApplied cos-sum0.8
if -0.0006111174932312063 < eps < 4.781000628187973e-06Initial program 48.7
rmApplied diff-cos37.4
Simplified0.5
if 4.781000628187973e-06 < eps Initial program 29.6
rmApplied cos-sum0.9
Applied associate--l-1.0
Final simplification0.7
herbie shell --seed 2019303
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))