\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -6443.306290177518349082674831151962280273 \lor \neg \left(\varepsilon \le 1.459775390859078191777703503717589228472 \cdot 10^{-4}\right):\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin \varepsilon \cdot \sin x\right) - \cos x\\
\mathbf{else}:\\
\;\;\;\;-2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\\
\end{array}double f(double x, double eps) {
double r23514 = x;
double r23515 = eps;
double r23516 = r23514 + r23515;
double r23517 = cos(r23516);
double r23518 = cos(r23514);
double r23519 = r23517 - r23518;
return r23519;
}
double f(double x, double eps) {
double r23520 = eps;
double r23521 = -6443.306290177518;
bool r23522 = r23520 <= r23521;
double r23523 = 0.00014597753908590782;
bool r23524 = r23520 <= r23523;
double r23525 = !r23524;
bool r23526 = r23522 || r23525;
double r23527 = x;
double r23528 = cos(r23527);
double r23529 = cos(r23520);
double r23530 = r23528 * r23529;
double r23531 = sin(r23520);
double r23532 = sin(r23527);
double r23533 = r23531 * r23532;
double r23534 = r23530 - r23533;
double r23535 = r23534 - r23528;
double r23536 = -2.0;
double r23537 = 2.0;
double r23538 = r23520 / r23537;
double r23539 = sin(r23538);
double r23540 = r23527 + r23520;
double r23541 = r23540 + r23527;
double r23542 = r23541 / r23537;
double r23543 = sin(r23542);
double r23544 = r23539 * r23543;
double r23545 = r23536 * r23544;
double r23546 = r23526 ? r23535 : r23545;
return r23546;
}



Bits error versus x



Bits error versus eps
Results
if eps < -6443.306290177518 or 0.00014597753908590782 < eps Initial program 30.3
Simplified30.3
rmApplied cos-sum0.9
Simplified0.9
if -6443.306290177518 < eps < 0.00014597753908590782Initial program 49.7
Simplified49.7
rmApplied diff-cos37.7
Simplified0.8
Final simplification0.8
herbie shell --seed 2019174
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
(- (cos (+ x eps)) (cos x)))