% Foliensatz EDS-F6, Abschnitt 1.2 CORDIC. Simulation des Algorithmus.
% Matlab/Octave-Programm gen_const_real.m zur Erzeugung der Konstanten
% letzte Aenderung: 29.06.2016
% Autor: G. Kemnitz

% Erzeugung der Konstantentabelle
N=15;
SCS = 1;
printf('constant AtanTab: t_dat_array(0 to %d) := (\n', N-1);
for idx=0:N-1
 atan_idx = atan(1.0*2^-idx);
 printf('    x"%04x"', round(atan_idx*2^14));
 if idx<N-1 printf(', -- %6.5f\n', atan_idx);
 else       printf(');-- %6.5f\n', atan_idx);
 end;
 SCS = SCS * cos(atan_idx);
end;
printf('constant SCS: t_dat := x"%04x"; -- %6.4f\n', round(SCS*2^14), SCS);

%Erzeugung der Testbeispiele
N_test = 21;
printf('constant test_dat: t_test_dat(1 to %d) := (\n', N_test);
for idx=1:N_test
 w = pi * (idx-11)/20;
 v = 2^14 * w;      if v<0 v=v+2^16; end;
 s = 2^14 * sin(w); if s<0 s=s+2^16; end;
 c = 2^14 * cos(w); if c<0 c=c+2^16; end;
 printf('%5d=>(x"%04x", x"%04x", x"%04x")', idx, v, s, c); 
 if idx<N_test printf(', ');
 else          printf(');');
 end;
 printf(' --(%8.5f, %8.5f, %8.5f)\n', w, sin(w), cos(w));
end; 



