\sin \left(x + \varepsilon\right) - \sin x
\left(\cos x \cdot \sin \varepsilon + \sin x \cdot \cos \varepsilon\right) - \sin x
double f(double x, double eps) {
double r132303 = x;
double r132304 = eps;
double r132305 = r132303 + r132304;
double r132306 = sin(r132305);
double r132307 = sin(r132303);
double r132308 = r132306 - r132307;
return r132308;
}
double f(double x, double eps) {
double r132309 = x;
double r132310 = cos(r132309);
double r132311 = eps;
double r132312 = sin(r132311);
double r132313 = r132310 * r132312;
double r132314 = sin(r132309);
double r132315 = cos(r132311);
double r132316 = r132314 * r132315;
double r132317 = r132313 + r132316;
double r132318 = r132317 - r132314;
return r132318;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.3 |
|---|---|
| Target | 15.1 |
| Herbie | 22.0 |
Initial program 37.3
rmApplied sin-sum22.0
rmApplied *-un-lft-identity22.0
Applied *-un-lft-identity22.0
Applied distribute-lft-out--22.0
Simplified0.4
rmApplied add-cube-cbrt0.6
Final simplification22.0
herbie shell --seed 2019297
(FPCore (x eps)
:name "2sin (example 3.3)"
:precision binary64
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))