\sin \left(x + \varepsilon\right) - \sin x
2 \cdot \left(\left(\cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \cos x - \log \left(e^{\sin x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)}\right)\right) \cdot \sin \left(\frac{\varepsilon}{2}\right)\right)double f(double x, double eps) {
double r4488227 = x;
double r4488228 = eps;
double r4488229 = r4488227 + r4488228;
double r4488230 = sin(r4488229);
double r4488231 = sin(r4488227);
double r4488232 = r4488230 - r4488231;
return r4488232;
}
double f(double x, double eps) {
double r4488233 = 2.0;
double r4488234 = 0.5;
double r4488235 = eps;
double r4488236 = r4488234 * r4488235;
double r4488237 = cos(r4488236);
double r4488238 = x;
double r4488239 = cos(r4488238);
double r4488240 = r4488237 * r4488239;
double r4488241 = sin(r4488238);
double r4488242 = sin(r4488236);
double r4488243 = r4488241 * r4488242;
double r4488244 = exp(r4488243);
double r4488245 = log(r4488244);
double r4488246 = r4488240 - r4488245;
double r4488247 = r4488235 / r4488233;
double r4488248 = sin(r4488247);
double r4488249 = r4488246 * r4488248;
double r4488250 = r4488233 * r4488249;
return r4488250;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.4 |
|---|---|
| Target | 14.7 |
| Herbie | 0.4 |
Initial program 36.4
rmApplied diff-sin36.7
Simplified14.7
Taylor expanded around -inf 14.7
rmApplied cos-sum0.3
rmApplied add-log-exp0.4
Final simplification0.4
herbie shell --seed 2019134
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))