\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -0.005924238612320757:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)\\
\mathbf{elif}\;\varepsilon \le 8.193560063624595 \cdot 10^{-05}:\\
\;\;\;\;\left(-2 \cdot \sin \left(\frac{\varepsilon}{2}\right)\right) \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\sin \left(\frac{\mathsf{fma}\left(2, x, \varepsilon\right)}{2}\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin \varepsilon \cdot \sin x\right) - \cos x\\
\end{array}double f(double x, double eps) {
double r1352268 = x;
double r1352269 = eps;
double r1352270 = r1352268 + r1352269;
double r1352271 = cos(r1352270);
double r1352272 = cos(r1352268);
double r1352273 = r1352271 - r1352272;
return r1352273;
}
double f(double x, double eps) {
double r1352274 = eps;
double r1352275 = -0.005924238612320757;
bool r1352276 = r1352274 <= r1352275;
double r1352277 = x;
double r1352278 = cos(r1352277);
double r1352279 = cos(r1352274);
double r1352280 = r1352278 * r1352279;
double r1352281 = sin(r1352274);
double r1352282 = sin(r1352277);
double r1352283 = fma(r1352281, r1352282, r1352278);
double r1352284 = r1352280 - r1352283;
double r1352285 = 8.193560063624595e-05;
bool r1352286 = r1352274 <= r1352285;
double r1352287 = -2.0;
double r1352288 = 2.0;
double r1352289 = r1352274 / r1352288;
double r1352290 = sin(r1352289);
double r1352291 = r1352287 * r1352290;
double r1352292 = fma(r1352288, r1352277, r1352274);
double r1352293 = r1352292 / r1352288;
double r1352294 = sin(r1352293);
double r1352295 = log1p(r1352294);
double r1352296 = expm1(r1352295);
double r1352297 = r1352291 * r1352296;
double r1352298 = r1352281 * r1352282;
double r1352299 = r1352280 - r1352298;
double r1352300 = r1352299 - r1352278;
double r1352301 = r1352286 ? r1352297 : r1352300;
double r1352302 = r1352276 ? r1352284 : r1352301;
return r1352302;
}



Bits error versus x



Bits error versus eps
if eps < -0.005924238612320757Initial program 29.1
rmApplied cos-sum0.8
Applied associate--l-0.8
Simplified0.8
if -0.005924238612320757 < eps < 8.193560063624595e-05Initial program 48.7
rmApplied diff-cos37.5
Simplified0.5
rmApplied associate-*r*0.5
rmApplied expm1-log1p-u0.6
if 8.193560063624595e-05 < eps Initial program 30.9
rmApplied cos-sum1.0
Final simplification0.7
herbie shell --seed 2019154 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))