双数组不接收双精度值

时间:2011-11-17 08:08:58

标签: c++ debugging

我有这个代码(我从FFT开发)并且看起来没问题,根据Visual Studio ...然后,当它到达块[a] [b]必须接收值时(即使它不是pow(),但只是expo_final,例如),块[a] [b]的值不会按照我的预期进行。

来源就在这里。

void twiddle_factor(float *d_isub_matrix)
{


    double block[THREAD_SIZE][THREAD_SIZE];
    float *d_osub_matrix = new float[THREAD_SIZE*THREAD_SIZE];
    int a,b,c,d,x,y,z;


    float sum_sines=0.0;
    double expo1,expo2,expo_final;
    float sum_cosines=0.0;
    float sum_sin[THREAD_SIZE][THREAD_SIZE],sum_cos[THREAD_SIZE][THREAD_SIZE];
    float angle=(2*PI)/THREAD_SIZE;

    //put into shared memory the FFT calculation (F(u))

    for(x=0;x<THREAD_SIZE;x++)
    {
        for(y=0;y<THREAD_SIZE;y++)
        {

            for(z=0;z<THREAD_SIZE;z++)
            {
                sum_sines=sum_sines+sin(d_isub_matrix[y*THREAD_SIZE+z]*(angle*(2*z)))+sin(d_isub_matrix[y*THREAD_SIZE+z]*(angle*(2*z+1)));
                sum_cosines=sum_cosines+cos(d_isub_matrix[y*THREAD_SIZE+z]*(angle*(2*z)))+cos(d_isub_matrix[y*THREAD_SIZE+z]*(angle*(2*z+1)));

            }
            sum_sin[x][y]=sum_sines/(2*THREAD_SIZE);
            sum_cos[x][y]=sum_cosines/(2*THREAD_SIZE);

        }
    }

    //getting the value!

    for(a=0;a<THREAD_SIZE;a++)
    {
        for(b=0;b<THREAD_SIZE;a++)
        {
            expo1=exp(sum_sin[a][b]);
            expo2=exp(sum_cos[a][b]);
            expo_final=expo1+expo2;
            block[a][b]=expo_final;
        }

    }

其中定义了ARRAY_SIZE和THREAD_SIZE,它们的值为64(ARRAY)和32(THREAD)。 我验证了sum_sines,sum_cosines,sum_sin [] [],sum_cos [] [],angle,expo1,expo2和expo_final的值。直到最后一个,一切都很好。他们返回一些消极和积极的价值观。 但是我无法获得block [] []的值。谁知道发生了什么?

1 个答案:

答案 0 :(得分:4)

这是你的问题:

for(b=0;b<THREAD_SIZE;a++)