Average Error: 39.6 → 17.3
Time: 8.0s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -7.952525266384431621204720084366753382988 \cdot 10^{-50}:\\ \;\;\;\;\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\\ \mathbf{elif}\;\varepsilon \le 8.780898233035090036695397525560243152942 \cdot 10^{-11}:\\ \;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\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}\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -7.952525266384431621204720084366753382988 \cdot 10^{-50}:\\
\;\;\;\;\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\\

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

\mathbf{else}:\\
\;\;\;\;\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}\\

\end{array}
double f(double x, double eps) {
        double r32788 = x;
        double r32789 = eps;
        double r32790 = r32788 + r32789;
        double r32791 = cos(r32790);
        double r32792 = cos(r32788);
        double r32793 = r32791 - r32792;
        return r32793;
}

double f(double x, double eps) {
        double r32794 = eps;
        double r32795 = -7.952525266384432e-50;
        bool r32796 = r32794 <= r32795;
        double r32797 = x;
        double r32798 = cos(r32797);
        double r32799 = cos(r32794);
        double r32800 = r32798 * r32799;
        double r32801 = r32800 * r32800;
        double r32802 = sin(r32797);
        double r32803 = sin(r32794);
        double r32804 = r32802 * r32803;
        double r32805 = r32804 * r32804;
        double r32806 = r32801 - r32805;
        double r32807 = r32800 + r32804;
        double r32808 = r32806 / r32807;
        double r32809 = r32808 - r32798;
        double r32810 = 8.78089823303509e-11;
        bool r32811 = r32794 <= r32810;
        double r32812 = 0.16666666666666666;
        double r32813 = 3.0;
        double r32814 = pow(r32797, r32813);
        double r32815 = r32812 * r32814;
        double r32816 = r32815 - r32797;
        double r32817 = 0.5;
        double r32818 = r32794 * r32817;
        double r32819 = r32816 - r32818;
        double r32820 = r32794 * r32819;
        double r32821 = r32800 - r32804;
        double r32822 = pow(r32821, r32813);
        double r32823 = pow(r32798, r32813);
        double r32824 = r32822 - r32823;
        double r32825 = r32799 * r32798;
        double r32826 = r32825 - r32804;
        double r32827 = r32821 + r32798;
        double r32828 = r32826 * r32827;
        double r32829 = r32798 * r32798;
        double r32830 = r32828 + r32829;
        double r32831 = r32824 / r32830;
        double r32832 = r32811 ? r32820 : r32831;
        double r32833 = r32796 ? r32809 : r32832;
        return r32833;
}

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 < -7.952525266384432e-50

    1. Initial program 33.5

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

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

      \[\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\]

    if -7.952525266384432e-50 < eps < 8.78089823303509e-11

    1. Initial program 48.6

      \[\cos \left(x + \varepsilon\right) - \cos x\]
    2. Taylor expanded around 0 32.0

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

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

    if 8.78089823303509e-11 < eps

    1. Initial program 30.1

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

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

      \[\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. Simplified1.6

      \[\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}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification17.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -7.952525266384431621204720084366753382988 \cdot 10^{-50}:\\ \;\;\;\;\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\\ \mathbf{elif}\;\varepsilon \le 8.780898233035090036695397525560243152942 \cdot 10^{-11}:\\ \;\;\;\;\varepsilon \cdot \left(\left(\frac{1}{6} \cdot {x}^{3} - x\right) - \varepsilon \cdot \frac{1}{2}\right)\\ \mathbf{else}:\\ \;\;\;\;\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}\\ \end{array}\]

Reproduce

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