\sin \left(x + \varepsilon\right) - \sin x
\cos x \cdot \sin \varepsilon + \frac{-\sin x}{\frac{1 + \cos \varepsilon}{{\left(\sin \varepsilon\right)}^{2}}}double f(double x, double eps) {
double r110852 = x;
double r110853 = eps;
double r110854 = r110852 + r110853;
double r110855 = sin(r110854);
double r110856 = sin(r110852);
double r110857 = r110855 - r110856;
return r110857;
}
double f(double x, double eps) {
double r110858 = x;
double r110859 = cos(r110858);
double r110860 = eps;
double r110861 = sin(r110860);
double r110862 = r110859 * r110861;
double r110863 = sin(r110858);
double r110864 = -r110863;
double r110865 = 1.0;
double r110866 = cos(r110860);
double r110867 = r110865 + r110866;
double r110868 = 2.0;
double r110869 = pow(r110861, r110868);
double r110870 = r110867 / r110869;
double r110871 = r110864 / r110870;
double r110872 = r110862 + r110871;
return r110872;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.9 |
|---|---|
| Target | 15.2 |
| Herbie | 0.4 |
Initial program 36.9
Simplified36.9
rmApplied sin-sum21.7
Applied associate--l+0.4
rmApplied *-un-lft-identity0.4
Applied distribute-rgt-out--0.4
rmApplied flip--0.5
Simplified0.4
Simplified0.4
Taylor expanded around inf 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019194
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2.0 (* (cos (+ x (/ eps 2.0))) (sin (/ eps 2.0))))
(- (sin (+ x eps)) (sin x)))