Average Error: 37.3 → 0.5
Time: 25.8s
Precision: 64
\[\sin \left(x + \varepsilon\right) - \sin x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -0.008247894483255535:\\ \;\;\;\;\left(\cos x \cdot \sin \varepsilon - \sin x\right) + \sin x \cdot \cos \varepsilon\\ \mathbf{elif}\;\varepsilon \le 6.77676751873262 \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(\cos x \cdot \sin \varepsilon - \sin x\right) + \sin x \cdot \cos \varepsilon\\ \end{array}\]
\sin \left(x + \varepsilon\right) - \sin x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -0.008247894483255535:\\
\;\;\;\;\left(\cos x \cdot \sin \varepsilon - \sin x\right) + \sin x \cdot \cos \varepsilon\\

\mathbf{elif}\;\varepsilon \le 6.77676751873262 \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(\cos x \cdot \sin \varepsilon - \sin x\right) + \sin x \cdot \cos \varepsilon\\

\end{array}
double f(double x, double eps) {
        double r3895565 = x;
        double r3895566 = eps;
        double r3895567 = r3895565 + r3895566;
        double r3895568 = sin(r3895567);
        double r3895569 = sin(r3895565);
        double r3895570 = r3895568 - r3895569;
        return r3895570;
}

double f(double x, double eps) {
        double r3895571 = eps;
        double r3895572 = -0.008247894483255535;
        bool r3895573 = r3895571 <= r3895572;
        double r3895574 = x;
        double r3895575 = cos(r3895574);
        double r3895576 = sin(r3895571);
        double r3895577 = r3895575 * r3895576;
        double r3895578 = sin(r3895574);
        double r3895579 = r3895577 - r3895578;
        double r3895580 = cos(r3895571);
        double r3895581 = r3895578 * r3895580;
        double r3895582 = r3895579 + r3895581;
        double r3895583 = 6.77676751873262e-09;
        bool r3895584 = r3895571 <= r3895583;
        double r3895585 = 2.0;
        double r3895586 = r3895571 / r3895585;
        double r3895587 = sin(r3895586);
        double r3895588 = r3895574 + r3895571;
        double r3895589 = r3895574 + r3895588;
        double r3895590 = r3895589 / r3895585;
        double r3895591 = cos(r3895590);
        double r3895592 = r3895587 * r3895591;
        double r3895593 = r3895585 * r3895592;
        double r3895594 = r3895584 ? r3895593 : r3895582;
        double r3895595 = r3895573 ? r3895582 : r3895594;
        return r3895595;
}

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.3
Target15.1
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 2 regimes
  2. if eps < -0.008247894483255535 or 6.77676751873262e-09 < eps

    1. Initial program 30.3

      \[\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 -0.008247894483255535 < eps < 6.77676751873262e-09

    1. Initial program 44.5

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

      \[\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.5

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -0.008247894483255535:\\ \;\;\;\;\left(\cos x \cdot \sin \varepsilon - \sin x\right) + \sin x \cdot \cos \varepsilon\\ \mathbf{elif}\;\varepsilon \le 6.77676751873262 \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(\cos x \cdot \sin \varepsilon - \sin x\right) + \sin x \cdot \cos \varepsilon\\ \end{array}\]

Reproduce

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

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

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