\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 r105558 = x;
double r105559 = eps;
double r105560 = r105558 + r105559;
double r105561 = sin(r105560);
double r105562 = sin(r105558);
double r105563 = r105561 - r105562;
return r105563;
}
double f(double x, double eps) {
double r105564 = x;
double r105565 = sin(r105564);
double r105566 = eps;
double r105567 = cos(r105566);
double r105568 = 1.0;
double r105569 = r105567 - r105568;
double r105570 = 3.0;
double r105571 = pow(r105569, r105570);
double r105572 = cbrt(r105571);
double r105573 = r105565 * r105572;
double r105574 = cos(r105564);
double r105575 = sin(r105566);
double r105576 = r105574 * r105575;
double r105577 = r105573 + r105576;
return r105577;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.7 |
|---|---|
| Target | 14.9 |
| Herbie | 0.4 |
Initial program 36.7
Simplified36.7
rmApplied sin-sum21.7
Applied associate--l+0.4
rmApplied *-un-lft-identity0.4
Applied distribute-rgt-out--0.4
rmApplied add-cbrt-cube0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019195
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2.0 (* (cos (+ x (/ eps 2.0))) (sin (/ eps 2.0))))
(- (sin (+ x eps)) (sin x)))