rbmatlab 0.10.01
|
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