\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -9.09194571234337580020110294837711693374 \cdot 10^{-27}:\\
\;\;\;\;\left(\left(\sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}\right) \cdot \left(\sqrt[3]{\cos x} \cdot \cos \varepsilon\right) - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 3.672352851463477013948306603677469717173 \cdot 10^{-9}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\log \left(e^{\cos x \cdot \cos \varepsilon}\right) - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\end{array}double f(double x, double eps) {
double r57927 = x;
double r57928 = eps;
double r57929 = r57927 + r57928;
double r57930 = cos(r57929);
double r57931 = cos(r57927);
double r57932 = r57930 - r57931;
return r57932;
}
double f(double x, double eps) {
double r57933 = eps;
double r57934 = -9.091945712343376e-27;
bool r57935 = r57933 <= r57934;
double r57936 = x;
double r57937 = cos(r57936);
double r57938 = cbrt(r57937);
double r57939 = r57938 * r57938;
double r57940 = cos(r57933);
double r57941 = r57938 * r57940;
double r57942 = r57939 * r57941;
double r57943 = sin(r57936);
double r57944 = sin(r57933);
double r57945 = r57943 * r57944;
double r57946 = r57942 - r57945;
double r57947 = r57946 - r57937;
double r57948 = 3.672352851463477e-09;
bool r57949 = r57933 <= r57948;
double r57950 = 0.16666666666666666;
double r57951 = 3.0;
double r57952 = pow(r57936, r57951);
double r57953 = r57950 * r57952;
double r57954 = r57953 - r57936;
double r57955 = 0.5;
double r57956 = r57933 * r57955;
double r57957 = r57954 - r57956;
double r57958 = r57933 * r57957;
double r57959 = r57937 * r57940;
double r57960 = exp(r57959);
double r57961 = log(r57960);
double r57962 = r57961 - r57945;
double r57963 = r57962 - r57937;
double r57964 = r57949 ? r57958 : r57963;
double r57965 = r57935 ? r57947 : r57964;
return r57965;
}



Bits error versus x



Bits error versus eps
Results
if eps < -9.091945712343376e-27Initial program 32.2
rmApplied cos-sum4.0
rmApplied add-cube-cbrt4.3
Applied associate-*l*4.3
if -9.091945712343376e-27 < eps < 3.672352851463477e-09Initial program 49.5
Taylor expanded around 0 31.5
Simplified31.5
if 3.672352851463477e-09 < eps Initial program 30.4
rmApplied cos-sum1.2
rmApplied add-log-exp1.5
Final simplification16.4
herbie shell --seed 2020001
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))