我想使用FFTW库计算自相关。当我的输入超过~1800mln元素时,我无法创建计划。 E.g:
// my input
size_t size = 1024UL * 1024 * 1024 * 2;
float * in = (float *) malloc(sizeof(float) * (size + 2));
assert(in);
// insert values in input... in[0] to in[size -1]
// I want to perform an inplace FFT (this should explains the "+2" in prev malloc)
fftwf_complex * out = (fftwf_complex *) in;
// create a real to complex FFT plan
p = fftwf_plan_dft_r2c_1d(size, in, out, FFTW_ESTIMATE);
// this assertion fails...
assert(p);
一些信息:
我的代码出了什么问题?使用FFTW时输入大小是否有上限?
答案 0 :(得分:4)
这
http://www.fftw.org/doc/Real_002ddata-DFTs.html
fftw_plan fftw_plan_dft_r2c_1d(int n0,
double *in, fftw_complex *out,
unsigned flags);
fftw_plan_dft_r2c_1d
的第一个参数的类型似乎是int
,而不是size_t
。由于您的size
值很大并且看起来大于INT_MAX
,因此您可能会将负值传递给您的函数。