\sin \left(x + \varepsilon\right) - \sin x
\sin x \cdot \frac{\cos \varepsilon \cdot \cos \varepsilon - 1}{\cos \varepsilon + 1} + \cos x \cdot \sin \varepsilondouble f(double x, double eps) {
double r112981 = x;
double r112982 = eps;
double r112983 = r112981 + r112982;
double r112984 = sin(r112983);
double r112985 = sin(r112981);
double r112986 = r112984 - r112985;
return r112986;
}
double f(double x, double eps) {
double r112987 = x;
double r112988 = sin(r112987);
double r112989 = eps;
double r112990 = cos(r112989);
double r112991 = r112990 * r112990;
double r112992 = 1.0;
double r112993 = r112991 - r112992;
double r112994 = r112990 + r112992;
double r112995 = r112993 / r112994;
double r112996 = r112988 * r112995;
double r112997 = cos(r112987);
double r112998 = sin(r112989);
double r112999 = r112997 * r112998;
double r113000 = r112996 + r112999;
return r113000;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.0 |
| Herbie | 0.5 |
Initial program 37.1
rmApplied sin-sum22.0
Taylor expanded around inf 22.0
Simplified0.4
rmApplied flip--0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020062
(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)))