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);