arm_const_structs.c 27 KB

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