www.pudn.com > jaguar2s.zip > rad2_4.M
function y = rad2_4(x,n,N,fwd,rad)
% take in 4 samples, and output 4 samples
%perform radix two or four conversion on x
xtmp=x(4);
if (rad~=2 & fwd==0)
x(4) = x(2);
x(2) = xtmp;
end;
W1 = 2*pi*1*n/N;
W2 = 2*pi*2*n/N;
if (rad==2)
W3 = W1;
else
W3 = 2*pi*3*n/N;
end;
%this requires 8 complex(16 real) adders) and 3 complex multiplies
s1=real(x(1))+ real(x(3));
s2=real(x(1))- real(x(3));
s3=imag(x(1))+ imag(x(3));
s4=imag(x(1))- imag(x(3));
s5=real(x(2))+ real(x(4));
s8=real(x(2))- real(x(4));
s7=imag(x(2))+ imag(x(4));
s6=imag(x(2))- imag(x(4));
s9=s1+s5;
s10=s3+s7;
s11=s2+s6;
s12=s4-s8;
s13=s1-s5;
s14=s3-s7;
s15=s2-s6;
s16=s4+s8;
if (rad==2)
s9=s1;
s10=s3;
s11=s2;
s12=s4;
s13=s5;
s14=s7;
s15=s8;
s16=s6;
else
s9=s9;
s10=s10;
s11=s11;
s12=s12;
s13=s13;
s14=s14;
s15=s15;
s16=s16;
end;
y(1) = s9 + j*s10;
y(2) = fftmult((s11 + j*s12),W1,fwd);
if (rad==2)
y(3) = s13 + j*s14;
else
y(3) = fftmult((s13 + j*s14),W2,fwd);
end;
y(4) = fftmult((s15 + j*s16),W3,fwd);