\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -0.01398185726995361012614527140840436914004:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)\\
\mathbf{elif}\;\varepsilon \le 2.559402259473403249334308440232632619882 \cdot 10^{-5}:\\
\;\;\;\;\left(-2 \cdot \sin \left(\frac{\varepsilon}{2}\right)\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\end{array}double f(double x, double eps) {
double r30826 = x;
double r30827 = eps;
double r30828 = r30826 + r30827;
double r30829 = cos(r30828);
double r30830 = cos(r30826);
double r30831 = r30829 - r30830;
return r30831;
}
double f(double x, double eps) {
double r30832 = eps;
double r30833 = -0.01398185726995361;
bool r30834 = r30832 <= r30833;
double r30835 = x;
double r30836 = cos(r30835);
double r30837 = cos(r30832);
double r30838 = r30836 * r30837;
double r30839 = sin(r30835);
double r30840 = sin(r30832);
double r30841 = r30839 * r30840;
double r30842 = r30841 + r30836;
double r30843 = r30838 - r30842;
double r30844 = 2.5594022594734032e-05;
bool r30845 = r30832 <= r30844;
double r30846 = -2.0;
double r30847 = 2.0;
double r30848 = r30832 / r30847;
double r30849 = sin(r30848);
double r30850 = r30846 * r30849;
double r30851 = r30835 + r30832;
double r30852 = r30851 + r30835;
double r30853 = r30852 / r30847;
double r30854 = sin(r30853);
double r30855 = r30850 * r30854;
double r30856 = r30838 - r30841;
double r30857 = r30856 - r30836;
double r30858 = r30845 ? r30855 : r30857;
double r30859 = r30834 ? r30843 : r30858;
return r30859;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.01398185726995361Initial program 30.0
rmApplied cos-sum0.8
Applied associate--l-0.8
if -0.01398185726995361 < eps < 2.5594022594734032e-05Initial program 49.2
rmApplied diff-cos38.1
Simplified0.6
rmApplied associate-*r*0.6
if 2.5594022594734032e-05 < eps Initial program 31.5
rmApplied cos-sum1.0
Final simplification0.8
herbie shell --seed 2019306
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))