\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -5.11955164844569822 \cdot 10^{-31} \lor \neg \left(\varepsilon \le 2.81129265655088791 \cdot 10^{-6}\right):\\
\;\;\;\;\cos \varepsilon \cdot \cos x + \left(\left(-\sin x \cdot \sin \varepsilon\right) - \cos x\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\
\end{array}double f(double x, double eps) {
double r76466 = x;
double r76467 = eps;
double r76468 = r76466 + r76467;
double r76469 = cos(r76468);
double r76470 = cos(r76466);
double r76471 = r76469 - r76470;
return r76471;
}
double f(double x, double eps) {
double r76472 = eps;
double r76473 = -5.119551648445698e-31;
bool r76474 = r76472 <= r76473;
double r76475 = 2.811292656550888e-06;
bool r76476 = r76472 <= r76475;
double r76477 = !r76476;
bool r76478 = r76474 || r76477;
double r76479 = cos(r76472);
double r76480 = x;
double r76481 = cos(r76480);
double r76482 = r76479 * r76481;
double r76483 = sin(r76480);
double r76484 = sin(r76472);
double r76485 = r76483 * r76484;
double r76486 = -r76485;
double r76487 = r76486 - r76481;
double r76488 = r76482 + r76487;
double r76489 = 0.041666666666666664;
double r76490 = 4.0;
double r76491 = pow(r76472, r76490);
double r76492 = r76489 * r76491;
double r76493 = r76480 * r76472;
double r76494 = 0.5;
double r76495 = 2.0;
double r76496 = pow(r76472, r76495);
double r76497 = r76494 * r76496;
double r76498 = r76493 + r76497;
double r76499 = r76492 - r76498;
double r76500 = r76478 ? r76488 : r76499;
return r76500;
}



Bits error versus x



Bits error versus eps
Results
if eps < -5.119551648445698e-31 or 2.811292656550888e-06 < eps Initial program 31.4
rmApplied cos-sum2.9
rmApplied sub-neg2.9
Applied associate--l+2.9
rmApplied *-commutative2.9
if -5.119551648445698e-31 < eps < 2.811292656550888e-06Initial program 49.2
rmApplied cos-sum49.0
rmApplied sub-neg49.0
Applied associate--l+49.0
rmApplied *-commutative49.0
Taylor expanded around 0 30.6
Final simplification15.9
herbie shell --seed 2020020
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))