\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2.41467470001176498 \cdot 10^{-4} \lor \neg \left(\varepsilon \le 1.2384991687240798 \cdot 10^{-5}\right):\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{else}:\\
\;\;\;\;\left(-2 \cdot \sin \left(\varepsilon \cdot \frac{1}{2}\right)\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\\
\end{array}double f(double x, double eps) {
double r50552 = x;
double r50553 = eps;
double r50554 = r50552 + r50553;
double r50555 = cos(r50554);
double r50556 = cos(r50552);
double r50557 = r50555 - r50556;
return r50557;
}
double f(double x, double eps) {
double r50558 = eps;
double r50559 = -0.0002414674700011765;
bool r50560 = r50558 <= r50559;
double r50561 = 1.2384991687240798e-05;
bool r50562 = r50558 <= r50561;
double r50563 = !r50562;
bool r50564 = r50560 || r50563;
double r50565 = x;
double r50566 = cos(r50565);
double r50567 = cos(r50558);
double r50568 = r50566 * r50567;
double r50569 = sin(r50565);
double r50570 = sin(r50558);
double r50571 = r50569 * r50570;
double r50572 = r50568 - r50571;
double r50573 = r50572 - r50566;
double r50574 = -2.0;
double r50575 = 0.5;
double r50576 = r50558 * r50575;
double r50577 = sin(r50576);
double r50578 = r50574 * r50577;
double r50579 = r50565 + r50558;
double r50580 = r50579 + r50565;
double r50581 = 2.0;
double r50582 = r50580 / r50581;
double r50583 = sin(r50582);
double r50584 = r50578 * r50583;
double r50585 = r50564 ? r50573 : r50584;
return r50585;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.0002414674700011765 or 1.2384991687240798e-05 < eps Initial program 30.5
rmApplied cos-sum0.9
if -0.0002414674700011765 < eps < 1.2384991687240798e-05Initial program 48.9
rmApplied diff-cos37.9
Simplified0.5
rmApplied associate-*r*0.5
Final simplification0.7
herbie shell --seed 2020047
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))