DSP_fft
4-103 C64x+ DSPLIB Reference
xl1 = x0i − x2i;
xl20 = x1r − x3r;
xl21 = x1i − x3i;
xt0 = xh0 + xh20;
yt0 = xh1 + xh21;
xt1 = xl0 + xl21;
yt1 = xl1 − xl20;
xt2 = xh0 − xh20;
yt2 = xh1 − xh21;
xt3 = xl0 − xl21;
yt3 = xl1 + xl20;
/*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/
/* Perform twiddle factor multiplies of three terms,top */
/* term does not have any multiplies. Note the twiddle */
/* factors for a normal FFT are C + j (−S). Since the */
/* factors that are stored are C + j S, this is */
/* corrected for in the multiplies. */
/* */
/* Y1 = (xt1 + jyt1) (c + js) = (xc + ys) + (yc −xs) */
/*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/
y0r = xt0;
y0i = yt0;
y1r = (xt1 * w1c + yt1 * w1s) >> 15;
y1i = (yt1 * w1c − xt1 * w1s) >> 15;
y2r = (xt2 * w2c + yt2 * w2s) >> 15;
y2i = (yt2 * w2c − xt2 * w2s) >> 15;
y3r = (xt3 * w3c + yt3 * w3s) >> 15;
y3i = (yt3 * w3c − xt3 * w3s) >> 15;
/* −−−−−−−−−−−−−−−−−−−−���−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− */
/* Store the final results back to the input array. */
/* −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− */
x[2*(i+j+k ) + 0] = y0r; x[2*(i+j+k ) + 1] = y0i;
x[2*(i+j+k + s) + 0] = y1r; x[2*(i+j+k + s) + 1] = y1i;
x[2*(i+j+k + 2*s) + 0] = y2r; x[2*(i+j+k + 2*s) + 1] = y2i;
x[2*(i+j+k + 3*s) + 0] = y3r; x[2*(i+j+k + 3*s) + 1] = y3i;
}
}
}