\frac{1 - \cos x}{x \cdot x}\begin{array}{l}
\mathbf{if}\;x \le -0.031454960231223988 \lor \neg \left(x \le 0.033122201796403697\right):\\
\;\;\;\;\frac{1}{x} \cdot \frac{1 - \cos x}{x}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{720} \cdot {x}^{4} + \frac{1}{2}\right) - \frac{1}{24} \cdot {x}^{2}\\
\end{array}double f(double x) {
double r20429 = 1.0;
double r20430 = x;
double r20431 = cos(r20430);
double r20432 = r20429 - r20431;
double r20433 = r20430 * r20430;
double r20434 = r20432 / r20433;
return r20434;
}
double f(double x) {
double r20435 = x;
double r20436 = -0.03145496023122399;
bool r20437 = r20435 <= r20436;
double r20438 = 0.0331222017964037;
bool r20439 = r20435 <= r20438;
double r20440 = !r20439;
bool r20441 = r20437 || r20440;
double r20442 = 1.0;
double r20443 = r20442 / r20435;
double r20444 = 1.0;
double r20445 = cos(r20435);
double r20446 = r20444 - r20445;
double r20447 = r20446 / r20435;
double r20448 = r20443 * r20447;
double r20449 = 0.001388888888888889;
double r20450 = 4.0;
double r20451 = pow(r20435, r20450);
double r20452 = r20449 * r20451;
double r20453 = 0.5;
double r20454 = r20452 + r20453;
double r20455 = 0.041666666666666664;
double r20456 = 2.0;
double r20457 = pow(r20435, r20456);
double r20458 = r20455 * r20457;
double r20459 = r20454 - r20458;
double r20460 = r20441 ? r20448 : r20459;
return r20460;
}



Bits error versus x
Results
if x < -0.03145496023122399 or 0.0331222017964037 < x Initial program 1.0
rmApplied add-exp-log1.0
rmApplied *-un-lft-identity1.0
Applied log-prod1.0
Applied exp-sum1.0
Applied times-frac0.5
Simplified0.5
Simplified0.5
if -0.03145496023122399 < x < 0.0331222017964037Initial program 62.2
Taylor expanded around 0 0.0
Final simplification0.3
herbie shell --seed 2020081
(FPCore (x)
:name "cos2 (problem 3.4.1)"
:precision binary64
(/ (- 1 (cos x)) (* x x)))