static void dradf4(int ido,int l1,float[] cc, float[] ch,
float[] wa1, int index1,
float[] wa2, int index2,
float[] wa3, int index3)
{
int i,k,t0,t1,t2,t3,t4,t5,t6;
float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
t0=l1*ido;
t1=t0;
t4=t1<<1;
t2=t1+(t1<<1);
t3=0;
for(k=0;k<l1;k++)
{
tr1=cc[t1]+cc[t2];
tr2=cc[t3]+cc[t4];
ch[t5=t3<<2]=tr1+tr2;
ch[(ido<<2)+t5-1]=tr2-tr1;
ch[(t5+=(ido<<1))-1]=cc[t3]-cc[t4];
ch[t5]=cc[t2]-cc[t1];
t1+=ido;
t2+=ido;
t3+=ido;
t4+=ido;
}
if(ido<2)return;
if(ido==2) goto L105;
t1=0;
for(k=0;k<l1;k++)
{
t2=t1;
t4=t1<<2;
t5=(t6=ido<<1)+t4;
for(i=2;i<ido;i+=2)
{
t3=(t2+=2);
t4+=2;
t5-=2;
t3+=t0;
cr2=wa1[index1+i-2]*cc[t3-1]+wa1[index1+i-1]*cc[t3];
ci2=wa1[index1+i-2]*cc[t3]-wa1[index1+i-1]*cc[t3-1];
t3+=t0;
cr3=wa2[index2+i-2]*cc[t3-1]+wa2[index2+i-1]*cc[t3];
ci3=wa2[index2+i-2]*cc[t3]-wa2[index2+i-1]*cc[t3-1];
t3+=t0;
cr4=wa3[index3+i-2]*cc[t3-1]+wa3[index3+i-1]*cc[t3];
ci4=wa3[index3+i-2]*cc[t3]-wa3[index3+i-1]*cc[t3-1];
tr1=cr2+cr4;
tr4=cr4-cr2;
ti1=ci2+ci4;
ti4=ci2-ci4;
ti2=cc[t2]+ci3;
ti3=cc[t2]-ci3;
tr2=cc[t2-1]+cr3;
tr3=cc[t2-1]-cr3;
ch[t4-1]=tr1+tr2;
ch[t4]=ti1+ti2;
ch[t5-1]=tr3-ti4;
ch[t5]=tr4-ti3;
ch[t4+t6-1]=ti4+tr3;
ch[t4+t6]=tr4+ti3;
ch[t5+t6-1]=tr2-tr1;
ch[t5+t6]=ti1-ti2;
}
t1+=ido;
}
if((ido&1)!=0)return;
L105: t2=(t1=t0+ido-1)+(t0<<1);
t3=ido<<2;
t4=ido;
t5=ido<<1;
t6=ido;
for(k=0;k<l1;k++)
{
ti1=-hsqt2*(cc[t1]+cc[t2]);
tr1=hsqt2*(cc[t1]-cc[t2]);
ch[t4-1]=tr1+cc[t6-1];
ch[t4+t5-1]=cc[t6-1]-tr1;
ch[t4]=ti1-cc[t1+t0];
ch[t4+t5]=ti1+cc[t1+t0];
t1+=ido;
t2+=ido;
t4+=t3;
t6+=ido;
}
}