\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -3.21001947811687037525689421214365347132 \cdot 10^{-11}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}}\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 3.097623705192343513450383904461737927249 \cdot 10^{-6}:\\
\;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(e^{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x}\right)\\
\end{array}double f(double x, double eps) {
double r93018 = x;
double r93019 = eps;
double r93020 = r93018 + r93019;
double r93021 = cos(r93020);
double r93022 = cos(r93018);
double r93023 = r93021 - r93022;
return r93023;
}
double f(double x, double eps) {
double r93024 = eps;
double r93025 = -3.2100194781168704e-11;
bool r93026 = r93024 <= r93025;
double r93027 = x;
double r93028 = cos(r93027);
double r93029 = cos(r93024);
double r93030 = r93028 * r93029;
double r93031 = sin(r93027);
double r93032 = sin(r93024);
double r93033 = r93031 * r93032;
double r93034 = 3.0;
double r93035 = pow(r93033, r93034);
double r93036 = cbrt(r93035);
double r93037 = r93030 - r93036;
double r93038 = r93037 - r93028;
double r93039 = 3.0976237051923435e-06;
bool r93040 = r93024 <= r93039;
double r93041 = 0.041666666666666664;
double r93042 = 4.0;
double r93043 = pow(r93024, r93042);
double r93044 = r93041 * r93043;
double r93045 = r93027 * r93024;
double r93046 = 0.5;
double r93047 = 2.0;
double r93048 = pow(r93024, r93047);
double r93049 = r93046 * r93048;
double r93050 = r93045 + r93049;
double r93051 = r93044 - r93050;
double r93052 = r93030 - r93033;
double r93053 = r93052 - r93028;
double r93054 = exp(r93053);
double r93055 = log(r93054);
double r93056 = r93040 ? r93051 : r93055;
double r93057 = r93026 ? r93038 : r93056;
return r93057;
}



Bits error versus x



Bits error versus eps
Results
if eps < -3.2100194781168704e-11Initial program 30.5
rmApplied cos-sum1.7
rmApplied add-cbrt-cube1.7
Applied add-cbrt-cube1.8
Applied cbrt-unprod1.7
Simplified1.7
if -3.2100194781168704e-11 < eps < 3.0976237051923435e-06Initial program 49.4
rmApplied cos-sum49.0
Taylor expanded around inf 49.0
Taylor expanded around 0 31.2
if 3.0976237051923435e-06 < eps Initial program 30.4
rmApplied cos-sum1.0
rmApplied add-log-exp1.1
Applied add-log-exp1.1
Applied add-log-exp1.3
Applied diff-log1.3
Applied diff-log1.4
Simplified1.1
Final simplification16.0
herbie shell --seed 2019352
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))