\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.4619102741755152 \cdot 10^{-4} \lor \neg \left(\varepsilon \le 2.5335197603511498 \cdot 10^{-20}\right):\\
\;\;\;\;\mathsf{fma}\left(\cos \varepsilon, \cos x, -\left(\sin x \cdot \sin \varepsilon + \cos x\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\
\end{array}double code(double x, double eps) {
return (cos((x + eps)) - cos(x));
}
double code(double x, double eps) {
double VAR;
if (((eps <= -0.00014619102741755152) || !(eps <= 2.5335197603511498e-20))) {
VAR = fma(cos(eps), cos(x), -((sin(x) * sin(eps)) + cos(x)));
} else {
VAR = fma(0.041666666666666664, pow(eps, 4.0), -fma(x, eps, (0.5 * pow(eps, 2.0))));
}
return VAR;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.00014619102741755152 or 2.5335197603511498e-20 < eps Initial program 31.1
rmApplied cos-sum2.0
Taylor expanded around inf 2.0
Simplified2.0
rmApplied fma-udef2.0
if -0.00014619102741755152 < eps < 2.5335197603511498e-20Initial program 48.6
rmApplied cos-sum48.2
Taylor expanded around inf 48.2
Simplified48.2
rmApplied fma-udef48.2
Taylor expanded around 0 30.9
Simplified30.9
Final simplification16.0
herbie shell --seed 2020100 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))