\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -4.2532742587969492 \cdot 10^{-10}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon\right)}^{3}}{\left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon + \cos x \cdot \cos \varepsilon\right) + \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)} - \cos x\\
\mathbf{elif}\;\varepsilon \le 4.38346934273984842 \cdot 10^{-11}:\\
\;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(e^{\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon}\right) - \cos x\\
\end{array}double f(double x, double eps) {
double r78490 = x;
double r78491 = eps;
double r78492 = r78490 + r78491;
double r78493 = cos(r78492);
double r78494 = cos(r78490);
double r78495 = r78493 - r78494;
return r78495;
}
double f(double x, double eps) {
double r78496 = eps;
double r78497 = -4.253274258796949e-10;
bool r78498 = r78496 <= r78497;
double r78499 = x;
double r78500 = cos(r78499);
double r78501 = cos(r78496);
double r78502 = r78500 * r78501;
double r78503 = 3.0;
double r78504 = pow(r78502, r78503);
double r78505 = sin(r78499);
double r78506 = sin(r78496);
double r78507 = r78505 * r78506;
double r78508 = pow(r78507, r78503);
double r78509 = r78504 - r78508;
double r78510 = r78507 + r78502;
double r78511 = r78507 * r78510;
double r78512 = r78502 * r78502;
double r78513 = r78511 + r78512;
double r78514 = r78509 / r78513;
double r78515 = r78514 - r78500;
double r78516 = 4.3834693427398484e-11;
bool r78517 = r78496 <= r78516;
double r78518 = 0.16666666666666666;
double r78519 = pow(r78499, r78503);
double r78520 = r78518 * r78519;
double r78521 = r78520 - r78499;
double r78522 = 0.5;
double r78523 = r78496 * r78522;
double r78524 = r78521 - r78523;
double r78525 = r78496 * r78524;
double r78526 = r78502 - r78507;
double r78527 = exp(r78526);
double r78528 = log(r78527);
double r78529 = r78528 - r78500;
double r78530 = r78517 ? r78525 : r78529;
double r78531 = r78498 ? r78515 : r78530;
return r78531;
}



Bits error versus x



Bits error versus eps
Results
if eps < -4.253274258796949e-10Initial program 30.0
rmApplied cos-sum1.3
rmApplied flip3--1.5
Simplified1.5
if -4.253274258796949e-10 < eps < 4.3834693427398484e-11Initial program 49.5
Taylor expanded around 0 31.9
Simplified31.9
if 4.3834693427398484e-11 < eps Initial program 30.8
rmApplied cos-sum1.6
rmApplied add-log-exp1.7
Applied add-log-exp1.9
Applied diff-log1.9
Simplified1.9
Final simplification16.8
herbie shell --seed 2020035
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))