Average Error: 39.3 → 15.8
Time: 20.8s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le \frac{-2208485107613559}{18446744073709551616} \lor \neg \left(\varepsilon \le \frac{4576821635158953}{4.676805239458889338251791464692105662899 \cdot 10^{49}}\right):\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\ \mathbf{else}:\\ \;\;\;\;\frac{{\varepsilon}^{4}}{24} - \left(x \cdot \varepsilon - \frac{-{\varepsilon}^{2}}{2}\right)\\ \end{array}\]
\cos \left(x + \varepsilon\right) - \cos x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le \frac{-2208485107613559}{18446744073709551616} \lor \neg \left(\varepsilon \le \frac{4576821635158953}{4.676805239458889338251791464692105662899 \cdot 10^{49}}\right):\\
\;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\

\mathbf{else}:\\
\;\;\;\;\frac{{\varepsilon}^{4}}{24} - \left(x \cdot \varepsilon - \frac{-{\varepsilon}^{2}}{2}\right)\\

\end{array}
double f(double x, double eps) {
        double r33175 = x;
        double r33176 = eps;
        double r33177 = r33175 + r33176;
        double r33178 = cos(r33177);
        double r33179 = cos(r33175);
        double r33180 = r33178 - r33179;
        return r33180;
}

double f(double x, double eps) {
        double r33181 = eps;
        double r33182 = -2208485107613559.0;
        double r33183 = 1.8446744073709552e+19;
        double r33184 = r33182 / r33183;
        bool r33185 = r33181 <= r33184;
        double r33186 = 4576821635158953.0;
        double r33187 = 4.6768052394588893e+49;
        double r33188 = r33186 / r33187;
        bool r33189 = r33181 <= r33188;
        double r33190 = !r33189;
        bool r33191 = r33185 || r33190;
        double r33192 = x;
        double r33193 = cos(r33192);
        double r33194 = cos(r33181);
        double r33195 = r33193 * r33194;
        double r33196 = sin(r33192);
        double r33197 = sin(r33181);
        double r33198 = r33196 * r33197;
        double r33199 = r33195 - r33198;
        double r33200 = r33199 - r33193;
        double r33201 = 4.0;
        double r33202 = pow(r33181, r33201);
        double r33203 = 24.0;
        double r33204 = r33202 / r33203;
        double r33205 = r33192 * r33181;
        double r33206 = 2.0;
        double r33207 = pow(r33181, r33206);
        double r33208 = -r33207;
        double r33209 = r33208 / r33206;
        double r33210 = r33205 - r33209;
        double r33211 = r33204 - r33210;
        double r33212 = r33191 ? r33200 : r33211;
        return r33212;
}

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 < -0.00011972221757882519

    1. Initial program 30.8

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

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

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

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

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

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

      \[\leadsto \color{blue}{\log \left(\frac{\frac{e^{\cos x \cdot \cos \varepsilon}}{e^{\sin x \cdot \sin \varepsilon}}}{e^{\cos x}}\right)}\]
    10. Simplified1.0

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

    if -0.00011972221757882519 < eps < 9.786213880671446e-35

    1. Initial program 48.1

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

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Taylor expanded around inf 47.8

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

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

      \[\leadsto \color{blue}{\frac{{\varepsilon}^{4}}{24} - \left(x \cdot \varepsilon - \frac{-{\varepsilon}^{2}}{2}\right)}\]

    if 9.786213880671446e-35 < eps

    1. Initial program 32.2

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

      \[\leadsto \color{blue}{\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right)} - \cos x\]
    4. Taylor expanded around inf 5.6

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le \frac{-2208485107613559}{18446744073709551616} \lor \neg \left(\varepsilon \le \frac{4576821635158953}{4.676805239458889338251791464692105662899 \cdot 10^{49}}\right):\\ \;\;\;\;\left(\cos x \cdot \cos \varepsilon - \sin x \cdot \sin \varepsilon\right) - \cos x\\ \mathbf{else}:\\ \;\;\;\;\frac{{\varepsilon}^{4}}{24} - \left(x \cdot \varepsilon - \frac{-{\varepsilon}^{2}}{2}\right)\\ \end{array}\]

Reproduce

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