void Radix2_Stage_DFT_2(void* inputFIFOs[], void* outputFIFOs[], Param inParams[], Param outParams[]){ fft_2( /* n */ (Param) inParams[0], /* p */ (Param) inParams[1], /* N2 */ (Param) inParams[3], /* N1 */ (Param) inParams[2], /* ix */ (char*) inputFIFOs[2], /* i0 */ (CplxSp*) inputFIFOs[0], /* i1 */ (CplxSp*) inputFIFOs[1], /* o0 */ (CplxSp*) outputFIFOs[0], /* o1 */ (CplxSp*) outputFIFOs[1] ); }
void twiddleTransf(int sofarRadix, int radix, int remainRadix, T3 yRe[], T4 yIm[]) { /* twiddleTransf */ double cosw, sinw, gem; initTrig(radix); omega = 2*M_PI/(double)(sofarRadix*radix); cosw = cos(omega); sinw = -sin(omega); tw_re = 1.0; tw_im = 0; dataOffset=0; groupOffset=dataOffset; adr=groupOffset; for (dataNo=0; dataNo<sofarRadix; dataNo++) { if (sofarRadix>1) { twiddleRe[0] = 1.0; twiddleIm[0] = 0.0; twiddleRe[1] = tw_re; twiddleIm[1] = tw_im; for (twNo=2; twNo<radix; twNo++) { twiddleRe[twNo]=tw_re*twiddleRe[twNo-1] - tw_im*twiddleIm[twNo-1]; twiddleIm[twNo]=tw_im*twiddleRe[twNo-1] + tw_re*twiddleIm[twNo-1]; } gem = cosw*tw_re - sinw*tw_im; tw_im = sinw*tw_re + cosw*tw_im; tw_re = gem; } for (groupNo=0; groupNo<remainRadix; groupNo++) { if ((sofarRadix>1) && (dataNo > 0)) { zRe[0]=yRe[adr]; zIm[0]=yIm[adr]; blockNo=1; do { adr = adr + sofarRadix; zRe[blockNo]= twiddleRe[blockNo] * yRe[adr] - twiddleIm[blockNo] * yIm[adr]; zIm[blockNo]= twiddleRe[blockNo] * yIm[adr] + twiddleIm[blockNo] * yRe[adr]; blockNo++; } while (blockNo < radix); } else for (blockNo=0; blockNo<radix; blockNo++) { zRe[blockNo]=yRe[adr]; zIm[blockNo]=yIm[adr]; adr=adr+sofarRadix; } switch(radix) { // T.Grill - replaced the inlined code by their function counterparts case 2 : fft_2(zRe,zIm); break; case 3 : fft_3(zRe,zIm); break; case 4 : fft_4(zRe,zIm); break; case 5 : fft_5(zRe,zIm); break; case 8 : fft_8(); break; case 10 : fft_10(); break; default : fft_odd(radix); break; } adr=groupOffset; for (blockNo=0; blockNo<radix; blockNo++) { yRe[adr]=zRe[blockNo]; yIm[adr]=zIm[blockNo]; adr=adr+sofarRadix; } groupOffset=groupOffset+sofarRadix*radix; adr=groupOffset; } dataOffset=dataOffset+1; groupOffset=dataOffset; adr=groupOffset; } } /* twiddleTransf */