\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.821618172153552 \cdot 10^{-16} \lor \neg \left(\varepsilon \le 4.8191518634182737 \cdot 10^{-8}\right):\\
\;\;\;\;\mathsf{fma}\left(\cos \varepsilon, \cos x, -\frac{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon - \cos x\right)}{\sin x \cdot \sin \varepsilon - \cos x}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\
\end{array}double f(double x, double eps) {
double r271 = x;
double r272 = eps;
double r273 = r271 + r272;
double r274 = cos(r273);
double r275 = cos(r271);
double r276 = r274 - r275;
return r276;
}
double f(double x, double eps) {
double r277 = eps;
double r278 = -1.8216181721535518e-16;
bool r279 = r277 <= r278;
double r280 = 4.819151863418274e-08;
bool r281 = r277 <= r280;
double r282 = !r281;
bool r283 = r279 || r282;
double r284 = cos(r277);
double r285 = x;
double r286 = cos(r285);
double r287 = sin(r285);
double r288 = sin(r277);
double r289 = fma(r287, r288, r286);
double r290 = r287 * r288;
double r291 = r290 - r286;
double r292 = r289 * r291;
double r293 = r292 / r291;
double r294 = -r293;
double r295 = fma(r284, r286, r294);
double r296 = 0.041666666666666664;
double r297 = 4.0;
double r298 = pow(r277, r297);
double r299 = 0.5;
double r300 = 2.0;
double r301 = pow(r277, r300);
double r302 = r299 * r301;
double r303 = fma(r285, r277, r302);
double r304 = -r303;
double r305 = fma(r296, r298, r304);
double r306 = r283 ? r295 : r305;
return r306;
}



Bits error versus x



Bits error versus eps
if eps < -1.8216181721535518e-16 or 4.819151863418274e-08 < eps Initial program 31.2
rmApplied cos-sum1.9
Applied associate--l-1.9
Simplified1.9
Taylor expanded around inf 1.9
Simplified1.8
rmApplied fma-udef1.9
rmApplied flip-+2.0
Simplified1.9
if -1.8216181721535518e-16 < eps < 4.819151863418274e-08Initial program 49.7
rmApplied cos-sum49.6
Applied associate--l-49.6
Simplified49.6
Taylor expanded around inf 49.6
Simplified49.6
rmApplied fma-udef49.6
Taylor expanded around 0 32.2
Simplified32.2
Final simplification16.3
herbie shell --seed 2020025 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))