\sin \left(x + \varepsilon\right) - \sin x
\log \left(e^{\sin x \cdot \left(\cos \varepsilon - 1\right)}\right) + \cos x \cdot \sin \varepsilondouble f(double x, double eps) {
double r95831 = x;
double r95832 = eps;
double r95833 = r95831 + r95832;
double r95834 = sin(r95833);
double r95835 = sin(r95831);
double r95836 = r95834 - r95835;
return r95836;
}
double f(double x, double eps) {
double r95837 = x;
double r95838 = sin(r95837);
double r95839 = eps;
double r95840 = cos(r95839);
double r95841 = 1.0;
double r95842 = r95840 - r95841;
double r95843 = r95838 * r95842;
double r95844 = exp(r95843);
double r95845 = log(r95844);
double r95846 = cos(r95837);
double r95847 = sin(r95839);
double r95848 = r95846 * r95847;
double r95849 = r95845 + r95848;
return r95849;
}




Bits error versus x




Bits error versus eps
Results
| Original | 37.0 |
|---|---|
| Target | 15.5 |
| Herbie | 0.5 |
Initial program 37.0
rmApplied sin-sum21.3
Applied associate--l+21.3
Taylor expanded around inf 21.3
Simplified0.4
rmApplied add-log-exp0.5
Final simplification0.5
herbie shell --seed 2020033
(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)))