\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.153154815626698153605163400370998364602 \cdot 10^{-10} \lor \neg \left(\varepsilon \le 1.280988864612255259754335784405654408147 \cdot 10^{-6}\right):\\
\;\;\;\;\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\cos x \cdot \cos \varepsilon\right)\right) - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{1}{24}, {\varepsilon}^{4}, -\mathsf{fma}\left(x, \varepsilon, \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right)}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x}\\
\end{array}double f(double x, double eps) {
double r62821 = x;
double r62822 = eps;
double r62823 = r62821 + r62822;
double r62824 = cos(r62823);
double r62825 = cos(r62821);
double r62826 = r62824 - r62825;
return r62826;
}
double f(double x, double eps) {
double r62827 = eps;
double r62828 = -1.1531548156266982e-10;
bool r62829 = r62827 <= r62828;
double r62830 = 1.2809888646122553e-06;
bool r62831 = r62827 <= r62830;
double r62832 = !r62831;
bool r62833 = r62829 || r62832;
double r62834 = x;
double r62835 = cos(r62834);
double r62836 = cos(r62827);
double r62837 = r62835 * r62836;
double r62838 = expm1(r62837);
double r62839 = log1p(r62838);
double r62840 = sin(r62834);
double r62841 = sin(r62827);
double r62842 = r62840 * r62841;
double r62843 = r62839 - r62842;
double r62844 = r62843 - r62835;
double r62845 = 0.041666666666666664;
double r62846 = 4.0;
double r62847 = pow(r62827, r62846);
double r62848 = 0.5;
double r62849 = 2.0;
double r62850 = pow(r62827, r62849);
double r62851 = r62848 * r62850;
double r62852 = fma(r62834, r62827, r62851);
double r62853 = -r62852;
double r62854 = fma(r62845, r62847, r62853);
double r62855 = r62837 - r62842;
double r62856 = r62855 + r62835;
double r62857 = r62854 * r62856;
double r62858 = r62857 / r62856;
double r62859 = r62833 ? r62844 : r62858;
return r62859;
}



Bits error versus x



Bits error versus eps
if eps < -1.1531548156266982e-10 or 1.2809888646122553e-06 < eps Initial program 30.5
rmApplied cos-sum1.2
rmApplied log1p-expm1-u1.3
if -1.1531548156266982e-10 < eps < 1.2809888646122553e-06Initial program 49.7
rmApplied cos-sum49.3
rmApplied flip--49.3
Simplified49.3
Taylor expanded around 0 32.0
Simplified32.0
Final simplification16.4
herbie shell --seed 2019353 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))