\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.1888021786142176 \cdot 10^{-8} \lor \neg \left(\varepsilon \le 7.56729564966743332 \cdot 10^{-6}\right):\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \frac{\left(\sin x \cdot \sin \varepsilon + \cos x\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x\right) + \left(-{\left(\cos x\right)}^{2} \cdot {\left(\cos \varepsilon\right)}^{2}\right)}{\left(\sin x \cdot \sin \varepsilon + \cos x\right) - \cos x \cdot \cos \varepsilon} + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)}\\
\mathbf{else}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\end{array}double f(double x, double eps) {
double r74123 = x;
double r74124 = eps;
double r74125 = r74123 + r74124;
double r74126 = cos(r74125);
double r74127 = cos(r74123);
double r74128 = r74126 - r74127;
return r74128;
}
double f(double x, double eps) {
double r74129 = eps;
double r74130 = -1.1888021786142176e-08;
bool r74131 = r74129 <= r74130;
double r74132 = 7.567295649667433e-06;
bool r74133 = r74129 <= r74132;
double r74134 = !r74133;
bool r74135 = r74131 || r74134;
double r74136 = x;
double r74137 = cos(r74136);
double r74138 = cos(r74129);
double r74139 = r74137 * r74138;
double r74140 = 3.0;
double r74141 = pow(r74139, r74140);
double r74142 = sin(r74136);
double r74143 = sin(r74129);
double r74144 = r74142 * r74143;
double r74145 = r74144 + r74137;
double r74146 = pow(r74145, r74140);
double r74147 = r74141 - r74146;
double r74148 = r74145 * r74145;
double r74149 = 2.0;
double r74150 = pow(r74137, r74149);
double r74151 = pow(r74138, r74149);
double r74152 = r74150 * r74151;
double r74153 = -r74152;
double r74154 = r74148 + r74153;
double r74155 = r74145 - r74139;
double r74156 = r74154 / r74155;
double r74157 = r74145 * r74156;
double r74158 = r74139 * r74139;
double r74159 = r74157 + r74158;
double r74160 = r74147 / r74159;
double r74161 = 0.16666666666666666;
double r74162 = pow(r74136, r74140);
double r74163 = r74161 * r74162;
double r74164 = r74163 - r74136;
double r74165 = 0.5;
double r74166 = r74129 * r74165;
double r74167 = r74164 - r74166;
double r74168 = r74129 * r74167;
double r74169 = r74135 ? r74160 : r74168;
return r74169;
}



Bits error versus x



Bits error versus eps
Results
if eps < -1.1888021786142176e-08 or 7.567295649667433e-06 < eps Initial program 31.2
rmApplied cos-sum1.1
Applied associate--l-1.1
rmApplied flip3--1.3
Simplified1.3
rmApplied flip-+1.3
Simplified1.3
if -1.1888021786142176e-08 < eps < 7.567295649667433e-06Initial program 49.1
Taylor expanded around 0 31.5
Simplified31.5
Final simplification16.2
herbie shell --seed 2020036
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))