\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -3.2341653758080624 \cdot 10^{-05}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 0.00014617860674771797:\\
\;\;\;\;\sin \left(\frac{\varepsilon}{2}\right) \cdot \left(-2 \cdot (e^{\log_* (1 + \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right))} - 1)^*\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 r1183405 = x;
double r1183406 = eps;
double r1183407 = r1183405 + r1183406;
double r1183408 = cos(r1183407);
double r1183409 = cos(r1183405);
double r1183410 = r1183408 - r1183409;
return r1183410;
}
double f(double x, double eps) {
double r1183411 = eps;
double r1183412 = -3.2341653758080624e-05;
bool r1183413 = r1183411 <= r1183412;
double r1183414 = x;
double r1183415 = cos(r1183414);
double r1183416 = cos(r1183411);
double r1183417 = r1183415 * r1183416;
double r1183418 = sin(r1183414);
double r1183419 = sin(r1183411);
double r1183420 = r1183418 * r1183419;
double r1183421 = r1183417 - r1183420;
double r1183422 = r1183421 - r1183415;
double r1183423 = 0.00014617860674771797;
bool r1183424 = r1183411 <= r1183423;
double r1183425 = 2.0;
double r1183426 = r1183411 / r1183425;
double r1183427 = sin(r1183426);
double r1183428 = -2.0;
double r1183429 = r1183414 + r1183411;
double r1183430 = r1183429 + r1183414;
double r1183431 = r1183430 / r1183425;
double r1183432 = sin(r1183431);
double r1183433 = log1p(r1183432);
double r1183434 = expm1(r1183433);
double r1183435 = r1183428 * r1183434;
double r1183436 = r1183427 * r1183435;
double r1183437 = r1183424 ? r1183436 : r1183422;
double r1183438 = r1183413 ? r1183422 : r1183437;
return r1183438;
}



Bits error versus x



Bits error versus eps
Results
if eps < -3.2341653758080624e-05 or 0.00014617860674771797 < eps Initial program 30.3
rmApplied cos-sum0.9
if -3.2341653758080624e-05 < eps < 0.00014617860674771797Initial program 49.7
rmApplied diff-cos37.3
Simplified0.5
rmApplied associate-*r*0.5
rmApplied expm1-log1p-u0.6
Final simplification0.7
herbie shell --seed 2019119 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))