\frac{1 - \cos x}{x \cdot x}\begin{array}{l}
\mathbf{if}\;x \le -0.03100648570835606854245725116925314068794 \lor \neg \left(x \le 0.03254730486326439659050535624373878818005\right):\\
\;\;\;\;\frac{\left(1 - \cos x\right) \cdot \frac{1}{x}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{720} \cdot {x}^{4} + \left(\frac{1}{2} - \frac{1}{24} \cdot {x}^{2}\right)\\
\end{array}double f(double x) {
double r29678 = 1.0;
double r29679 = x;
double r29680 = cos(r29679);
double r29681 = r29678 - r29680;
double r29682 = r29679 * r29679;
double r29683 = r29681 / r29682;
return r29683;
}
double f(double x) {
double r29684 = x;
double r29685 = -0.03100648570835607;
bool r29686 = r29684 <= r29685;
double r29687 = 0.0325473048632644;
bool r29688 = r29684 <= r29687;
double r29689 = !r29688;
bool r29690 = r29686 || r29689;
double r29691 = 1.0;
double r29692 = cos(r29684);
double r29693 = r29691 - r29692;
double r29694 = 1.0;
double r29695 = r29694 / r29684;
double r29696 = r29693 * r29695;
double r29697 = r29696 / r29684;
double r29698 = 0.001388888888888889;
double r29699 = 4.0;
double r29700 = pow(r29684, r29699);
double r29701 = r29698 * r29700;
double r29702 = 0.5;
double r29703 = 0.041666666666666664;
double r29704 = 2.0;
double r29705 = pow(r29684, r29704);
double r29706 = r29703 * r29705;
double r29707 = r29702 - r29706;
double r29708 = r29701 + r29707;
double r29709 = r29690 ? r29697 : r29708;
return r29709;
}



Bits error versus x
Results
if x < -0.03100648570835607 or 0.0325473048632644 < x Initial program 1.1
rmApplied associate-/r*0.4
rmApplied div-inv0.5
if -0.03100648570835607 < x < 0.0325473048632644Initial program 62.2
Taylor expanded around 0 0.0
rmApplied associate--l+0.0
Final simplification0.2
herbie shell --seed 2019209
(FPCore (x)
:name "cos2 (problem 3.4.1)"
:precision binary64
(/ (- 1 (cos x)) (* x x)))