csvorbis.Drft.dradb3 C# (CSharp) Method

dradb3() static private method

static private dradb3 ( int ido, int l1, float cc, float ch, float wa1, int index1, float wa2, int index2 ) : void
ido int
l1 int
cc float
ch float
wa1 float
index1 int
wa2 float
index2 int
return void
        static void dradb3(int ido,int l1,float[] cc,float[] ch,
			float[] wa1, int index1,
			float[] wa2, int index2)
        {
            int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
            float ci2,ci3,di2,di3,cr2,cr3,dr2,dr3,ti2,tr2;
            t0=l1*ido;

            t1=0;
            t2=t0<<1;
            t3=ido<<1;
            t4=ido+(ido<<1);
            t5=0;
            for(k=0;k<l1;k++)
            {
                tr2=cc[t3-1]+cc[t3-1];
                cr2=cc[t5]+(taur*tr2);
                ch[t1]=cc[t5]+tr2;
                ci3=taui*(cc[t3]+cc[t3]);
                ch[t1+t0]=cr2-ci3;
                ch[t1+t2]=cr2+ci3;
                t1+=ido;
                t3+=t4;
                t5+=t4;
            }

            if(ido==1)return;

            t1=0;
            t3=ido<<1;
            for(k=0;k<l1;k++)
            {
                t7=t1+(t1<<1);
                t6=(t5=t7+t3);
                t8=t1;
                t10=(t9=t1+t0)+t0;

                for(i=2;i<ido;i+=2)
                {
                    t5+=2;
                    t6-=2;
                    t7+=2;
                    t8+=2;
                    t9+=2;
                    t10+=2;
                    tr2=cc[t5-1]+cc[t6-1];
                    cr2=cc[t7-1]+(taur*tr2);
                    ch[t8-1]=cc[t7-1]+tr2;
                    ti2=cc[t5]-cc[t6];
                    ci2=cc[t7]+(taur*ti2);
                    ch[t8]=cc[t7]+ti2;
                    cr3=taui*(cc[t5-1]-cc[t6-1]);
                    ci3=taui*(cc[t5]+cc[t6]);
                    dr2=cr2-ci3;
                    dr3=cr2+ci3;
                    di2=ci2+cr3;
                    di3=ci2-cr3;
                    ch[t9-1]=wa1[index1+i-2]*dr2-wa1[index1+i-1]*di2;
                    ch[t9]=wa1[index1+i-2]*di2+wa1[index1+i-1]*dr2;
                    ch[t10-1]=wa2[index2+i-2]*dr3-wa2[index2+i-1]*di3;
                    ch[t10]=wa2[index2+i-2]*di3+wa2[index2+i-1]*dr3;
                }
                t1+=ido;
            }
        }