\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.320893942837389302245904465927389681568 \cdot 10^{-9} \lor \neg \left(\varepsilon \le 9.805431973736002190838386379022166561281 \cdot 10^{-10}\right):\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \left(\sin \varepsilon - 0\right) + \cos x\right)\right) + \mathsf{fma}\left(-\cos x, 1, \cos x \cdot 1\right)\\
\mathbf{else}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\end{array}double f(double x, double eps) {
double r49231 = x;
double r49232 = eps;
double r49233 = r49231 + r49232;
double r49234 = cos(r49233);
double r49235 = cos(r49231);
double r49236 = r49234 - r49235;
return r49236;
}
double f(double x, double eps) {
double r49237 = eps;
double r49238 = -1.3208939428373893e-09;
bool r49239 = r49237 <= r49238;
double r49240 = 9.805431973736002e-10;
bool r49241 = r49237 <= r49240;
double r49242 = !r49241;
bool r49243 = r49239 || r49242;
double r49244 = x;
double r49245 = cos(r49244);
double r49246 = cos(r49237);
double r49247 = r49245 * r49246;
double r49248 = sin(r49244);
double r49249 = sin(r49237);
double r49250 = 0.0;
double r49251 = r49249 - r49250;
double r49252 = r49248 * r49251;
double r49253 = r49252 + r49245;
double r49254 = r49247 - r49253;
double r49255 = -r49245;
double r49256 = 1.0;
double r49257 = r49245 * r49256;
double r49258 = fma(r49255, r49256, r49257);
double r49259 = r49254 + r49258;
double r49260 = 0.16666666666666666;
double r49261 = 3.0;
double r49262 = pow(r49244, r49261);
double r49263 = r49260 * r49262;
double r49264 = r49263 - r49244;
double r49265 = 0.5;
double r49266 = r49237 * r49265;
double r49267 = r49264 - r49266;
double r49268 = r49237 * r49267;
double r49269 = r49243 ? r49259 : r49268;
return r49269;
}



Bits error versus x



Bits error versus eps
if eps < -1.3208939428373893e-09 or 9.805431973736002e-10 < eps Initial program 30.1
rmApplied cos-sum1.5
rmApplied prod-diff1.5
Applied associate--l+1.5
Simplified1.5
rmApplied *-un-lft-identity1.5
Applied prod-diff1.5
Applied associate-+r+1.5
Simplified1.5
if -1.3208939428373893e-09 < eps < 9.805431973736002e-10Initial program 48.8
Taylor expanded around 0 31.1
Simplified31.1
Final simplification15.8
herbie shell --seed 2019362 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))