\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2.14002637841950426 \cdot 10^{-7}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - \mathsf{expm1}\left(\mathsf{log1p}\left({\left(\cos x\right)}^{3}\right)\right)}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\
\mathbf{elif}\;\varepsilon \le 2.673419722608438 \cdot 10^{-8}:\\
\;\;\;\;\varepsilon \cdot \left({\varepsilon}^{3} \cdot \frac{1}{24} - \mathsf{fma}\left(\frac{1}{2}, \varepsilon, x\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\log \left(e^{\cos x \cdot \cos \varepsilon}\right) - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\end{array}double f(double x, double eps) {
double r38705 = x;
double r38706 = eps;
double r38707 = r38705 + r38706;
double r38708 = cos(r38707);
double r38709 = cos(r38705);
double r38710 = r38708 - r38709;
return r38710;
}
double f(double x, double eps) {
double r38711 = eps;
double r38712 = -2.1400263784195043e-07;
bool r38713 = r38711 <= r38712;
double r38714 = x;
double r38715 = cos(r38714);
double r38716 = cos(r38711);
double r38717 = r38715 * r38716;
double r38718 = sin(r38714);
double r38719 = sin(r38711);
double r38720 = r38718 * r38719;
double r38721 = r38717 - r38720;
double r38722 = 3.0;
double r38723 = pow(r38721, r38722);
double r38724 = pow(r38715, r38722);
double r38725 = log1p(r38724);
double r38726 = expm1(r38725);
double r38727 = r38723 - r38726;
double r38728 = r38716 * r38715;
double r38729 = r38728 - r38720;
double r38730 = r38721 + r38715;
double r38731 = r38729 * r38730;
double r38732 = r38715 * r38715;
double r38733 = r38731 + r38732;
double r38734 = r38727 / r38733;
double r38735 = 2.6734197226084376e-08;
bool r38736 = r38711 <= r38735;
double r38737 = pow(r38711, r38722);
double r38738 = 0.041666666666666664;
double r38739 = r38737 * r38738;
double r38740 = 0.5;
double r38741 = fma(r38740, r38711, r38714);
double r38742 = r38739 - r38741;
double r38743 = r38711 * r38742;
double r38744 = exp(r38717);
double r38745 = log(r38744);
double r38746 = r38745 - r38720;
double r38747 = r38746 - r38715;
double r38748 = r38736 ? r38743 : r38747;
double r38749 = r38713 ? r38734 : r38748;
return r38749;
}



Bits error versus x



Bits error versus eps
if eps < -2.1400263784195043e-07Initial program 31.0
rmApplied cos-sum1.1
rmApplied flip3--1.3
Simplified1.3
rmApplied expm1-log1p-u1.3
if -2.1400263784195043e-07 < eps < 2.6734197226084376e-08Initial program 48.7
rmApplied cos-sum48.4
rmApplied add-log-exp48.6
Applied add-log-exp48.6
Applied add-log-exp48.4
Applied diff-log48.4
Applied diff-log48.4
Simplified48.4
Taylor expanded around 0 30.2
Simplified30.2
if 2.6734197226084376e-08 < eps Initial program 29.7
rmApplied cos-sum1.2
rmApplied add-log-exp1.4
Final simplification15.1
herbie shell --seed 2020056 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))