\frac{1 - \cos x}{x \cdot x}\begin{array}{l}
\mathbf{if}\;x \le -0.03812843131329910623117385171099158469588 \lor \neg \left(x \le 0.03662167515047411170403535152217955328524\right):\\
\;\;\;\;\frac{\frac{\log \left(e^{1 - \cos x}\right)}{x}}{x}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left({x}^{4}, \frac{1}{720}, \frac{1}{2} - \frac{1}{24} \cdot {x}^{2}\right)\\
\end{array}double f(double x) {
double r27850 = 1.0;
double r27851 = x;
double r27852 = cos(r27851);
double r27853 = r27850 - r27852;
double r27854 = r27851 * r27851;
double r27855 = r27853 / r27854;
return r27855;
}
double f(double x) {
double r27856 = x;
double r27857 = -0.038128431313299106;
bool r27858 = r27856 <= r27857;
double r27859 = 0.03662167515047411;
bool r27860 = r27856 <= r27859;
double r27861 = !r27860;
bool r27862 = r27858 || r27861;
double r27863 = 1.0;
double r27864 = cos(r27856);
double r27865 = r27863 - r27864;
double r27866 = exp(r27865);
double r27867 = log(r27866);
double r27868 = r27867 / r27856;
double r27869 = r27868 / r27856;
double r27870 = 4.0;
double r27871 = pow(r27856, r27870);
double r27872 = 0.001388888888888889;
double r27873 = 0.5;
double r27874 = 0.041666666666666664;
double r27875 = 2.0;
double r27876 = pow(r27856, r27875);
double r27877 = r27874 * r27876;
double r27878 = r27873 - r27877;
double r27879 = fma(r27871, r27872, r27878);
double r27880 = r27862 ? r27869 : r27879;
return r27880;
}



Bits error versus x
if x < -0.038128431313299106 or 0.03662167515047411 < x Initial program 0.9
rmApplied associate-/r*0.5
rmApplied add-log-exp0.6
Applied add-log-exp0.6
Applied diff-log0.6
Simplified0.6
if -0.038128431313299106 < x < 0.03662167515047411Initial program 62.0
Taylor expanded around 0 0.0
Simplified0.0
Final simplification0.3
herbie shell --seed 2019344 +o rules:numerics
(FPCore (x)
:name "cos2 (problem 3.4.1)"
:precision binary64
(/ (- 1 (cos x)) (* x x)))