\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2578326.2911242372:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 6.177621166523711 \cdot 10^{-05}:\\
\;\;\;\;\mathsf{expm1}\left(\mathsf{log1p}\left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \left(-2 \cdot \sin \left(\frac{\mathsf{fma}\left(x, 2, \varepsilon\right)}{2}\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)\\
\end{array}double f(double x, double eps) {
double r1154436 = x;
double r1154437 = eps;
double r1154438 = r1154436 + r1154437;
double r1154439 = cos(r1154438);
double r1154440 = cos(r1154436);
double r1154441 = r1154439 - r1154440;
return r1154441;
}
double f(double x, double eps) {
double r1154442 = eps;
double r1154443 = -2578326.2911242372;
bool r1154444 = r1154442 <= r1154443;
double r1154445 = x;
double r1154446 = cos(r1154445);
double r1154447 = cos(r1154442);
double r1154448 = r1154446 * r1154447;
double r1154449 = sin(r1154445);
double r1154450 = sin(r1154442);
double r1154451 = r1154449 * r1154450;
double r1154452 = r1154448 - r1154451;
double r1154453 = r1154452 - r1154446;
double r1154454 = 6.177621166523711e-05;
bool r1154455 = r1154442 <= r1154454;
double r1154456 = 2.0;
double r1154457 = r1154442 / r1154456;
double r1154458 = sin(r1154457);
double r1154459 = -2.0;
double r1154460 = fma(r1154445, r1154456, r1154442);
double r1154461 = r1154460 / r1154456;
double r1154462 = sin(r1154461);
double r1154463 = r1154459 * r1154462;
double r1154464 = r1154458 * r1154463;
double r1154465 = log1p(r1154464);
double r1154466 = expm1(r1154465);
double r1154467 = fma(r1154450, r1154449, r1154446);
double r1154468 = r1154448 - r1154467;
double r1154469 = r1154455 ? r1154466 : r1154468;
double r1154470 = r1154444 ? r1154453 : r1154469;
return r1154470;
}



Bits error versus x



Bits error versus eps
if eps < -2578326.2911242372Initial program 31.2
rmApplied cos-sum0.8
if -2578326.2911242372 < eps < 6.177621166523711e-05Initial program 48.7
rmApplied diff-cos37.3
Simplified1.2
rmApplied associate-*r*1.2
rmApplied log1p-expm1-u1.3
rmApplied expm1-log1p-u1.5
Simplified1.4
if 6.177621166523711e-05 < eps Initial program 30.0
rmApplied cos-sum1.0
Applied associate--l-1.0
Simplified1.0
Final simplification1.1
herbie shell --seed 2019151 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))