\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -3.9043345518077538 \cdot 10^{-4}:\\
\;\;\;\;\log \left(e^{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x}\right)\\
\mathbf{elif}\;\varepsilon \le 2.2931718725747495 \cdot 10^{-15}:\\
\;\;\;\;\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(e^{\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon}\right) - \cos x\\
\end{array}double f(double x, double eps) {
double r54577 = x;
double r54578 = eps;
double r54579 = r54577 + r54578;
double r54580 = cos(r54579);
double r54581 = cos(r54577);
double r54582 = r54580 - r54581;
return r54582;
}
double f(double x, double eps) {
double r54583 = eps;
double r54584 = -0.0003904334551807754;
bool r54585 = r54583 <= r54584;
double r54586 = x;
double r54587 = cos(r54586);
double r54588 = cos(r54583);
double r54589 = r54587 * r54588;
double r54590 = sin(r54586);
double r54591 = sin(r54583);
double r54592 = r54590 * r54591;
double r54593 = r54589 - r54592;
double r54594 = r54593 - r54587;
double r54595 = exp(r54594);
double r54596 = log(r54595);
double r54597 = 2.2931718725747495e-15;
bool r54598 = r54583 <= r54597;
double r54599 = 0.041666666666666664;
double r54600 = 4.0;
double r54601 = pow(r54583, r54600);
double r54602 = r54599 * r54601;
double r54603 = r54586 * r54583;
double r54604 = 0.5;
double r54605 = 2.0;
double r54606 = pow(r54583, r54605);
double r54607 = r54604 * r54606;
double r54608 = r54603 + r54607;
double r54609 = r54602 - r54608;
double r54610 = exp(r54593);
double r54611 = log(r54610);
double r54612 = r54611 - r54587;
double r54613 = r54598 ? r54609 : r54612;
double r54614 = r54585 ? r54596 : r54613;
return r54614;
}



Bits error versus x



Bits error versus eps
Results
if eps < -0.0003904334551807754Initial program 31.0
rmApplied cos-sum0.8
rmApplied add-log-exp0.9
Applied add-log-exp1.0
Applied add-log-exp1.1
Applied diff-log1.2
Applied diff-log1.2
Simplified0.9
if -0.0003904334551807754 < eps < 2.2931718725747495e-15Initial program 49.4
rmApplied cos-sum49.0
Taylor expanded around inf 49.0
Taylor expanded around 0 30.8
if 2.2931718725747495e-15 < eps Initial program 31.1
rmApplied cos-sum2.3
rmApplied add-log-exp2.5
Applied add-log-exp2.6
Applied diff-log2.6
Simplified2.6
Final simplification15.9
herbie shell --seed 2020064
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))