\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.2118697881203442 \cdot 10^{-11} \lor \neg \left(\varepsilon \le 7.268025054873702 \cdot 10^{-5}\right):\\
\;\;\;\;\cos x \cdot \left(\cos \varepsilon - 1\right) - \sin x \cdot \sin \varepsilon\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{2} \cdot {\varepsilon}^{2} - \sin x \cdot \sin \varepsilon\\
\end{array}double code(double x, double eps) {
return (cos((x + eps)) - cos(x));
}
double code(double x, double eps) {
double temp;
if (((eps <= -1.2118697881203442e-11) || !(eps <= 7.268025054873702e-05))) {
temp = ((cos(x) * (cos(eps) - 1.0)) - (sin(x) * sin(eps)));
} else {
temp = ((-0.5 * pow(eps, 2.0)) - (sin(x) * sin(eps)));
}
return temp;
}



Bits error versus x



Bits error versus eps
Results
if eps < -1.2118697881203442e-11 or 7.268025054873702e-05 < eps Initial program 30.3
rmApplied cos-sum1.3
Taylor expanded around inf 1.3
rmApplied +-commutative1.3
Applied associate--r+1.3
rmApplied *-un-lft-identity1.3
Applied distribute-rgt-out--1.3
if -1.2118697881203442e-11 < eps < 7.268025054873702e-05Initial program 49.1
rmApplied cos-sum48.7
Taylor expanded around inf 48.7
rmApplied +-commutative48.7
Applied associate--r+11.6
Taylor expanded around 0 0.4
Final simplification0.8
herbie shell --seed 2020066
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))