Average Error: 39.5 → 0.4
Time: 16.0s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[-2 \cdot \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x + \cos x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)\]
\cos \left(x + \varepsilon\right) - \cos x
-2 \cdot \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x + \cos x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)
double f(double x, double eps) {
        double r63687 = x;
        double r63688 = eps;
        double r63689 = r63687 + r63688;
        double r63690 = cos(r63689);
        double r63691 = cos(r63687);
        double r63692 = r63690 - r63691;
        return r63692;
}

double f(double x, double eps) {
        double r63693 = -2.0;
        double r63694 = 0.5;
        double r63695 = eps;
        double r63696 = r63694 * r63695;
        double r63697 = cos(r63696);
        double r63698 = x;
        double r63699 = sin(r63698);
        double r63700 = r63697 * r63699;
        double r63701 = cos(r63698);
        double r63702 = sin(r63696);
        double r63703 = r63701 * r63702;
        double r63704 = r63700 + r63703;
        double r63705 = log1p(r63704);
        double r63706 = expm1(r63705);
        double r63707 = 2.0;
        double r63708 = r63695 / r63707;
        double r63709 = sin(r63708);
        double r63710 = r63706 * r63709;
        double r63711 = r63693 * r63710;
        return r63711;
}

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. Initial program 39.5

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

    \[\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. Simplified15.1

    \[\leadsto -2 \cdot \color{blue}{\left(\sin \left(\frac{\varepsilon + 0}{2}\right) \cdot \sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)}\]
  5. Using strategy rm
  6. Applied expm1-log1p-u15.2

    \[\leadsto -2 \cdot \left(\sin \left(\frac{\varepsilon + 0}{2}\right) \cdot \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\sin \left(\frac{\left(x + \varepsilon\right) + x}{2}\right)\right)\right)}\right)\]
  7. Simplified15.1

    \[\leadsto -2 \cdot \left(\sin \left(\frac{\varepsilon + 0}{2}\right) \cdot \mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\sin \left(\mathsf{fma}\left(x, 1, \frac{1}{2} \cdot \varepsilon\right)\right)\right)}\right)\right)\]
  8. Using strategy rm
  9. Applied fma-udef15.1

    \[\leadsto -2 \cdot \left(\sin \left(\frac{\varepsilon + 0}{2}\right) \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\sin \color{blue}{\left(x \cdot 1 + \frac{1}{2} \cdot \varepsilon\right)}\right)\right)\right)\]
  10. Applied sin-sum0.4

    \[\leadsto -2 \cdot \left(\sin \left(\frac{\varepsilon + 0}{2}\right) \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\color{blue}{\sin \left(x \cdot 1\right) \cdot \cos \left(\frac{1}{2} \cdot \varepsilon\right) + \cos \left(x \cdot 1\right) \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)}\right)\right)\right)\]
  11. Simplified0.4

    \[\leadsto -2 \cdot \left(\sin \left(\frac{\varepsilon + 0}{2}\right) \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\color{blue}{\cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x} + \cos \left(x \cdot 1\right) \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)\right)\right)\]
  12. Simplified0.4

    \[\leadsto -2 \cdot \left(\sin \left(\frac{\varepsilon + 0}{2}\right) \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x + \color{blue}{\cos x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)}\right)\right)\right)\]
  13. Using strategy rm
  14. Applied *-un-lft-identity0.4

    \[\leadsto -2 \cdot \left(\sin \left(\frac{\varepsilon + 0}{2}\right) \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x + \color{blue}{1 \cdot \left(\cos x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)}\right)\right)\right)\]
  15. Final simplification0.4

    \[\leadsto -2 \cdot \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x + \cos x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)\]

Reproduce

herbie shell --seed 2020045 +o rules:numerics
(FPCore (x eps)
  :name "2cos (problem 3.3.5)"
  :precision binary64
  (- (cos (+ x eps)) (cos x)))