\frac{1 - \cos x}{x \cdot x}\begin{array}{l}
\mathbf{if}\;x \le -0.0330594120648614667:\\
\;\;\;\;\frac{\frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\mathsf{fma}\left(\cos x, 1 + \cos x, 1 \cdot 1\right)}}{x \cdot x}\\
\mathbf{elif}\;x \le 0.034074837610598666:\\
\;\;\;\;\mathsf{fma}\left({x}^{4}, \frac{1}{720}, \frac{1}{2} - \frac{1}{24} \cdot {x}^{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\log \left(e^{1 - \cos x}\right)}}{x} \cdot \frac{\sqrt{\frac{\frac{{\left(1 \cdot 1\right)}^{3} - {\left(\cos x \cdot \cos x\right)}^{3}}{\mathsf{fma}\left(\mathsf{fma}\left(1, 1, {\left(\cos x\right)}^{2}\right), {\left(\cos x\right)}^{2}, {1}^{4}\right)}}{1 + \cos x}}}{x}\\
\end{array}double f(double x) {
double r28526 = 1.0;
double r28527 = x;
double r28528 = cos(r28527);
double r28529 = r28526 - r28528;
double r28530 = r28527 * r28527;
double r28531 = r28529 / r28530;
return r28531;
}
double f(double x) {
double r28532 = x;
double r28533 = -0.03305941206486147;
bool r28534 = r28532 <= r28533;
double r28535 = 1.0;
double r28536 = 3.0;
double r28537 = pow(r28535, r28536);
double r28538 = cos(r28532);
double r28539 = pow(r28538, r28536);
double r28540 = r28537 - r28539;
double r28541 = r28535 + r28538;
double r28542 = r28535 * r28535;
double r28543 = fma(r28538, r28541, r28542);
double r28544 = r28540 / r28543;
double r28545 = r28532 * r28532;
double r28546 = r28544 / r28545;
double r28547 = 0.034074837610598666;
bool r28548 = r28532 <= r28547;
double r28549 = 4.0;
double r28550 = pow(r28532, r28549);
double r28551 = 0.001388888888888889;
double r28552 = 0.5;
double r28553 = 0.041666666666666664;
double r28554 = 2.0;
double r28555 = pow(r28532, r28554);
double r28556 = r28553 * r28555;
double r28557 = r28552 - r28556;
double r28558 = fma(r28550, r28551, r28557);
double r28559 = r28535 - r28538;
double r28560 = exp(r28559);
double r28561 = log(r28560);
double r28562 = sqrt(r28561);
double r28563 = r28562 / r28532;
double r28564 = pow(r28542, r28536);
double r28565 = r28538 * r28538;
double r28566 = pow(r28565, r28536);
double r28567 = r28564 - r28566;
double r28568 = pow(r28538, r28554);
double r28569 = fma(r28535, r28535, r28568);
double r28570 = pow(r28535, r28549);
double r28571 = fma(r28569, r28568, r28570);
double r28572 = r28567 / r28571;
double r28573 = r28572 / r28541;
double r28574 = sqrt(r28573);
double r28575 = r28574 / r28532;
double r28576 = r28563 * r28575;
double r28577 = r28548 ? r28558 : r28576;
double r28578 = r28534 ? r28546 : r28577;
return r28578;
}



Bits error versus x
if x < -0.03305941206486147Initial program 1.0
rmApplied flip3--1.0
Simplified1.0
if -0.03305941206486147 < x < 0.034074837610598666Initial program 62.1
Taylor expanded around 0 0.0
Simplified0.0
if 0.034074837610598666 < x Initial program 1.0
rmApplied add-sqr-sqrt1.1
Applied times-frac0.5
rmApplied add-log-exp0.5
Applied add-log-exp0.5
Applied diff-log0.6
Simplified0.5
rmApplied flip--0.6
rmApplied flip3--0.6
Simplified0.6
Final simplification0.4
herbie shell --seed 2020057 +o rules:numerics
(FPCore (x)
:name "cos2 (problem 3.4.1)"
:precision binary64
(/ (- 1 (cos x)) (* x x)))