\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 r518 = x;
double r519 = eps;
double r520 = r518 + r519;
double r521 = sin(r520);
double r522 = sin(r518);
double r523 = r521 - r522;
return r523;
}
double f(double x, double eps) {
double r524 = x;
double r525 = sin(r524);
double r526 = eps;
double r527 = cos(r526);
double r528 = 1.0;
double r529 = r527 - r528;
double r530 = 3.0;
double r531 = pow(r529, r530);
double r532 = cbrt(r531);
double r533 = r525 * r532;
double r534 = cos(r524);
double r535 = sin(r526);
double r536 = r534 * r535;
double r537 = r533 + r536;
return r537;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.6 |
|---|---|
| Target | 15.4 |
| Herbie | 0.4 |
Initial program 37.6
rmApplied sin-sum22.1
rmApplied *-un-lft-identity22.1
Applied *-un-lft-identity22.1
Applied distribute-lft-out--22.1
Simplified0.4
rmApplied add-cbrt-cube0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020025
(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)))