\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.1888021786142176 \cdot 10^{-8} \lor \neg \left(\varepsilon \le 7.56729564966743332 \cdot 10^{-6}\right):\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \frac{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x\right) + \left(-{\left(\cos x\right)}^{2} \cdot {\left(\cos \varepsilon\right)}^{2}\right)}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) - \cos x \cdot \cos \varepsilon} + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)}\\
\mathbf{else}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\end{array}double f(double x, double eps) {
double r38339 = x;
double r38340 = eps;
double r38341 = r38339 + r38340;
double r38342 = cos(r38341);
double r38343 = cos(r38339);
double r38344 = r38342 - r38343;
return r38344;
}
double f(double x, double eps) {
double r38345 = eps;
double r38346 = -1.1888021786142176e-08;
bool r38347 = r38345 <= r38346;
double r38348 = 7.567295649667433e-06;
bool r38349 = r38345 <= r38348;
double r38350 = !r38349;
bool r38351 = r38347 || r38350;
double r38352 = x;
double r38353 = cos(r38352);
double r38354 = cos(r38345);
double r38355 = r38353 * r38354;
double r38356 = 3.0;
double r38357 = pow(r38355, r38356);
double r38358 = sin(r38352);
double r38359 = sin(r38345);
double r38360 = r38358 * r38359;
double r38361 = r38360 + r38353;
double r38362 = pow(r38361, r38356);
double r38363 = r38357 - r38362;
double r38364 = r38361 * r38361;
double r38365 = 2.0;
double r38366 = pow(r38353, r38365);
double r38367 = pow(r38354, r38365);
double r38368 = r38366 * r38367;
double r38369 = -r38368;
double r38370 = r38364 + r38369;
double r38371 = r38361 - r38355;
double r38372 = r38370 / r38371;
double r38373 = r38361 * r38372;
double r38374 = r38355 * r38355;
double r38375 = r38373 + r38374;
double r38376 = r38363 / r38375;
double r38377 = 0.16666666666666666;
double r38378 = pow(r38352, r38356);
double r38379 = r38377 * r38378;
double r38380 = r38379 - r38352;
double r38381 = 0.5;
double r38382 = r38345 * r38381;
double r38383 = r38380 - r38382;
double r38384 = r38345 * r38383;
double r38385 = r38351 ? r38376 : r38384;
return r38385;
}



Bits error versus x



Bits error versus eps
Results
if eps < -1.1888021786142176e-08 or 7.567295649667433e-06 < eps Initial program 31.2
rmApplied cos-sum1.1
Applied associate--l-1.1
rmApplied flip3--1.3
Simplified1.3
rmApplied flip-+1.3
Simplified1.3
if -1.1888021786142176e-08 < eps < 7.567295649667433e-06Initial program 49.1
Taylor expanded around 0 31.5
Simplified31.5
Final simplification16.2
herbie shell --seed 2020036
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))