\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -0.0001322493479089982:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 0.00010993973433856837:\\
\;\;\;\;-2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\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 r1645047 = x;
double r1645048 = eps;
double r1645049 = r1645047 + r1645048;
double r1645050 = cos(r1645049);
double r1645051 = cos(r1645047);
double r1645052 = r1645050 - r1645051;
return r1645052;
}
double f(double x, double eps) {
double r1645053 = eps;
double r1645054 = -0.0001322493479089982;
bool r1645055 = r1645053 <= r1645054;
double r1645056 = x;
double r1645057 = cos(r1645056);
double r1645058 = cos(r1645053);
double r1645059 = r1645057 * r1645058;
double r1645060 = sin(r1645056);
double r1645061 = sin(r1645053);
double r1645062 = r1645060 * r1645061;
double r1645063 = r1645059 - r1645062;
double r1645064 = r1645063 - r1645057;
double r1645065 = 0.00010993973433856837;
bool r1645066 = r1645053 <= r1645065;
double r1645067 = -2.0;
double r1645068 = 2.0;
double r1645069 = r1645053 / r1645068;
double r1645070 = sin(r1645069);
double r1645071 = r1645056 + r1645053;
double r1645072 = r1645071 + r1645056;
double r1645073 = r1645072 / r1645068;
double r1645074 = sin(r1645073);
double r1645075 = r1645070 * r1645074;
double r1645076 = r1645067 * r1645075;
double r1645077 = r1645066 ? r1645076 : r1645064;
double r1645078 = r1645055 ? r1645064 : r1645077;
return r1645078;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.0001322493479089982 or 0.00010993973433856837 < eps Initial program 30.1
rmApplied cos-sum0.9
if -0.0001322493479089982 < eps < 0.00010993973433856837Initial program 48.9
rmApplied diff-cos37.6
Simplified0.6
Final simplification0.7
herbie shell --seed 2019133
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))