\sin \left(x + \varepsilon\right) - \sin x
\frac{\sin x \cdot \left({\left(\cos \varepsilon\right)}^{3} - 1\right)}{\cos \varepsilon \cdot \cos \varepsilon + \left(1 + \cos \varepsilon \cdot 1\right)} + \cos x \cdot \sin \varepsilondouble f(double x, double eps) {
double r91577 = x;
double r91578 = eps;
double r91579 = r91577 + r91578;
double r91580 = sin(r91579);
double r91581 = sin(r91577);
double r91582 = r91580 - r91581;
return r91582;
}
double f(double x, double eps) {
double r91583 = x;
double r91584 = sin(r91583);
double r91585 = eps;
double r91586 = cos(r91585);
double r91587 = 3.0;
double r91588 = pow(r91586, r91587);
double r91589 = 1.0;
double r91590 = r91588 - r91589;
double r91591 = r91584 * r91590;
double r91592 = r91586 * r91586;
double r91593 = r91586 * r91589;
double r91594 = r91589 + r91593;
double r91595 = r91592 + r91594;
double r91596 = r91591 / r91595;
double r91597 = cos(r91583);
double r91598 = sin(r91585);
double r91599 = r91597 * r91598;
double r91600 = r91596 + r91599;
return r91600;
}




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
Applied associate--l+22.1
Taylor expanded around inf 22.1
Simplified0.4
rmApplied fma-udef0.4
rmApplied flip3--0.4
Applied associate-*r/0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2020036 +o rules:numerics
(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)))