\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -6.37911807573950135 \cdot 10^{-32}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)}^{3}}\\
\mathbf{elif}\;\varepsilon \le 2.82449318235822406 \cdot 10^{-6}:\\
\;\;\;\;\mathsf{log1p}\left(\mathsf{expm1}\left(\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(e^{\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)}\right)\\
\end{array}double f(double x, double eps) {
double r59923 = x;
double r59924 = eps;
double r59925 = r59923 + r59924;
double r59926 = cos(r59925);
double r59927 = cos(r59923);
double r59928 = r59926 - r59927;
return r59928;
}
double f(double x, double eps) {
double r59929 = eps;
double r59930 = -6.379118075739501e-32;
bool r59931 = r59929 <= r59930;
double r59932 = x;
double r59933 = cos(r59932);
double r59934 = cos(r59929);
double r59935 = r59933 * r59934;
double r59936 = sin(r59932);
double r59937 = sin(r59929);
double r59938 = fma(r59936, r59937, r59933);
double r59939 = 3.0;
double r59940 = pow(r59938, r59939);
double r59941 = cbrt(r59940);
double r59942 = r59935 - r59941;
double r59943 = 2.824493182358224e-06;
bool r59944 = r59929 <= r59943;
double r59945 = 0.16666666666666666;
double r59946 = pow(r59932, r59939);
double r59947 = r59945 * r59946;
double r59948 = r59947 - r59932;
double r59949 = 0.5;
double r59950 = r59929 * r59949;
double r59951 = r59948 - r59950;
double r59952 = r59929 * r59951;
double r59953 = expm1(r59952);
double r59954 = log1p(r59953);
double r59955 = r59935 - r59938;
double r59956 = exp(r59955);
double r59957 = log(r59956);
double r59958 = r59944 ? r59954 : r59957;
double r59959 = r59931 ? r59942 : r59958;
return r59959;
}



Bits error versus x



Bits error versus eps
if eps < -6.379118075739501e-32Initial program 32.8
rmApplied cos-sum5.1
Applied associate--l-5.2
Simplified5.1
rmApplied add-cbrt-cube5.3
Simplified5.3
if -6.379118075739501e-32 < eps < 2.824493182358224e-06Initial program 49.0
rmApplied cos-sum48.8
Applied associate--l-48.8
Simplified48.8
rmApplied log1p-expm1-u48.8
Taylor expanded around 0 31.2
Simplified31.2
if 2.824493182358224e-06 < eps Initial program 29.8
rmApplied cos-sum0.9
Applied associate--l-0.9
Simplified0.9
rmApplied add-log-exp1.0
Applied add-log-exp1.2
Applied diff-log1.3
Simplified1.1
Final simplification16.3
herbie shell --seed 2020021 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))