Average Error: 39.5 → 16.0
Time: 7.9s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -2.49577892975883131 \cdot 10^{-15}:\\ \;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\ \mathbf{elif}\;\varepsilon \le 3.29102456452854126 \cdot 10^{-8}:\\ \;\;\;\;\frac{1}{6} \cdot \left({x}^{3} \cdot \varepsilon\right) - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\cos x \cdot \cos \varepsilon - \log \left(e^{\sin x \cdot \sin \varepsilon + \cos x}\right)\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -2.49577892975883131 \cdot 10^{-15}:\\
\;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\

\mathbf{elif}\;\varepsilon \le 3.29102456452854126 \cdot 10^{-8}:\\
\;\;\;\;\frac{1}{6} \cdot \left({x}^{3} \cdot \varepsilon\right) - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\

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

\end{array}
double f(double x, double eps) {
        double r34262 = x;
        double r34263 = eps;
        double r34264 = r34262 + r34263;
        double r34265 = cos(r34264);
        double r34266 = cos(r34262);
        double r34267 = r34265 - r34266;
        return r34267;
}

double f(double x, double eps) {
        double r34268 = eps;
        double r34269 = -2.4957789297588313e-15;
        bool r34270 = r34268 <= r34269;
        double r34271 = x;
        double r34272 = cos(r34271);
        double r34273 = cos(r34268);
        double r34274 = r34272 * r34273;
        double r34275 = sin(r34271);
        double r34276 = sin(r34268);
        double r34277 = r34275 * r34276;
        double r34278 = r34274 - r34277;
        double r34279 = 3.0;
        double r34280 = pow(r34278, r34279);
        double r34281 = pow(r34272, r34279);
        double r34282 = r34280 - r34281;
        double r34283 = r34273 * r34272;
        double r34284 = r34283 - r34277;
        double r34285 = r34278 + r34272;
        double r34286 = r34284 * r34285;
        double r34287 = r34272 * r34272;
        double r34288 = r34286 + r34287;
        double r34289 = r34282 / r34288;
        double r34290 = 3.291024564528541e-08;
        bool r34291 = r34268 <= r34290;
        double r34292 = 0.16666666666666666;
        double r34293 = pow(r34271, r34279);
        double r34294 = r34293 * r34268;
        double r34295 = r34292 * r34294;
        double r34296 = r34271 * r34268;
        double r34297 = 0.5;
        double r34298 = 2.0;
        double r34299 = pow(r34268, r34298);
        double r34300 = r34297 * r34299;
        double r34301 = r34296 + r34300;
        double r34302 = r34295 - r34301;
        double r34303 = r34277 + r34272;
        double r34304 = exp(r34303);
        double r34305 = log(r34304);
        double r34306 = r34274 - r34305;
        double r34307 = r34291 ? r34302 : r34306;
        double r34308 = r34270 ? r34289 : r34307;
        return r34308;
}

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 3 regimes
  2. if eps < -2.4957789297588313e-15

    1. Initial program 31.5

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

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Using strategy rm
    5. Applied flip3--2.3

      \[\leadsto \color{blue}{\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \left(\cos x \cdot \cos x + \left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) \cdot \cos x\right)}}\]
    6. Simplified2.3

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

    if -2.4957789297588313e-15 < eps < 3.291024564528541e-08

    1. Initial program 48.8

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

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Using strategy rm
    5. Applied flip--48.7

      \[\leadsto \color{blue}{\frac{\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(\cos x \cdot \cos \varepsilon\right) - \left(\sin x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \sin \varepsilon\right)}{\cos x \cdot \cos \varepsilon + \sin x \cdot \sin \varepsilon}} - \cos x\]
    6. Taylor expanded around 0 31.3

      \[\leadsto \color{blue}{\frac{1}{6} \cdot \left({x}^{3} \cdot \varepsilon\right) - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)}\]

    if 3.291024564528541e-08 < eps

    1. Initial program 30.1

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

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Applied associate--l-1.1

      \[\leadsto \color{blue}{\cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \cos x\right)}\]
    5. Using strategy rm
    6. Applied add-log-exp1.1

      \[\leadsto \cos x \cdot \cos \varepsilon - \left(\sin x \cdot \sin \varepsilon + \color{blue}{\log \left(e^{\cos x}\right)}\right)\]
    7. Applied add-log-exp1.2

      \[\leadsto \cos x \cdot \cos \varepsilon - \left(\color{blue}{\log \left(e^{\sin x \cdot \sin \varepsilon}\right)} + \log \left(e^{\cos x}\right)\right)\]
    8. Applied sum-log1.2

      \[\leadsto \cos x \cdot \cos \varepsilon - \color{blue}{\log \left(e^{\sin x \cdot \sin \varepsilon} \cdot e^{\cos x}\right)}\]
    9. Simplified1.1

      \[\leadsto \cos x \cdot \cos \varepsilon - \log \color{blue}{\left(e^{\sin x \cdot \sin \varepsilon + \cos x}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification16.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -2.49577892975883131 \cdot 10^{-15}:\\ \;\;\;\;\frac{{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos \varepsilon \cdot \cos x - \sin x \cdot \sin \varepsilon\right) \cdot \left(\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) + \cos x\right) + \cos x \cdot \cos x}\\ \mathbf{elif}\;\varepsilon \le 3.29102456452854126 \cdot 10^{-8}:\\ \;\;\;\;\frac{1}{6} \cdot \left({x}^{3} \cdot \varepsilon\right) - \left(x \cdot \varepsilon + \frac{1}{2} \cdot {\varepsilon}^{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\cos x \cdot \cos \varepsilon - \log \left(e^{\sin x \cdot \sin \varepsilon + \cos x}\right)\\ \end{array}\]

Reproduce

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