\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -9.96860938961082837469659534187634268005 \cdot 10^{-32}:\\
\;\;\;\;\left(\sqrt[3]{{\left(\cos x \cdot \cos \varepsilon\right)}^{3}} - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 1.727671650573475359983827061988170825657 \cdot 10^{-7}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\frac{{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right)}^{3} + \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) \cdot \left(-{\left(\cos x\right)}^{2}\right)}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x} + \cos x \cdot \cos x}\\
\end{array}double f(double x, double eps) {
double r41049 = x;
double r41050 = eps;
double r41051 = r41049 + r41050;
double r41052 = cos(r41051);
double r41053 = cos(r41049);
double r41054 = r41052 - r41053;
return r41054;
}
double f(double x, double eps) {
double r41055 = eps;
double r41056 = -9.968609389610828e-32;
bool r41057 = r41055 <= r41056;
double r41058 = x;
double r41059 = cos(r41058);
double r41060 = cos(r41055);
double r41061 = r41059 * r41060;
double r41062 = 3.0;
double r41063 = pow(r41061, r41062);
double r41064 = cbrt(r41063);
double r41065 = sin(r41058);
double r41066 = sin(r41055);
double r41067 = r41065 * r41066;
double r41068 = r41064 - r41067;
double r41069 = r41068 - r41059;
double r41070 = 1.7276716505734754e-07;
bool r41071 = r41055 <= r41070;
double r41072 = 0.16666666666666666;
double r41073 = pow(r41058, r41062);
double r41074 = r41072 * r41073;
double r41075 = r41074 - r41058;
double r41076 = 0.5;
double r41077 = r41055 * r41076;
double r41078 = r41075 - r41077;
double r41079 = r41055 * r41078;
double r41080 = r41061 - r41067;
double r41081 = pow(r41080, r41062);
double r41082 = pow(r41059, r41062);
double r41083 = r41081 - r41082;
double r41084 = r41060 * r41059;
double r41085 = r41084 - r41067;
double r41086 = pow(r41085, r41062);
double r41087 = 2.0;
double r41088 = pow(r41059, r41087);
double r41089 = -r41088;
double r41090 = r41080 * r41089;
double r41091 = r41086 + r41090;
double r41092 = r41080 - r41059;
double r41093 = r41091 / r41092;
double r41094 = r41059 * r41059;
double r41095 = r41093 + r41094;
double r41096 = r41083 / r41095;
double r41097 = r41071 ? r41079 : r41096;
double r41098 = r41057 ? r41069 : r41097;
return r41098;
}



Bits error versus x



Bits error versus eps
Results
if eps < -9.968609389610828e-32Initial program 31.9
rmApplied cos-sum4.8
rmApplied add-cbrt-cube5.1
Applied add-cbrt-cube5.1
Applied cbrt-unprod5.1
Simplified5.1
if -9.968609389610828e-32 < eps < 1.7276716505734754e-07Initial program 48.8
Taylor expanded around 0 32.3
Simplified32.3
if 1.7276716505734754e-07 < eps Initial program 30.5
rmApplied cos-sum1.0
rmApplied flip3--1.2
Simplified1.2
rmApplied flip-+1.2
Applied associate-*r/1.2
Simplified1.1
Final simplification16.8
herbie shell --seed 2019308
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))