\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.705040344446819412541570780417199415524 \cdot 10^{-8} \lor \neg \left(\varepsilon \le 4.159942496741691009894952628723681058577 \cdot 10^{-13}\right):\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)\\
\mathbf{else}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\end{array}double f(double x, double eps) {
double r61242 = x;
double r61243 = eps;
double r61244 = r61242 + r61243;
double r61245 = cos(r61244);
double r61246 = cos(r61242);
double r61247 = r61245 - r61246;
return r61247;
}
double f(double x, double eps) {
double r61248 = eps;
double r61249 = -1.7050403444468194e-08;
bool r61250 = r61248 <= r61249;
double r61251 = 4.159942496741691e-13;
bool r61252 = r61248 <= r61251;
double r61253 = !r61252;
bool r61254 = r61250 || r61253;
double r61255 = x;
double r61256 = cos(r61255);
double r61257 = cos(r61248);
double r61258 = r61256 * r61257;
double r61259 = sin(r61255);
double r61260 = sin(r61248);
double r61261 = r61259 * r61260;
double r61262 = r61261 + r61256;
double r61263 = r61258 - r61262;
double r61264 = 0.16666666666666666;
double r61265 = 3.0;
double r61266 = pow(r61255, r61265);
double r61267 = r61264 * r61266;
double r61268 = r61267 - r61255;
double r61269 = 0.5;
double r61270 = r61248 * r61269;
double r61271 = r61268 - r61270;
double r61272 = r61248 * r61271;
double r61273 = r61254 ? r61263 : r61272;
return r61273;
}



Bits error versus x



Bits error versus eps
Results
if eps < -1.7050403444468194e-08Initial program 30.3
rmApplied cos-sum1.1
rmApplied add-log-exp1.2
if -1.7050403444468194e-08 < eps < 4.159942496741691e-13Initial program 49.2
Taylor expanded around 0 31.7
Simplified31.7
if 4.159942496741691e-13 < eps Initial program 31.3
rmApplied cos-sum1.9
rmApplied add-log-exp2.0
Applied add-log-exp2.1
Applied add-log-exp2.2
Applied diff-log2.3
Applied diff-log2.4
Simplified2.0
rmApplied associate--l-2.0
Final simplification16.1
herbie shell --seed 2019298
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))