csvorbis.Drft.dradfg C# (CSharp) Method

dradfg() static private method

static private dradfg ( int ido, int ip, int l1, int idl1, float cc, float c1, float c2, float ch, float ch2, float wa, int index ) : void
ido int
ip int
l1 int
idl1 int
cc float
c1 float
c2 float
ch float
ch2 float
wa float
index int
return void
        static void dradfg(int ido,int ip,int l1,int idl1,float[] cc,float[] c1,
			float[] c2, float[] ch, float[] ch2, float[] wa, int index)
        {
            int idij,ipph,i,j,k,l,ic,ik,iis;
            int t0,t1,t2=0,t3,t4,t5,t6,t7,t8,t9,t10;
            float dc2,ai1,ai2,ar1,ar2,ds2;
            int nbd;
            float dcp=0,arg,dsp=0,ar1h,ar2h;
            int idp2,ipp2;

            arg=tpi/(float)ip;
            dcp=(float)Math.Cos(arg);
            dsp=(float)Math.Sin(arg);
            ipph=(ip+1)>>1;
            ipp2=ip;
            idp2=ido;
            nbd=(ido-1)>>1;
            t0=l1*ido;
            t10=ip*ido;

            if(ido==1) goto L119;
            for(ik=0;ik<idl1;ik++)ch2[ik]=c2[ik];

            t1=0;
            for(j=1;j<ip;j++)
            {
                t1+=t0;
                t2=t1;
                for(k=0;k<l1;k++)
                {
                    ch[t2]=c1[t2];
                    t2+=ido;
                }
            }

            iis=-ido;
            t1=0;
            if(nbd>l1)
            {
                for(j=1;j<ip;j++)
                {
                    t1+=t0;
                    iis+=ido;
                    t2= -ido+t1;
                    for(k=0;k<l1;k++)
                    {
                        idij=iis-1;
                        t2+=ido;
                        t3=t2;
                        for(i=2;i<ido;i+=2)
                        {
                            idij+=2;
                            t3+=2;
                            ch[t3-1]=wa[index+idij-1]*c1[t3-1]+wa[index+idij]*c1[t3];
                            ch[t3]=wa[index+idij-1]*c1[t3]-wa[index+idij]*c1[t3-1];
                        }
                    }
                }
            }
            else
            {

                for(j=1;j<ip;j++)
                {
                    iis+=ido;
                    idij=iis-1;
                    t1+=t0;
                    t2=t1;
                    for(i=2;i<ido;i+=2)
                    {
                        idij+=2;
                        t2+=2;
                        t3=t2;
                        for(k=0;k<l1;k++)
                        {
                            ch[t3-1]=wa[index+idij-1]*c1[t3-1]+wa[index+idij]*c1[t3];
                            ch[t3]=wa[index+idij-1]*c1[t3]-wa[index+idij]*c1[t3-1];
                            t3+=ido;
                        }
                    }
                }
            }

            t1=0;
            t2=ipp2*t0;
            if(nbd<l1)
            {
                for(j=1;j<ipph;j++)
                {
                    t1+=t0;
                    t2-=t0;
                    t3=t1;
                    t4=t2;
                    for(i=2;i<ido;i+=2)
                    {
                        t3+=2;
                        t4+=2;
                        t5=t3-ido;
                        t6=t4-ido;
                        for(k=0;k<l1;k++)
                        {
                            t5+=ido;
                            t6+=ido;
                            c1[t5-1]=ch[t5-1]+ch[t6-1];
                            c1[t6-1]=ch[t5]-ch[t6];
                            c1[t5]=ch[t5]+ch[t6];
                            c1[t6]=ch[t6-1]-ch[t5-1];
                        }
                    }
                }
            }
            else
            {
                for(j=1;j<ipph;j++)
                {
                    t1+=t0;
                    t2-=t0;
                    t3=t1;
                    t4=t2;
                    for(k=0;k<l1;k++)
                    {
                        t5=t3;
                        t6=t4;
                        for(i=2;i<ido;i+=2)
                        {
                            t5+=2;
                            t6+=2;
                            c1[t5-1]=ch[t5-1]+ch[t6-1];
                            c1[t6-1]=ch[t5]-ch[t6];
                            c1[t5]=ch[t5]+ch[t6];
                            c1[t6]=ch[t6-1]-ch[t5-1];
                        }
                        t3+=ido;
                        t4+=ido;
                    }
                }
            }

            L119:		for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];

            t1=0;
            t2=ipp2*idl1;
            for(j=1;j<ipph;j++)
            {
                t1+=t0;
                t2-=t0;
                t3=t1-ido;
                t4=t2-ido;
                for(k=0;k<l1;k++)
                {
                    t3+=ido;
                    t4+=ido;
                    c1[t3]=ch[t3]+ch[t4];
                    c1[t4]=ch[t4]-ch[t3];
                }
            }

            ar1=1.0f;
            ai1=0.0f;
            t1=0;
            t2=ipp2*idl1;
            t3=(ip-1)*idl1;
            for(l=1;l<ipph;l++)
            {
                t1+=idl1;
                t2-=idl1;
                ar1h=dcp*ar1-dsp*ai1;
                ai1=dcp*ai1+dsp*ar1;
                ar1=ar1h;
                t4=t1;
                t5=t2;
                t6=t3;
                t7=idl1;

                for(ik=0;ik<idl1;ik++)
                {
                    ch2[t4++]=c2[ik]+ar1*c2[t7++];
                    ch2[t5++]=ai1*c2[t6++];
                }

                dc2=ar1;
                ds2=ai1;
                ar2=ar1;
                ai2=ai1;

                t4=idl1;
                t5=(ipp2-1)*idl1;
                for(j=2;j<ipph;j++)
                {
                    t4+=idl1;
                    t5-=idl1;

                    ar2h=dc2*ar2-ds2*ai2;
                    ai2=dc2*ai2+ds2*ar2;
                    ar2=ar2h;

                    t6=t1;
                    t7=t2;
                    t8=t4;
                    t9=t5;
                    for(ik=0;ik<idl1;ik++)
                    {
                        ch2[t6]+=ar2*c2[t8++];
                        t6++;
                        ch2[t7]+=ai2*c2[t9++];
                        t7++;
                    }
                }
            }
            t1=0;
            for(j=1;j<ipph;j++)
            {
                t1+=idl1;
                t2=t1;
                for(ik=0;ik<idl1;ik++)ch2[ik]+=c2[t2++];
            }

            if(ido<l1) goto L132;

            t1=0;
            t2=0;
            for(k=0;k<l1;k++)
            {
                t3=t1;
                t4=t2;
                for(i=0;i<ido;i++)cc[t4++]=ch[t3++];
                t1+=ido;
                t2+=t10;
            }

            goto L135;

            L132:			for(i=0;i<ido;i++)
                            {
                                t1=i;
                                t2=i;
                                for(k=0;k<l1;k++)
                                {
                                    cc[t2]=ch[t1];
                                    t1+=ido;
                                    t2+=t10;
                                }
                            }

            L135:	t1=0;
            t2=ido<<1;
            t3=0;
            t4=ipp2*t0;
            for(j=1;j<ipph;j++)
            {
                t1+=t2;
                t3+=t0;
                t4-=t0;

                t5=t1;
                t6=t3;
                t7=t4;

                for(k=0;k<l1;k++)
                {
                    cc[t5-1]=ch[t6];
                    cc[t5]=ch[t7];
                    t5+=t10;
                    t6+=ido;
                    t7+=ido;
                }
            }

            if(ido==1)return;
            if(nbd<l1) goto L141;

            t1=-ido;
            t3=0;
            t4=0;
            t5=ipp2*t0;
            for(j=1;j<ipph;j++)
            {
                t1+=t2;
                t3+=t2;
                t4+=t0;
                t5-=t0;
                t6=t1;
                t7=t3;
                t8=t4;
                t9=t5;
                for(k=0;k<l1;k++)
                {
                    for(i=2;i<ido;i+=2)
                    {
                        ic=idp2-i;
                        cc[i+t7-1]=ch[i+t8-1]+ch[i+t9-1];
                        cc[ic+t6-1]=ch[i+t8-1]-ch[i+t9-1];
                        cc[i+t7]=ch[i+t8]+ch[i+t9];
                        cc[ic+t6]=ch[i+t9]-ch[i+t8];
                    }
                    t6+=t10;
                    t7+=t10;
                    t8+=ido;
                    t9+=ido;
                }
            }
            return;

            L141:	t1=-ido;
            t3=0;
            t4=0;
            t5=ipp2*t0;
            for(j=1;j<ipph;j++)
            {
                t1+=t2;
                t3+=t2;
                t4+=t0;
                t5-=t0;
                for(i=2;i<ido;i+=2)
                {
                    t6=idp2+t1-i;
                    t7=i+t3;
                    t8=i+t4;
                    t9=i+t5;
                    for(k=0;k<l1;k++)
                    {
                        cc[t7-1]=ch[t8-1]+ch[t9-1];
                        cc[t6-1]=ch[t8-1]-ch[t9-1];
                        cc[t7]=ch[t8]+ch[t9];
                        cc[t6]=ch[t9]-ch[t8];
                        t6+=t10;
                        t7+=t10;
                        t8+=ido;
                        t9+=ido;
                    }
                }
            }
        }