I would like to perform in-place real to complex FFT without any extra padding, i.e. if I have a real valued volume of size 128 x 128 x 128 with floats, I want to get a complex valued 128 x 128 x 128 volume with cufftComplex, without doing any extra padding. Why is this not supported in the CUFFT library? It should be possible to choose if you want the redundant coefficients or not.
“For realâ€toâ€complex FFTs, the output array holds only the nonredundant
complex coefficients. So for an Nâ€element transform, the
output array holds N/2+1 cufftComplex terms. For higher dimensional
real transforms of the form N0×N1×…×Nn, the last
dimension is cut in half such that the output data is N0×N1×…×(Nn/
2+1) complex elements. Therefore, in order to perform an inâ€place
FFT, the user has to pad the input array in the last dimension to (Nn/
2+1) complex elements or 2*(N/2+1) real elements. Note that the
realâ€toâ€complex transform is implicitly forward.”
Why is the real-to-complex transform implicitly forward? For example quadrature filters are real valued in the frequency domain but complex valued in the spatial domain…