\sin \left(x + \varepsilon\right) - \sin x
\left(\cos x \cdot \cos \left(\frac{1}{2} \cdot \varepsilon\right) - \sqrt[3]{{\left(\sin x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)}^{3}}\right) \cdot \left(2 \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)double f(double x, double eps) {
double r55374 = x;
double r55375 = eps;
double r55376 = r55374 + r55375;
double r55377 = sin(r55376);
double r55378 = sin(r55374);
double r55379 = r55377 - r55378;
return r55379;
}
double f(double x, double eps) {
double r55380 = x;
double r55381 = cos(r55380);
double r55382 = 0.5;
double r55383 = eps;
double r55384 = r55382 * r55383;
double r55385 = cos(r55384);
double r55386 = r55381 * r55385;
double r55387 = sin(r55380);
double r55388 = sin(r55384);
double r55389 = r55387 * r55388;
double r55390 = 3.0;
double r55391 = pow(r55389, r55390);
double r55392 = cbrt(r55391);
double r55393 = r55386 - r55392;
double r55394 = 2.0;
double r55395 = r55394 * r55388;
double r55396 = r55393 * r55395;
return r55396;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.8 |
|---|---|
| Target | 14.8 |
| Herbie | 0.4 |
Initial program 36.8
rmApplied diff-sin37.1
Simplified14.8
Taylor expanded around inf 14.8
Simplified14.8
rmApplied cos-sum0.3
rmApplied add-cbrt-cube0.4
Applied add-cbrt-cube0.4
Applied cbrt-unprod0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019323
(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)))