不接受双精度值的双精度数组
A double array not receiving double value
我有这个代码(我从FFT开发的),它似乎很好,根据Visual Studio…但是,当它到达块[a][b]必须接收值的点时(即使它不是pow(),而只是exp_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_sin, sum_cos, sum_sin[][], sum_cos[][],angle,expo1,expo2和expo_final的值。直到最后一个,一切都很好。它们返回一些正负值。但是我无法得到block[][]的值。有人知道是怎么回事吗?
你的问题是:
for(b=0;b<THREAD_SIZE;a++)
相关文章:
- 如何在 C++ 中将双精度数组中的值"force convert"到字符串输出中?
- 对需要双精度数组和结构作为输入C++ DLL 函数的 C# 调用
- 在 C++ 中将双精度数组值转换为字符值
- C# 是否有办法将双精度数组强制转换为类似于C++转换为 char* 的字符串?
- 将协议缓冲区中的二进制双精度数组转换为 JavaScript 数字
- std::copy 将双精度数组复制到浮点数数组
- C++试图返回一个双精度数组的字符串(有点)
- 双精度数组和结果与 WIN32 和 WIN64 上的C++不一致
- 查找双精度数组中的第一个数字
- 如何将双精度数组从 C# 传递到 C++ (DLL)
- 如何将双精度数组从 VB6 传递到 VC++.这段代码有什么问题
- 双精度数组和堆损坏
- 将双精度数组从 Visual Basic 传递到 DLL C++
- 将字符指针强制转换为双精度数组/取消引用
- C++函数在一个双精度数组中查找最大值
- 将值从浮点数组传递到双精度数组时的奇怪行为(C, c++)
- 计算双精度数组中所有元素的和
- PInvoke:返回双精度数组的问题
- 如何在没有库的情况下有效地对双精度数组进行排序
- c++将静态二维双精度数组转换为双精度**