\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.821618172153552 \cdot 10^{-16}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\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 4.6754847779555244 \cdot 10^{-8}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon + \log \left(e^{\left(-\sin x \cdot \sin \varepsilon\right) - \cos x}\right)\\
\end{array}double f(double x, double eps) {
double r85713 = x;
double r85714 = eps;
double r85715 = r85713 + r85714;
double r85716 = cos(r85715);
double r85717 = cos(r85713);
double r85718 = r85716 - r85717;
return r85718;
}
double f(double x, double eps) {
double r85719 = eps;
double r85720 = -1.8216181721535518e-16;
bool r85721 = r85719 <= r85720;
double r85722 = x;
double r85723 = cos(r85722);
double r85724 = cos(r85719);
double r85725 = r85723 * r85724;
double r85726 = sin(r85722);
double r85727 = sin(r85719);
double r85728 = r85726 * r85727;
double r85729 = r85725 - r85728;
double r85730 = 3.0;
double r85731 = pow(r85729, r85730);
double r85732 = pow(r85723, r85730);
double r85733 = r85731 - r85732;
double r85734 = r85724 * r85723;
double r85735 = r85734 - r85728;
double r85736 = r85729 + r85723;
double r85737 = r85735 * r85736;
double r85738 = r85723 * r85723;
double r85739 = r85737 + r85738;
double r85740 = r85733 / r85739;
double r85741 = 4.6754847779555244e-08;
bool r85742 = r85719 <= r85741;
double r85743 = 0.16666666666666666;
double r85744 = pow(r85722, r85730);
double r85745 = r85743 * r85744;
double r85746 = r85745 - r85722;
double r85747 = 0.5;
double r85748 = r85719 * r85747;
double r85749 = r85746 - r85748;
double r85750 = r85719 * r85749;
double r85751 = -r85728;
double r85752 = r85751 - r85723;
double r85753 = exp(r85752);
double r85754 = log(r85753);
double r85755 = r85725 + r85754;
double r85756 = r85742 ? r85750 : r85755;
double r85757 = r85721 ? r85740 : r85756;
return r85757;
}



Bits error versus x



Bits error versus eps
Results
if eps < -1.8216181721535518e-16Initial program 31.9
rmApplied cos-sum2.6
rmApplied flip3--2.7
Simplified2.7
if -1.8216181721535518e-16 < eps < 4.6754847779555244e-08Initial program 49.7
Taylor expanded around 0 32.9
Simplified32.9
if 4.6754847779555244e-08 < eps Initial program 30.5
rmApplied cos-sum1.1
rmApplied sub-neg1.1
Applied associate--l+1.1
rmApplied add-log-exp1.2
Applied add-log-exp1.3
Applied neg-log1.3
Applied diff-log1.3
Simplified1.2
Final simplification16.7
herbie shell --seed 2020025
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))