GNU Info

Info Node: (fftw.info)Array Dimensions for Real Multi-dimensional Transforms

(fftw.info)Array Dimensions for Real Multi-dimensional Transforms


Next: Strides in In-place RFFTWND Prev: rfftwnd Up: Real Multi-dimensional Transforms Reference
Enter node , (file) or (file)node

Array Dimensions for Real Multi-dimensional Transforms
------------------------------------------------------

   The output of a multi-dimensional transform of real data contains
symmetries that, in principle, make half of the outputs redundant
(Note: What RFFTWND Really Computes.).  In practice, it is not
possible to entirely realize these savings in an efficient and
understandable format.  Instead, the output of the rfftwnd transforms is
*slightly* over half of the output of the corresponding complex
transform.  We do not "pack" the data in any way, but store it as an
ordinary array of `fftw_complex' values.  In fact, this data is simply
a subsection of what would be the array in the corresponding complex
transform.

   Specifically, for a real transform of dimensions n1 x n2 x ... x nd,
the complex data is an n1 x n2 x ... x (nd/2+1) array of `fftw_complex'
values in row-major order (with the division rounded down).  That is,
we only store the lower half (plus one element) of the last dimension
of the data from the ordinary complex transform.  (We could have
instead taken half of any other dimension, but implementation turns out
to be simpler if the last, contiguous, dimension is used.)

   Since the complex data is slightly larger than the real data, some
complications arise for in-place transforms.  In this case, the final
dimension of the real data must be padded with extra values to
accommodate the size of the complex data--two extra if the last
dimension is even and one if it is odd.  That is, the last dimension of
the real data must physically contain 2 * (nd/2+1) `fftw_real' values
(exactly enough to hold the complex data).  This physical array size
does not, however, change the *logical* array size--only nd values are
actually stored in the last dimension, and nd is the last dimension
passed to `rfftwnd_create_plan'.


automatically generated by info2www version 1.2.2.9