arm_const_structs.c 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654
  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. #include "arm_math_types.h"
  30. #include "arm_const_structs.h"
  31. /*
  32. ALLOW TABLE is true when config table is enabled and the Tramsform folder is included
  33. for compilation.
  34. */
  35. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FFT_ALLOW_TABLES)
  36. /* Floating-point structs */
  37. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_16) && defined(ARM_TABLE_BITREVIDX_FLT64_16))
  38. const arm_cfft_instance_f64 arm_cfft_sR_f64_len16 = {
  39. 16, (const float64_t *)twiddleCoefF64_16, armBitRevIndexTableF64_16, ARMBITREVINDEXTABLEF64_16_TABLE_LENGTH
  40. };
  41. #endif
  42. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_32) && defined(ARM_TABLE_BITREVIDX_FLT64_32))
  43. const arm_cfft_instance_f64 arm_cfft_sR_f64_len32 = {
  44. 32, (const float64_t *)twiddleCoefF64_32, armBitRevIndexTableF64_32, ARMBITREVINDEXTABLEF64_32_TABLE_LENGTH
  45. };
  46. #endif
  47. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_64) && defined(ARM_TABLE_BITREVIDX_FLT64_64))
  48. const arm_cfft_instance_f64 arm_cfft_sR_f64_len64 = {
  49. 64, (const float64_t *)twiddleCoefF64_64, armBitRevIndexTableF64_64, ARMBITREVINDEXTABLEF64_64_TABLE_LENGTH
  50. };
  51. #endif
  52. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_128) && defined(ARM_TABLE_BITREVIDX_FLT64_128))
  53. const arm_cfft_instance_f64 arm_cfft_sR_f64_len128 = {
  54. 128, (const float64_t *)twiddleCoefF64_128, armBitRevIndexTableF64_128, ARMBITREVINDEXTABLEF64_128_TABLE_LENGTH
  55. };
  56. #endif
  57. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_256) && defined(ARM_TABLE_BITREVIDX_FLT64_256))
  58. const arm_cfft_instance_f64 arm_cfft_sR_f64_len256 = {
  59. 256, (const float64_t *)twiddleCoefF64_256, armBitRevIndexTableF64_256, ARMBITREVINDEXTABLEF64_256_TABLE_LENGTH
  60. };
  61. #endif
  62. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_512) && defined(ARM_TABLE_BITREVIDX_FLT64_512))
  63. const arm_cfft_instance_f64 arm_cfft_sR_f64_len512 = {
  64. 512, (const float64_t *)twiddleCoefF64_512, armBitRevIndexTableF64_512, ARMBITREVINDEXTABLEF64_512_TABLE_LENGTH
  65. };
  66. #endif
  67. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_1024) && defined(ARM_TABLE_BITREVIDX_FLT64_1024))
  68. const arm_cfft_instance_f64 arm_cfft_sR_f64_len1024 = {
  69. 1024, (const float64_t *)twiddleCoefF64_1024, armBitRevIndexTableF64_1024, ARMBITREVINDEXTABLEF64_1024_TABLE_LENGTH
  70. };
  71. #endif
  72. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_2048) && defined(ARM_TABLE_BITREVIDX_FLT64_2048))
  73. const arm_cfft_instance_f64 arm_cfft_sR_f64_len2048 = {
  74. 2048, (const float64_t *)twiddleCoefF64_2048, armBitRevIndexTableF64_2048, ARMBITREVINDEXTABLEF64_2048_TABLE_LENGTH
  75. };
  76. #endif
  77. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F64_4096) && defined(ARM_TABLE_BITREVIDX_FLT64_4096))
  78. const arm_cfft_instance_f64 arm_cfft_sR_f64_len4096 = {
  79. 4096, (const float64_t *)twiddleCoefF64_4096, armBitRevIndexTableF64_4096, ARMBITREVINDEXTABLEF64_4096_TABLE_LENGTH
  80. };
  81. #endif
  82. /* Floating-point structs */
  83. #if !defined(ARM_MATH_MVEF) || defined(ARM_MATH_AUTOVECTORIZE)
  84. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_16) && defined(ARM_TABLE_BITREVIDX_FLT_16))
  85. const arm_cfft_instance_f32 arm_cfft_sR_f32_len16 = {
  86. 16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE_16_TABLE_LENGTH
  87. };
  88. #endif
  89. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_32) && defined(ARM_TABLE_BITREVIDX_FLT_32))
  90. const arm_cfft_instance_f32 arm_cfft_sR_f32_len32 = {
  91. 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH
  92. };
  93. #endif
  94. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_64) && defined(ARM_TABLE_BITREVIDX_FLT_64))
  95. const arm_cfft_instance_f32 arm_cfft_sR_f32_len64 = {
  96. 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH
  97. };
  98. #endif
  99. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_128) && defined(ARM_TABLE_BITREVIDX_FLT_128))
  100. const arm_cfft_instance_f32 arm_cfft_sR_f32_len128 = {
  101. 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH
  102. };
  103. #endif
  104. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_256) && defined(ARM_TABLE_BITREVIDX_FLT_256))
  105. const arm_cfft_instance_f32 arm_cfft_sR_f32_len256 = {
  106. 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH
  107. };
  108. #endif
  109. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_512) && defined(ARM_TABLE_BITREVIDX_FLT_512))
  110. const arm_cfft_instance_f32 arm_cfft_sR_f32_len512 = {
  111. 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH
  112. };
  113. #endif
  114. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_1024) && defined(ARM_TABLE_BITREVIDX_FLT_1024))
  115. const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024 = {
  116. 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH
  117. };
  118. #endif
  119. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_2048) && defined(ARM_TABLE_BITREVIDX_FLT_2048))
  120. const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048 = {
  121. 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH
  122. };
  123. #endif
  124. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_4096) && defined(ARM_TABLE_BITREVIDX_FLT_4096))
  125. const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096 = {
  126. 4096, twiddleCoef_4096, armBitRevIndexTable4096, ARMBITREVINDEXTABLE_4096_TABLE_LENGTH
  127. };
  128. #endif
  129. #endif /* !defined(ARM_MATH_MVEF) || defined(ARM_MATH_AUTOVECTORIZE) */
  130. /* Fixed-point structs */
  131. #if !defined(ARM_MATH_MVEI) || defined(ARM_MATH_AUTOVECTORIZE)
  132. /*
  133. Those structures cannot be used to initialize the MVE version of the FFT Q31 instances.
  134. So they are not compiled when MVE is defined.
  135. For the MVE version, the new arm_cfft_init_f32 must be used.
  136. */
  137. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))
  138. const arm_cfft_instance_q31 arm_cfft_sR_q31_len16 = {
  139. 16, twiddleCoef_16_q31, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH
  140. };
  141. #endif
  142. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))
  143. const arm_cfft_instance_q31 arm_cfft_sR_q31_len32 = {
  144. 32, twiddleCoef_32_q31, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH
  145. };
  146. #endif
  147. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))
  148. const arm_cfft_instance_q31 arm_cfft_sR_q31_len64 = {
  149. 64, twiddleCoef_64_q31, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH
  150. };
  151. #endif
  152. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))
  153. const arm_cfft_instance_q31 arm_cfft_sR_q31_len128 = {
  154. 128, twiddleCoef_128_q31, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH
  155. };
  156. #endif
  157. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))
  158. const arm_cfft_instance_q31 arm_cfft_sR_q31_len256 = {
  159. 256, twiddleCoef_256_q31, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH
  160. };
  161. #endif
  162. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))
  163. const arm_cfft_instance_q31 arm_cfft_sR_q31_len512 = {
  164. 512, twiddleCoef_512_q31, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH
  165. };
  166. #endif
  167. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))
  168. const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024 = {
  169. 1024, twiddleCoef_1024_q31, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH
  170. };
  171. #endif
  172. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))
  173. const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048 = {
  174. 2048, twiddleCoef_2048_q31, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH
  175. };
  176. #endif
  177. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q31_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))
  178. const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096 = {
  179. 4096, twiddleCoef_4096_q31, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH
  180. };
  181. #endif
  182. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_16) && defined(ARM_TABLE_BITREVIDX_FXT_16))
  183. const arm_cfft_instance_q15 arm_cfft_sR_q15_len16 = {
  184. 16, twiddleCoef_16_q15, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH
  185. };
  186. #endif
  187. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_32) && defined(ARM_TABLE_BITREVIDX_FXT_32))
  188. const arm_cfft_instance_q15 arm_cfft_sR_q15_len32 = {
  189. 32, twiddleCoef_32_q15, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH
  190. };
  191. #endif
  192. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_64) && defined(ARM_TABLE_BITREVIDX_FXT_64))
  193. const arm_cfft_instance_q15 arm_cfft_sR_q15_len64 = {
  194. 64, twiddleCoef_64_q15, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH
  195. };
  196. #endif
  197. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_128) && defined(ARM_TABLE_BITREVIDX_FXT_128))
  198. const arm_cfft_instance_q15 arm_cfft_sR_q15_len128 = {
  199. 128, twiddleCoef_128_q15, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH
  200. };
  201. #endif
  202. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_256) && defined(ARM_TABLE_BITREVIDX_FXT_256))
  203. const arm_cfft_instance_q15 arm_cfft_sR_q15_len256 = {
  204. 256, twiddleCoef_256_q15, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH
  205. };
  206. #endif
  207. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_512) && defined(ARM_TABLE_BITREVIDX_FXT_512))
  208. const arm_cfft_instance_q15 arm_cfft_sR_q15_len512 = {
  209. 512, twiddleCoef_512_q15, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH
  210. };
  211. #endif
  212. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_1024) && defined(ARM_TABLE_BITREVIDX_FXT_1024))
  213. const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024 = {
  214. 1024, twiddleCoef_1024_q15, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH
  215. };
  216. #endif
  217. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_2048) && defined(ARM_TABLE_BITREVIDX_FXT_2048))
  218. const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048 = {
  219. 2048, twiddleCoef_2048_q15, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH
  220. };
  221. #endif
  222. #if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_Q15_4096) && defined(ARM_TABLE_BITREVIDX_FXT_4096))
  223. const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096 = {
  224. 4096, twiddleCoef_4096_q15, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH
  225. };
  226. #endif
  227. #endif /* !defined(ARM_MATH_MVEI) */
  228. /* Structure for real-value inputs */
  229. /* Double precision strucs */
  230. #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))
  231. const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len32 = {
  232. { 16, (const float64_t *)twiddleCoefF64_16, armBitRevIndexTableF64_16, ARMBITREVINDEXTABLEF64_16_TABLE_LENGTH },
  233. 32U,
  234. (float64_t *)twiddleCoefF64_rfft_32
  235. };
  236. #endif
  237. #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))
  238. const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len64 = {
  239. { 32, (const float64_t *)twiddleCoefF64_32, armBitRevIndexTableF64_32, ARMBITREVINDEXTABLEF64_32_TABLE_LENGTH },
  240. 64U,
  241. (float64_t *)twiddleCoefF64_rfft_64
  242. };
  243. #endif
  244. #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))
  245. const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len128 = {
  246. { 64, (const float64_t *)twiddleCoefF64_64, armBitRevIndexTableF64_64, ARMBITREVINDEXTABLEF64_64_TABLE_LENGTH },
  247. 128U,
  248. (float64_t *)twiddleCoefF64_rfft_128
  249. };
  250. #endif
  251. #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))
  252. const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len256 = {
  253. { 128, (const float64_t *)twiddleCoefF64_128, armBitRevIndexTableF64_128, ARMBITREVINDEXTABLEF64_128_TABLE_LENGTH },
  254. 256U,
  255. (float64_t *)twiddleCoefF64_rfft_256
  256. };
  257. #endif
  258. #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))
  259. const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len512 = {
  260. { 256, (const float64_t *)twiddleCoefF64_256, armBitRevIndexTableF64_256, ARMBITREVINDEXTABLEF64_256_TABLE_LENGTH },
  261. 512U,
  262. (float64_t *)twiddleCoefF64_rfft_512
  263. };
  264. #endif
  265. #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))
  266. const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len1024 = {
  267. { 512, (const float64_t *)twiddleCoefF64_512, armBitRevIndexTableF64_512, ARMBITREVINDEXTABLEF64_512_TABLE_LENGTH },
  268. 1024U,
  269. (float64_t *)twiddleCoefF64_rfft_1024
  270. };
  271. #endif
  272. #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))
  273. const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len2048 = {
  274. { 1024, (const float64_t *)twiddleCoefF64_1024, armBitRevIndexTableF64_1024, ARMBITREVINDEXTABLEF64_1024_TABLE_LENGTH },
  275. 2048U,
  276. (float64_t *)twiddleCoefF64_rfft_2048
  277. };
  278. #endif
  279. #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))
  280. const arm_rfft_fast_instance_f64 arm_rfft_fast_sR_f64_len4096 = {
  281. { 2048, (const float64_t *)twiddleCoefF64_2048, armBitRevIndexTableF64_2048, ARMBITREVINDEXTABLEF64_2048_TABLE_LENGTH },
  282. 4096U,
  283. (float64_t *)twiddleCoefF64_rfft_4096
  284. };
  285. #endif
  286. /* Floating-point structs */
  287. #if !defined(ARM_MATH_MVEF) || defined(ARM_MATH_AUTOVECTORIZE)
  288. #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))
  289. const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len32 = {
  290. { 16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE_16_TABLE_LENGTH },
  291. 32U,
  292. (float32_t *)twiddleCoef_rfft_32
  293. };
  294. #endif
  295. #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))
  296. const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len64 = {
  297. { 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH },
  298. 64U,
  299. (float32_t *)twiddleCoef_rfft_64
  300. };
  301. #endif
  302. #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))
  303. const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len128 = {
  304. { 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH },
  305. 128U,
  306. (float32_t *)twiddleCoef_rfft_128
  307. };
  308. #endif
  309. #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))
  310. const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len256 = {
  311. { 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH },
  312. 256U,
  313. (float32_t *)twiddleCoef_rfft_256
  314. };
  315. #endif
  316. #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))
  317. const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len512 = {
  318. { 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH },
  319. 512U,
  320. (float32_t *)twiddleCoef_rfft_512
  321. };
  322. #endif
  323. #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))
  324. const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len1024 = {
  325. { 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH },
  326. 1024U,
  327. (float32_t *)twiddleCoef_rfft_1024
  328. };
  329. #endif
  330. #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))
  331. const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len2048 = {
  332. { 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH },
  333. 2048U,
  334. (float32_t *)twiddleCoef_rfft_2048
  335. };
  336. #endif
  337. #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))
  338. const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len4096 = {
  339. { 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH },
  340. 4096U,
  341. (float32_t *)twiddleCoef_rfft_4096
  342. };
  343. #endif
  344. #endif /* #if !defined(ARM_MATH_MVEF) || defined(ARM_MATH_AUTOVECTORIZE) */
  345. /* Fixed-point structs */
  346. /* q31_t */
  347. #if !defined(ARM_MATH_MVEI) || defined(ARM_MATH_AUTOVECTORIZE)
  348. /*
  349. Those structures cannot be used to initialize the MVE version of the FFT Q31 instances.
  350. So they are not compiled when MVE is defined.
  351. For the MVE version, the new arm_cfft_init_f32 must be used.
  352. */
  353. #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))
  354. const arm_rfft_instance_q31 arm_rfft_sR_q31_len32 = {
  355. 32U,
  356. 0,
  357. 1,
  358. 256U,
  359. (q31_t*)realCoefAQ31,
  360. (q31_t*)realCoefBQ31,
  361. &arm_cfft_sR_q31_len16
  362. };
  363. #endif
  364. #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))
  365. const arm_rfft_instance_q31 arm_rfft_sR_q31_len64 = {
  366. 64U,
  367. 0,
  368. 1,
  369. 128U,
  370. (q31_t*)realCoefAQ31,
  371. (q31_t*)realCoefBQ31,
  372. &arm_cfft_sR_q31_len32
  373. };
  374. #endif
  375. #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))
  376. const arm_rfft_instance_q31 arm_rfft_sR_q31_len128 = {
  377. 128U,
  378. 0,
  379. 1,
  380. 64U,
  381. (q31_t*)realCoefAQ31,
  382. (q31_t*)realCoefBQ31,
  383. &arm_cfft_sR_q31_len64
  384. };
  385. #endif
  386. #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))
  387. const arm_rfft_instance_q31 arm_rfft_sR_q31_len256 = {
  388. 256U,
  389. 0,
  390. 1,
  391. 32U,
  392. (q31_t*)realCoefAQ31,
  393. (q31_t*)realCoefBQ31,
  394. &arm_cfft_sR_q31_len128
  395. };
  396. #endif
  397. #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))
  398. const arm_rfft_instance_q31 arm_rfft_sR_q31_len512 = {
  399. 512U,
  400. 0,
  401. 1,
  402. 16U,
  403. (q31_t*)realCoefAQ31,
  404. (q31_t*)realCoefBQ31,
  405. &arm_cfft_sR_q31_len256
  406. };
  407. #endif
  408. #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))
  409. const arm_rfft_instance_q31 arm_rfft_sR_q31_len1024 = {
  410. 1024U,
  411. 0,
  412. 1,
  413. 8U,
  414. (q31_t*)realCoefAQ31,
  415. (q31_t*)realCoefBQ31,
  416. &arm_cfft_sR_q31_len512
  417. };
  418. #endif
  419. #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))
  420. const arm_rfft_instance_q31 arm_rfft_sR_q31_len2048 = {
  421. 2048U,
  422. 0,
  423. 1,
  424. 4U,
  425. (q31_t*)realCoefAQ31,
  426. (q31_t*)realCoefBQ31,
  427. &arm_cfft_sR_q31_len1024
  428. };
  429. #endif
  430. #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))
  431. const arm_rfft_instance_q31 arm_rfft_sR_q31_len4096 = {
  432. 4096U,
  433. 0,
  434. 1,
  435. 2U,
  436. (q31_t*)realCoefAQ31,
  437. (q31_t*)realCoefBQ31,
  438. &arm_cfft_sR_q31_len2048
  439. };
  440. #endif
  441. #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))
  442. const arm_rfft_instance_q31 arm_rfft_sR_q31_len8192 = {
  443. 8192U,
  444. 0,
  445. 1,
  446. 1U,
  447. (q31_t*)realCoefAQ31,
  448. (q31_t*)realCoefBQ31,
  449. &arm_cfft_sR_q31_len4096
  450. };
  451. #endif
  452. /* q15_t */
  453. #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))
  454. const arm_rfft_instance_q15 arm_rfft_sR_q15_len32 = {
  455. 32U,
  456. 0,
  457. 1,
  458. 256U,
  459. (q15_t*)realCoefAQ15,
  460. (q15_t*)realCoefBQ15,
  461. &arm_cfft_sR_q15_len16
  462. };
  463. #endif
  464. #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))
  465. const arm_rfft_instance_q15 arm_rfft_sR_q15_len64 = {
  466. 64U,
  467. 0,
  468. 1,
  469. 128U,
  470. (q15_t*)realCoefAQ15,
  471. (q15_t*)realCoefBQ15,
  472. &arm_cfft_sR_q15_len32
  473. };
  474. #endif
  475. #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))
  476. const arm_rfft_instance_q15 arm_rfft_sR_q15_len128 = {
  477. 128U,
  478. 0,
  479. 1,
  480. 64U,
  481. (q15_t*)realCoefAQ15,
  482. (q15_t*)realCoefBQ15,
  483. &arm_cfft_sR_q15_len64
  484. };
  485. #endif
  486. #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))
  487. const arm_rfft_instance_q15 arm_rfft_sR_q15_len256 = {
  488. 256U,
  489. 0,
  490. 1,
  491. 32U,
  492. (q15_t*)realCoefAQ15,
  493. (q15_t*)realCoefBQ15,
  494. &arm_cfft_sR_q15_len128
  495. };
  496. #endif
  497. #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))
  498. const arm_rfft_instance_q15 arm_rfft_sR_q15_len512 = {
  499. 512U,
  500. 0,
  501. 1,
  502. 16U,
  503. (q15_t*)realCoefAQ15,
  504. (q15_t*)realCoefBQ15,
  505. &arm_cfft_sR_q15_len256
  506. };
  507. #endif
  508. #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))
  509. const arm_rfft_instance_q15 arm_rfft_sR_q15_len1024 = {
  510. 1024U,
  511. 0,
  512. 1,
  513. 8U,
  514. (q15_t*)realCoefAQ15,
  515. (q15_t*)realCoefBQ15,
  516. &arm_cfft_sR_q15_len512
  517. };
  518. #endif
  519. #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))
  520. const arm_rfft_instance_q15 arm_rfft_sR_q15_len2048 = {
  521. 2048U,
  522. 0,
  523. 1,
  524. 4U,
  525. (q15_t*)realCoefAQ15,
  526. (q15_t*)realCoefBQ15,
  527. &arm_cfft_sR_q15_len1024
  528. };
  529. #endif
  530. #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))
  531. const arm_rfft_instance_q15 arm_rfft_sR_q15_len4096 = {
  532. 4096U,
  533. 0,
  534. 1,
  535. 2U,
  536. (q15_t*)realCoefAQ15,
  537. (q15_t*)realCoefBQ15,
  538. &arm_cfft_sR_q15_len2048
  539. };
  540. #endif
  541. #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))
  542. const arm_rfft_instance_q15 arm_rfft_sR_q15_len8192 = {
  543. 8192U,
  544. 0,
  545. 1,
  546. 1U,
  547. (q15_t*)realCoefAQ15,
  548. (q15_t*)realCoefBQ15,
  549. &arm_cfft_sR_q15_len4096
  550. };
  551. #endif
  552. #endif /* !defined(ARM_MATH_MVEI) */
  553. #endif