\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.4155618696900624 \cdot 10^{-10}:\\
\;\;\;\;\frac{\left(\mathsf{fma}\left(3 \cdot \cos \varepsilon, {\left(\sin x\right)}^{2} \cdot \left({\left(\sin \varepsilon\right)}^{2} \cdot \cos x\right), {\left(\cos x \cdot \cos \varepsilon\right)}^{3}\right) - \mathsf{fma}\left(3 \cdot {\left(\cos \varepsilon\right)}^{2}, \sin x \cdot \left(\sin \varepsilon \cdot {\left(\cos x\right)}^{2}\right), {\left(\sin x \cdot \sin \varepsilon\right)}^{3}\right)\right) - {\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}\\
\mathbf{elif}\;\varepsilon \le 1.23057486602459758 \cdot 10^{-7}:\\
\;\;\;\;\varepsilon \cdot \left({\varepsilon}^{3} \cdot \frac{1}{24} - \mathsf{fma}\left(\frac{1}{2}, \varepsilon, x\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\cos \varepsilon, \cos x, -\sqrt[3]{{\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)}^{3}}\right)\\
\end{array}double f(double x, double eps) {
double r69521 = x;
double r69522 = eps;
double r69523 = r69521 + r69522;
double r69524 = cos(r69523);
double r69525 = cos(r69521);
double r69526 = r69524 - r69525;
return r69526;
}
double f(double x, double eps) {
double r69527 = eps;
double r69528 = -1.4155618696900624e-10;
bool r69529 = r69527 <= r69528;
double r69530 = 3.0;
double r69531 = cos(r69527);
double r69532 = r69530 * r69531;
double r69533 = x;
double r69534 = sin(r69533);
double r69535 = 2.0;
double r69536 = pow(r69534, r69535);
double r69537 = sin(r69527);
double r69538 = pow(r69537, r69535);
double r69539 = cos(r69533);
double r69540 = r69538 * r69539;
double r69541 = r69536 * r69540;
double r69542 = r69539 * r69531;
double r69543 = pow(r69542, r69530);
double r69544 = fma(r69532, r69541, r69543);
double r69545 = pow(r69531, r69535);
double r69546 = r69530 * r69545;
double r69547 = pow(r69539, r69535);
double r69548 = r69537 * r69547;
double r69549 = r69534 * r69548;
double r69550 = r69534 * r69537;
double r69551 = pow(r69550, r69530);
double r69552 = fma(r69546, r69549, r69551);
double r69553 = r69544 - r69552;
double r69554 = pow(r69539, r69530);
double r69555 = r69553 - r69554;
double r69556 = r69531 * r69539;
double r69557 = r69556 - r69550;
double r69558 = r69542 - r69550;
double r69559 = r69558 + r69539;
double r69560 = r69557 * r69559;
double r69561 = r69539 * r69539;
double r69562 = r69560 + r69561;
double r69563 = r69555 / r69562;
double r69564 = 1.2305748660245976e-07;
bool r69565 = r69527 <= r69564;
double r69566 = pow(r69527, r69530);
double r69567 = 0.041666666666666664;
double r69568 = r69566 * r69567;
double r69569 = 0.5;
double r69570 = fma(r69569, r69527, r69533);
double r69571 = r69568 - r69570;
double r69572 = r69527 * r69571;
double r69573 = fma(r69534, r69537, r69539);
double r69574 = pow(r69573, r69530);
double r69575 = cbrt(r69574);
double r69576 = -r69575;
double r69577 = fma(r69531, r69539, r69576);
double r69578 = r69565 ? r69572 : r69577;
double r69579 = r69529 ? r69563 : r69578;
return r69579;
}



Bits error versus x



Bits error versus eps
if eps < -1.4155618696900624e-10Initial program 31.0
rmApplied cos-sum1.5
rmApplied flip3--1.7
Simplified1.7
Taylor expanded around inf 1.7
Simplified1.7
if -1.4155618696900624e-10 < eps < 1.2305748660245976e-07Initial program 49.1
rmApplied cos-sum48.8
Taylor expanded around inf 48.8
Simplified48.8
Taylor expanded around 0 30.7
Simplified30.7
if 1.2305748660245976e-07 < eps Initial program 30.3
rmApplied cos-sum1.1
Taylor expanded around inf 1.1
Simplified1.1
rmApplied add-cbrt-cube1.3
Simplified1.3
Final simplification15.8
herbie shell --seed 2020062 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))