\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -4.517751507358619699596019186183573409913 \cdot 10^{-14}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right)}^{3}}{\left(\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right) \cdot \mathsf{fma}\left(\cos x, \cos \varepsilon, \mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)\right) + 0\right) + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)}\\
\mathbf{elif}\;\varepsilon \le 3.472422074003834644235946382123669806674 \cdot 10^{-7}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \mathsf{expm1}\left(\mathsf{log1p}\left(\sin x \cdot \sin \varepsilon\right)\right)\right) - \cos x\\
\end{array}double f(double x, double eps) {
double r68429 = x;
double r68430 = eps;
double r68431 = r68429 + r68430;
double r68432 = cos(r68431);
double r68433 = cos(r68429);
double r68434 = r68432 - r68433;
return r68434;
}
double f(double x, double eps) {
double r68435 = eps;
double r68436 = -4.51775150735862e-14;
bool r68437 = r68435 <= r68436;
double r68438 = x;
double r68439 = cos(r68438);
double r68440 = cos(r68435);
double r68441 = r68439 * r68440;
double r68442 = 3.0;
double r68443 = pow(r68441, r68442);
double r68444 = sin(r68438);
double r68445 = sin(r68435);
double r68446 = fma(r68444, r68445, r68439);
double r68447 = pow(r68446, r68442);
double r68448 = r68443 - r68447;
double r68449 = fma(r68439, r68440, r68446);
double r68450 = r68446 * r68449;
double r68451 = 0.0;
double r68452 = r68450 + r68451;
double r68453 = r68441 * r68441;
double r68454 = r68452 + r68453;
double r68455 = r68448 / r68454;
double r68456 = 3.4724220740038346e-07;
bool r68457 = r68435 <= r68456;
double r68458 = 0.16666666666666666;
double r68459 = pow(r68438, r68442);
double r68460 = r68458 * r68459;
double r68461 = r68460 - r68438;
double r68462 = 0.5;
double r68463 = r68435 * r68462;
double r68464 = r68461 - r68463;
double r68465 = r68435 * r68464;
double r68466 = r68444 * r68445;
double r68467 = log1p(r68466);
double r68468 = expm1(r68467);
double r68469 = r68441 - r68468;
double r68470 = r68469 - r68439;
double r68471 = r68457 ? r68465 : r68470;
double r68472 = r68437 ? r68455 : r68471;
return r68472;
}



Bits error versus x



Bits error versus eps
if eps < -4.51775150735862e-14Initial program 32.1
rmApplied cos-sum1.9
rmApplied sub-neg1.9
Applied associate--l+1.9
Simplified1.9
rmApplied flip3-+2.1
Simplified2.1
Simplified2.1
if -4.51775150735862e-14 < eps < 3.4724220740038346e-07Initial program 49.0
Taylor expanded around 0 31.3
Simplified31.3
if 3.4724220740038346e-07 < eps Initial program 29.5
rmApplied cos-sum1.1
rmApplied expm1-log1p-u1.1
Final simplification15.7
herbie shell --seed 2019354 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))