csvorbis.Drft.drftf1 C# (CSharp) Method

drftf1() static private method

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

            nf=ifac[1];
            na=1;
            l2=n;
            iw=n;

            for(k1=0;k1<nf;k1++)
            {
                kh=nf-k1;
                ip=ifac[kh+1];
                l1=l2/ip;
                ido=n/l2;
                idl1=ido*l1;
                iw-=(ip-1)*ido;
                na=1-na;

                if(ip!=4) goto L102;

                ix2=iw+ido;
                ix3=ix2+ido;
                if(na!=0)
                    dradf4(ido,l1,ch,c,wa,iw-1,wa,ix2-1,wa,ix3-1);
                else
                    dradf4(ido,l1,c,ch,wa,iw-1,wa,ix2-1,wa,ix3-1);
                goto L110;

            L102: if(ip!=2) goto L104;
                if(na!=0) goto L103;

                dradf2(ido,l1,c,ch,wa, iw-1);
                goto L110;

            L103: dradf2(ido,l1,ch,c,wa, iw-1);
                goto L110;

            L104: if(ido==1)na=1-na;
                if(na!=0) goto L109;
                dradfg(ido,ip,l1,idl1,c,c,c,ch,ch,wa,iw-1);
                na=1;
                goto L110;

            L109: dradfg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa,iw-1);
                na=0;
                l2=l1;
                break;

            L110: l2=l1;
            }

            if(na==1)return;
            for(i=0;i<n;i++)c[i]=ch[i];
        }