10.4.2. Input & Output Data Layout - 5.2 English - 57404

AOCL User Guide (57404)

Document ID
57404
Release Date
2025-12-29
Version
5.2 English

AOCL-FFTZ operates with the following data layouts for input and output buffers:

  • For Complex C2C Transforms:

    • Input & Output - Interleaved format: real and imaginary parts alternate in memory, e.g., [R0, I0, R1, I1, …, RN-1, IN-1]
      • Each complex value is stored as two consecutive elements: real part followed by imaginary part.

      • Total length is 2*N for N complex points.

  • For Real R2C Transforms:

    • Input - Standard format - e.g., [X0, X1, X2, …, XN-1]
      • Input is real values.

      • Length is N.

    • Output - Half-Complex format - e.g., [R0, R1, I1, …, RN/2] when N is even & [R0, R1, I1, …, RN/2, IN/2] when N is odd
      • Only N/2+1 complex values are stored.

      • Imaginary parts of DC and Nyquist (when N is even) terms are always zero.

  • For Real C2R Transforms:

    • Input - Half-Complex format - e.g., [R0, R1, I1, …, RN/2] when N is even
      • Only N/2+1 complex values are stored.

      • Imaginary parts of DC and Nyquist terms are always zero.

    • Output - Standard format - e.g., [X0, X1, X2, …, XN-1]
      • Output is real values.

      • Length is N.

Note

Half-Complex format is a data layout that stores only half of the complex points, leveraging the Hermitian symmetry property of FFT on real values. The other half can be inferred by taking the complex conjugate of the stored values.