\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.7648464678937232 \cdot 10^{-14}:\\
\;\;\;\;\left(\log \left(e^{\cos x \cdot \cos \varepsilon}\right) - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 1.08087522352913595 \cdot 10^{-8}:\\
\;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\cos \varepsilon \cdot \cos x - \sqrt[3]{{\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}\\
\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.7648464678937232e-14)) {
temp = ((log(exp((cos(x) * cos(eps)))) - (sin(x) * sin(eps))) - cos(x));
} else {
double temp_1;
if ((eps <= 1.080875223529136e-08)) {
temp_1 = ((0.041666666666666664 * pow(eps, 4.0)) - ((x * eps) + (0.5 * pow(eps, 2.0))));
} else {
temp_1 = ((cos(eps) * cos(x)) - cbrt(pow(((sin(x) * sin(eps)) + cos(x)), 3.0)));
}
temp = temp_1;
}
return temp;
}



Bits error versus x



Bits error versus eps
Results
if eps < -1.7648464678937232e-14Initial program 31.5
rmApplied cos-sum2.5
rmApplied add-log-exp2.7
if -1.7648464678937232e-14 < eps < 1.080875223529136e-08Initial program 48.9
rmApplied cos-sum48.8
Taylor expanded around inf 48.8
Taylor expanded around 0 31.1
if 1.080875223529136e-08 < eps Initial program 29.7
rmApplied cos-sum1.0
Taylor expanded around inf 1.1
rmApplied add-cbrt-cube1.2
Simplified1.2
Final simplification16.5
herbie shell --seed 2020066
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))