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