\sin \left(x + \varepsilon\right) - \sin x
\cos x \cdot \sin \varepsilon + \frac{\sin x}{\frac{\left(\cos \varepsilon \cdot \cos \varepsilon + 1\right) + \cos \varepsilon}{{\left(\cos \varepsilon\right)}^{3} - {1}^{3}}}double f(double x, double eps) {
double r104565 = x;
double r104566 = eps;
double r104567 = r104565 + r104566;
double r104568 = sin(r104567);
double r104569 = sin(r104565);
double r104570 = r104568 - r104569;
return r104570;
}
double f(double x, double eps) {
double r104571 = x;
double r104572 = cos(r104571);
double r104573 = eps;
double r104574 = sin(r104573);
double r104575 = r104572 * r104574;
double r104576 = sin(r104571);
double r104577 = cos(r104573);
double r104578 = r104577 * r104577;
double r104579 = 1.0;
double r104580 = r104578 + r104579;
double r104581 = r104580 + r104577;
double r104582 = 3.0;
double r104583 = pow(r104577, r104582);
double r104584 = pow(r104579, r104582);
double r104585 = r104583 - r104584;
double r104586 = r104581 / r104585;
double r104587 = r104576 / r104586;
double r104588 = r104575 + r104587;
return r104588;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.8 |
|---|---|
| Target | 15.4 |
| Herbie | 0.4 |
Initial program 37.8
rmApplied sin-sum22.3
Applied associate--l+22.3
Taylor expanded around inf 22.3
Simplified0.4
rmApplied flip3--0.4
Applied associate-*r/0.4
Final simplification0.4
herbie shell --seed 197574269
(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)))