Average Error: 37.0 → 0.5
Time: 24.5s
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 r8165277 = x;
        double r8165278 = eps;
        double r8165279 = r8165277 + r8165278;
        double r8165280 = sin(r8165279);
        double r8165281 = sin(r8165277);
        double r8165282 = r8165280 - r8165281;
        return r8165282;
}

double f(double x, double eps) {
        double r8165283 = eps;
        double r8165284 = -6.003662832459115e-08;
        bool r8165285 = r8165283 <= r8165284;
        double r8165286 = x;
        double r8165287 = sin(r8165286);
        double r8165288 = cos(r8165283);
        double r8165289 = r8165287 * r8165288;
        double r8165290 = cos(r8165286);
        double r8165291 = sin(r8165283);
        double r8165292 = r8165290 * r8165291;
        double r8165293 = r8165289 + r8165292;
        double r8165294 = r8165293 * r8165293;
        double r8165295 = r8165287 * r8165287;
        double r8165296 = r8165294 - r8165295;
        double r8165297 = r8165293 + r8165287;
        double r8165298 = r8165296 / r8165297;
        double r8165299 = 4.6205156282696306e-12;
        bool r8165300 = r8165283 <= r8165299;
        double r8165301 = 2.0;
        double r8165302 = r8165283 / r8165301;
        double r8165303 = sin(r8165302);
        double r8165304 = r8165286 + r8165283;
        double r8165305 = r8165286 + r8165304;
        double r8165306 = r8165305 / r8165301;
        double r8165307 = cos(r8165306);
        double r8165308 = r8165303 * r8165307;
        double r8165309 = r8165308 * r8165301;
        double r8165310 = r8165289 * r8165289;
        double r8165311 = r8165310 * r8165289;
        double r8165312 = cbrt(r8165311);
        double r8165313 = r8165292 - r8165287;
        double r8165314 = r8165312 + r8165313;
        double r8165315 = r8165300 ? r8165309 : r8165314;
        double r8165316 = r8165285 ? r8165298 : r8165315;
        return r8165316;
}

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