\sin \left(x + \varepsilon\right) - \sin x
2 \cdot \left(\sin \left(\frac{\varepsilon}{2}\right) \cdot \left(\cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \cos x - \sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x\right)\right)double f(double x, double eps) {
double r4228904 = x;
double r4228905 = eps;
double r4228906 = r4228904 + r4228905;
double r4228907 = sin(r4228906);
double r4228908 = sin(r4228904);
double r4228909 = r4228907 - r4228908;
return r4228909;
}
double f(double x, double eps) {
double r4228910 = 2.0;
double r4228911 = eps;
double r4228912 = r4228911 / r4228910;
double r4228913 = sin(r4228912);
double r4228914 = 0.5;
double r4228915 = r4228914 * r4228911;
double r4228916 = cos(r4228915);
double r4228917 = x;
double r4228918 = cos(r4228917);
double r4228919 = r4228916 * r4228918;
double r4228920 = sin(r4228915);
double r4228921 = sin(r4228917);
double r4228922 = r4228920 * r4228921;
double r4228923 = r4228919 - r4228922;
double r4228924 = r4228913 * r4228923;
double r4228925 = r4228910 * r4228924;
return r4228925;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.3 |
| Herbie | 0.3 |
Initial program 37.1
rmApplied diff-sin37.5
Simplified15.3
rmApplied add-log-exp15.5
Taylor expanded around inf 15.5
Simplified15.5
rmApplied cos-sum0.6
Applied exp-diff0.6
Applied log-div0.6
Simplified0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019141
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))