\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -7.94700459656321 \cdot 10^{-06}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\
\mathbf{elif}\;\varepsilon \le 0.0001353150742087212:\\
\;\;\;\;\left(-2 \cdot \sin \left(\frac{\varepsilon}{2}\right)\right) \cdot \sin \left(\frac{\mathsf{fma}\left(2, x, \varepsilon\right)}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\cos x \cdot \cos \varepsilon - \mathsf{fma}\left(\sin \varepsilon, \sin x, \cos x\right)\\
\end{array}double f(double x, double eps) {
double r1331424 = x;
double r1331425 = eps;
double r1331426 = r1331424 + r1331425;
double r1331427 = cos(r1331426);
double r1331428 = cos(r1331424);
double r1331429 = r1331427 - r1331428;
return r1331429;
}
double f(double x, double eps) {
double r1331430 = eps;
double r1331431 = -7.94700459656321e-06;
bool r1331432 = r1331430 <= r1331431;
double r1331433 = x;
double r1331434 = cos(r1331433);
double r1331435 = cos(r1331430);
double r1331436 = r1331434 * r1331435;
double r1331437 = sin(r1331433);
double r1331438 = sin(r1331430);
double r1331439 = r1331437 * r1331438;
double r1331440 = r1331436 - r1331439;
double r1331441 = r1331440 - r1331434;
double r1331442 = 0.0001353150742087212;
bool r1331443 = r1331430 <= r1331442;
double r1331444 = -2.0;
double r1331445 = 2.0;
double r1331446 = r1331430 / r1331445;
double r1331447 = sin(r1331446);
double r1331448 = r1331444 * r1331447;
double r1331449 = fma(r1331445, r1331433, r1331430);
double r1331450 = r1331449 / r1331445;
double r1331451 = sin(r1331450);
double r1331452 = r1331448 * r1331451;
double r1331453 = fma(r1331438, r1331437, r1331434);
double r1331454 = r1331436 - r1331453;
double r1331455 = r1331443 ? r1331452 : r1331454;
double r1331456 = r1331432 ? r1331441 : r1331455;
return r1331456;
}



Bits error versus x



Bits error versus eps
if eps < -7.94700459656321e-06Initial program 31.6
rmApplied cos-sum1.1
if -7.94700459656321e-06 < eps < 0.0001353150742087212Initial program 49.4
rmApplied diff-cos38.0
Simplified0.4
rmApplied associate-*r*0.4
if 0.0001353150742087212 < eps Initial program 31.3
rmApplied cos-sum0.9
Applied associate--l-1.0
Simplified0.9
Final simplification0.7
herbie shell --seed 2019143 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))