56 uint16_t bitRevFactor,
57 uint16_t * pBitRevTab)
59 uint16_t fftLenBy2, fftLenBy2p1;
65 fftLenBy2 = fftSize >> 1u;
66 fftLenBy2p1 = (fftSize >> 1u) + 1u;
69 for (i = 0u; i <= (fftLenBy2 - 2u); i += 2u)
75 pSrc[2u * i] = pSrc[2u * j];
79 in = pSrc[(2u * i) + 1u];
80 pSrc[(2u * i) + 1u] = pSrc[(2u * j) + 1u];
81 pSrc[(2u * j) + 1u] = in;
84 in = pSrc[2u * (i + fftLenBy2p1)];
85 pSrc[2u * (i + fftLenBy2p1)] = pSrc[2u * (j + fftLenBy2p1)];
86 pSrc[2u * (j + fftLenBy2p1)] = in;
89 in = pSrc[(2u * (i + fftLenBy2p1)) + 1u];
90 pSrc[(2u * (i + fftLenBy2p1)) + 1u] =
91 pSrc[(2u * (j + fftLenBy2p1)) + 1u];
92 pSrc[(2u * (j + fftLenBy2p1)) + 1u] = in;
97 in = pSrc[2u * (i + 1u)];
98 pSrc[2u * (i + 1u)] = pSrc[2u * (j + fftLenBy2)];
99 pSrc[2u * (j + fftLenBy2)] = in;
102 in = pSrc[(2u * (i + 1u)) + 1u];
103 pSrc[(2u * (i + 1u)) + 1u] = pSrc[(2u * (j + fftLenBy2)) + 1u];
104 pSrc[(2u * (j + fftLenBy2)) + 1u] = in;
110 pBitRevTab += bitRevFactor;
128 uint16_t bitRevFactor,
129 uint16_t * pBitRevTable)
131 uint32_t fftLenBy2, fftLenBy2p1, i, j;
136 fftLenBy2 = fftLen / 2u;
137 fftLenBy2p1 = (fftLen / 2u) + 1u;
140 for (i = 0u; i <= (fftLenBy2 - 2u); i += 2u)
146 pSrc[2u * i] = pSrc[2u * j];
150 in = pSrc[(2u * i) + 1u];
151 pSrc[(2u * i) + 1u] = pSrc[(2u * j) + 1u];
152 pSrc[(2u * j) + 1u] = in;
155 in = pSrc[2u * (i + fftLenBy2p1)];
156 pSrc[2u * (i + fftLenBy2p1)] = pSrc[2u * (j + fftLenBy2p1)];
157 pSrc[2u * (j + fftLenBy2p1)] = in;
160 in = pSrc[(2u * (i + fftLenBy2p1)) + 1u];
161 pSrc[(2u * (i + fftLenBy2p1)) + 1u] =
162 pSrc[(2u * (j + fftLenBy2p1)) + 1u];
163 pSrc[(2u * (j + fftLenBy2p1)) + 1u] = in;
168 in = pSrc[2u * (i + 1u)];
169 pSrc[2u * (i + 1u)] = pSrc[2u * (j + fftLenBy2)];
170 pSrc[2u * (j + fftLenBy2)] = in;
173 in = pSrc[(2u * (i + 1u)) + 1u];
174 pSrc[(2u * (i + 1u)) + 1u] = pSrc[(2u * (j + fftLenBy2)) + 1u];
175 pSrc[(2u * (j + fftLenBy2)) + 1u] = in;
181 pBitRevTable += bitRevFactor;
199 uint16_t bitRevFactor,
200 uint16_t * pBitRevTab)
204 uint32_t fftLenBy2, fftLenBy2p1;
209 fftLenBy2 = fftLen / 2u;
210 fftLenBy2p1 = (fftLen / 2u) + 1u;
213 for (i = 0u; i <= (fftLenBy2 - 2u); i += 2u)
225 in = pSrc[i + fftLenBy2p1];
226 pSrc[i + fftLenBy2p1] = pSrc[j + fftLenBy2p1];
227 pSrc[j + fftLenBy2p1] = in;
233 pSrc[i + 1u] = pSrc[j + fftLenBy2];
234 pSrc[j + fftLenBy2] = in;
240 pBitRevTab += bitRevFactor;
void arm_bitreversal_q15(q15_t *pSrc16, uint32_t fftLen, uint16_t bitRevFactor, uint16_t *pBitRevTab)
float float32_t
32-bit floating-point type definition.
int16_t q15_t
16-bit fractional data type in 1.15 format.
int32_t q31_t
32-bit fractional data type in 1.31 format.
void arm_bitreversal_q31(q31_t *pSrc, uint32_t fftLen, uint16_t bitRevFactor, uint16_t *pBitRevTable)
void arm_bitreversal_f32(float32_t *pSrc, uint16_t fftSize, uint16_t bitRevFactor, uint16_t *pBitRevTab)