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;