rbmatlab 0.10.01
general/basic/sin_sym.m
00001 function Y = sin_sym(X)
00002 %function Y = sin_sym(X)
00003 %
00004 % sine function guaranteeing exact floating-point symmetry
00005 % i.e. sin(x) = sin(x+2*pi) = - sin(-x)
00006 % i.e. usually we get 
00007 %
00008 %  sin(0.1) + sin(0.1+pi) = 4.1633e-17
00009 %  sin_sym(0.1) + sin_sym(0.1+pi) = 4.1633e-17
00010 %  
00011 % Bernard Haasdonk 5.6.2008
00012 
00013 % averaging over 4 periods:
00014 
00015 %generate large lookuptable
00016 
00017 resolution = 1000;
00018 step = pi/resolution;
00019 xvals = 0:step:(pi-1e-10);
00020 if length(xvals)~=resolution;
00021   error('check length of table!!');
00022 end;
00023 sin_tab = sin(xvals);
00024 sin_tab = [sin_tab, 0];
00025 sin_tab(1:end) = 0.5*(sin_tab(1:end)+ sin_tab(end:-1:1));
00026 
00027 % map X to interval 
All Classes Namespaces Files Functions Variables