\sin \left(x + \varepsilon\right) - \sin x
\left(\cos \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \cos x - \sin x \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right) \cdot \left(\sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot 2\right)double f(double x, double eps) {
double r12408677 = x;
double r12408678 = eps;
double r12408679 = r12408677 + r12408678;
double r12408680 = sin(r12408679);
double r12408681 = sin(r12408677);
double r12408682 = r12408680 - r12408681;
return r12408682;
}
double f(double x, double eps) {
double r12408683 = 0.5;
double r12408684 = eps;
double r12408685 = r12408683 * r12408684;
double r12408686 = cos(r12408685);
double r12408687 = x;
double r12408688 = cos(r12408687);
double r12408689 = r12408686 * r12408688;
double r12408690 = sin(r12408687);
double r12408691 = sin(r12408685);
double r12408692 = r12408690 * r12408691;
double r12408693 = r12408689 - r12408692;
double r12408694 = 2.0;
double r12408695 = r12408691 * r12408694;
double r12408696 = r12408693 * r12408695;
return r12408696;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.0 |
|---|---|
| Target | 15.0 |
| Herbie | 0.3 |
Initial program 37.0
rmApplied diff-sin37.4
Simplified15.1
Taylor expanded around inf 15.0
Simplified15.0
rmApplied cos-sum0.3
rmApplied *-commutative0.3
Final simplification0.3
herbie shell --seed 2019173
(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)))