\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -3.2377418339921979 \cdot 10^{-63}:\\
\;\;\;\;1 \cdot \mathsf{fma}\left(\cos \varepsilon, \cos x, -\log \left(e^{\mathsf{fma}\left(\sin x, \sin \varepsilon, \cos x\right)}\right)\right)\\
\mathbf{elif}\;\varepsilon \le 9.62382077211877741 \cdot 10^{-17}:\\
\;\;\;\;1 \cdot \left(\varepsilon \cdot \left({\varepsilon}^{3} \cdot \frac{1}{24} - \mathsf{fma}\left(\frac{1}{2}, \varepsilon, x\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon\right)}^{3} - {\left(\sin x \cdot \sin \varepsilon\right)}^{3}}{\mathsf{fma}\left(\sin x \cdot \sin \varepsilon, \mathsf{fma}\left(\cos x, \cos \varepsilon, \sin x \cdot \sin \varepsilon\right), \left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right)\right)} - \cos x\\
\end{array}double f(double x, double eps) {
double r25392 = x;
double r25393 = eps;
double r25394 = r25392 + r25393;
double r25395 = cos(r25394);
double r25396 = cos(r25392);
double r25397 = r25395 - r25396;
return r25397;
}
double f(double x, double eps) {
double r25398 = eps;
double r25399 = -3.237741833992198e-63;
bool r25400 = r25398 <= r25399;
double r25401 = 1.0;
double r25402 = cos(r25398);
double r25403 = x;
double r25404 = cos(r25403);
double r25405 = sin(r25403);
double r25406 = sin(r25398);
double r25407 = fma(r25405, r25406, r25404);
double r25408 = exp(r25407);
double r25409 = log(r25408);
double r25410 = -r25409;
double r25411 = fma(r25402, r25404, r25410);
double r25412 = r25401 * r25411;
double r25413 = 9.623820772118777e-17;
bool r25414 = r25398 <= r25413;
double r25415 = 3.0;
double r25416 = pow(r25398, r25415);
double r25417 = 0.041666666666666664;
double r25418 = r25416 * r25417;
double r25419 = 0.5;
double r25420 = fma(r25419, r25398, r25403);
double r25421 = r25418 - r25420;
double r25422 = r25398 * r25421;
double r25423 = r25401 * r25422;
double r25424 = r25404 * r25402;
double r25425 = pow(r25424, r25415);
double r25426 = r25405 * r25406;
double r25427 = pow(r25426, r25415);
double r25428 = r25425 - r25427;
double r25429 = fma(r25404, r25402, r25426);
double r25430 = r25424 * r25424;
double r25431 = fma(r25426, r25429, r25430);
double r25432 = r25428 / r25431;
double r25433 = r25432 - r25404;
double r25434 = r25414 ? r25423 : r25433;
double r25435 = r25400 ? r25412 : r25434;
return r25435;
}



Bits error versus x



Bits error versus eps
if eps < -3.237741833992198e-63Initial program 34.6
rmApplied cos-sum10.0
rmApplied fma-neg10.0
Simplified10.0
rmApplied *-un-lft-identity10.0
Applied *-un-lft-identity10.0
Applied distribute-lft-out--10.0
Simplified10.0
rmApplied add-log-exp10.0
if -3.237741833992198e-63 < eps < 9.623820772118777e-17Initial program 47.7
rmApplied cos-sum47.7
rmApplied fma-neg47.7
Simplified47.7
rmApplied *-un-lft-identity47.7
Applied *-un-lft-identity47.7
Applied distribute-lft-out--47.7
Simplified47.7
Taylor expanded around 0 30.7
Simplified30.7
if 9.623820772118777e-17 < eps Initial program 31.6
rmApplied cos-sum2.5
rmApplied flip3--2.7
Simplified2.7
Final simplification17.1
herbie shell --seed 2020089 +o rules:numerics
(FPCore (x eps)
:name "2cos (problem 3.3.5)"
:precision binary64
(- (cos (+ x eps)) (cos x)))