\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1170.229056579154985229251906275749206543 \lor \neg \left(\varepsilon \le 7051.556907543755187361966818571090698242\right):\\
\;\;\;\;\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{else}:\\
\;\;\;\;\left(\sin \left(\frac{\varepsilon}{2}\right) \cdot -2\right) \cdot \sin \left(\frac{2 \cdot x + \varepsilon}{2}\right)\\
\end{array}double f(double x, double eps) {
double r22969 = x;
double r22970 = eps;
double r22971 = r22969 + r22970;
double r22972 = cos(r22971);
double r22973 = cos(r22969);
double r22974 = r22972 - r22973;
return r22974;
}
double f(double x, double eps) {
double r22975 = eps;
double r22976 = -1170.229056579155;
bool r22977 = r22975 <= r22976;
double r22978 = 7051.556907543755;
bool r22979 = r22975 <= r22978;
double r22980 = !r22979;
bool r22981 = r22977 || r22980;
double r22982 = cos(r22975);
double r22983 = x;
double r22984 = cos(r22983);
double r22985 = r22982 * r22984;
double r22986 = sin(r22983);
double r22987 = sin(r22975);
double r22988 = r22986 * r22987;
double r22989 = r22985 - r22988;
double r22990 = r22989 - r22984;
double r22991 = 2.0;
double r22992 = r22975 / r22991;
double r22993 = sin(r22992);
double r22994 = -2.0;
double r22995 = r22993 * r22994;
double r22996 = r22991 * r22983;
double r22997 = r22996 + r22975;
double r22998 = r22997 / r22991;
double r22999 = sin(r22998);
double r23000 = r22995 * r22999;
double r23001 = r22981 ? r22990 : r23000;
return r23001;
}



Bits error versus x



Bits error versus eps
Results
if eps < -1170.229056579155 or 7051.556907543755 < eps Initial program 30.2
rmApplied cos-sum0.8
Simplified0.8
if -1170.229056579155 < eps < 7051.556907543755Initial program 49.0
rmApplied diff-cos37.7
Simplified1.1
rmApplied *-un-lft-identity1.1
Applied associate-*l*1.1
Simplified1.1
Final simplification0.9
herbie shell --seed 2019196
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))