Average Error: 37.1 → 0.4
Time: 18.9s
Precision: 64
\[\sin \left(x + \varepsilon\right) - \sin x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -4.8405504526778714 \cdot 10^{-08}:\\ \;\;\;\;\left(\cos x \cdot \sin \varepsilon - \sin x\right) + \sin x \cdot \cos \varepsilon\\ \mathbf{elif}\;\varepsilon \le 2.017940082101193 \cdot 10^{-09}:\\ \;\;\;\;2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \cos \left(\frac{x + \left(x + \varepsilon\right)}{2}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) - \sin x\\ \end{array}\]
\sin \left(x + \varepsilon\right) - \sin x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -4.8405504526778714 \cdot 10^{-08}:\\
\;\;\;\;\left(\cos x \cdot \sin \varepsilon - \sin x\right) + \sin x \cdot \cos \varepsilon\\

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

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

\end{array}
double f(double x, double eps) {
        double r4336695 = x;
        double r4336696 = eps;
        double r4336697 = r4336695 + r4336696;
        double r4336698 = sin(r4336697);
        double r4336699 = sin(r4336695);
        double r4336700 = r4336698 - r4336699;
        return r4336700;
}

double f(double x, double eps) {
        double r4336701 = eps;
        double r4336702 = -4.8405504526778714e-08;
        bool r4336703 = r4336701 <= r4336702;
        double r4336704 = x;
        double r4336705 = cos(r4336704);
        double r4336706 = sin(r4336701);
        double r4336707 = r4336705 * r4336706;
        double r4336708 = sin(r4336704);
        double r4336709 = r4336707 - r4336708;
        double r4336710 = cos(r4336701);
        double r4336711 = r4336708 * r4336710;
        double r4336712 = r4336709 + r4336711;
        double r4336713 = 2.017940082101193e-09;
        bool r4336714 = r4336701 <= r4336713;
        double r4336715 = 2.0;
        double r4336716 = r4336701 / r4336715;
        double r4336717 = sin(r4336716);
        double r4336718 = r4336704 + r4336701;
        double r4336719 = r4336704 + r4336718;
        double r4336720 = r4336719 / r4336715;
        double r4336721 = cos(r4336720);
        double r4336722 = r4336717 * r4336721;
        double r4336723 = r4336715 * r4336722;
        double r4336724 = r4336711 + r4336707;
        double r4336725 = r4336724 - r4336708;
        double r4336726 = r4336714 ? r4336723 : r4336725;
        double r4336727 = r4336703 ? r4336712 : r4336726;
        return r4336727;
}

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.1
Target15.3
Herbie0.4
\[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 < -4.8405504526778714e-08

    1. Initial program 29.1

      \[\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. Applied associate--l+0.5

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

    if -4.8405504526778714e-08 < eps < 2.017940082101193e-09

    1. Initial program 45.3

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

      \[\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(\sin \left(\frac{\varepsilon}{2}\right) \cdot \cos \left(\frac{x + \left(x + \varepsilon\right)}{2}\right)\right)}\]

    if 2.017940082101193e-09 < eps

    1. Initial program 30.2

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

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

Reproduce

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

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

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