\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2.090532721168427568252633219625380434081 \cdot 10^{-5}:\\
\;\;\;\;1 \cdot \left(\cos \varepsilon \cdot \cos x - \log \left(e^{\sin x \cdot \sin \varepsilon + \cos x}\right)\right)\\
\mathbf{elif}\;\varepsilon \le 1.615658339035005690257933106717015652842 \cdot 10^{-13}:\\
\;\;\;\;1 \cdot \left(\frac{1}{24} \cdot {\varepsilon}^{4} - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \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 x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\
\end{array}double f(double x, double eps) {
double r49498 = x;
double r49499 = eps;
double r49500 = r49498 + r49499;
double r49501 = cos(r49500);
double r49502 = cos(r49498);
double r49503 = r49501 - r49502;
return r49503;
}
double f(double x, double eps) {
double r49504 = eps;
double r49505 = -2.0905327211684276e-05;
bool r49506 = r49504 <= r49505;
double r49507 = 1.0;
double r49508 = cos(r49504);
double r49509 = x;
double r49510 = cos(r49509);
double r49511 = r49508 * r49510;
double r49512 = sin(r49509);
double r49513 = sin(r49504);
double r49514 = r49512 * r49513;
double r49515 = r49514 + r49510;
double r49516 = exp(r49515);
double r49517 = log(r49516);
double r49518 = r49511 - r49517;
double r49519 = r49507 * r49518;
double r49520 = 1.6156583390350057e-13;
bool r49521 = r49504 <= r49520;
double r49522 = 0.041666666666666664;
double r49523 = 4.0;
double r49524 = pow(r49504, r49523);
double r49525 = r49522 * r49524;
double r49526 = r49509 * r49504;
double r49527 = 0.5;
double r49528 = 2.0;
double r49529 = pow(r49504, r49528);
double r49530 = r49527 * r49529;
double r49531 = r49526 + r49530;
double r49532 = r49525 - r49531;
double r49533 = r49507 * r49532;
double r49534 = r49510 * r49508;
double r49535 = r49534 - r49514;
double r49536 = 3.0;
double r49537 = pow(r49535, r49536);
double r49538 = pow(r49510, r49536);
double r49539 = r49537 - r49538;
double r49540 = r49511 - r49514;
double r49541 = r49535 + r49510;
double r49542 = r49540 * r49541;
double r49543 = r49510 * r49510;
double r49544 = r49542 + r49543;
double r49545 = r49539 / r49544;
double r49546 = r49521 ? r49533 : r49545;
double r49547 = r49506 ? r49519 : r49546;
return r49547;
}



Bits error versus x



Bits error versus eps
Results
if eps < -2.0905327211684276e-05Initial program 30.2
rmApplied cos-sum1.0
rmApplied *-un-lft-identity1.0
Applied *-un-lft-identity1.0
Applied distribute-lft-out--1.0
Simplified1.0
rmApplied add-log-exp1.1
Applied add-log-exp1.1
Applied sum-log1.2
Simplified1.1
if -2.0905327211684276e-05 < eps < 1.6156583390350057e-13Initial program 49.4
rmApplied cos-sum49.2
rmApplied *-un-lft-identity49.2
Applied *-un-lft-identity49.2
Applied distribute-lft-out--49.2
Simplified49.2
Taylor expanded around 0 31.4
if 1.6156583390350057e-13 < eps Initial program 31.2
rmApplied cos-sum1.7
rmApplied flip3--1.9
Simplified1.9
Final simplification16.1
herbie shell --seed 2019318
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))