\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -9.870955514870532 \cdot 10^{-06}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 0.0002018639648153477:\\
\;\;\;\;\mathsf{expm1}\left(\left(\mathsf{log1p}\left(\left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \mathsf{expm1}\left(\left(\mathsf{log1p}\left(\left(\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\right)\right)\right)\right)\right)\right)\right) \cdot -2\\
\mathbf{else}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\end{array}double f(double x, double eps) {
double r2413520 = x;
double r2413521 = eps;
double r2413522 = r2413520 + r2413521;
double r2413523 = cos(r2413522);
double r2413524 = cos(r2413520);
double r2413525 = r2413523 - r2413524;
return r2413525;
}
double f(double x, double eps) {
double r2413526 = eps;
double r2413527 = -9.870955514870532e-06;
bool r2413528 = r2413526 <= r2413527;
double r2413529 = x;
double r2413530 = cos(r2413529);
double r2413531 = cos(r2413526);
double r2413532 = r2413530 * r2413531;
double r2413533 = sin(r2413529);
double r2413534 = sin(r2413526);
double r2413535 = r2413533 * r2413534;
double r2413536 = r2413532 - r2413535;
double r2413537 = r2413536 - r2413530;
double r2413538 = 0.0002018639648153477;
bool r2413539 = r2413526 <= r2413538;
double r2413540 = 2.0;
double r2413541 = r2413526 / r2413540;
double r2413542 = sin(r2413541);
double r2413543 = r2413529 + r2413526;
double r2413544 = r2413543 + r2413529;
double r2413545 = r2413544 / r2413540;
double r2413546 = sin(r2413545);
double r2413547 = log1p(r2413546);
double r2413548 = expm1(r2413547);
double r2413549 = r2413542 * r2413548;
double r2413550 = log1p(r2413549);
double r2413551 = expm1(r2413550);
double r2413552 = -2.0;
double r2413553 = r2413551 * r2413552;
double r2413554 = r2413539 ? r2413553 : r2413537;
double r2413555 = r2413528 ? r2413537 : r2413554;
return r2413555;
}



Bits error versus x



Bits error versus eps
Results
if eps < -9.870955514870532e-06 or 0.0002018639648153477 < eps Initial program 30.3
rmApplied cos-sum0.9
if -9.870955514870532e-06 < eps < 0.0002018639648153477Initial program 49.5
rmApplied diff-cos38.1
Simplified0.5
rmApplied expm1-log1p-u0.5
rmApplied expm1-log1p-u0.5
Final simplification0.7
herbie shell --seed 2019121 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))