14 Software Examples
14 – 16
MODIFY(I3,M2);
{I3 ->y1 of 1st grp in stage}
DO group_loop UNTIL CE;
I4=^twid_real;
{I4 -> C of W0}
I5=^twid_imag;
{I5 -> (-S) of W0}
CNTR=DM(bflys_per_group);
{CNTR=bfly count}
MY0=PM(I4,M4),MX0=DM(I1,M0);
{MY0=C,MX0=x1 }
MY1=PM(I5,M4),MX1=DM(I3,M0);
{MY1=-S,MX1=y1}
DO bfly_loop UNTIL CE;
MR=MX0*MY1(SS),AX0=DM(I0,M0);
{MR=x1(-S),AX0=x0}
MR=MR+MX1*MY0(RND),AX1=DM(I2,M0);
{MR=(y1(C)+x1(-S)),AX1=y0}
AY1=MR1,MR=MX0*MY0(SS);
{AY1=y1(C)+x1(-S),MR=x1(C)}
MR=MR-MX1*MY1(RND);
{MR=x1(C)-y1(-S)}
AY0=MR1,AR=AX1-AY1;
{AY0=x1(C)-y1(-S),AR=y0-[y1(C)+x1(-S)]}
SB=EXPADJ AR,DM(I3,M1)=AR;
{Check for bit growth, y1=y0-[y1(C)+x1(-S)]}
AR=AX0-AY0,MX1=DM(I3,M0),MY1=PM(I5,M4);
{AR=x0-[x1(C)-y1(-S)], MX1=next y1,MY1=next (-S)}
SB=EXPADJ AR,DM(I1,M1)=AR;
{Check for bit growth, x1=x0-[x1(C)-y1(-S)]}
AR=AX0+AY0,MX0=DM(I1,M0),MY0=PM(I4,M4);
{AR=x0+[x1(C)-y1(-S)], MX0=next x1,MY0=next C}
SB=EXPADJ AR,DM(I0,M1)=AR;
{Check for bit growth, x0=x0+[x1(C)-y1(-S)]}
AR=AX1+AY1;
{AR=y0+[y1(C)+x1(-S)]}
bfly_loop:
SB=EXPADJ AR,DM(I2,M1)=AR;
{Check for bit growth, y0=y0+[y1(C)+x1(-S)]}
MODIFY(I0,M2);
{I0 ->1st x0 in next group}
MODIFY(I1,M2);
{I1 ->1st x1 in next group}
MODIFY(I2,M2);
{I2 ->1st y0 in next group}
group_loop:
MODIFY(I3,M2);
{I3 ->1st y1 in next group}
CALL bfp_adj;
{Compensate for bit growth}
SI=DM(bflys_per_group);
SR=ASHIFT SI BY 1(LO);
DM(node_space)=SR0;
{node_space=node_space / 2}
stage_loop: DM(bflys_per_group)=SR0;