\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -7.850247975532501380682010028166928350402 \cdot 10^{-5}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x \cdot \cos \varepsilon\right) + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)} - \cos x\\
\mathbf{elif}\;\varepsilon \le 6.093000978565237042935986457037333963171 \cdot 10^{-8}:\\
\;\;\;\;1 \cdot \left(\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\cos \varepsilon \cdot \cos x - \log \left(e^{\sin x \cdot \sin \varepsilon + \cos x}\right)\right)\\
\end{array}double f(double x, double eps) {
double r50739 = x;
double r50740 = eps;
double r50741 = r50739 + r50740;
double r50742 = cos(r50741);
double r50743 = cos(r50739);
double r50744 = r50742 - r50743;
return r50744;
}
double f(double x, double eps) {
double r50745 = eps;
double r50746 = -7.850247975532501e-05;
bool r50747 = r50745 <= r50746;
double r50748 = x;
double r50749 = cos(r50748);
double r50750 = cos(r50745);
double r50751 = r50749 * r50750;
double r50752 = 3.0;
double r50753 = pow(r50751, r50752);
double r50754 = sin(r50748);
double r50755 = sin(r50745);
double r50756 = r50754 * r50755;
double r50757 = pow(r50756, r50752);
double r50758 = r50753 - r50757;
double r50759 = r50756 + r50751;
double r50760 = r50756 * r50759;
double r50761 = r50751 * r50751;
double r50762 = r50760 + r50761;
double r50763 = r50758 / r50762;
double r50764 = r50763 - r50749;
double r50765 = 6.093000978565237e-08;
bool r50766 = r50745 <= r50765;
double r50767 = 1.0;
double r50768 = 0.041666666666666664;
double r50769 = 4.0;
double r50770 = pow(r50745, r50769);
double r50771 = r50768 * r50770;
double r50772 = r50748 * r50745;
double r50773 = 0.5;
double r50774 = 2.0;
double r50775 = pow(r50745, r50774);
double r50776 = r50773 * r50775;
double r50777 = r50772 + r50776;
double r50778 = r50771 - r50777;
double r50779 = r50767 * r50778;
double r50780 = r50750 * r50749;
double r50781 = r50756 + r50749;
double r50782 = exp(r50781);
double r50783 = log(r50782);
double r50784 = r50780 - r50783;
double r50785 = r50767 * r50784;
double r50786 = r50766 ? r50779 : r50785;
double r50787 = r50747 ? r50764 : r50786;
return r50787;
}



Bits error versus x



Bits error versus eps
Results
if eps < -7.850247975532501e-05Initial program 30.3
rmApplied cos-sum1.0
rmApplied flip3--1.2
Simplified1.2
if -7.850247975532501e-05 < eps < 6.093000978565237e-08Initial program 49.1
rmApplied cos-sum48.5
rmApplied *-un-lft-identity48.5
Applied *-un-lft-identity48.5
Applied distribute-lft-out--48.5
Simplified48.5
Taylor expanded around 0 30.8
if 6.093000978565237e-08 < eps Initial program 31.3
rmApplied cos-sum1.1
rmApplied *-un-lft-identity1.1
Applied *-un-lft-identity1.1
Applied distribute-lft-out--1.1
Simplified1.1
rmApplied add-log-exp1.2
Applied add-log-exp1.3
Applied sum-log1.3
Simplified1.2
Final simplification15.8
herbie shell --seed 2019297
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))