70,021
社区成员




void func_die(int beg,int c_num,int k,int i)
{
void add(comp_int ,comp_int ,comp_int *);
void sub(comp_int ,comp_int ,comp_int *);
void mul(comp_int ,comp_int ,comp_int *);
int temp_real =0 ,temp_img = 0;
struct comp_int temp1,up,down;
int a,b,p;
a = beg + k;
b = beg + k + c_num/2;
p = k*pow(2,m-1-i);
mul(in[b], w[p], &up);
add(in[a], up, &up);
mul(in[b], w[p], &down);
sub(in[a], down, &down);
in[a]=up;
in[b]=down;
/*temp_real = (((w[p].real*in[b].real)>>15)-((w[p].img*in[b].img)>>15))>>1;
temp_img = (((w[p].real*in[b].img)>>15) + ((w[p].img*in[b].real)>>15))>>1;
temp1.real = (in[a].real + temp_real)>>1;
temp1.img = (in[a].img +temp_img)>>1;
temp_real = (((w[p].real*in[b].real)>>15)-((w[p].img*in[b].img)>>15))>>1;
temp_img = (((w[p].real*in[b].img)>>15) + ((w[p].img*in[b].real)>>15))>>1;
in[b].real = (in[a].real - temp_real)>>1;
in[b].img = (in[a].img - temp_img)>>1;
in[a].real =temp1.real;
in[a].img =temp1.img;*/
}
void add(comp_int a,comp_int b,comp_int *c)//(16,15)+(16,15)->(16,14)
{
c->real=((a.real+b.real)>>1);
c->img=((a.img+b.img)>>1);
}
void mul(comp_int a,comp_int b,comp_int *c)//(16,15)*(16,15)->(16,15)
{
c->real=((a.real*b.real)>>15) -((a.img*b.img)>>15);
c->img= ((a.real*b.img)>>15) +((a.img*b.real)>>15);
}
void sub(comp_int a,comp_int b,comp_int *c)//(16,15)+(16,15)->(16,14)
{
c->real=((a.real-b.real)>>1);
c->img=((a.img-b.img)>>1);
}