\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -0.00381593506258463963:\\
\;\;\;\;\frac{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}{\mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right)} - \cos x\\
\mathbf{elif}\;\varepsilon \le 3.237071340470319 \cdot 10^{-6}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}}\right) - \cos x\\
\end{array}double code(double x, double eps) {
return ((double) (((double) cos(((double) (x + eps)))) - ((double) cos(x))));
}
double code(double x, double eps) {
double VAR;
if ((eps <= -0.0038159350625846396)) {
VAR = ((double) (((double) (((double) (((double) fma(((double) cos(x)), ((double) cos(eps)), ((double) (((double) sin(x)) * ((double) sin(eps)))))) * ((double) (((double) (((double) cos(x)) * ((double) cos(eps)))) - ((double) (((double) sin(x)) * ((double) sin(eps)))))))) / ((double) fma(((double) cos(x)), ((double) cos(eps)), ((double) (((double) sin(x)) * ((double) sin(eps)))))))) - ((double) cos(x))));
} else {
double VAR_1;
if ((eps <= 3.237071340470319e-06)) {
VAR_1 = ((double) fma(0.041666666666666664, ((double) pow(eps, 4.0)), ((double) -(((double) fma(x, eps, ((double) (0.5 * ((double) pow(eps, 2.0))))))))));
} else {
VAR_1 = ((double) (((double) (((double) (((double) cos(x)) * ((double) cos(eps)))) - ((double) cbrt(((double) pow(((double) (((double) sin(x)) * ((double) sin(eps)))), 3.0)))))) - ((double) cos(x))));
}
VAR = VAR_1;
}
return VAR;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.0038159350625846396Initial program 30.1
rmApplied cos-sum0.9
rmApplied flip--1.0
Simplified1.0
Simplified0.9
if -0.0038159350625846396 < eps < 3.237071340470319e-06Initial program 48.7
rmApplied +-commutative48.7
Applied cos-sum48.1
Applied associate--l-48.1
Simplified48.1
Taylor expanded around 0 30.3
Simplified30.3
if 3.237071340470319e-06 < eps Initial program 30.7
rmApplied cos-sum1.0
rmApplied add-cbrt-cube1.0
Applied add-cbrt-cube1.1
Applied cbrt-unprod1.0
Simplified1.0
Final simplification15.6
herbie shell --seed 2020113 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))