\sin \left(x + \varepsilon\right) - \sin x
\sin x \cdot \frac{{\left(\cos \varepsilon\right)}^{3} - 1}{\cos \varepsilon \cdot \left(\cos \varepsilon + 1\right) + 1} + \cos x \cdot \sin \varepsilondouble f(double x, double eps) {
double r121575 = x;
double r121576 = eps;
double r121577 = r121575 + r121576;
double r121578 = sin(r121577);
double r121579 = sin(r121575);
double r121580 = r121578 - r121579;
return r121580;
}
double f(double x, double eps) {
double r121581 = x;
double r121582 = sin(r121581);
double r121583 = eps;
double r121584 = cos(r121583);
double r121585 = 3.0;
double r121586 = pow(r121584, r121585);
double r121587 = 1.0;
double r121588 = r121586 - r121587;
double r121589 = r121584 + r121587;
double r121590 = r121584 * r121589;
double r121591 = r121590 + r121587;
double r121592 = r121588 / r121591;
double r121593 = r121582 * r121592;
double r121594 = cos(r121581);
double r121595 = sin(r121583);
double r121596 = r121594 * r121595;
double r121597 = r121593 + r121596;
return r121597;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.8 |
|---|---|
| Target | 15.1 |
| Herbie | 0.4 |
Initial program 36.8
rmApplied sin-sum21.7
Taylor expanded around inf 21.7
Simplified0.4
rmApplied flip3--0.4
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020089
(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)))