\frac{1 - \cos x}{x \cdot x}\begin{array}{l}
\mathbf{if}\;x \le -0.03339438899281232248084094749174255412072 \lor \neg \left(x \le 0.02980554453480009288734997596748144133016\right):\\
\;\;\;\;\frac{1}{x} \cdot \frac{1 - \cos x}{x}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{24}, x \cdot x, \mathsf{fma}\left(\frac{1}{720}, {x}^{4}, \frac{1}{2}\right)\right)\\
\end{array}double f(double x) {
double r19449 = 1.0;
double r19450 = x;
double r19451 = cos(r19450);
double r19452 = r19449 - r19451;
double r19453 = r19450 * r19450;
double r19454 = r19452 / r19453;
return r19454;
}
double f(double x) {
double r19455 = x;
double r19456 = -0.03339438899281232;
bool r19457 = r19455 <= r19456;
double r19458 = 0.029805544534800093;
bool r19459 = r19455 <= r19458;
double r19460 = !r19459;
bool r19461 = r19457 || r19460;
double r19462 = 1.0;
double r19463 = r19462 / r19455;
double r19464 = 1.0;
double r19465 = cos(r19455);
double r19466 = r19464 - r19465;
double r19467 = r19466 / r19455;
double r19468 = r19463 * r19467;
double r19469 = -0.041666666666666664;
double r19470 = r19455 * r19455;
double r19471 = 0.001388888888888889;
double r19472 = 4.0;
double r19473 = pow(r19455, r19472);
double r19474 = 0.5;
double r19475 = fma(r19471, r19473, r19474);
double r19476 = fma(r19469, r19470, r19475);
double r19477 = r19461 ? r19468 : r19476;
return r19477;
}



Bits error versus x
if x < -0.03339438899281232 or 0.029805544534800093 < x Initial program 1.1
rmApplied *-un-lft-identity1.1
Applied times-frac0.5
if -0.03339438899281232 < x < 0.029805544534800093Initial program 62.4
rmApplied *-un-lft-identity62.4
Applied times-frac61.4
Taylor expanded around 0 0.0
Simplified0.0
Final simplification0.3
herbie shell --seed 2019322 +o rules:numerics
(FPCore (x)
:name "cos2 (problem 3.4.1)"
:precision binary64
(/ (- 1 (cos x)) (* x x)))