\sin \left(x + \varepsilon\right) - \sin x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.1998709236678226 \cdot 10^{-08}:\\
\;\;\;\;\left(\cos x \cdot \sin \varepsilon - \sin x\right) + \sin x \cdot \cos \varepsilon\\
\mathbf{elif}\;\varepsilon \le 1.1087986248072222 \cdot 10^{-08}:\\
\;\;\;\;2 \cdot \left(\sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \cos \left(\frac{\left(x + \varepsilon\right) + x}{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 r5718836 = x;
double r5718837 = eps;
double r5718838 = r5718836 + r5718837;
double r5718839 = sin(r5718838);
double r5718840 = sin(r5718836);
double r5718841 = r5718839 - r5718840;
return r5718841;
}
double f(double x, double eps) {
double r5718842 = eps;
double r5718843 = -1.1998709236678226e-08;
bool r5718844 = r5718842 <= r5718843;
double r5718845 = x;
double r5718846 = cos(r5718845);
double r5718847 = sin(r5718842);
double r5718848 = r5718846 * r5718847;
double r5718849 = sin(r5718845);
double r5718850 = r5718848 - r5718849;
double r5718851 = cos(r5718842);
double r5718852 = r5718849 * r5718851;
double r5718853 = r5718850 + r5718852;
double r5718854 = 1.1087986248072222e-08;
bool r5718855 = r5718842 <= r5718854;
double r5718856 = 2.0;
double r5718857 = 0.5;
double r5718858 = r5718857 * r5718842;
double r5718859 = sin(r5718858);
double r5718860 = r5718845 + r5718842;
double r5718861 = r5718860 + r5718845;
double r5718862 = r5718861 / r5718856;
double r5718863 = cos(r5718862);
double r5718864 = r5718859 * r5718863;
double r5718865 = r5718856 * r5718864;
double r5718866 = r5718852 + r5718848;
double r5718867 = r5718866 - r5718849;
double r5718868 = r5718855 ? r5718865 : r5718867;
double r5718869 = r5718844 ? r5718853 : r5718868;
return r5718869;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.5 |
|---|---|
| Target | 15.6 |
| Herbie | 0.5 |
if eps < -1.1998709236678226e-08Initial program 31.1
rmApplied sin-sum0.6
Applied associate--l+0.6
if -1.1998709236678226e-08 < eps < 1.1087986248072222e-08Initial program 44.4
rmApplied diff-sin44.4
Simplified0.3
if 1.1087986248072222e-08 < eps Initial program 30.9
rmApplied sin-sum0.6
Final simplification0.5
herbie shell --seed 2019162
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))