\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -0.0008099166487036783:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 1.4877491964720032 \cdot 10^{-05}:\\
\;\;\;\;\left(\sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\sin \left(\frac{\mathsf{fma}\left(2, x, \varepsilon\right)}{2}\right)\right)\right)\right) \cdot -2\\
\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 r741459 = x;
double r741460 = eps;
double r741461 = r741459 + r741460;
double r741462 = cos(r741461);
double r741463 = cos(r741459);
double r741464 = r741462 - r741463;
return r741464;
}
double f(double x, double eps) {
double r741465 = eps;
double r741466 = -0.0008099166487036783;
bool r741467 = r741465 <= r741466;
double r741468 = x;
double r741469 = cos(r741468);
double r741470 = cos(r741465);
double r741471 = r741469 * r741470;
double r741472 = sin(r741468);
double r741473 = sin(r741465);
double r741474 = r741472 * r741473;
double r741475 = r741471 - r741474;
double r741476 = r741475 - r741469;
double r741477 = 1.4877491964720032e-05;
bool r741478 = r741465 <= r741477;
double r741479 = 0.5;
double r741480 = r741479 * r741465;
double r741481 = sin(r741480);
double r741482 = 2.0;
double r741483 = fma(r741482, r741468, r741465);
double r741484 = r741483 / r741482;
double r741485 = sin(r741484);
double r741486 = log1p(r741485);
double r741487 = expm1(r741486);
double r741488 = r741481 * r741487;
double r741489 = -2.0;
double r741490 = r741488 * r741489;
double r741491 = r741478 ? r741490 : r741476;
double r741492 = r741467 ? r741476 : r741491;
return r741492;
}



Bits error versus x



Bits error versus eps
if eps < -0.0008099166487036783 or 1.4877491964720032e-05 < eps Initial program 29.2
rmApplied cos-sum0.9
if -0.0008099166487036783 < eps < 1.4877491964720032e-05Initial program 49.5
rmApplied diff-cos36.8
Simplified0.5
rmApplied expm1-log1p-u0.6
Final simplification0.7
herbie shell --seed 2019158 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))