\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -3.735186528216483498553417835763568177754 \cdot 10^{-6}:\\
\;\;\;\;\mathsf{fma}\left(\cos x, \cos \varepsilon, -\mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)\right)\\
\mathbf{elif}\;\varepsilon \le 2.307757405863471073912161291366573756534 \cdot 10^{-7}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{24}, \left(\varepsilon \cdot \varepsilon\right) \cdot \left(\varepsilon \cdot \varepsilon\right), \left(\varepsilon \cdot \varepsilon\right) \cdot \frac{-1}{2}\right) - x \cdot \varepsilon\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\cos x, \cos \varepsilon, -\mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)\right)\\
\end{array}double f(double x, double eps) {
double r2584443 = x;
double r2584444 = eps;
double r2584445 = r2584443 + r2584444;
double r2584446 = cos(r2584445);
double r2584447 = cos(r2584443);
double r2584448 = r2584446 - r2584447;
return r2584448;
}
double f(double x, double eps) {
double r2584449 = eps;
double r2584450 = -3.7351865282164835e-06;
bool r2584451 = r2584449 <= r2584450;
double r2584452 = x;
double r2584453 = cos(r2584452);
double r2584454 = cos(r2584449);
double r2584455 = sin(r2584449);
double r2584456 = sin(r2584452);
double r2584457 = fma(r2584455, r2584456, r2584453);
double r2584458 = -r2584457;
double r2584459 = fma(r2584453, r2584454, r2584458);
double r2584460 = 2.307757405863471e-07;
bool r2584461 = r2584449 <= r2584460;
double r2584462 = 0.041666666666666664;
double r2584463 = r2584449 * r2584449;
double r2584464 = r2584463 * r2584463;
double r2584465 = -0.5;
double r2584466 = r2584463 * r2584465;
double r2584467 = fma(r2584462, r2584464, r2584466);
double r2584468 = r2584452 * r2584449;
double r2584469 = r2584467 - r2584468;
double r2584470 = r2584461 ? r2584469 : r2584459;
double r2584471 = r2584451 ? r2584459 : r2584470;
return r2584471;
}



Bits error versus x



Bits error versus eps
if eps < -3.7351865282164835e-06 or 2.307757405863471e-07 < eps Initial program 31.0
rmApplied cos-sum1.0
Applied associate--l-1.0
Simplified1.0
rmApplied fma-neg1.0
if -3.7351865282164835e-06 < eps < 2.307757405863471e-07Initial program 49.4
rmApplied cos-sum48.8
Applied associate--l-48.8
Simplified48.8
rmApplied fma-neg48.8
rmApplied add-log-exp48.8
Simplified48.8
Taylor expanded around 0 31.2
Simplified31.2
Final simplification15.7
herbie shell --seed 2019179 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))