Average Error: 37.0 → 0.5
Time: 24.2s
Precision: 64
\[\sin \left(x + \varepsilon\right) - \sin x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -6.003662832459115 \cdot 10^{-08}:\\ \;\;\;\;\frac{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) - \sin x \cdot \sin x}{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) + \sin x}\\ \mathbf{elif}\;\varepsilon \le 4.6205156282696306 \cdot 10^{-12}:\\ \;\;\;\;\left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \cos \left(\frac{x + \left(x + \varepsilon\right)}{2}\right)\right) \cdot 2\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\left(\left(\sin x \cdot \cos \varepsilon\right) \cdot \left(\sin x \cdot \cos \varepsilon\right)\right) \cdot \left(\sin x \cdot \cos \varepsilon\right)} + \left(\cos x \cdot \sin \varepsilon - \sin x\right)\\ \end{array}\]
\sin \left(x + \varepsilon\right) - \sin x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -6.003662832459115 \cdot 10^{-08}:\\
\;\;\;\;\frac{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) - \sin x \cdot \sin x}{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) + \sin x}\\

\mathbf{elif}\;\varepsilon \le 4.6205156282696306 \cdot 10^{-12}:\\
\;\;\;\;\left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \cos \left(\frac{x + \left(x + \varepsilon\right)}{2}\right)\right) \cdot 2\\

\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\left(\left(\sin x \cdot \cos \varepsilon\right) \cdot \left(\sin x \cdot \cos \varepsilon\right)\right) \cdot \left(\sin x \cdot \cos \varepsilon\right)} + \left(\cos x \cdot \sin \varepsilon - \sin x\right)\\

\end{array}
double f(double x, double eps) {
        double r8061262 = x;
        double r8061263 = eps;
        double r8061264 = r8061262 + r8061263;
        double r8061265 = sin(r8061264);
        double r8061266 = sin(r8061262);
        double r8061267 = r8061265 - r8061266;
        return r8061267;
}

double f(double x, double eps) {
        double r8061268 = eps;
        double r8061269 = -6.003662832459115e-08;
        bool r8061270 = r8061268 <= r8061269;
        double r8061271 = x;
        double r8061272 = sin(r8061271);
        double r8061273 = cos(r8061268);
        double r8061274 = r8061272 * r8061273;
        double r8061275 = cos(r8061271);
        double r8061276 = sin(r8061268);
        double r8061277 = r8061275 * r8061276;
        double r8061278 = r8061274 + r8061277;
        double r8061279 = r8061278 * r8061278;
        double r8061280 = r8061272 * r8061272;
        double r8061281 = r8061279 - r8061280;
        double r8061282 = r8061278 + r8061272;
        double r8061283 = r8061281 / r8061282;
        double r8061284 = 4.6205156282696306e-12;
        bool r8061285 = r8061268 <= r8061284;
        double r8061286 = 2.0;
        double r8061287 = r8061268 / r8061286;
        double r8061288 = sin(r8061287);
        double r8061289 = r8061271 + r8061268;
        double r8061290 = r8061271 + r8061289;
        double r8061291 = r8061290 / r8061286;
        double r8061292 = cos(r8061291);
        double r8061293 = r8061288 * r8061292;
        double r8061294 = r8061293 * r8061286;
        double r8061295 = r8061274 * r8061274;
        double r8061296 = r8061295 * r8061274;
        double r8061297 = cbrt(r8061296);
        double r8061298 = r8061277 - r8061272;
        double r8061299 = r8061297 + r8061298;
        double r8061300 = r8061285 ? r8061294 : r8061299;
        double r8061301 = r8061270 ? r8061283 : r8061300;
        return r8061301;
}

Error

Bits error versus x

Bits error versus eps

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original37.0
Target15.2
Herbie0.5
\[2 \cdot \left(\cos \left(x + \frac{\varepsilon}{2}\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)\]

Derivation

  1. Split input into 3 regimes
  2. if eps < -6.003662832459115e-08

    1. Initial program 30.0

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

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

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

    if -6.003662832459115e-08 < eps < 4.6205156282696306e-12

    1. Initial program 45.1

      \[\sin \left(x + \varepsilon\right) - \sin x\]
    2. Using strategy rm
    3. Applied diff-sin45.1

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

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

    if 4.6205156282696306e-12 < eps

    1. Initial program 29.3

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

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

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

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

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

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

      \[\leadsto \sqrt[3]{\color{blue}{\left(\left(\cos \varepsilon \cdot \sin x\right) \cdot \left(\cos \varepsilon \cdot \sin x\right)\right) \cdot \left(\cos \varepsilon \cdot \sin x\right)}} + \left(\cos x \cdot \sin \varepsilon - \sin x\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -6.003662832459115 \cdot 10^{-08}:\\ \;\;\;\;\frac{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) \cdot \left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) - \sin x \cdot \sin x}{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) + \sin x}\\ \mathbf{elif}\;\varepsilon \le 4.6205156282696306 \cdot 10^{-12}:\\ \;\;\;\;\left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \cos \left(\frac{x + \left(x + \varepsilon\right)}{2}\right)\right) \cdot 2\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{\left(\left(\sin x \cdot \cos \varepsilon\right) \cdot \left(\sin x \cdot \cos \varepsilon\right)\right) \cdot \left(\sin x \cdot \cos \varepsilon\right)} + \left(\cos x \cdot \sin \varepsilon - \sin x\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019107 
(FPCore (x eps)
  :name "2sin (example 3.3)"

  :herbie-target
  (* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))

  (- (sin (+ x eps)) (sin x)))