\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2.49577892975883131 \cdot 10^{-15}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\
\mathbf{elif}\;\varepsilon \le 3.29102456452854126 \cdot 10^{-8}:\\
\;\;\;\;\frac{1}{6} \cdot \left({x}^{3} \cdot \varepsilon\right) - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \log \left(e^{\sin x \cdot \sin \varepsilon + \cos x}\right)\\
\end{array}double f(double x, double eps) {
double r34262 = x;
double r34263 = eps;
double r34264 = r34262 + r34263;
double r34265 = cos(r34264);
double r34266 = cos(r34262);
double r34267 = r34265 - r34266;
return r34267;
}
double f(double x, double eps) {
double r34268 = eps;
double r34269 = -2.4957789297588313e-15;
bool r34270 = r34268 <= r34269;
double r34271 = x;
double r34272 = cos(r34271);
double r34273 = cos(r34268);
double r34274 = r34272 * r34273;
double r34275 = sin(r34271);
double r34276 = sin(r34268);
double r34277 = r34275 * r34276;
double r34278 = r34274 - r34277;
double r34279 = 3.0;
double r34280 = pow(r34278, r34279);
double r34281 = pow(r34272, r34279);
double r34282 = r34280 - r34281;
double r34283 = r34273 * r34272;
double r34284 = r34283 - r34277;
double r34285 = r34278 + r34272;
double r34286 = r34284 * r34285;
double r34287 = r34272 * r34272;
double r34288 = r34286 + r34287;
double r34289 = r34282 / r34288;
double r34290 = 3.291024564528541e-08;
bool r34291 = r34268 <= r34290;
double r34292 = 0.16666666666666666;
double r34293 = pow(r34271, r34279);
double r34294 = r34293 * r34268;
double r34295 = r34292 * r34294;
double r34296 = r34271 * r34268;
double r34297 = 0.5;
double r34298 = 2.0;
double r34299 = pow(r34268, r34298);
double r34300 = r34297 * r34299;
double r34301 = r34296 + r34300;
double r34302 = r34295 - r34301;
double r34303 = r34277 + r34272;
double r34304 = exp(r34303);
double r34305 = log(r34304);
double r34306 = r34274 - r34305;
double r34307 = r34291 ? r34302 : r34306;
double r34308 = r34270 ? r34289 : r34307;
return r34308;
}



Bits error versus x



Bits error versus eps
Results
if eps < -2.4957789297588313e-15Initial program 31.5
rmApplied cos-sum2.1
rmApplied flip3--2.3
Simplified2.3
if -2.4957789297588313e-15 < eps < 3.291024564528541e-08Initial program 48.8
rmApplied cos-sum48.6
rmApplied flip--48.7
Taylor expanded around 0 31.3
if 3.291024564528541e-08 < eps Initial program 30.1
rmApplied cos-sum1.1
Applied associate--l-1.1
rmApplied add-log-exp1.1
Applied add-log-exp1.2
Applied sum-log1.2
Simplified1.1
Final simplification16.0
herbie shell --seed 2020083
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))