#include "globdef.h" #include "uidef.h" #include "fft1def.h" void make_timf2(void) { float *x; int i,k1,k2,k3,k4; if(swfloat) { fft1_lowlevel_points=0; x=&fft1_float[fft1_px]; if(ui.rx_rf_channels==1) { for(i=0; ik1)k1=abs(fft1_split_shi[4*i ]); if(abs(fft1_split_shi[4*i+1])>k1)k1=abs(fft1_split_shi[4*i+1]); if(abs(fft1_split_shi[4*i+2])>k2)k2=abs(fft1_split_shi[4*i+2]); if(abs(fft1_split_shi[4*i+3])>k2)k2=abs(fft1_split_shi[4*i+3]); } fft1_maxamp[0]=k1; fft1_maxamp[1]=k2; } if( fft_cntrl[FFT1_BCKCURMODE].mmx == 0) { fft1back_one(); } else { mmx_fft1back_one(); fft1back_mmx_finish(); } } else { split_two(); if(ampinfo_flag != 0) { k1=fft1_maxamp[0]; k2=fft1_maxamp[2]; k3=fft1_maxamp[1]; k4=fft1_maxamp[3]; for(i=0; ik1)k1=abs(fft1_split_shi[8*i ]); if(abs(fft1_split_shi[8*i+1])>k1)k1=abs(fft1_split_shi[8*i+1]); if(abs(fft1_split_shi[8*i+2])>k2)k2=abs(fft1_split_shi[8*i+2]); if(abs(fft1_split_shi[8*i+3])>k2)k2=abs(fft1_split_shi[8*i+3]); if(abs(fft1_split_shi[8*i+4])>k3)k3=abs(fft1_split_shi[8*i+4]); if(abs(fft1_split_shi[8*i+5])>k3)k3=abs(fft1_split_shi[8*i+5]); if(abs(fft1_split_shi[8*i+6])>k4)k4=abs(fft1_split_shi[8*i+6]); if(abs(fft1_split_shi[8*i+7])>k4)k4=abs(fft1_split_shi[8*i+7]); } fft1_maxamp[0]=k1; fft1_maxamp[2]=k2; fft1_maxamp[1]=k3; fft1_maxamp[3]=k4; } if( fft_cntrl[FFT1_BCKCURMODE].mmx == 0) { fft1back_two(); } else { mmx_fft1back_two(); fft1back_mmx_finish(); } } } fft1_lowlevel_fraction=0.02*(49*fft1_lowlevel_fraction+fft1_lowlevel_points/ ((float)(fft1_last_point-fft1_first_point))); timf2_pa=(timf2_pa+timf2_input_block)&timf2_mask; } void fft1back_two(void) { int ia, ib, ic, id, itab; int inc,j,k,n; int m1, m2, siz,siz_d4; float t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12; float r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12; float u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12; float w0,w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12; float x0,x1,x2,x3,x4,x5,x6,x7; float ya,yb,y2,y3,y4,y5,y6,y7; float s1,s2,c1,c2; siz=fft1_size; siz_d4=fft1_size/4; if(swfloat) { for(j=0; j>2; timf2_float[p0 ]=t1*fftw_tmp[kk ]; timf2_pwr_float[pp]=timf2_float[p0]*timf2_float[p0]; timf2_float[p0+1]=t1*fftw_tmp[kk+1]; timf2_pwr_float[pp]+=timf2_float[p0+1]*timf2_float[p0+1]; timf2_float[p0+2]=t1*fftw_tmp[kk+2]; timf2_float[p0+3]=t1*fftw_tmp[kk+3]; pp++; p0=(p0+4)&m; kk+=4; } for(i=ib; i>ia; i--) { t1=fft1_inverted_window[i]*ampfac; pp=p0>>2; timf2_float[p0 ]=t1*fftw_tmp[kk ]; timf2_pwr_float[pp]=timf2_float[p0]*timf2_float[p0]; timf2_float[p0+1]=t1*fftw_tmp[kk+1]; timf2_pwr_float[pp]+=timf2_float[p0+1]*timf2_float[p0+1]; timf2_float[p0+2]=t1*fftw_tmp[kk+2]; timf2_float[p0+3]=t1*fftw_tmp[kk+3]; pp++; p0=(p0+4)&m; kk+=4; } } } } else { if(fft1_interleave_points==0) { // Without window we just transfer the points. for(i=0; i>3; timf2_float[p0 ]=t1*fftw_tmp[kk ]; timf2_pwr_float[pp]=timf2_float[p0]*timf2_float[p0]; timf2_float[p0+1]=t1*fftw_tmp[kk+1]; timf2_pwr_float[pp]+=timf2_float[p0+1]*timf2_float[p0+1]; timf2_float[p0+2]=t1*fftw_tmp[kk+2]; timf2_pwr_float[pp]+=timf2_float[p0+2]*timf2_float[p0+2]; timf2_float[p0+3]=t1*fftw_tmp[kk+3]; timf2_pwr_float[pp]+=timf2_float[p0+3]*timf2_float[p0+3]; timf2_float[p0+4]=t1*fftw_tmp[kk+4]; timf2_float[p0+5]=t1*fftw_tmp[kk+5]; timf2_float[p0+6]=t1*fftw_tmp[kk+6]; timf2_float[p0+7]=t1*fftw_tmp[kk+7]; pp++; p0=(p0+8)&m; kk+=8; } for(i=ib; i>ia; i--) { t1=fft1_inverted_window[i]*ampfac; pp=p0>>3; timf2_float[p0 ]=t1*fftw_tmp[kk ]; timf2_pwr_float[pp]=timf2_float[p0]*timf2_float[p0]; timf2_float[p0+1]=t1*fftw_tmp[kk+1]; timf2_pwr_float[pp]+=timf2_float[p0+1]*timf2_float[p0+1]; timf2_float[p0+2]=t1*fftw_tmp[kk+2]; timf2_pwr_float[pp]+=timf2_float[p0+2]*timf2_float[p0+2]; timf2_float[p0+3]=t1*fftw_tmp[kk+3]; timf2_pwr_float[pp]+=timf2_float[p0+3]*timf2_float[p0+3]; timf2_float[p0+4]=t1*fftw_tmp[kk+4]; timf2_float[p0+5]=t1*fftw_tmp[kk+5]; timf2_float[p0+6]=t1*fftw_tmp[kk+6]; timf2_float[p0+7]=t1*fftw_tmp[kk+7]; pp++; p0=(p0+8)&m; kk+=8; } } } } } else { if(ui.rx_rf_channels==1) { if(fft1_interleave_points==0) { // Without window we just transfer the points. for(i=0; i>2; timf2_shi[p0 ]=t1*fftw_tmp[kk ]; timf2_pwr_int[pp]=timf2_shi[p0]*timf2_shi[p0]; timf2_shi[p0+1]=t1*fftw_tmp[kk+1]; timf2_pwr_int[pp]+=timf2_shi[p0+1]*timf2_shi[p0+1]; timf2_shi[p0+2]=t1*fftw_tmp[kk+2]; timf2_shi[p0+3]=t1*fftw_tmp[kk+3]; pp++; p0=(p0+4)&m; kk+=4; } for(i=ib; i>ia; i--) { t1=fft1_inverted_window[i]*ampfac; pp=p0>>2; timf2_shi[p0 ]=t1*fftw_tmp[kk ]; timf2_pwr_int[pp]=timf2_shi[p0]*timf2_shi[p0]; timf2_shi[p0+1]=t1*fftw_tmp[kk+1]; timf2_pwr_int[pp]+=timf2_shi[p0+1]*timf2_shi[p0+1]; timf2_shi[p0+2]=t1*fftw_tmp[kk+2]; timf2_shi[p0+3]=t1*fftw_tmp[kk+3]; pp++; p0=(p0+4)&m; kk+=4; } } } } else { if(fft1_interleave_points==0) { // Without window we just transfer the points. for(i=0; i>1; timf2_shi[p0+1]=ampfac*fftw_tmp[mm*i+1]; timf2_pwr_int[pp]+=(timf2_shi[p0+1]*timf2_shi[p0+1])>>1; timf2_shi[p0+2]=ampfac*fftw_tmp[mm*i+2]; timf2_pwr_int[pp]+=(timf2_shi[p0+2]*timf2_shi[p0+2])>>1; timf2_shi[p0+3]=ampfac*fftw_tmp[mm*i+3]; timf2_pwr_int[pp]+=(timf2_shi[p0+3]*timf2_shi[p0+3])>>1; timf2_shi[p0+4]=ampfac*fftw_tmp[mm*i+4]; timf2_shi[p0+5]=ampfac*fftw_tmp[mm*i+5]; timf2_shi[p0+6]=ampfac*fftw_tmp[mm*i+6]; timf2_shi[p0+7]=ampfac*fftw_tmp[mm*i+7]; pp++; p0+=8; } } else { if(fft1_interleave_points==fft1_size/2) { // With a sin squared window we note that sin*sin+cos*cos=1 and add data. k=fft1_size/2; for(i=0; i>1; timf2_shi[p0+1]+=ampfac*fftw_tmp[mm*i+1]; timf2_pwr_int[pp]+=(timf2_shi[p0+1]*timf2_shi[p0+1])>>1; timf2_shi[p0+2]+=ampfac*fftw_tmp[mm*i+2]; timf2_pwr_int[pp]+=(timf2_shi[p0+2]*timf2_shi[p0+2])>>1; timf2_shi[p0+3]+=ampfac*fftw_tmp[mm*i+3]; timf2_pwr_int[pp]+=(timf2_shi[p0+3]*timf2_shi[p0+3])>>1; timf2_shi[p0+4]+=ampfac*fftw_tmp[mm*i+4]; timf2_shi[p0+5]+=ampfac*fftw_tmp[mm*i+5]; timf2_shi[p0+6]+=ampfac*fftw_tmp[mm*i+6]; timf2_shi[p0+7]+=ampfac*fftw_tmp[mm*i+7]; pp++; p0+=8; } j=k*8; k=fft1_size*8; p0=p0&m; for(i=j; i>3; timf2_shi[p0 ]=t1*fftw_tmp[kk ]; timf2_pwr_int[pp]=(timf2_shi[p0]*timf2_shi[p0])>>1; timf2_shi[p0+1]=t1*fftw_tmp[kk+1]; timf2_pwr_int[pp]+=(timf2_shi[p0+1]*timf2_shi[p0+1])>>1; timf2_shi[p0+2]=t1*fftw_tmp[kk+2]; timf2_pwr_int[pp]+=(timf2_shi[p0+2]*timf2_shi[p0+2])>>1; timf2_shi[p0+3]=t1*fftw_tmp[kk+3]; timf2_pwr_int[pp]+=(timf2_shi[p0+3]*timf2_shi[p0+3])>>1; timf2_shi[p0+4]=t1*fftw_tmp[kk+4]; timf2_shi[p0+5]=t1*fftw_tmp[kk+5]; timf2_shi[p0+6]=t1*fftw_tmp[kk+6]; timf2_shi[p0+7]=t1*fftw_tmp[kk+7]; pp++; p0=(p0+8)&m; kk+=8; } for(i=ib; i>ia; i--) { t1=fft1_inverted_window[i]*ampfac; pp=p0>>3; timf2_shi[p0 ]=t1*fftw_tmp[kk ]; timf2_pwr_int[pp]=(timf2_shi[p0]*timf2_shi[p0])>>1; timf2_shi[p0+1]=t1*fftw_tmp[kk+1]; timf2_pwr_int[pp]+=(timf2_shi[p0+1]*timf2_shi[p0+1])>>1; timf2_shi[p0+2]=t1*fftw_tmp[kk+2]; timf2_pwr_int[pp]+=(timf2_shi[p0+2]*timf2_shi[p0+2])>>1; timf2_shi[p0+3]=t1*fftw_tmp[kk+3]; timf2_pwr_int[pp]+=(timf2_shi[p0+3]*timf2_shi[p0+3])>>1; timf2_shi[p0+4]=t1*fftw_tmp[kk+4]; timf2_shi[p0+5]=t1*fftw_tmp[kk+5]; timf2_shi[p0+6]=t1*fftw_tmp[kk+6]; timf2_shi[p0+7]=t1*fftw_tmp[kk+7]; pp++; p0=(p0+8)&m; kk+=8; } } } } } }