\sin \left(x + \varepsilon\right) - \sin x
\sin x \cdot \sqrt[3]{{\left(\cos \varepsilon - 1\right)}^{3}} + \cos x \cdot \sin \varepsilondouble f(double x, double eps) {
double r172538 = x;
double r172539 = eps;
double r172540 = r172538 + r172539;
double r172541 = sin(r172540);
double r172542 = sin(r172538);
double r172543 = r172541 - r172542;
return r172543;
}
double f(double x, double eps) {
double r172544 = x;
double r172545 = sin(r172544);
double r172546 = eps;
double r172547 = cos(r172546);
double r172548 = 1.0;
double r172549 = r172547 - r172548;
double r172550 = 3.0;
double r172551 = pow(r172549, r172550);
double r172552 = cbrt(r172551);
double r172553 = r172545 * r172552;
double r172554 = cos(r172544);
double r172555 = sin(r172546);
double r172556 = r172554 * r172555;
double r172557 = r172553 + r172556;
return r172557;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.9 |
|---|---|
| Target | 15.1 |
| Herbie | 0.4 |
Initial program 36.9
rmApplied sin-sum21.7
rmApplied *-un-lft-identity21.7
Applied *-un-lft-identity21.7
Applied distribute-lft-out--21.7
Simplified0.4
rmApplied add-cbrt-cube0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020057
(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)))