Average Error: 39.2 → 0.7
Time: 24.4s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -0.0001322493479089982:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\ \mathbf{elif}\;\varepsilon \le 0.00010993973433856837:\\ \;\;\;\;-2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -0.0001322493479089982:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\

\mathbf{elif}\;\varepsilon \le 0.00010993973433856837:\\
\;\;\;\;-2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\

\end{array}
double f(double x, double eps) {
        double r1645047 = x;
        double r1645048 = eps;
        double r1645049 = r1645047 + r1645048;
        double r1645050 = cos(r1645049);
        double r1645051 = cos(r1645047);
        double r1645052 = r1645050 - r1645051;
        return r1645052;
}

double f(double x, double eps) {
        double r1645053 = eps;
        double r1645054 = -0.0001322493479089982;
        bool r1645055 = r1645053 <= r1645054;
        double r1645056 = x;
        double r1645057 = cos(r1645056);
        double r1645058 = cos(r1645053);
        double r1645059 = r1645057 * r1645058;
        double r1645060 = sin(r1645056);
        double r1645061 = sin(r1645053);
        double r1645062 = r1645060 * r1645061;
        double r1645063 = r1645059 - r1645062;
        double r1645064 = r1645063 - r1645057;
        double r1645065 = 0.00010993973433856837;
        bool r1645066 = r1645053 <= r1645065;
        double r1645067 = -2.0;
        double r1645068 = 2.0;
        double r1645069 = r1645053 / r1645068;
        double r1645070 = sin(r1645069);
        double r1645071 = r1645056 + r1645053;
        double r1645072 = r1645071 + r1645056;
        double r1645073 = r1645072 / r1645068;
        double r1645074 = sin(r1645073);
        double r1645075 = r1645070 * r1645074;
        double r1645076 = r1645067 * r1645075;
        double r1645077 = r1645066 ? r1645076 : r1645064;
        double r1645078 = r1645055 ? r1645064 : r1645077;
        return r1645078;
}

Error

Bits error versus x

Bits error versus eps

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if eps < -0.0001322493479089982 or 0.00010993973433856837 < eps

    1. Initial program 30.1

      \[\cos \left(x + \varepsilon\right) - \cos x\]
    2. Using strategy rm
    3. Applied cos-sum0.9

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]

    if -0.0001322493479089982 < eps < 0.00010993973433856837

    1. Initial program 48.9

      \[\cos \left(x + \varepsilon\right) - \cos x\]
    2. Using strategy rm
    3. Applied diff-cos37.6

      \[\leadsto \color{blue}{-2 \cdot \left(\sin \left(\frac{\left(x + \varepsilon\right) - x}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)}\]
    4. Simplified0.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -0.0001322493479089982:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\ \mathbf{elif}\;\varepsilon \le 0.00010993973433856837:\\ \;\;\;\;-2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\ \end{array}\]

Reproduce

herbie shell --seed 2019133 
(FPCore (x eps)
  :name "2cos (problem 3.3.5)"
  (- (cos (+ x eps)) (cos x)))