\frac{1 - \cos x}{x \cdot x}\begin{array}{l}
\mathbf{if}\;x \le -0.0345003221724181561:\\
\;\;\;\;\frac{1}{x} \cdot \frac{\log \left(e^{1 - \cos x}\right)}{x}\\
\mathbf{elif}\;x \le 0.0329960873997033124:\\
\;\;\;\;\left(\frac{1}{720} \cdot {x}^{4} + \frac{1}{2}\right) - \frac{1}{24} \cdot {x}^{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{\log \left(1 - \cos x\right)}}{x \cdot x}\\
\end{array}double f(double x) {
double r20462 = 1.0;
double r20463 = x;
double r20464 = cos(r20463);
double r20465 = r20462 - r20464;
double r20466 = r20463 * r20463;
double r20467 = r20465 / r20466;
return r20467;
}
double f(double x) {
double r20468 = x;
double r20469 = -0.034500322172418156;
bool r20470 = r20468 <= r20469;
double r20471 = 1.0;
double r20472 = r20471 / r20468;
double r20473 = 1.0;
double r20474 = cos(r20468);
double r20475 = r20473 - r20474;
double r20476 = exp(r20475);
double r20477 = log(r20476);
double r20478 = r20477 / r20468;
double r20479 = r20472 * r20478;
double r20480 = 0.03299608739970331;
bool r20481 = r20468 <= r20480;
double r20482 = 0.001388888888888889;
double r20483 = 4.0;
double r20484 = pow(r20468, r20483);
double r20485 = r20482 * r20484;
double r20486 = 0.5;
double r20487 = r20485 + r20486;
double r20488 = 0.041666666666666664;
double r20489 = 2.0;
double r20490 = pow(r20468, r20489);
double r20491 = r20488 * r20490;
double r20492 = r20487 - r20491;
double r20493 = log(r20475);
double r20494 = exp(r20493);
double r20495 = r20468 * r20468;
double r20496 = r20494 / r20495;
double r20497 = r20481 ? r20492 : r20496;
double r20498 = r20470 ? r20479 : r20497;
return r20498;
}



Bits error versus x
Results
if x < -0.034500322172418156Initial program 1.1
rmApplied *-un-lft-identity1.1
Applied times-frac0.5
rmApplied add-log-exp0.6
Applied add-log-exp0.6
Applied diff-log0.7
Simplified0.6
if -0.034500322172418156 < x < 0.03299608739970331Initial program 62.2
Taylor expanded around 0 0.0
if 0.03299608739970331 < x Initial program 1.0
rmApplied add-exp-log1.0
Final simplification0.4
herbie shell --seed 2020049
(FPCore (x)
:name "cos2 (problem 3.4.1)"
:precision binary64
(/ (- 1 (cos x)) (* x x)))