\sin \left(x + \varepsilon\right) - \sin x
\frac{-\sin x \cdot \left(\sin \varepsilon \cdot \sin \varepsilon\right)}{1 + \cos \varepsilon} + \cos x \cdot \sin \varepsilondouble f(double x, double eps) {
double r6405549 = x;
double r6405550 = eps;
double r6405551 = r6405549 + r6405550;
double r6405552 = sin(r6405551);
double r6405553 = sin(r6405549);
double r6405554 = r6405552 - r6405553;
return r6405554;
}
double f(double x, double eps) {
double r6405555 = x;
double r6405556 = sin(r6405555);
double r6405557 = eps;
double r6405558 = sin(r6405557);
double r6405559 = r6405558 * r6405558;
double r6405560 = r6405556 * r6405559;
double r6405561 = -r6405560;
double r6405562 = 1.0;
double r6405563 = cos(r6405557);
double r6405564 = r6405562 + r6405563;
double r6405565 = r6405561 / r6405564;
double r6405566 = cos(r6405555);
double r6405567 = r6405566 * r6405558;
double r6405568 = r6405565 + r6405567;
return r6405568;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.1 |
|---|---|
| Target | 14.2 |
| Herbie | 0.4 |
Initial program 36.1
rmApplied +-commutative36.1
Applied sin-sum21.7
Applied associate--l+0.4
rmApplied add-log-exp14.5
Applied add-log-exp0.5
Applied diff-log0.5
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied distribute-rgt-out--0.4
Applied exp-prod0.5
Applied log-pow0.4
Simplified0.4
rmApplied flip--0.5
Applied associate-*l/0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019158
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))