csvorbis.Drft.dradf2 C# (CSharp) Method

dradf2() static private method

static private dradf2 ( int ido, int l1, float cc, float ch, float wa1, int index ) : void
ido int
l1 int
cc float
ch float
wa1 float
index int
return void
        static void dradf2(int ido,int l1,float[] cc, float[] ch, float[] wa1, int index)
        {
            int i,k;
            float ti2,tr2;
            int t0,t1,t2,t3,t4,t5,t6;

            t1=0;
            t0=(t2=l1*ido);
            t3=ido<<1;
            for(k=0;k<l1;k++)
            {
                ch[t1<<1]=cc[t1]+cc[t2];
                ch[(t1<<1)+t3-1]=cc[t1]-cc[t2];
                t1+=ido;
                t2+=ido;
            }

            if(ido<2) return;

            if(ido==2) goto L105;

            t1=0;
            t2=t0;
            for(k=0;k<l1;k++)
            {
                t3=t2;
                t4=(t1<<1)+(ido<<1);
                t5=t1;
                t6=t1+t1;
                for(i=2;i<ido;i+=2)
                {
                    t3+=2;
                    t4-=2;
                    t5+=2;
                    t6+=2;
                    tr2=wa1[index+i-2]*cc[t3-1]+wa1[index+i-1]*cc[t3];
                    ti2=wa1[index+i-2]*cc[t3]-wa1[index+i-1]*cc[t3-1];
                    ch[t6]=cc[t5]+ti2;
                    ch[t4]=ti2-cc[t5];
                    ch[t6-1]=cc[t5-1]+tr2;
                    ch[t4-1]=cc[t5-1]-tr2;
                }
                t1+=ido;
                t2+=ido;
            }
            if(ido%2==1)return;

            L105: t3=(t2=(t1=ido)-1);
            t2+=t0;
            for(k=0;k<l1;k++)
            {
                ch[t1]=-cc[t2];
                ch[t1-1]=cc[t3];
                t1+=ido<<1;
                t2+=ido;
                t3+=ido;
            }
        }