\sin \left(x + \varepsilon\right) - \sin x
\frac{\sin x \cdot \left({\left(\cos \varepsilon\right)}^{3} - 1\right)}{\cos \varepsilon \cdot \cos \varepsilon + \left(1 + \cos \varepsilon \cdot 1\right)} + \cos x \cdot \sin \varepsilondouble f(double x, double eps) {
double r101520 = x;
double r101521 = eps;
double r101522 = r101520 + r101521;
double r101523 = sin(r101522);
double r101524 = sin(r101520);
double r101525 = r101523 - r101524;
return r101525;
}
double f(double x, double eps) {
double r101526 = x;
double r101527 = sin(r101526);
double r101528 = eps;
double r101529 = cos(r101528);
double r101530 = 3.0;
double r101531 = pow(r101529, r101530);
double r101532 = 1.0;
double r101533 = r101531 - r101532;
double r101534 = r101527 * r101533;
double r101535 = r101529 * r101529;
double r101536 = r101529 * r101532;
double r101537 = r101532 + r101536;
double r101538 = r101535 + r101537;
double r101539 = r101534 / r101538;
double r101540 = cos(r101526);
double r101541 = sin(r101528);
double r101542 = r101540 * r101541;
double r101543 = r101539 + r101542;
return r101543;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.6 |
|---|---|
| Target | 15.3 |
| Herbie | 0.4 |
Initial program 36.6
rmApplied sin-sum21.2
Taylor expanded around inf 21.2
Simplified0.4
rmApplied flip3--0.4
Applied associate-*r/0.4
Final simplification0.4
herbie shell --seed 2020056
(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)))