\sin \left(x + \varepsilon\right) - \sin x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -65.72641980047264:\\
\;\;\;\;\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) - \sin x\\
\mathbf{elif}\;\varepsilon \le 9.625760540766168 \cdot 10^{-09}:\\
\;\;\;\;2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \cos \left(\frac{\left(x + \varepsilon\right) + x}{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 r7492722 = x;
double r7492723 = eps;
double r7492724 = r7492722 + r7492723;
double r7492725 = sin(r7492724);
double r7492726 = sin(r7492722);
double r7492727 = r7492725 - r7492726;
return r7492727;
}
double f(double x, double eps) {
double r7492728 = eps;
double r7492729 = -65.72641980047264;
bool r7492730 = r7492728 <= r7492729;
double r7492731 = x;
double r7492732 = sin(r7492731);
double r7492733 = cos(r7492728);
double r7492734 = r7492732 * r7492733;
double r7492735 = cos(r7492731);
double r7492736 = sin(r7492728);
double r7492737 = r7492735 * r7492736;
double r7492738 = r7492734 + r7492737;
double r7492739 = r7492738 - r7492732;
double r7492740 = 9.625760540766168e-09;
bool r7492741 = r7492728 <= r7492740;
double r7492742 = 2.0;
double r7492743 = r7492728 / r7492742;
double r7492744 = sin(r7492743);
double r7492745 = r7492731 + r7492728;
double r7492746 = r7492745 + r7492731;
double r7492747 = r7492746 / r7492742;
double r7492748 = cos(r7492747);
double r7492749 = r7492744 * r7492748;
double r7492750 = r7492742 * r7492749;
double r7492751 = r7492737 - r7492732;
double r7492752 = r7492751 + r7492734;
double r7492753 = r7492741 ? r7492750 : r7492752;
double r7492754 = r7492730 ? r7492739 : r7492753;
return r7492754;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.2 |
|---|---|
| Target | 15.1 |
| Herbie | 0.6 |
if eps < -65.72641980047264Initial program 29.2
rmApplied sin-sum0.4
if -65.72641980047264 < eps < 9.625760540766168e-09Initial program 44.6
rmApplied diff-sin44.6
Simplified0.7
if 9.625760540766168e-09 < eps Initial program 30.7
rmApplied sin-sum0.5
Applied associate--l+0.6
Final simplification0.6
herbie shell --seed 2019120
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))