\cos \left(x + \varepsilon\right) - \cos x
-2 \cdot \left(\sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \mathsf{fma}\left(\sin \left(\frac{1}{2} \cdot \varepsilon\right), \cos x, \cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x\right)\right)double f(double x, double eps) {
double r39933 = x;
double r39934 = eps;
double r39935 = r39933 + r39934;
double r39936 = cos(r39935);
double r39937 = cos(r39933);
double r39938 = r39936 - r39937;
return r39938;
}
double f(double x, double eps) {
double r39939 = -2.0;
double r39940 = 0.5;
double r39941 = eps;
double r39942 = r39940 * r39941;
double r39943 = sin(r39942);
double r39944 = x;
double r39945 = cos(r39944);
double r39946 = cos(r39942);
double r39947 = sin(r39944);
double r39948 = r39946 * r39947;
double r39949 = fma(r39943, r39945, r39948);
double r39950 = r39943 * r39949;
double r39951 = r39939 * r39950;
return r39951;
}



Bits error versus x



Bits error versus eps
Initial program 39.6
rmApplied diff-cos34.0
Simplified15.1
rmApplied expm1-log1p-u15.1
Simplified15.1
rmApplied fma-udef15.1
Applied sin-sum0.4
Taylor expanded around inf 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019304 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))