\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -8.6681134187816791 \cdot 10^{-13}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{\left(\left(\sin x \cdot \sin x\right) \cdot \sin x\right) \cdot \left(\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon\right)}\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 3.4911106815067981 \cdot 10^{-10}:\\
\;\;\;\;1 \cdot \left(\varepsilon \cdot \left({\varepsilon}^{3} \cdot \frac{1}{24} - \mathsf{fma}\left(\frac{1}{2}, \varepsilon, x\right)\right)\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 r42905 = x;
double r42906 = eps;
double r42907 = r42905 + r42906;
double r42908 = cos(r42907);
double r42909 = cos(r42905);
double r42910 = r42908 - r42909;
return r42910;
}
double f(double x, double eps) {
double r42911 = eps;
double r42912 = -8.668113418781679e-13;
bool r42913 = r42911 <= r42912;
double r42914 = x;
double r42915 = cos(r42914);
double r42916 = cos(r42911);
double r42917 = r42915 * r42916;
double r42918 = sin(r42914);
double r42919 = r42918 * r42918;
double r42920 = r42919 * r42918;
double r42921 = sin(r42911);
double r42922 = r42921 * r42921;
double r42923 = r42922 * r42921;
double r42924 = r42920 * r42923;
double r42925 = cbrt(r42924);
double r42926 = r42917 - r42925;
double r42927 = r42926 - r42915;
double r42928 = 3.491110681506798e-10;
bool r42929 = r42911 <= r42928;
double r42930 = 1.0;
double r42931 = 3.0;
double r42932 = pow(r42911, r42931);
double r42933 = 0.041666666666666664;
double r42934 = r42932 * r42933;
double r42935 = 0.5;
double r42936 = fma(r42935, r42911, r42914);
double r42937 = r42934 - r42936;
double r42938 = r42911 * r42937;
double r42939 = r42930 * r42938;
double r42940 = r42918 * r42921;
double r42941 = r42917 - r42940;
double r42942 = pow(r42941, r42931);
double r42943 = pow(r42915, r42931);
double r42944 = r42942 - r42943;
double r42945 = r42916 * r42915;
double r42946 = r42945 - r42940;
double r42947 = r42941 + r42915;
double r42948 = r42946 * r42947;
double r42949 = r42915 * r42915;
double r42950 = r42948 + r42949;
double r42951 = r42944 / r42950;
double r42952 = r42929 ? r42939 : r42951;
double r42953 = r42913 ? r42927 : r42952;
return r42953;
}



Bits error versus x



Bits error versus eps
if eps < -8.668113418781679e-13Initial program 31.0
rmApplied cos-sum1.7
rmApplied add-cbrt-cube1.8
Applied add-cbrt-cube1.8
Applied cbrt-unprod1.8
Simplified1.8
rmApplied add-cbrt-cube1.8
Applied add-cbrt-cube1.9
Applied cbrt-unprod1.8
Applied rem-cube-cbrt1.8
if -8.668113418781679e-13 < eps < 3.491110681506798e-10Initial program 48.2
rmApplied cos-sum48.0
rmApplied *-un-lft-identity48.0
Applied *-un-lft-identity48.0
Applied distribute-lft-out--48.0
Simplified48.0
Taylor expanded around 0 30.6
Simplified30.6
if 3.491110681506798e-10 < eps Initial program 30.7
rmApplied cos-sum1.3
rmApplied flip3--1.5
Simplified1.5
Final simplification15.9
herbie shell --seed 2020039 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))