\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.347365952010613 \cdot 10^{-07}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 2.2247927857601395 \cdot 10^{-06}:\\
\;\;\;\;-2 \cdot \left(\sin \left(\frac{\mathsf{fma}\left(2, x, \varepsilon\right)}{2}\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)\\
\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 r612671 = x;
double r612672 = eps;
double r612673 = r612671 + r612672;
double r612674 = cos(r612673);
double r612675 = cos(r612671);
double r612676 = r612674 - r612675;
return r612676;
}
double f(double x, double eps) {
double r612677 = eps;
double r612678 = -1.347365952010613e-07;
bool r612679 = r612677 <= r612678;
double r612680 = x;
double r612681 = cos(r612680);
double r612682 = cos(r612677);
double r612683 = r612681 * r612682;
double r612684 = sin(r612680);
double r612685 = sin(r612677);
double r612686 = r612684 * r612685;
double r612687 = r612683 - r612686;
double r612688 = r612687 - r612681;
double r612689 = 2.2247927857601395e-06;
bool r612690 = r612677 <= r612689;
double r612691 = -2.0;
double r612692 = 2.0;
double r612693 = fma(r612692, r612680, r612677);
double r612694 = r612693 / r612692;
double r612695 = sin(r612694);
double r612696 = r612677 / r612692;
double r612697 = sin(r612696);
double r612698 = r612695 * r612697;
double r612699 = r612691 * r612698;
double r612700 = r612690 ? r612699 : r612688;
double r612701 = r612679 ? r612688 : r612700;
return r612701;
}



Bits error versus x



Bits error versus eps
if eps < -1.347365952010613e-07 or 2.2247927857601395e-06 < eps Initial program 30.3
rmApplied cos-sum1.0
if -1.347365952010613e-07 < eps < 2.2247927857601395e-06Initial program 48.9
rmApplied diff-cos38.1
Simplified0.4
Final simplification0.7
herbie shell --seed 2019153 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))