\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.894912541714580426696623582927259121789 \cdot 10^{-4}:\\
\;\;\;\;\frac{{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\
\mathbf{elif}\;\varepsilon \le 1.339671104451643834974770147505651607389 \cdot 10^{-5}:\\
\;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(e^{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) - \cos x}\right)\\
\end{array}double f(double x, double eps) {
double r85419 = x;
double r85420 = eps;
double r85421 = r85419 + r85420;
double r85422 = cos(r85421);
double r85423 = cos(r85419);
double r85424 = r85422 - r85423;
return r85424;
}
double f(double x, double eps) {
double r85425 = eps;
double r85426 = -0.00018949125417145804;
bool r85427 = r85425 <= r85426;
double r85428 = cos(r85425);
double r85429 = x;
double r85430 = cos(r85429);
double r85431 = r85428 * r85430;
double r85432 = sin(r85429);
double r85433 = sin(r85425);
double r85434 = r85432 * r85433;
double r85435 = r85431 - r85434;
double r85436 = 3.0;
double r85437 = pow(r85435, r85436);
double r85438 = pow(r85430, r85436);
double r85439 = r85437 - r85438;
double r85440 = r85435 + r85430;
double r85441 = r85435 * r85440;
double r85442 = r85430 * r85430;
double r85443 = r85441 + r85442;
double r85444 = r85439 / r85443;
double r85445 = 1.3396711044516438e-05;
bool r85446 = r85425 <= r85445;
double r85447 = 0.041666666666666664;
double r85448 = 4.0;
double r85449 = pow(r85425, r85448);
double r85450 = r85447 * r85449;
double r85451 = r85429 * r85425;
double r85452 = 0.5;
double r85453 = 2.0;
double r85454 = pow(r85425, r85453);
double r85455 = r85452 * r85454;
double r85456 = r85451 + r85455;
double r85457 = r85450 - r85456;
double r85458 = r85435 - r85430;
double r85459 = exp(r85458);
double r85460 = log(r85459);
double r85461 = r85446 ? r85457 : r85460;
double r85462 = r85427 ? r85444 : r85461;
return r85462;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.00018949125417145804Initial program 29.6
rmApplied cos-sum0.8
rmApplied *-commutative0.8
rmApplied flip3--1.0
Simplified1.0
if -0.00018949125417145804 < eps < 1.3396711044516438e-05Initial program 49.1
rmApplied cos-sum48.6
rmApplied *-commutative48.6
Taylor expanded around 0 30.7
if 1.3396711044516438e-05 < eps Initial program 29.7
rmApplied cos-sum0.9
rmApplied *-commutative0.9
rmApplied add-log-exp1.0
Applied add-log-exp1.1
Applied add-log-exp1.3
Applied diff-log1.3
Applied diff-log1.4
Simplified1.1
Final simplification15.6
herbie shell --seed 2019356
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))