\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -9.798283548084824 \cdot 10^{-06}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 0.00011275979133792468:\\
\;\;\;\;\mathsf{expm1}\left(\mathsf{log1p}\left(\sin \left(\frac{\mathsf{fma}\left(2, x, \varepsilon\right)}{2}\right)\right)\right) \cdot \left(-2 \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 r1334831 = x;
double r1334832 = eps;
double r1334833 = r1334831 + r1334832;
double r1334834 = cos(r1334833);
double r1334835 = cos(r1334831);
double r1334836 = r1334834 - r1334835;
return r1334836;
}
double f(double x, double eps) {
double r1334837 = eps;
double r1334838 = -9.798283548084824e-06;
bool r1334839 = r1334837 <= r1334838;
double r1334840 = x;
double r1334841 = cos(r1334840);
double r1334842 = cos(r1334837);
double r1334843 = r1334841 * r1334842;
double r1334844 = sin(r1334840);
double r1334845 = sin(r1334837);
double r1334846 = r1334844 * r1334845;
double r1334847 = r1334843 - r1334846;
double r1334848 = r1334847 - r1334841;
double r1334849 = 0.00011275979133792468;
bool r1334850 = r1334837 <= r1334849;
double r1334851 = 2.0;
double r1334852 = fma(r1334851, r1334840, r1334837);
double r1334853 = r1334852 / r1334851;
double r1334854 = sin(r1334853);
double r1334855 = log1p(r1334854);
double r1334856 = expm1(r1334855);
double r1334857 = -2.0;
double r1334858 = r1334837 / r1334851;
double r1334859 = sin(r1334858);
double r1334860 = r1334857 * r1334859;
double r1334861 = r1334856 * r1334860;
double r1334862 = r1334850 ? r1334861 : r1334848;
double r1334863 = r1334839 ? r1334848 : r1334862;
return r1334863;
}



Bits error versus x



Bits error versus eps
if eps < -9.798283548084824e-06 or 0.00011275979133792468 < eps Initial program 30.7
rmApplied cos-sum1.0
if -9.798283548084824e-06 < eps < 0.00011275979133792468Initial program 49.9
rmApplied diff-cos37.9
Simplified0.4
rmApplied associate-*r*0.4
rmApplied expm1-log1p-u0.5
Final simplification0.7
herbie shell --seed 2019152 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))