rbmatlab  1.13.10
 All Classes Namespaces Files Functions Variables Groups Pages
sin_sym.m
1 function Y = sin_sym(X)
2 %function Y = sin_sym(X)
3 %
4 % sine function guaranteeing exact floating-point symmetry
5 % i.e. sin(x) = sin(x+2*pi) = - sin(-x)
6 % i.e. usually we get
7 %
8 % sin(0.1) + sin(0.1+pi) = 4.1633e-17
9 % sin_sym(0.1) + sin_sym(0.1+pi) = 4.1633e-17
10 %
11 % Bernard Haasdonk 5.6.2008
12 
13 % averaging over 4 periods:
14 
15 %generate large lookuptable
16 
17 resolution = 1000;
18 step = pi/resolution;
19 xvals = 0:step:(pi-1e-10);
20 if length(xvals)~=resolution;
21  error('check length of table!!');
22 end;
23 sin_tab = sin(xvals);
24 sin_tab = [sin_tab, 0];
25 sin_tab(1:end) = 0.5*(sin_tab(1:end)+ sin_tab(end:-1:1));
26 
27 % map X to interval