1 /* ----------------------------------------------------------------------
2  * Project:      CMSIS DSP Library
3  * Title:        arm_const_structs.c
4  * Description:  Constant structs that are initialized for user convenience.
5  *               For example, some can be given as arguments to the arm_cfft_f32() or arm_rfft_f32() functions.
6  *
7  * $Date:        23 April 2021
8  * $Revision:    V1.9.0
9  *
10  * Target Processor: Cortex-M and Cortex-A cores
11  * -------------------------------------------------------------------- */
12 /*
13  * Copyright (C) 2010-2021 ARM Limited or its affiliates. All rights reserved.
14  *
15  * SPDX-License-Identifier: Apache-2.0
16  *
17  * Licensed under the Apache License, Version 2.0 (the License); you may
18  * not use this file except in compliance with the License.
19  * You may obtain a copy of the License at
20  *
21  * www.apache.org/licenses/LICENSE-2.0
22  *
23  * Unless required by applicable law or agreed to in writing, software
24  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
25  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26  * See the License for the specific language governing permissions and
27  * limitations under the License.
28  */
29 
30 #include "arm_math_types.h"
31 #include "arm_const_structs.h"
32 
33 /*
34 ALLOW TABLE is true when config table is enabled and the Tramsform folder is included
35 for compilation.
36 */
37 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FFT_ALLOW_TABLES)
38 
39 /* Floating-point structs */
40 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_16) && defined(ARM_TABLE_BITREVIDX_FLT64_16))
41 const arm_cfft_instance_f64 arm_cfft_sR_f64_len16 = {
42   16, (const float64_t *)twiddleCoefF64_16, armBitRevIndexTableF64_16, ARMBITREVINDEXTABLEF64_16_TABLE_LENGTH
43 };
44 #endif
45 
46 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_32) && defined(ARM_TABLE_BITREVIDX_FLT64_32))
47 const arm_cfft_instance_f64 arm_cfft_sR_f64_len32 = {
48   32, (const float64_t *)twiddleCoefF64_32, armBitRevIndexTableF64_32, ARMBITREVINDEXTABLEF64_32_TABLE_LENGTH
49 };
50 #endif
51 
52 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_64) && defined(ARM_TABLE_BITREVIDX_FLT64_64))
53 const arm_cfft_instance_f64 arm_cfft_sR_f64_len64 = {
54   64, (const float64_t *)twiddleCoefF64_64, armBitRevIndexTableF64_64, ARMBITREVINDEXTABLEF64_64_TABLE_LENGTH
55 };
56 #endif
57 
58 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_128) && defined(ARM_TABLE_BITREVIDX_FLT64_128))
59 const arm_cfft_instance_f64 arm_cfft_sR_f64_len128 = {
60   128, (const float64_t *)twiddleCoefF64_128, armBitRevIndexTableF64_128, ARMBITREVINDEXTABLEF64_128_TABLE_LENGTH
61 };
62 #endif
63 
64 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_256) && defined(ARM_TABLE_BITREVIDX_FLT64_256))
65 const arm_cfft_instance_f64 arm_cfft_sR_f64_len256 = {
66   256, (const float64_t *)twiddleCoefF64_256, armBitRevIndexTableF64_256, ARMBITREVINDEXTABLEF64_256_TABLE_LENGTH
67 };
68 #endif
69 
70 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_512) && defined(ARM_TABLE_BITREVIDX_FLT64_512))
71 const arm_cfft_instance_f64 arm_cfft_sR_f64_len512 = {
72   512, (const float64_t *)twiddleCoefF64_512, armBitRevIndexTableF64_512, ARMBITREVINDEXTABLEF64_512_TABLE_LENGTH
73 };
74 #endif
75 
76 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_1024) && defined(ARM_TABLE_BITREVIDX_FLT64_1024))
77 const arm_cfft_instance_f64 arm_cfft_sR_f64_len1024 = {
78   1024, (const float64_t *)twiddleCoefF64_1024, armBitRevIndexTableF64_1024, ARMBITREVINDEXTABLEF64_1024_TABLE_LENGTH
79 };
80 #endif
81 
82 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_2048) && defined(ARM_TABLE_BITREVIDX_FLT64_2048))
83 const arm_cfft_instance_f64 arm_cfft_sR_f64_len2048 = {
84   2048, (const float64_t *)twiddleCoefF64_2048, armBitRevIndexTableF64_2048, ARMBITREVINDEXTABLEF64_2048_TABLE_LENGTH
85 };
86 #endif
87 
88 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_4096) && defined(ARM_TABLE_BITREVIDX_FLT64_4096))
89 const arm_cfft_instance_f64 arm_cfft_sR_f64_len4096 = {
90   4096, (const float64_t *)twiddleCoefF64_4096, armBitRevIndexTableF64_4096, ARMBITREVINDEXTABLEF64_4096_TABLE_LENGTH
91 };
92 #endif
93 
94 /* Floating-point structs */
95 #if !defined(ARM_MATH_MVEF) || defined(ARM_MATH_AUTOVECTORIZE)
96 
97 
98 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_16) && defined(ARM_TABLE_BITREVIDX_FLT_16))
99 const arm_cfft_instance_f32 arm_cfft_sR_f32_len16 = {
100   16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE_16_TABLE_LENGTH
101 };
102 #endif
103 
104 
105 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_32) && defined(ARM_TABLE_BITREVIDX_FLT_32))
106 const arm_cfft_instance_f32 arm_cfft_sR_f32_len32 = {
107   32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH
108 };
109 #endif
110 
111 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_64) && defined(ARM_TABLE_BITREVIDX_FLT_64))
112 const arm_cfft_instance_f32 arm_cfft_sR_f32_len64 = {
113   64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH
114 };
115 #endif
116 
117 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_128) && defined(ARM_TABLE_BITREVIDX_FLT_128))
118 const arm_cfft_instance_f32 arm_cfft_sR_f32_len128 = {
119   128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH
120 };
121 #endif
122 
123 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_256) && defined(ARM_TABLE_BITREVIDX_FLT_256))
124 const arm_cfft_instance_f32 arm_cfft_sR_f32_len256 = {
125   256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH
126 };
127 #endif
128 
129 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_512) && defined(ARM_TABLE_BITREVIDX_FLT_512))
130 const arm_cfft_instance_f32 arm_cfft_sR_f32_len512 = {
131   512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH
132 };
133 #endif
134 
135 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_1024) && defined(ARM_TABLE_BITREVIDX_FLT_1024))
136 const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024 = {
137   1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH
138 };
139 #endif
140 
141 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_2048) && defined(ARM_TABLE_BITREVIDX_FLT_2048))
142 const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048 = {
143   2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH
144 };
145 #endif
146 
147 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_4096) && defined(ARM_TABLE_BITREVIDX_FLT_4096))
148 const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096 = {
149   4096, twiddleCoef_4096, armBitRevIndexTable4096, ARMBITREVINDEXTABLE_4096_TABLE_LENGTH
150 };
151 #endif
152 
153 #endif /* !defined(ARM_MATH_MVEF) || defined(ARM_MATH_AUTOVECTORIZE) */
154 
155 /* Fixed-point structs */
156 
157 #if !defined(ARM_MATH_MVEI) || defined(ARM_MATH_AUTOVECTORIZE)
158 
159 /*
160 
161 Those structures cannot be used to initialize the MVE version of the FFT Q31 instances.
162 So they are not compiled when MVE is defined.
163 
164 For the MVE version, the new arm_cfft_init_f32 must be used.
165 
166 
167 */
168 
169 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))
170 const arm_cfft_instance_q31 arm_cfft_sR_q31_len16 = {
171   16, twiddleCoef_16_q31, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH
172 };
173 #endif
174 
175 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))
176 const arm_cfft_instance_q31 arm_cfft_sR_q31_len32 = {
177   32, twiddleCoef_32_q31, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH
178 };
179 #endif
180 
181 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))
182 const arm_cfft_instance_q31 arm_cfft_sR_q31_len64 = {
183   64, twiddleCoef_64_q31, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH
184 };
185 #endif
186 
187 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))
188 const arm_cfft_instance_q31 arm_cfft_sR_q31_len128 = {
189   128, twiddleCoef_128_q31, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH
190 };
191 #endif
192 
193 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))
194 const arm_cfft_instance_q31 arm_cfft_sR_q31_len256 = {
195   256, twiddleCoef_256_q31, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH
196 };
197 #endif
198 
199 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))
200 const arm_cfft_instance_q31 arm_cfft_sR_q31_len512 = {
201   512, twiddleCoef_512_q31, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH
202 };
203 #endif
204 
205 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))
206 const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024 = {
207   1024, twiddleCoef_1024_q31, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH
208 };
209 #endif
210 
211 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))
212 const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048 = {
213   2048, twiddleCoef_2048_q31, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH
214 };
215 #endif
216 
217 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))
218 const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096 = {
219   4096, twiddleCoef_4096_q31, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH
220 };
221 #endif
222 
223 
224 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))
225 const arm_cfft_instance_q15 arm_cfft_sR_q15_len16 = {
226   16, twiddleCoef_16_q15, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH
227 };
228 #endif
229 
230 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))
231 const arm_cfft_instance_q15 arm_cfft_sR_q15_len32 = {
232   32, twiddleCoef_32_q15, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH
233 };
234 #endif
235 
236 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))
237 const arm_cfft_instance_q15 arm_cfft_sR_q15_len64 = {
238   64, twiddleCoef_64_q15, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH
239 };
240 #endif
241 
242 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))
243 const arm_cfft_instance_q15 arm_cfft_sR_q15_len128 = {
244   128, twiddleCoef_128_q15, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH
245 };
246 #endif
247 
248 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))
249 const arm_cfft_instance_q15 arm_cfft_sR_q15_len256 = {
250   256, twiddleCoef_256_q15, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH
251 };
252 #endif
253 
254 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))
255 const arm_cfft_instance_q15 arm_cfft_sR_q15_len512 = {
256   512, twiddleCoef_512_q15, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH
257 };
258 #endif
259 
260 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))
261 const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024 = {
262   1024, twiddleCoef_1024_q15, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH
263 };
264 #endif
265 
266 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))
267 const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048 = {
268   2048, twiddleCoef_2048_q15, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH
269 };
270 #endif
271 
272 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))
273 const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096 = {
274   4096, twiddleCoef_4096_q15, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH
275 };
276 #endif
277 
278 #endif /* !defined(ARM_MATH_MVEI) */
279 
280 /* Structure for real-value inputs */
281 /* Double precision strucs */
282 
283 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_32) && defined(ARM_TABLE_BITREVIDX_FLT64_32) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F64_32))
284 const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len32 = {
285   { 16, (const float64_t *)twiddleCoefF64_16, armBitRevIndexTableF64_16, ARMBITREVINDEXTABLEF64_16_TABLE_LENGTH },
286   32U,
287   (float64_t *)twiddleCoefF64_rfft_32
288 };
289 #endif
290 
291 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_64) && defined(ARM_TABLE_BITREVIDX_FLT64_64) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F64_64))
292 const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len64 = {
293    { 32, (const float64_t *)twiddleCoefF64_32, armBitRevIndexTableF64_32, ARMBITREVINDEXTABLEF64_32_TABLE_LENGTH },
294   64U,
295   (float64_t *)twiddleCoefF64_rfft_64
296 };
297 #endif
298 
299 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_128) && defined(ARM_TABLE_BITREVIDX_FLT64_128) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F64_128))
300 const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len128 = {
301   { 64, (const float64_t *)twiddleCoefF64_64, armBitRevIndexTableF64_64, ARMBITREVINDEXTABLEF64_64_TABLE_LENGTH },
302   128U,
303   (float64_t *)twiddleCoefF64_rfft_128
304 };
305 #endif
306 
307 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_256) && defined(ARM_TABLE_BITREVIDX_FLT64_256) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F64_256))
308 const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len256 = {
309   { 128, (const float64_t *)twiddleCoefF64_128, armBitRevIndexTableF64_128, ARMBITREVINDEXTABLEF64_128_TABLE_LENGTH },
310   256U,
311   (float64_t *)twiddleCoefF64_rfft_256
312 };
313 #endif
314 
315 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_512) && defined(ARM_TABLE_BITREVIDX_FLT64_512) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F64_512))
316 const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len512 = {
317   { 256, (const float64_t *)twiddleCoefF64_256, armBitRevIndexTableF64_256, ARMBITREVINDEXTABLEF64_256_TABLE_LENGTH },
318   512U,
319   (float64_t *)twiddleCoefF64_rfft_512
320 };
321 #endif
322 
323 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_1024) && defined(ARM_TABLE_BITREVIDX_FLT64_1024) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F64_1024))
324 const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len1024 = {
325   { 512, (const float64_t *)twiddleCoefF64_512, armBitRevIndexTableF64_512, ARMBITREVINDEXTABLEF64_512_TABLE_LENGTH },
326   1024U,
327   (float64_t *)twiddleCoefF64_rfft_1024
328 };
329 #endif
330 
331 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_2048) && defined(ARM_TABLE_BITREVIDX_FLT64_2048) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F64_2048))
332 const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len2048 = {
333   { 1024, (const float64_t *)twiddleCoefF64_1024, armBitRevIndexTableF64_1024, ARMBITREVINDEXTABLEF64_1024_TABLE_LENGTH },
334   2048U,
335   (float64_t *)twiddleCoefF64_rfft_2048
336 };
337 #endif
338 
339 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_4096) && defined(ARM_TABLE_BITREVIDX_FLT64_4096) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F64_4096))
340 const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len4096 = {
341   { 2048, (const float64_t *)twiddleCoefF64_2048, armBitRevIndexTableF64_2048, ARMBITREVINDEXTABLEF64_2048_TABLE_LENGTH },
342   4096U,
343   (float64_t *)twiddleCoefF64_rfft_4096
344 };
345 #endif
346 
347 /* Floating-point structs */
348 
349 #if !defined(ARM_MATH_MVEF) || defined(ARM_MATH_AUTOVECTORIZE)
350 
351 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_16) && defined(ARM_TABLE_BITREVIDX_FLT_16) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_32))
352 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len32 = {
353   { 16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE_16_TABLE_LENGTH },
354   32U,
355   (float32_t *)twiddleCoef_rfft_32
356 };
357 #endif
358 
359 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_32) && defined(ARM_TABLE_BITREVIDX_FLT_32) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_64))
360 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len64 = {
361    { 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH },
362   64U,
363   (float32_t *)twiddleCoef_rfft_64
364 };
365 #endif
366 
367 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_64) && defined(ARM_TABLE_BITREVIDX_FLT_64) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_128))
368 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len128 = {
369   { 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH },
370   128U,
371   (float32_t *)twiddleCoef_rfft_128
372 };
373 #endif
374 
375 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_128) && defined(ARM_TABLE_BITREVIDX_FLT_128) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_256))
376 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len256 = {
377   { 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH },
378   256U,
379   (float32_t *)twiddleCoef_rfft_256
380 };
381 #endif
382 
383 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_256) && defined(ARM_TABLE_BITREVIDX_FLT_256) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_512))
384 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len512 = {
385   { 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH },
386   512U,
387   (float32_t *)twiddleCoef_rfft_512
388 };
389 #endif
390 
391 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_512) && defined(ARM_TABLE_BITREVIDX_FLT_512) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_1024))
392 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len1024 = {
393   { 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH },
394   1024U,
395   (float32_t *)twiddleCoef_rfft_1024
396 };
397 #endif
398 
399 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_1024) && defined(ARM_TABLE_BITREVIDX_FLT_1024) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_2048))
400 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len2048 = {
401   { 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH },
402   2048U,
403   (float32_t *)twiddleCoef_rfft_2048
404 };
405 #endif
406 
407 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_2048) && defined(ARM_TABLE_BITREVIDX_FLT_2048) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_4096))
408 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len4096 = {
409   { 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH },
410   4096U,
411   (float32_t *)twiddleCoef_rfft_4096
412 };
413 #endif
414 
415 #endif /* #if !defined(ARM_MATH_MVEF) || defined(ARM_MATH_AUTOVECTORIZE) */
416 
417 /* Fixed-point structs */
418 /* q31_t */
419 
420 #if !defined(ARM_MATH_MVEI) || defined(ARM_MATH_AUTOVECTORIZE)
421 
422 /*
423 
424 Those structures cannot be used to initialize the MVE version of the FFT Q31 instances.
425 So they are not compiled when MVE is defined.
426 
427 For the MVE version, the new arm_cfft_init_f32 must be used.
428 
429 
430 */
431 
432 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))
433 const arm_rfft_instance_q31 arm_rfft_sR_q31_len32 = {
434   32U,
435   0,
436   1,
437   256U,
438   (q31_t*)realCoefAQ31,
439   (q31_t*)realCoefBQ31,
440   &arm_cfft_sR_q31_len16
441 };
442 #endif
443 
444 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))
445 const arm_rfft_instance_q31 arm_rfft_sR_q31_len64 = {
446   64U,
447   0,
448   1,
449   128U,
450   (q31_t*)realCoefAQ31,
451   (q31_t*)realCoefBQ31,
452   &arm_cfft_sR_q31_len32
453 };
454 #endif
455 
456 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))
457 const arm_rfft_instance_q31 arm_rfft_sR_q31_len128 = {
458   128U,
459   0,
460   1,
461   64U,
462   (q31_t*)realCoefAQ31,
463   (q31_t*)realCoefBQ31,
464   &arm_cfft_sR_q31_len64
465 };
466 #endif
467 
468 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))
469 const arm_rfft_instance_q31 arm_rfft_sR_q31_len256 = {
470   256U,
471   0,
472   1,
473   32U,
474   (q31_t*)realCoefAQ31,
475   (q31_t*)realCoefBQ31,
476   &arm_cfft_sR_q31_len128
477 };
478 #endif
479 
480 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))
481 const arm_rfft_instance_q31 arm_rfft_sR_q31_len512 = {
482   512U,
483   0,
484   1,
485   16U,
486   (q31_t*)realCoefAQ31,
487   (q31_t*)realCoefBQ31,
488   &arm_cfft_sR_q31_len256
489 };
490 #endif
491 
492 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))
493 const arm_rfft_instance_q31 arm_rfft_sR_q31_len1024 = {
494   1024U,
495   0,
496   1,
497   8U,
498   (q31_t*)realCoefAQ31,
499   (q31_t*)realCoefBQ31,
500   &arm_cfft_sR_q31_len512
501 };
502 #endif
503 
504 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))
505 const arm_rfft_instance_q31 arm_rfft_sR_q31_len2048 = {
506   2048U,
507   0,
508   1,
509   4U,
510   (q31_t*)realCoefAQ31,
511   (q31_t*)realCoefBQ31,
512   &arm_cfft_sR_q31_len1024
513 };
514 #endif
515 
516 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))
517 const arm_rfft_instance_q31 arm_rfft_sR_q31_len4096 = {
518   4096U,
519   0,
520   1,
521   2U,
522   (q31_t*)realCoefAQ31,
523   (q31_t*)realCoefBQ31,
524   &arm_cfft_sR_q31_len2048
525 };
526 #endif
527 
528 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q31) && defined(ARM_TABLE_TWIDDLECOEF_Q31_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))
529 const arm_rfft_instance_q31 arm_rfft_sR_q31_len8192 = {
530   8192U,
531   0,
532   1,
533   1U,
534   (q31_t*)realCoefAQ31,
535   (q31_t*)realCoefBQ31,
536   &arm_cfft_sR_q31_len4096
537 };
538 #endif
539 
540 
541 
542 /* q15_t */
543 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))
544 const arm_rfft_instance_q15 arm_rfft_sR_q15_len32 = {
545   32U,
546   0,
547   1,
548   256U,
549   (q15_t*)realCoefAQ15,
550   (q15_t*)realCoefBQ15,
551   &arm_cfft_sR_q15_len16
552 };
553 #endif
554 
555 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))
556 const arm_rfft_instance_q15 arm_rfft_sR_q15_len64 = {
557   64U,
558   0,
559   1,
560   128U,
561   (q15_t*)realCoefAQ15,
562   (q15_t*)realCoefBQ15,
563   &arm_cfft_sR_q15_len32
564 };
565 #endif
566 
567 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))
568 const arm_rfft_instance_q15 arm_rfft_sR_q15_len128 = {
569   128U,
570   0,
571   1,
572   64U,
573   (q15_t*)realCoefAQ15,
574   (q15_t*)realCoefBQ15,
575   &arm_cfft_sR_q15_len64
576 };
577 #endif
578 
579 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))
580 const arm_rfft_instance_q15 arm_rfft_sR_q15_len256 = {
581   256U,
582   0,
583   1,
584   32U,
585   (q15_t*)realCoefAQ15,
586   (q15_t*)realCoefBQ15,
587   &arm_cfft_sR_q15_len128
588 };
589 #endif
590 
591 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))
592 const arm_rfft_instance_q15 arm_rfft_sR_q15_len512 = {
593   512U,
594   0,
595   1,
596   16U,
597   (q15_t*)realCoefAQ15,
598   (q15_t*)realCoefBQ15,
599   &arm_cfft_sR_q15_len256
600 };
601 #endif
602 
603 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))
604 const arm_rfft_instance_q15 arm_rfft_sR_q15_len1024 = {
605   1024U,
606   0,
607   1,
608   8U,
609   (q15_t*)realCoefAQ15,
610   (q15_t*)realCoefBQ15,
611   &arm_cfft_sR_q15_len512
612 };
613 #endif
614 
615 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))
616 const arm_rfft_instance_q15 arm_rfft_sR_q15_len2048 = {
617   2048U,
618   0,
619   1,
620   4U,
621   (q15_t*)realCoefAQ15,
622   (q15_t*)realCoefBQ15,
623   &arm_cfft_sR_q15_len1024
624 };
625 #endif
626 
627 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))
628 const arm_rfft_instance_q15 arm_rfft_sR_q15_len4096 = {
629   4096U,
630   0,
631   1,
632   2U,
633   (q15_t*)realCoefAQ15,
634   (q15_t*)realCoefBQ15,
635   &arm_cfft_sR_q15_len2048
636 };
637 #endif
638 
639 #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_REALCOEF_Q15) && defined(ARM_TABLE_TWIDDLECOEF_Q15_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))
640 const arm_rfft_instance_q15 arm_rfft_sR_q15_len8192 = {
641   8192U,
642   0,
643   1,
644   1U,
645   (q15_t*)realCoefAQ15,
646   (q15_t*)realCoefBQ15,
647   &arm_cfft_sR_q15_len4096
648 };
649 #endif
650 
651 #endif /* !defined(ARM_MATH_MVEI) */
652 
653 
654 #endif
655