\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -4.3349751054848348 \cdot 10^{-10}:\\
\;\;\;\;1 \cdot \mathsf{fma}\left(\cos \varepsilon, \cos x, -\log \left(e^{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)}\right)\right)\\
\mathbf{elif}\;\varepsilon \le 4.38346934273984842 \cdot 10^{-11}:\\
\;\;\;\;1 \cdot \left(\varepsilon \cdot \left({\varepsilon}^{3} \cdot \frac{1}{24} - \mathsf{fma}\left(\frac{1}{2}, \varepsilon, x\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right) \cdot \left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right)}{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right)} - \cos x\\
\end{array}double f(double x, double eps) {
double r60979 = x;
double r60980 = eps;
double r60981 = r60979 + r60980;
double r60982 = cos(r60981);
double r60983 = cos(r60979);
double r60984 = r60982 - r60983;
return r60984;
}
double f(double x, double eps) {
double r60985 = eps;
double r60986 = -4.334975105484835e-10;
bool r60987 = r60985 <= r60986;
double r60988 = 1.0;
double r60989 = cos(r60985);
double r60990 = x;
double r60991 = cos(r60990);
double r60992 = sin(r60990);
double r60993 = sin(r60985);
double r60994 = fma(r60992, r60993, r60991);
double r60995 = exp(r60994);
double r60996 = log(r60995);
double r60997 = -r60996;
double r60998 = fma(r60989, r60991, r60997);
double r60999 = r60988 * r60998;
double r61000 = 4.3834693427398484e-11;
bool r61001 = r60985 <= r61000;
double r61002 = 3.0;
double r61003 = pow(r60985, r61002);
double r61004 = 0.041666666666666664;
double r61005 = r61003 * r61004;
double r61006 = 0.5;
double r61007 = fma(r61006, r60985, r60990);
double r61008 = r61005 - r61007;
double r61009 = r60985 * r61008;
double r61010 = r60988 * r61009;
double r61011 = r60992 * r60993;
double r61012 = fma(r60991, r60989, r61011);
double r61013 = r60989 * r60991;
double r61014 = r61013 - r61011;
double r61015 = r61012 * r61014;
double r61016 = r61015 / r61012;
double r61017 = r61016 - r60991;
double r61018 = r61001 ? r61010 : r61017;
double r61019 = r60987 ? r60999 : r61018;
return r61019;
}



Bits error versus x



Bits error versus eps
if eps < -4.334975105484835e-10Initial program 30.0
rmApplied cos-sum1.3
rmApplied *-un-lft-identity1.3
Applied *-un-lft-identity1.3
Applied distribute-lft-out--1.3
Simplified1.3
rmApplied add-log-exp1.4
if -4.334975105484835e-10 < eps < 4.3834693427398484e-11Initial program 49.5
rmApplied cos-sum49.3
rmApplied *-un-lft-identity49.3
Applied *-un-lft-identity49.3
Applied distribute-lft-out--49.3
Simplified49.3
Taylor expanded around 0 31.2
Simplified31.2
if 4.3834693427398484e-11 < eps Initial program 30.8
rmApplied cos-sum1.6
rmApplied log1p-expm1-u1.6
rmApplied flip--1.8
Simplified1.8
Simplified1.7
Final simplification16.4
herbie shell --seed 2020035 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))