Average Error: 31.2 → 0.2
Time: 3.8s
Precision: 64
\[\frac{1 - \cos x}{x \cdot x}\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.033395966236815566 \lor \neg \left(x \le 0.03176890082881835\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}\]
\frac{1 - \cos x}{x \cdot x}
\begin{array}{l}
\mathbf{if}\;x \le -0.033395966236815566 \lor \neg \left(x \le 0.03176890082881835\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 r20324 = 1.0;
        double r20325 = x;
        double r20326 = cos(r20325);
        double r20327 = r20324 - r20326;
        double r20328 = r20325 * r20325;
        double r20329 = r20327 / r20328;
        return r20329;
}

double f(double x) {
        double r20330 = x;
        double r20331 = -0.033395966236815566;
        bool r20332 = r20330 <= r20331;
        double r20333 = 0.03176890082881835;
        bool r20334 = r20330 <= r20333;
        double r20335 = !r20334;
        bool r20336 = r20332 || r20335;
        double r20337 = 1.0;
        double r20338 = r20337 / r20330;
        double r20339 = 1.0;
        double r20340 = cos(r20330);
        double r20341 = r20339 - r20340;
        double r20342 = r20341 / r20330;
        double r20343 = r20338 * r20342;
        double r20344 = 0.001388888888888889;
        double r20345 = 4.0;
        double r20346 = pow(r20330, r20345);
        double r20347 = r20344 * r20346;
        double r20348 = 0.5;
        double r20349 = r20347 + r20348;
        double r20350 = 0.041666666666666664;
        double r20351 = 2.0;
        double r20352 = pow(r20330, r20351);
        double r20353 = r20350 * r20352;
        double r20354 = r20349 - r20353;
        double r20355 = r20336 ? r20343 : r20354;
        return r20355;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if x < -0.033395966236815566 or 0.03176890082881835 < x

    1. Initial program 1.1

      \[\frac{1 - \cos x}{x \cdot x}\]
    2. Using strategy rm
    3. Applied div-sub1.2

      \[\leadsto \color{blue}{\frac{1}{x \cdot x} - \frac{\cos x}{x \cdot x}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity1.2

      \[\leadsto \frac{1}{x \cdot x} - \frac{\color{blue}{1 \cdot \cos x}}{x \cdot x}\]
    6. Applied times-frac1.2

      \[\leadsto \frac{1}{x \cdot x} - \color{blue}{\frac{1}{x} \cdot \frac{\cos x}{x}}\]
    7. Applied *-un-lft-identity1.2

      \[\leadsto \frac{\color{blue}{1 \cdot 1}}{x \cdot x} - \frac{1}{x} \cdot \frac{\cos x}{x}\]
    8. Applied times-frac0.7

      \[\leadsto \color{blue}{\frac{1}{x} \cdot \frac{1}{x}} - \frac{1}{x} \cdot \frac{\cos x}{x}\]
    9. Applied distribute-lft-out--0.6

      \[\leadsto \color{blue}{\frac{1}{x} \cdot \left(\frac{1}{x} - \frac{\cos x}{x}\right)}\]
    10. Simplified0.5

      \[\leadsto \frac{1}{x} \cdot \color{blue}{\frac{1 - \cos x}{x}}\]

    if -0.033395966236815566 < x < 0.03176890082881835

    1. Initial program 62.4

      \[\frac{1 - \cos x}{x \cdot x}\]
    2. Taylor expanded around 0 0.0

      \[\leadsto \color{blue}{\left(\frac{1}{720} \cdot {x}^{4} + \frac{1}{2}\right) - \frac{1}{24} \cdot {x}^{2}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -0.033395966236815566 \lor \neg \left(x \le 0.03176890082881835\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}\]

Reproduce

herbie shell --seed 2020064 
(FPCore (x)
  :name "cos2 (problem 3.4.1)"
  :precision binary64
  (/ (- 1 (cos x)) (* x x)))