\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -0.22306452923435388:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \left(\cos x + \sin x \cdot \sin \varepsilon\right)\\
\mathbf{elif}\;\varepsilon \le 0.00391800888554098:\\
\;\;\;\;\sin \left(\frac{x + \left(x + \varepsilon\right)}{2}\right) \cdot \left(-2 \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \left(\cos x + \sin x \cdot \sin \varepsilon\right)\\
\end{array}double f(double x, double eps) {
double r742391 = x;
double r742392 = eps;
double r742393 = r742391 + r742392;
double r742394 = cos(r742393);
double r742395 = cos(r742391);
double r742396 = r742394 - r742395;
return r742396;
}
double f(double x, double eps) {
double r742397 = eps;
double r742398 = -0.22306452923435388;
bool r742399 = r742397 <= r742398;
double r742400 = x;
double r742401 = cos(r742400);
double r742402 = cos(r742397);
double r742403 = r742401 * r742402;
double r742404 = sin(r742400);
double r742405 = sin(r742397);
double r742406 = r742404 * r742405;
double r742407 = r742401 + r742406;
double r742408 = r742403 - r742407;
double r742409 = 0.00391800888554098;
bool r742410 = r742397 <= r742409;
double r742411 = r742400 + r742397;
double r742412 = r742400 + r742411;
double r742413 = 2.0;
double r742414 = r742412 / r742413;
double r742415 = sin(r742414);
double r742416 = -2.0;
double r742417 = r742397 / r742413;
double r742418 = sin(r742417);
double r742419 = r742416 * r742418;
double r742420 = r742415 * r742419;
double r742421 = r742410 ? r742420 : r742408;
double r742422 = r742399 ? r742408 : r742421;
return r742422;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.22306452923435388 or 0.00391800888554098 < eps Initial program 29.7
rmApplied cos-sum0.8
Applied associate--l-0.8
if -0.22306452923435388 < eps < 0.00391800888554098Initial program 49.0
rmApplied diff-cos37.2
Simplified0.7
rmApplied associate-*r*0.6
Final simplification0.7
herbie shell --seed 2019156
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))