\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -7.61643354190788131 \cdot 10^{-6} \lor \neg \left(\varepsilon \le 1.66244423770151382 \cdot 10^{-7}\right):\\
\;\;\;\;\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\cos x \cdot \cos \varepsilon\right)\right) - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right) \cdot \left(\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon - \cos x\right)\right)}{\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon - \cos x\right)}\\
\end{array}double f(double x, double eps) {
double r73331 = x;
double r73332 = eps;
double r73333 = r73331 + r73332;
double r73334 = cos(r73333);
double r73335 = cos(r73331);
double r73336 = r73334 - r73335;
return r73336;
}
double f(double x, double eps) {
double r73337 = eps;
double r73338 = -7.616433541907881e-06;
bool r73339 = r73337 <= r73338;
double r73340 = 1.6624442377015138e-07;
bool r73341 = r73337 <= r73340;
double r73342 = !r73341;
bool r73343 = r73339 || r73342;
double r73344 = x;
double r73345 = cos(r73344);
double r73346 = cos(r73337);
double r73347 = r73345 * r73346;
double r73348 = expm1(r73347);
double r73349 = log1p(r73348);
double r73350 = sin(r73344);
double r73351 = sin(r73337);
double r73352 = r73350 * r73351;
double r73353 = r73349 - r73352;
double r73354 = r73353 - r73345;
double r73355 = 0.041666666666666664;
double r73356 = 4.0;
double r73357 = pow(r73337, r73356);
double r73358 = 0.5;
double r73359 = 2.0;
double r73360 = pow(r73337, r73359);
double r73361 = r73358 * r73360;
double r73362 = fma(r73344, r73337, r73361);
double r73363 = -r73362;
double r73364 = fma(r73355, r73357, r73363);
double r73365 = r73352 - r73345;
double r73366 = r73347 - r73365;
double r73367 = r73364 * r73366;
double r73368 = r73367 / r73366;
double r73369 = r73343 ? r73354 : r73368;
return r73369;
}



Bits error versus x



Bits error versus eps
if eps < -7.616433541907881e-06 or 1.6624442377015138e-07 < eps Initial program 30.2
rmApplied cos-sum1.0
rmApplied log1p-expm1-u1.1
if -7.616433541907881e-06 < eps < 1.6624442377015138e-07Initial program 49.2
rmApplied cos-sum48.8
rmApplied add-log-exp48.8
rmApplied flip--48.8
Simplified48.8
Simplified48.8
Taylor expanded around 0 31.4
Simplified31.4
Final simplification16.0
herbie shell --seed 2020081 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))