\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -4.366573983933027 \cdot 10^{-4} \lor \neg \left(\varepsilon \le 2.17240038846879428 \cdot 10^{-10}\right):\\
\;\;\;\;1 \cdot \mathsf{fma}\left(\cos \varepsilon, \cos x, -\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\varepsilon \cdot \left({\varepsilon}^{3} \cdot \frac{1}{24} - \mathsf{fma}\left(\frac{1}{2}, \varepsilon, x\right)\right) + \mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right) \cdot \left(\left(-1\right) + 1\right)\\
\end{array}double f(double x, double eps) {
double r60476 = x;
double r60477 = eps;
double r60478 = r60476 + r60477;
double r60479 = cos(r60478);
double r60480 = cos(r60476);
double r60481 = r60479 - r60480;
return r60481;
}
double f(double x, double eps) {
double r60482 = eps;
double r60483 = -0.00043665739839330274;
bool r60484 = r60482 <= r60483;
double r60485 = 2.1724003884687943e-10;
bool r60486 = r60482 <= r60485;
double r60487 = !r60486;
bool r60488 = r60484 || r60487;
double r60489 = 1.0;
double r60490 = cos(r60482);
double r60491 = x;
double r60492 = cos(r60491);
double r60493 = sin(r60491);
double r60494 = sin(r60482);
double r60495 = fma(r60493, r60494, r60492);
double r60496 = -r60495;
double r60497 = fma(r60490, r60492, r60496);
double r60498 = r60489 * r60497;
double r60499 = 3.0;
double r60500 = pow(r60482, r60499);
double r60501 = 0.041666666666666664;
double r60502 = r60500 * r60501;
double r60503 = 0.5;
double r60504 = fma(r60503, r60482, r60491);
double r60505 = r60502 - r60504;
double r60506 = r60482 * r60505;
double r60507 = -r60489;
double r60508 = r60507 + r60489;
double r60509 = r60495 * r60508;
double r60510 = r60506 + r60509;
double r60511 = r60488 ? r60498 : r60510;
return r60511;
}



Bits error versus x



Bits error versus eps
if eps < -0.00043665739839330274 or 2.1724003884687943e-10 < eps Initial program 30.7
rmApplied cos-sum1.1
rmApplied *-un-lft-identity1.1
Applied *-un-lft-identity1.1
Applied distribute-lft-out--1.1
Simplified1.1
if -0.00043665739839330274 < eps < 2.1724003884687943e-10Initial program 49.2
rmApplied cos-sum48.8
Applied associate--l-48.8
Simplified48.8
rmApplied add-cube-cbrt49.3
Applied prod-diff49.3
Simplified49.3
Simplified48.8
Taylor expanded around 0 31.1
Simplified31.1
Final simplification15.5
herbie shell --seed 2020060 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))