\cos \left(x + \varepsilon\right) - \cos x
-2 \cdot \left(\left(\sqrt[3]{\sin \left(\frac{\varepsilon}{2}\right)} \cdot \sqrt[3]{\sin \left(\frac{\varepsilon}{2}\right)}\right) \cdot \left(\sqrt[3]{\sin \left(\frac{\varepsilon}{2}\right)} \cdot \left(\sin x \cdot \cos \left(\varepsilon \cdot 0.5\right) + \cos x \cdot \sin \left(\varepsilon \cdot 0.5\right)\right)\right)\right)(FPCore (x eps) :precision binary64 (- (cos (+ x eps)) (cos x)))
(FPCore (x eps)
:precision binary64
(*
-2.0
(*
(* (cbrt (sin (/ eps 2.0))) (cbrt (sin (/ eps 2.0))))
(*
(cbrt (sin (/ eps 2.0)))
(+ (* (sin x) (cos (* eps 0.5))) (* (cos x) (sin (* eps 0.5))))))))double code(double x, double eps) {
return cos(x + eps) - cos(x);
}
double code(double x, double eps) {
return -2.0 * ((cbrt(sin(eps / 2.0)) * cbrt(sin(eps / 2.0))) * (cbrt(sin(eps / 2.0)) * ((sin(x) * cos(eps * 0.5)) + (cos(x) * sin(eps * 0.5)))));
}



Bits error versus x



Bits error versus eps
Results
Initial program 39.6
rmApplied diff-cos_binary6434.0
Simplified14.9
rmApplied add-cube-cbrt_binary6415.6
Applied associate-*l*_binary6415.6
Simplified15.6
rmApplied sin-sum_binary641.3
Final simplification1.3
herbie shell --seed 2020232
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))