csvorbis.Drft.drftb1 C# (CSharp) Method

drftb1() static private method

static private drftb1 ( int n, float c, float ch, float wa, int index, int ifac ) : void
n int
c float
ch float
wa float
index int
ifac int
return void
        static void drftb1(int n, float[] c, float[] ch, float[] wa, int index, int[] ifac)
        {
            int i,k1,l1,l2=0;
            int na;
            int nf,ip=0,iw,ix2,ix3,ido=0,idl1=0;

            nf=ifac[1];
            na=0;
            l1=1;
            iw=1;

            for(k1=0;k1<nf;k1++)
            {
                ip=ifac[k1 + 2];
                l2=ip*l1;
                ido=n/l2;
                idl1=ido*l1;
                if(ip!=4) goto L103;
                ix2=iw+ido;
                ix3=ix2+ido;

                if(na!=0)
                    dradb4(ido,l1,ch,c,wa,index+iw-1,wa,index+ix2-1,wa,index+ix3-1);
                else
                    dradb4(ido,l1,c,ch,wa,index+iw-1,wa,index+ix2-1,wa,index+ix3-1);
                na=1-na;
                goto L115;
            L103: if(ip!=2) goto L106;

                if(na!=0)
                    dradb2(ido,l1,ch,c,wa,index+iw-1);
                else
                    dradb2(ido,l1,c,ch,wa,index+iw-1);
                na=1-na;
                goto L115;

            L106: if(ip!=3) goto L109;

                ix2=iw+ido;
                if(na!=0)
                    dradb3(ido,l1,ch,c,wa,index+iw-1,wa,index+ix2-1);
                else
                    dradb3(ido,l1,c,ch,wa,index+iw-1,wa,index+ix2-1);
                na=1-na;
                goto L115;

            L109: if(na!=0)
                      dradbg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa,index+iw-1);
                  else
                      dradbg(ido,ip,l1,idl1,c,c,c,ch,ch,wa,index+iw-1);
                if(ido==1)na=1-na;
                l1=l2;
                iw+=(ip-1)*ido;

            L115: l1=l2;
                iw+=(ip-1)*ido;
            }
            if(na==0)return;
            for(i=0;i<n;i++)c[i]=ch[i];
        }