\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2.1193854390859995 \cdot 10^{-28}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \frac{{\left(\sin x \cdot \sin \varepsilon\right)}^{3} + {\left(\cos x\right)}^{3}}{\cos x \cdot \left(\cos x - \sin x \cdot \sin \varepsilon\right) + \left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon\right)}\\
\mathbf{elif}\;\varepsilon \le 4.5634137760449539 \cdot 10^{-6}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(e^{\cos x \cdot \cos \varepsilon}\right) - \left(\sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}} + \cos x\right)\\
\end{array}double f(double x, double eps) {
double r39962 = x;
double r39963 = eps;
double r39964 = r39962 + r39963;
double r39965 = cos(r39964);
double r39966 = cos(r39962);
double r39967 = r39965 - r39966;
return r39967;
}
double f(double x, double eps) {
double r39968 = eps;
double r39969 = -2.1193854390859995e-28;
bool r39970 = r39968 <= r39969;
double r39971 = x;
double r39972 = cos(r39971);
double r39973 = cos(r39968);
double r39974 = r39972 * r39973;
double r39975 = sin(r39971);
double r39976 = sin(r39968);
double r39977 = r39975 * r39976;
double r39978 = 3.0;
double r39979 = pow(r39977, r39978);
double r39980 = pow(r39972, r39978);
double r39981 = r39979 + r39980;
double r39982 = r39972 - r39977;
double r39983 = r39972 * r39982;
double r39984 = r39977 * r39977;
double r39985 = r39983 + r39984;
double r39986 = r39981 / r39985;
double r39987 = r39974 - r39986;
double r39988 = 4.563413776044954e-06;
bool r39989 = r39968 <= r39988;
double r39990 = 0.16666666666666666;
double r39991 = pow(r39971, r39978);
double r39992 = r39990 * r39991;
double r39993 = r39992 - r39971;
double r39994 = 0.5;
double r39995 = r39968 * r39994;
double r39996 = r39993 - r39995;
double r39997 = r39968 * r39996;
double r39998 = exp(r39974);
double r39999 = log(r39998);
double r40000 = cbrt(r39979);
double r40001 = r40000 + r39972;
double r40002 = r39999 - r40001;
double r40003 = r39989 ? r39997 : r40002;
double r40004 = r39970 ? r39987 : r40003;
return r40004;
}



Bits error versus x



Bits error versus eps
Results
if eps < -2.1193854390859995e-28Initial program 32.6
rmApplied cos-sum4.6
Applied associate--l-4.7
rmApplied flip3-+4.8
Simplified4.8
if -2.1193854390859995e-28 < eps < 4.563413776044954e-06Initial program 49.1
Taylor expanded around 0 31.0
Simplified31.0
if 4.563413776044954e-06 < eps Initial program 29.8
rmApplied cos-sum0.9
Applied associate--l-0.9
rmApplied add-log-exp1.1
rmApplied add-cbrt-cube1.2
Applied add-cbrt-cube1.2
Applied cbrt-unprod1.2
Simplified1.2
Final simplification16.2
herbie shell --seed 2020021
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))