void my_fft(__int64 *x, __int64 *y, int dim)
{
int i,j,k,m,m1,m2;
int p,q;
__int64 a,b;
int ptr1, ptr2;
m = 1 < < dim;
q = m;
for(i=1; i <=dim; i++) {
p = q;
q /= 2;
for(j=1; j <=q; j++) {
for(k=p; k <=m; k+=p) {
ptr1 = k - p + j;
ptr2 = ptr1 + q;
a = x[ptr1-1] - x[ptr2-1];
b = y[ptr1-1] - y[ptr2-1];
x[ptr1-1] = x[ptr1-1] + x[ptr2-1];
y[ptr1-1] = y[ptr1-1] + y[ptr2-1];
btfly(SinCos[(9-dim)*(j-1)][0], SinCos[(9-dim)*(j-1)][1], a, b, &x[ptr2-1], &y[ptr2-1]);
}
}
}
j=1;
m1= m-1;
m2= m/2;
for(i=1; i <=m1; i++) {
if(i <j) {
a = x[j-1];
b = y[j-1];
x[j-1] = x[i-1];
y[j-1] = y[i-1];
x[i-1] = a;
y[i-1] = b;
}
k = m2;
while(k <j) {
j -= k;
k /= 2;
}
j += k;
}
}