\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.153154815626698153605163400370998364602 \cdot 10^{-10}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - \cos x \cdot {\left(\cos x\right)}^{2}}{\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}\\
\mathbf{elif}\;\varepsilon \le 1.181652781700031199345617312357337169715 \cdot 10^{-6}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \left(\log \left(\sqrt{e^{\sin x \cdot \sin \varepsilon}}\right) + \log \left(\sqrt{e^{\sin x \cdot \sin \varepsilon}}\right)\right)\right) - \cos x\\
\end{array}double f(double x, double eps) {
double r31072 = x;
double r31073 = eps;
double r31074 = r31072 + r31073;
double r31075 = cos(r31074);
double r31076 = cos(r31072);
double r31077 = r31075 - r31076;
return r31077;
}
double f(double x, double eps) {
double r31078 = eps;
double r31079 = -1.1531548156266982e-10;
bool r31080 = r31078 <= r31079;
double r31081 = x;
double r31082 = cos(r31081);
double r31083 = cos(r31078);
double r31084 = r31082 * r31083;
double r31085 = sin(r31081);
double r31086 = sin(r31078);
double r31087 = r31085 * r31086;
double r31088 = r31084 - r31087;
double r31089 = 3.0;
double r31090 = pow(r31088, r31089);
double r31091 = 2.0;
double r31092 = pow(r31082, r31091);
double r31093 = r31082 * r31092;
double r31094 = r31090 - r31093;
double r31095 = r31083 * r31082;
double r31096 = r31095 - r31087;
double r31097 = r31088 + r31082;
double r31098 = r31096 * r31097;
double r31099 = r31082 * r31082;
double r31100 = r31098 + r31099;
double r31101 = r31094 / r31100;
double r31102 = 1.1816527817000312e-06;
bool r31103 = r31078 <= r31102;
double r31104 = 0.16666666666666666;
double r31105 = pow(r31081, r31089);
double r31106 = r31104 * r31105;
double r31107 = r31106 - r31081;
double r31108 = 0.5;
double r31109 = r31078 * r31108;
double r31110 = r31107 - r31109;
double r31111 = r31078 * r31110;
double r31112 = exp(r31087);
double r31113 = sqrt(r31112);
double r31114 = log(r31113);
double r31115 = r31114 + r31114;
double r31116 = r31084 - r31115;
double r31117 = r31116 - r31082;
double r31118 = r31103 ? r31111 : r31117;
double r31119 = r31080 ? r31101 : r31118;
return r31119;
}



Bits error versus x



Bits error versus eps
Results
if eps < -1.1531548156266982e-10Initial program 30.5
rmApplied cos-sum1.5
rmApplied flip3--1.7
Simplified1.7
rmApplied cube-mult1.7
Simplified1.7
if -1.1531548156266982e-10 < eps < 1.1816527817000312e-06Initial program 49.7
Taylor expanded around 0 32.7
Simplified32.7
if 1.1816527817000312e-06 < eps Initial program 30.6
rmApplied cos-sum1.0
rmApplied add-log-exp1.1
rmApplied add-sqr-sqrt1.3
Applied log-prod1.2
Final simplification16.8
herbie shell --seed 2019353
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))