Average Error: 31.6 → 0.2
Time: 3.6s
Precision: 64
\[\frac{1 - \cos x}{x \cdot x}\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.02993031743019760812507534808446507668123 \lor \neg \left(x \le 0.03087561509222142355768347954381169984117\right):\\ \;\;\;\;\frac{-1 \cdot \frac{\cos x - 1}{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.02993031743019760812507534808446507668123 \lor \neg \left(x \le 0.03087561509222142355768347954381169984117\right):\\
\;\;\;\;\frac{-1 \cdot \frac{\cos x - 1}{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 r27820 = 1.0;
        double r27821 = x;
        double r27822 = cos(r27821);
        double r27823 = r27820 - r27822;
        double r27824 = r27821 * r27821;
        double r27825 = r27823 / r27824;
        return r27825;
}

double f(double x) {
        double r27826 = x;
        double r27827 = -0.029930317430197608;
        bool r27828 = r27826 <= r27827;
        double r27829 = 0.030875615092221424;
        bool r27830 = r27826 <= r27829;
        double r27831 = !r27830;
        bool r27832 = r27828 || r27831;
        double r27833 = -1.0;
        double r27834 = cos(r27826);
        double r27835 = 1.0;
        double r27836 = r27834 - r27835;
        double r27837 = r27836 / r27826;
        double r27838 = r27833 * r27837;
        double r27839 = r27838 / r27826;
        double r27840 = 0.001388888888888889;
        double r27841 = 4.0;
        double r27842 = pow(r27826, r27841);
        double r27843 = r27840 * r27842;
        double r27844 = 0.5;
        double r27845 = r27843 + r27844;
        double r27846 = 0.041666666666666664;
        double r27847 = 2.0;
        double r27848 = pow(r27826, r27847);
        double r27849 = r27846 * r27848;
        double r27850 = r27845 - r27849;
        double r27851 = r27832 ? r27839 : r27850;
        return r27851;
}

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.029930317430197608 or 0.030875615092221424 < x

    1. Initial program 1.1

      \[\frac{1 - \cos x}{x \cdot x}\]
    2. Using strategy rm
    3. Applied associate-/r*0.5

      \[\leadsto \color{blue}{\frac{\frac{1 - \cos x}{x}}{x}}\]
    4. Taylor expanded around -inf 0.5

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

    if -0.029930317430197608 < x < 0.030875615092221424

    1. Initial program 62.2

      \[\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.02993031743019760812507534808446507668123 \lor \neg \left(x \le 0.03087561509222142355768347954381169984117\right):\\ \;\;\;\;\frac{-1 \cdot \frac{\cos x - 1}{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 2019362 
(FPCore (x)
  :name "cos2 (problem 3.4.1)"
  :precision binary64
  (/ (- 1 (cos x)) (* x x)))