Average Error: 39.7 → 15.8
Time: 12.9s
Precision: 64
\[\cos \left(x + \varepsilon\right) - \cos x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le \frac{-6457174413487957}{36893488147419103232} \lor \neg \left(\varepsilon \le \frac{6058263222398397}{302231454903657293676544}\right):\\ \;\;\;\;\cos \varepsilon \cdot \cos x - \left(\sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}} + \cos x\right)\\ \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{-6457174413487957}{36893488147419103232} \lor \neg \left(\varepsilon \le \frac{6058263222398397}{302231454903657293676544}\right):\\
\;\;\;\;\cos \varepsilon \cdot \cos x - \left(\sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}} + \cos x\right)\\

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

\end{array}
double f(double x, double eps) {
        double r209207 = x;
        double r209208 = eps;
        double r209209 = r209207 + r209208;
        double r209210 = cos(r209209);
        double r209211 = cos(r209207);
        double r209212 = r209210 - r209211;
        return r209212;
}

double f(double x, double eps) {
        double r209213 = eps;
        double r209214 = -6457174413487957.0;
        double r209215 = 3.6893488147419103e+19;
        double r209216 = r209214 / r209215;
        bool r209217 = r209213 <= r209216;
        double r209218 = 6058263222398397.0;
        double r209219 = 3.022314549036573e+23;
        double r209220 = r209218 / r209219;
        bool r209221 = r209213 <= r209220;
        double r209222 = !r209221;
        bool r209223 = r209217 || r209222;
        double r209224 = cos(r209213);
        double r209225 = x;
        double r209226 = cos(r209225);
        double r209227 = r209224 * r209226;
        double r209228 = sin(r209225);
        double r209229 = sin(r209213);
        double r209230 = r209228 * r209229;
        double r209231 = 3.0;
        double r209232 = pow(r209230, r209231);
        double r209233 = cbrt(r209232);
        double r209234 = r209233 + r209226;
        double r209235 = r209227 - r209234;
        double r209236 = 4.0;
        double r209237 = pow(r209213, r209236);
        double r209238 = 24.0;
        double r209239 = r209237 / r209238;
        double r209240 = r209225 * r209213;
        double r209241 = 2.0;
        double r209242 = pow(r209213, r209241);
        double r209243 = -r209242;
        double r209244 = r209243 / r209241;
        double r209245 = r209240 - r209244;
        double r209246 = r209239 - r209245;
        double r209247 = r209223 ? r209235 : r209246;
        return r209247;
}

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.0001750220631805364 or 2.004511153324394e-08 < eps

    1. Initial program 30.2

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

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

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

      \[\leadsto \cos \varepsilon \cdot \cos x - \left(\sin x \cdot \color{blue}{\sqrt[3]{\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon}} + \cos x\right)\]
    7. Applied add-cbrt-cube1.2

      \[\leadsto \cos \varepsilon \cdot \cos x - \left(\color{blue}{\sqrt[3]{\left(\sin x \cdot \sin x\right) \cdot \sin x}} \cdot \sqrt[3]{\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon} + \cos x\right)\]
    8. Applied cbrt-unprod1.1

      \[\leadsto \cos \varepsilon \cdot \cos x - \left(\color{blue}{\sqrt[3]{\left(\left(\sin x \cdot \sin x\right) \cdot \sin x\right) \cdot \left(\left(\sin \varepsilon \cdot \sin \varepsilon\right) \cdot \sin \varepsilon\right)}} + \cos x\right)\]
    9. Simplified1.1

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

    if -0.0001750220631805364 < eps < 2.004511153324394e-08

    1. Initial program 49.6

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

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

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

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

      \[\leadsto \color{blue}{\frac{{\varepsilon}^{4}}{24} - \left(x \cdot \varepsilon - \frac{-{\varepsilon}^{2}}{2}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification15.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le \frac{-6457174413487957}{36893488147419103232} \lor \neg \left(\varepsilon \le \frac{6058263222398397}{302231454903657293676544}\right):\\ \;\;\;\;\cos \varepsilon \cdot \cos x - \left(\sqrt[3]{{\left(\sin x \cdot \sin \varepsilon\right)}^{3}} + \cos x\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{{\varepsilon}^{4}}{24} - \left(x \cdot \varepsilon - \frac{-{\varepsilon}^{2}}{2}\right)\\ \end{array}\]

Reproduce

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