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];
}