\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -7.952525266384431621204720084366753382988 \cdot 10^{-50}:\\
\;\;\;\;\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\\
\mathbf{elif}\;\varepsilon \le 8.780898233035090036695397525560243152942 \cdot 10^{-11}:\\
\;\;\;\;\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)}^{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}\\
\end{array}double f(double x, double eps) {
double r32788 = x;
double r32789 = eps;
double r32790 = r32788 + r32789;
double r32791 = cos(r32790);
double r32792 = cos(r32788);
double r32793 = r32791 - r32792;
return r32793;
}
double f(double x, double eps) {
double r32794 = eps;
double r32795 = -7.952525266384432e-50;
bool r32796 = r32794 <= r32795;
double r32797 = x;
double r32798 = cos(r32797);
double r32799 = cos(r32794);
double r32800 = r32798 * r32799;
double r32801 = r32800 * r32800;
double r32802 = sin(r32797);
double r32803 = sin(r32794);
double r32804 = r32802 * r32803;
double r32805 = r32804 * r32804;
double r32806 = r32801 - r32805;
double r32807 = r32800 + r32804;
double r32808 = r32806 / r32807;
double r32809 = r32808 - r32798;
double r32810 = 8.78089823303509e-11;
bool r32811 = r32794 <= r32810;
double r32812 = 0.16666666666666666;
double r32813 = 3.0;
double r32814 = pow(r32797, r32813);
double r32815 = r32812 * r32814;
double r32816 = r32815 - r32797;
double r32817 = 0.5;
double r32818 = r32794 * r32817;
double r32819 = r32816 - r32818;
double r32820 = r32794 * r32819;
double r32821 = r32800 - r32804;
double r32822 = pow(r32821, r32813);
double r32823 = pow(r32798, r32813);
double r32824 = r32822 - r32823;
double r32825 = r32799 * r32798;
double r32826 = r32825 - r32804;
double r32827 = r32821 + r32798;
double r32828 = r32826 * r32827;
double r32829 = r32798 * r32798;
double r32830 = r32828 + r32829;
double r32831 = r32824 / r32830;
double r32832 = r32811 ? r32820 : r32831;
double r32833 = r32796 ? r32809 : r32832;
return r32833;
}



Bits error versus x



Bits error versus eps
Results
if eps < -7.952525266384432e-50Initial program 33.5
rmApplied cos-sum7.4
rmApplied flip--7.5
if -7.952525266384432e-50 < eps < 8.78089823303509e-11Initial program 48.6
Taylor expanded around 0 32.0
Simplified32.0
if 8.78089823303509e-11 < eps Initial program 30.1
rmApplied cos-sum1.5
rmApplied flip3--1.6
Simplified1.6
Final simplification17.3
herbie shell --seed 2019346
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))