\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2578326.2911242372:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 6.177621166523711 \cdot 10^{-05}:\\
\;\;\;\;\mathsf{expm1}\left(\mathsf{log1p}\left(\left(-2 \cdot \sin \left(\frac{\varepsilon}{2}\right)\right) \cdot \sin \left(\frac{\mathsf{fma}\left(2, x, \varepsilon\right)}{2}\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)\\
\end{array}double f(double x, double eps) {
double r1268960 = x;
double r1268961 = eps;
double r1268962 = r1268960 + r1268961;
double r1268963 = cos(r1268962);
double r1268964 = cos(r1268960);
double r1268965 = r1268963 - r1268964;
return r1268965;
}
double f(double x, double eps) {
double r1268966 = eps;
double r1268967 = -2578326.2911242372;
bool r1268968 = r1268966 <= r1268967;
double r1268969 = x;
double r1268970 = cos(r1268969);
double r1268971 = cos(r1268966);
double r1268972 = r1268970 * r1268971;
double r1268973 = sin(r1268969);
double r1268974 = sin(r1268966);
double r1268975 = r1268973 * r1268974;
double r1268976 = r1268972 - r1268975;
double r1268977 = r1268976 - r1268970;
double r1268978 = 6.177621166523711e-05;
bool r1268979 = r1268966 <= r1268978;
double r1268980 = -2.0;
double r1268981 = 2.0;
double r1268982 = r1268966 / r1268981;
double r1268983 = sin(r1268982);
double r1268984 = r1268980 * r1268983;
double r1268985 = fma(r1268981, r1268969, r1268966);
double r1268986 = r1268985 / r1268981;
double r1268987 = sin(r1268986);
double r1268988 = r1268984 * r1268987;
double r1268989 = log1p(r1268988);
double r1268990 = expm1(r1268989);
double r1268991 = fma(r1268974, r1268973, r1268970);
double r1268992 = r1268972 - r1268991;
double r1268993 = r1268979 ? r1268990 : r1268992;
double r1268994 = r1268968 ? r1268977 : r1268993;
return r1268994;
}



Bits error versus x



Bits error versus eps
if eps < -2578326.2911242372Initial program 31.2
rmApplied cos-sum0.8
if -2578326.2911242372 < eps < 6.177621166523711e-05Initial program 48.7
rmApplied diff-cos37.3
Simplified1.2
rmApplied associate-*r*1.2
rmApplied expm1-log1p-u1.4
if 6.177621166523711e-05 < eps Initial program 30.0
rmApplied cos-sum1.0
Applied associate--l-1.0
Simplified1.0
Final simplification1.1
herbie shell --seed 2019151 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))