\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.13315499271887297 \cdot 10^{-10} \lor \neg \left(\varepsilon \le 3.28455979101293219 \cdot 10^{-7}\right):\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x \cdot \cos \varepsilon\right) + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)} - \cos x\\
\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 r64597 = x;
double r64598 = eps;
double r64599 = r64597 + r64598;
double r64600 = cos(r64599);
double r64601 = cos(r64597);
double r64602 = r64600 - r64601;
return r64602;
}
double f(double x, double eps) {
double r64603 = eps;
double r64604 = -1.133154992718873e-10;
bool r64605 = r64603 <= r64604;
double r64606 = 3.284559791012932e-07;
bool r64607 = r64603 <= r64606;
double r64608 = !r64607;
bool r64609 = r64605 || r64608;
double r64610 = x;
double r64611 = cos(r64610);
double r64612 = cos(r64603);
double r64613 = r64611 * r64612;
double r64614 = 3.0;
double r64615 = pow(r64613, r64614);
double r64616 = sin(r64610);
double r64617 = sin(r64603);
double r64618 = r64616 * r64617;
double r64619 = pow(r64618, r64614);
double r64620 = r64615 - r64619;
double r64621 = r64618 + r64613;
double r64622 = r64618 * r64621;
double r64623 = r64613 * r64613;
double r64624 = r64622 + r64623;
double r64625 = r64620 / r64624;
double r64626 = r64625 - r64611;
double r64627 = 0.16666666666666666;
double r64628 = pow(r64610, r64614);
double r64629 = r64627 * r64628;
double r64630 = r64629 - r64610;
double r64631 = 0.5;
double r64632 = r64603 * r64631;
double r64633 = r64630 - r64632;
double r64634 = r64603 * r64633;
double r64635 = r64609 ? r64626 : r64634;
return r64635;
}



Bits error versus x



Bits error versus eps
Results
if eps < -1.133154992718873e-10 or 3.284559791012932e-07 < eps Initial program 30.5
rmApplied cos-sum1.1
rmApplied flip3--1.3
Simplified1.3
if -1.133154992718873e-10 < eps < 3.284559791012932e-07Initial program 49.3
Taylor expanded around 0 31.7
Simplified31.7
Final simplification15.9
herbie shell --seed 2020065
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))