\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -4.028105222915818 \cdot 10^{-06}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 0.11407284983207572:\\
\;\;\;\;\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin \left(\frac{\mathsf{fma}\left(2, x, \varepsilon\right)}{2}\right)\right)\right) \cdot -2\\
\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 r1642349 = x;
double r1642350 = eps;
double r1642351 = r1642349 + r1642350;
double r1642352 = cos(r1642351);
double r1642353 = cos(r1642349);
double r1642354 = r1642352 - r1642353;
return r1642354;
}
double f(double x, double eps) {
double r1642355 = eps;
double r1642356 = -4.028105222915818e-06;
bool r1642357 = r1642355 <= r1642356;
double r1642358 = x;
double r1642359 = cos(r1642358);
double r1642360 = cos(r1642355);
double r1642361 = r1642359 * r1642360;
double r1642362 = sin(r1642358);
double r1642363 = sin(r1642355);
double r1642364 = r1642362 * r1642363;
double r1642365 = r1642361 - r1642364;
double r1642366 = r1642365 - r1642359;
double r1642367 = 0.11407284983207572;
bool r1642368 = r1642355 <= r1642367;
double r1642369 = 0.5;
double r1642370 = r1642369 * r1642355;
double r1642371 = sin(r1642370);
double r1642372 = 2.0;
double r1642373 = fma(r1642372, r1642358, r1642355);
double r1642374 = r1642373 / r1642372;
double r1642375 = sin(r1642374);
double r1642376 = r1642371 * r1642375;
double r1642377 = expm1(r1642376);
double r1642378 = log1p(r1642377);
double r1642379 = -2.0;
double r1642380 = r1642378 * r1642379;
double r1642381 = fma(r1642363, r1642362, r1642359);
double r1642382 = r1642361 - r1642381;
double r1642383 = r1642368 ? r1642380 : r1642382;
double r1642384 = r1642357 ? r1642366 : r1642383;
return r1642384;
}



Bits error versus x



Bits error versus eps
if eps < -4.028105222915818e-06Initial program 30.5
rmApplied cos-sum1.0
if -4.028105222915818e-06 < eps < 0.11407284983207572Initial program 49.3
rmApplied diff-cos37.6
Simplified0.5
rmApplied log1p-expm1-u0.5
if 0.11407284983207572 < eps Initial program 29.6
rmApplied cos-sum0.8
Applied associate--l-0.8
Simplified0.8
Final simplification0.7
herbie shell --seed 2019164 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))