\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -8.5411563429199795 \cdot 10^{-10}:\\
\;\;\;\;\log \left(e^{\frac{\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right) - \left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon\right)}{\cos x \cdot \cos \varepsilon + \sin x \cdot \sin \varepsilon} - \cos x}\right)\\
\mathbf{elif}\;\varepsilon \le 1.1618945885559161 \cdot 10^{-7}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x \cdot \cos x}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x}\\
\end{array}double f(double x, double eps) {
double r61654 = x;
double r61655 = eps;
double r61656 = r61654 + r61655;
double r61657 = cos(r61656);
double r61658 = cos(r61654);
double r61659 = r61657 - r61658;
return r61659;
}
double f(double x, double eps) {
double r61660 = eps;
double r61661 = -8.54115634291998e-10;
bool r61662 = r61660 <= r61661;
double r61663 = x;
double r61664 = cos(r61663);
double r61665 = cos(r61660);
double r61666 = r61664 * r61665;
double r61667 = r61666 * r61666;
double r61668 = sin(r61663);
double r61669 = sin(r61660);
double r61670 = r61668 * r61669;
double r61671 = r61670 * r61670;
double r61672 = r61667 - r61671;
double r61673 = r61666 + r61670;
double r61674 = r61672 / r61673;
double r61675 = r61674 - r61664;
double r61676 = exp(r61675);
double r61677 = log(r61676);
double r61678 = 1.1618945885559161e-07;
bool r61679 = r61660 <= r61678;
double r61680 = 0.16666666666666666;
double r61681 = 3.0;
double r61682 = pow(r61663, r61681);
double r61683 = r61680 * r61682;
double r61684 = r61683 - r61663;
double r61685 = 0.5;
double r61686 = r61660 * r61685;
double r61687 = r61684 - r61686;
double r61688 = r61660 * r61687;
double r61689 = r61666 - r61670;
double r61690 = r61689 * r61689;
double r61691 = r61664 * r61664;
double r61692 = r61690 - r61691;
double r61693 = r61689 + r61664;
double r61694 = r61692 / r61693;
double r61695 = r61679 ? r61688 : r61694;
double r61696 = r61662 ? r61677 : r61695;
return r61696;
}



Bits error versus x



Bits error versus eps
Results
if eps < -8.54115634291998e-10Initial program 29.8
rmApplied cos-sum1.4
rmApplied add-log-exp1.5
Applied add-log-exp1.6
Applied add-log-exp1.7
Applied diff-log1.8
Applied diff-log1.8
Simplified1.5
rmApplied flip--1.6
if -8.54115634291998e-10 < eps < 1.1618945885559161e-07Initial program 49.1
Taylor expanded around 0 31.4
Simplified31.4
if 1.1618945885559161e-07 < eps Initial program 31.2
rmApplied cos-sum1.1
rmApplied flip--1.6
Final simplification16.0
herbie shell --seed 2020057
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))