\sin \left(x + \varepsilon\right) - \sin x
2 \cdot \left(\left(\cos x \cdot \cos \left(\frac{1}{2} \cdot \varepsilon\right) - \sin \left(\frac{1}{2} \cdot \varepsilon\right) \cdot \sin x\right) \cdot \sin \left(\frac{1}{2} \cdot \varepsilon\right)\right)double f(double x, double eps) {
double r5320782 = x;
double r5320783 = eps;
double r5320784 = r5320782 + r5320783;
double r5320785 = sin(r5320784);
double r5320786 = sin(r5320782);
double r5320787 = r5320785 - r5320786;
return r5320787;
}
double f(double x, double eps) {
double r5320788 = 2.0;
double r5320789 = x;
double r5320790 = cos(r5320789);
double r5320791 = 0.5;
double r5320792 = eps;
double r5320793 = r5320791 * r5320792;
double r5320794 = cos(r5320793);
double r5320795 = r5320790 * r5320794;
double r5320796 = sin(r5320793);
double r5320797 = sin(r5320789);
double r5320798 = r5320796 * r5320797;
double r5320799 = r5320795 - r5320798;
double r5320800 = r5320799 * r5320796;
double r5320801 = r5320788 * r5320800;
return r5320801;
}




Bits error versus x




Bits error versus eps
Results
| Original | 36.9 |
|---|---|
| Target | 15.3 |
| Herbie | 0.3 |
Initial program 36.9
rmApplied diff-sin37.3
Simplified15.3
rmApplied add-cbrt-cube15.5
rmApplied add-log-exp15.6
Simplified15.5
rmApplied cos-sum0.6
Applied exp-diff0.6
Applied log-div0.6
Simplified0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019169
(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)))