www.pudn.com > jaguar2s.zip > FFT256s.M


function [ya,yb] = fft256s(xa,xb,fwd) 
   
% 8 executions of a rad-2 = 1024 cycles 
% fwd = 1 DFT 
% fwd = 0 IDFT 
N=256; 
radix=2; 
 
M=128; 
E=1; 
for s=1:E 
   offset=(s-1)*(M*2); 
   for n=1:M 
      stagetmp = rad2_4([xa(n+offset) xb(n+offset) xa(n+offset+M) xb(n+offset+M)],E*(n-1),N,fwd,radix); 
      stage1a(n+offset)=stagetmp(1); 
      stage1a(n+offset+M)=stagetmp(2); 
      stage1b(n+offset)=stagetmp(3); 
      stage1b(n+offset+M)=stagetmp(4); 
   end; 
end; 
 
%size(stage2) = 128 
M=64; 
E=2; 
for s=1:E 
   offset=(s-1)*(M*2); 
   for n=1:M 
      stagetmp = rad2_4([stage1a(n+offset) stage1b(n+offset) stage1a(n+offset+M) stage1b(n+offset+M)],E*(n-1),N,fwd,radix); 
      stage2a(n+offset)=stagetmp(1); 
      stage2a(n+M+offset)=stagetmp(2); 
      stage2b(n+offset)=stagetmp(3); 
      stage2b(n+M+offset)=stagetmp(4); 
   end; 
end; 
 
%size(stage2) = 64 
M=32; 
E=4; 
for s=1:E 
   offset=(s-1)*(M*2); 
   for n=1:M 
      stagetmp = rad2_4([stage2a(n+offset) stage2b(n+offset) stage2a(n+offset+M) stage2b(n+offset+M)],E*(n-1),N,fwd,radix); 
      stage3a(n+offset)=stagetmp(1); 
      stage3a(n+M+offset)=stagetmp(2); 
      stage3b(n+offset)=stagetmp(3); 
      stage3b(n+M+offset)=stagetmp(4); 
   end; 
end; 
 
%size(stage3) = 32 
M=16; 
E=8; 
for s=1:E 
   offset=(s-1)*(M*2); 
   for n=1:M 
      stagetmp = rad2_4([stage3a(n+offset) stage3b(n+offset) stage3a(n+offset+M) stage3b(n+offset+M)],E*(n-1),N,fwd,radix); 
      stage4a(n+offset)=stagetmp(1); 
      stage4a(n+M+offset)=stagetmp(2); 
      stage4b(n+offset)=stagetmp(3); 
      stage4b(n+M+offset)=stagetmp(4); 
   end; 
end; 
 
%size(stage4) = 16 
M=8; 
E=16; 
for s=1:E 
   offset=(s-1)*(M*2); 
   for n=1:M 
      stagetmp = rad2_4([stage4a(n+offset) stage4b(n+offset) stage4a(n+offset+M) stage4b(n+offset+M)],E*(n-1),N,fwd,radix); 
      stage5a(n+offset)=stagetmp(1); 
      stage5a(n+M+offset)=stagetmp(2); 
      stage5b(n+offset)=stagetmp(3); 
      stage5b(n+M+offset)=stagetmp(4); 
   end; 
end; 
 
%size(stage5) = 8 
M=4; 
E=32; 
for s=1:E 
   offset=(s-1)*(M*2); 
   for n=1:M 
      stagetmp = rad2_4([stage5a(n+offset) stage5b(n+offset) stage5a(n+offset+M) stage5b(n+offset+M)],E*(n-1),N,fwd,radix); 
      stage6a(n+offset)=stagetmp(1); 
      stage6a(n+M+offset)=stagetmp(2); 
      stage6b(n+offset)=stagetmp(3); 
      stage6b(n+M+offset)=stagetmp(4); 
   end; 
end; 
 
%size(stage6) = 4 
M=2; 
E=64; 
for s=1:E 
   offset=(s-1)*(M*2); 
   for n=1:M 
      stagetmp = rad2_4([stage6a(n+offset) stage6b(n+offset) stage6a(n+offset+M) stage6b(n+offset+M)],E*(n-1),N,fwd,radix); 
      stage7a(n+offset)=stagetmp(1); 
      stage7a(n+M+offset)=stagetmp(2); 
      stage7b(n+offset)=stagetmp(3); 
      stage7b(n+M+offset)=stagetmp(4); 
   end; 
end; 
 
%size(stage7) = 2 
M=1; 
E=128; 
for s=1:E 
   offset=(s-1)*(M*2); 
   for n=1:M 
      stagetmp = rad2_4([stage7a(n+offset) stage7b(n+offset) stage7a(n+offset+M) stage7b(n+offset+M)],E*(n-1),N,fwd,radix); 
      stage8a(n+offset)=stagetmp(1); 
      stage8a(n+offset+M)=stagetmp(2); 
      stage8b(n+offset)=stagetmp(3); 
      stage8b(n+offset+M)=stagetmp(4); 
   end; 
end; 
 
ya=stage8a; 
yb=stage8b;