www.pudn.com > jaguar2s.zip > FFT256.M
function y = fft256(x,fwd)
% 8 executions of a rad-2 = 1024 cycles
% fwd = 1 DFT
% fwd = 0 IDFT
% size(x) = 256
N=256;
M=128;
E=1;
for s=1:E
offset=(s-1)*(M*2);
for n=1:M
stagetmp = rad2([x(n+offset) x(n+offset+M)],E*(n-1),N,fwd);
stage1(n+offset)=stagetmp(1);
stage1(n+offset+M)=stagetmp(2);
end;
end;
%size(stage2) = 128
M=64;
E=2;
for s=1:E
offset=(s-1)*(M*2);
for n=1:M
stagetmp = rad2([stage1(n+offset) stage1(n+offset+M)],E*(n-1),N,fwd);
stage2(n+offset)=stagetmp(1);
stage2(n+M+offset)=stagetmp(2);
end;
end;
%size(stage2) = 64
M=32;
E=4;
for s=1:E
offset=(s-1)*(M*2);
for n=1:M
stagetmp = rad2([stage2(n+offset) stage2(n+offset+M)],E*(n-1),N,fwd);
stage3(n+offset)=stagetmp(1);
stage3(n+M+offset)=stagetmp(2);
end;
end;
%size(stage3) = 32
M=16;
E=8;
for s=1:E
offset=(s-1)*(M*2);
for n=1:M
stagetmp = rad2([stage3(n+offset) stage3(n+offset+M)],E*(n-1),N,fwd);
stage4(n+offset)=stagetmp(1);
stage4(n+M+offset)=stagetmp(2);
end;
end;
%size(stage4) = 16
M=8;
E=16;
for s=1:E
offset=(s-1)*(M*2);
for n=1:M
stagetmp = rad2([stage4(n+offset) stage4(n+offset+M)],E*(n-1),N,fwd);
stage5(n+offset)=stagetmp(1);
stage5(n+M+offset)=stagetmp(2);
end;
end;
%size(stage5) = 8
M=4;
E=32;
for s=1:E
offset=(s-1)*(M*2);
for n=1:M
stagetmp = rad2([stage5(n+offset) stage5(n+offset+M)],E*(n-1),N,fwd);
stage6(n+offset)=stagetmp(1);
stage6(n+M+offset)=stagetmp(2);
end;
end;
%size(stage6) = 4
M=2;
E=64;
for s=1:E
offset=(s-1)*(M*2);
for n=1:M
stagetmp = rad2([stage6(n+offset) stage6(n+offset+M)],E*(n-1),N,fwd);
stage7(n+offset)=stagetmp(1);
stage7(n+M+offset)=stagetmp(2);
end;
end;
%size(stage7) = 2
M=1;
E=128;
for s=1:E
offset=(s-1)*(M*2);
for n=1:M
stagetmp = rad2([stage7(n+offset) stage7(n+offset+M)],E*(n-1),N,fwd);
stage8(n+offset)=stagetmp(1);
stage8(n+offset+M)=stagetmp(2);
end;
end;
y=stage8;