\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 r121734 = x;
double r121735 = eps;
double r121736 = r121734 + r121735;
double r121737 = sin(r121736);
double r121738 = sin(r121734);
double r121739 = r121737 - r121738;
return r121739;
}
double f(double x, double eps) {
double r121740 = x;
double r121741 = sin(r121740);
double r121742 = eps;
double r121743 = cos(r121742);
double r121744 = r121743 * r121743;
double r121745 = 1.0;
double r121746 = r121744 - r121745;
double r121747 = r121743 + r121745;
double r121748 = r121746 / r121747;
double r121749 = r121741 * r121748;
double r121750 = cos(r121740);
double r121751 = sin(r121742);
double r121752 = r121750 * r121751;
double r121753 = r121749 + r121752;
return r121753;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.3 |
|---|---|
| Target | 15.3 |
| Herbie | 0.5 |
Initial program 37.3
rmApplied sin-sum21.9
Applied associate--l+21.9
Taylor expanded around inf 21.9
Simplified0.4
rmApplied flip--0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020049
(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)))