\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -4.95115446409742782 \cdot 10^{-9}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \sqrt[3]{{\left(\sin x \cdot \sin \varepsilon + \cos x\right)}^{3}}\\
\mathbf{elif}\;\varepsilon \le 2.17240038846879428 \cdot 10^{-10}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \log \left(e^{\sin x \cdot \sin \varepsilon + \cos x}\right)\\
\end{array}double f(double x, double eps) {
double r50148 = x;
double r50149 = eps;
double r50150 = r50148 + r50149;
double r50151 = cos(r50150);
double r50152 = cos(r50148);
double r50153 = r50151 - r50152;
return r50153;
}
double f(double x, double eps) {
double r50154 = eps;
double r50155 = -4.951154464097428e-09;
bool r50156 = r50154 <= r50155;
double r50157 = x;
double r50158 = cos(r50157);
double r50159 = cos(r50154);
double r50160 = r50158 * r50159;
double r50161 = sin(r50157);
double r50162 = sin(r50154);
double r50163 = r50161 * r50162;
double r50164 = r50163 + r50158;
double r50165 = 3.0;
double r50166 = pow(r50164, r50165);
double r50167 = cbrt(r50166);
double r50168 = r50160 - r50167;
double r50169 = 2.1724003884687943e-10;
bool r50170 = r50154 <= r50169;
double r50171 = 0.16666666666666666;
double r50172 = pow(r50157, r50165);
double r50173 = r50171 * r50172;
double r50174 = r50173 - r50157;
double r50175 = 0.5;
double r50176 = r50154 * r50175;
double r50177 = r50174 - r50176;
double r50178 = r50154 * r50177;
double r50179 = exp(r50164);
double r50180 = log(r50179);
double r50181 = r50160 - r50180;
double r50182 = r50170 ? r50178 : r50181;
double r50183 = r50156 ? r50168 : r50182;
return r50183;
}



Bits error versus x



Bits error versus eps
Results
if eps < -4.951154464097428e-09Initial program 30.8
rmApplied cos-sum1.4
Applied associate--l-1.4
rmApplied add-cbrt-cube1.5
Simplified1.5
if -4.951154464097428e-09 < eps < 2.1724003884687943e-10Initial program 49.2
Taylor expanded around 0 31.8
Simplified31.8
if 2.1724003884687943e-10 < eps Initial program 30.8
rmApplied cos-sum1.4
Applied associate--l-1.4
rmApplied add-log-exp1.5
Applied add-log-exp1.5
Applied sum-log1.6
Simplified1.5
Final simplification15.9
herbie shell --seed 2020060
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))