\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.72564008479518688056280045078905160949 \cdot 10^{-6} \lor \neg \left(\varepsilon \le 1.87590820399492939339237629011759855846 \cdot 10^{-9}\right):\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}}\right) - \cos x\\
\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 r56380 = x;
double r56381 = eps;
double r56382 = r56380 + r56381;
double r56383 = cos(r56382);
double r56384 = cos(r56380);
double r56385 = r56383 - r56384;
return r56385;
}
double f(double x, double eps) {
double r56386 = eps;
double r56387 = -1.7256400847951869e-06;
bool r56388 = r56386 <= r56387;
double r56389 = 1.8759082039949294e-09;
bool r56390 = r56386 <= r56389;
double r56391 = !r56390;
bool r56392 = r56388 || r56391;
double r56393 = x;
double r56394 = cos(r56393);
double r56395 = cos(r56386);
double r56396 = r56394 * r56395;
double r56397 = sin(r56393);
double r56398 = sin(r56386);
double r56399 = r56397 * r56398;
double r56400 = 3.0;
double r56401 = pow(r56399, r56400);
double r56402 = cbrt(r56401);
double r56403 = r56396 - r56402;
double r56404 = r56403 - r56394;
double r56405 = 0.16666666666666666;
double r56406 = pow(r56393, r56400);
double r56407 = r56405 * r56406;
double r56408 = r56407 - r56393;
double r56409 = 0.5;
double r56410 = r56386 * r56409;
double r56411 = r56408 - r56410;
double r56412 = r56386 * r56411;
double r56413 = r56392 ? r56404 : r56412;
return r56413;
}



Bits error versus x



Bits error versus eps
Results
if eps < -1.7256400847951869e-06 or 1.8759082039949294e-09 < eps Initial program 31.0
rmApplied cos-sum1.2
rmApplied add-cbrt-cube1.3
Applied add-cbrt-cube1.3
Applied cbrt-unprod1.3
Simplified1.3
if -1.7256400847951869e-06 < eps < 1.8759082039949294e-09Initial program 50.0
Taylor expanded around 0 32.2
Simplified32.2
Final simplification16.4
herbie shell --seed 2019294
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))