14
Software Examples
14 – 15
SB=-2;
{—————— STAGE 1 ——————}
I0=^inplacereal;
I1=^inpla 1;
I2=^inplaceimag;
I3=^inpla 1;
M2=2;
CNTR=nover2;
AX0=DM(I0,M0);
AY0=DM(I1,M0);
AY1=DM(I3,M0);
DO group_lp UNTIL CE;
AR=AX0+AY0, AX1=DM(I2,M0);
SB=EXPADJ AR, DM(I0,M2)=AR;
AR=AX0-AY0;
SB=EXPADJ AR;
DM(I1,M2)=AR, AR=AX1+AY1;
SB=EXPADJ AR, DM(I2,M2)=AR;
AR=AX1-AY1, AX0=DM(I0,M0);
SB=EXPADJ AR, DM(I3,M2)=AR;
AY0=DM(I1,M0);
group_lp:
AY1=DM(I3,M0);
CALL bfp_adj;
{——————————STAGES 2 TO N-1———————————————————}
DO stage_loop UNTIL CE;
{Compute all stages in FFT}
I0=^inplacereal;
{I0 ->x0 in 1st grp of stage}
I2=^inplaceimag;
{I2 ->y0 in 1st grp of stage}
SI=DM(groups);
SR=ASHIFT SI BY -1(LO); {groups / 2}
DM(groups)=SR0;
{groups=groups / 2}
CNTR=SR0;
{CNTR=group counter}
M4=SR0;
{M4=twiddle factor modifier}
M2=DM(node_space);
{M2=node space modifier}
I1=I0;
MODIFY(I1,M2);
{I1 ->y0 of 1st grp in stage}
I3=I2;