\sin \left(x + \varepsilon\right) - \sin x
\frac{\sin x \cdot \left(\cos \varepsilon \cdot \cos \varepsilon - 1\right)}{\cos \varepsilon + 1} + \cos x \cdot \sin \varepsilondouble f(double x, double eps) {
double r127438 = x;
double r127439 = eps;
double r127440 = r127438 + r127439;
double r127441 = sin(r127440);
double r127442 = sin(r127438);
double r127443 = r127441 - r127442;
return r127443;
}
double f(double x, double eps) {
double r127444 = x;
double r127445 = sin(r127444);
double r127446 = eps;
double r127447 = cos(r127446);
double r127448 = r127447 * r127447;
double r127449 = 1.0;
double r127450 = r127448 - r127449;
double r127451 = r127445 * r127450;
double r127452 = r127447 + r127449;
double r127453 = r127451 / r127452;
double r127454 = cos(r127444);
double r127455 = sin(r127446);
double r127456 = r127454 * r127455;
double r127457 = r127453 + r127456;
return r127457;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.9 |
|---|---|
| Target | 15.2 |
| Herbie | 0.5 |
Initial program 36.9
rmApplied sin-sum21.7
Applied associate--l+21.7
Taylor expanded around inf 21.7
Simplified0.4
rmApplied flip--0.5
Applied associate-*r/0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020083
(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)))