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 30 #include "arm_const_structs.h" 31 32 /* Floating-point structs */ 33 const arm_cfft_instance_f32 arm_cfft_sR_f32_len16 = { 34 16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE_16_TABLE_LENGTH 35 }; 36 37 const arm_cfft_instance_f32 arm_cfft_sR_f32_len32 = { 38 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH 39 }; 40 41 const arm_cfft_instance_f32 arm_cfft_sR_f32_len64 = { 42 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH 43 }; 44 45 const arm_cfft_instance_f32 arm_cfft_sR_f32_len128 = { 46 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH 47 }; 48 49 const arm_cfft_instance_f32 arm_cfft_sR_f32_len256 = { 50 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH 51 }; 52 53 const arm_cfft_instance_f32 arm_cfft_sR_f32_len512 = { 54 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH 55 }; 56 57 const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024 = { 58 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH 59 }; 60 61 const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048 = { 62 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH 63 }; 64 65 const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096 = { 66 4096, twiddleCoef_4096, armBitRevIndexTable4096, ARMBITREVINDEXTABLE_4096_TABLE_LENGTH 67 }; 68 69 /* Fixed-point structs */ 70 const arm_cfft_instance_q31 arm_cfft_sR_q31_len16 = { 71 16, twiddleCoef_16_q31, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH 72 }; 73 74 const arm_cfft_instance_q31 arm_cfft_sR_q31_len32 = { 75 32, twiddleCoef_32_q31, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH 76 }; 77 78 const arm_cfft_instance_q31 arm_cfft_sR_q31_len64 = { 79 64, twiddleCoef_64_q31, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH 80 }; 81 82 const arm_cfft_instance_q31 arm_cfft_sR_q31_len128 = { 83 128, twiddleCoef_128_q31, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH 84 }; 85 86 const arm_cfft_instance_q31 arm_cfft_sR_q31_len256 = { 87 256, twiddleCoef_256_q31, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH 88 }; 89 90 const arm_cfft_instance_q31 arm_cfft_sR_q31_len512 = { 91 512, twiddleCoef_512_q31, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH 92 }; 93 94 const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024 = { 95 1024, twiddleCoef_1024_q31, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH 96 }; 97 98 const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048 = { 99 2048, twiddleCoef_2048_q31, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH 100 }; 101 102 const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096 = { 103 4096, twiddleCoef_4096_q31, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH 104 }; 105 106 const arm_cfft_instance_q15 arm_cfft_sR_q15_len16 = { 107 16, twiddleCoef_16_q15, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH 108 }; 109 110 const arm_cfft_instance_q15 arm_cfft_sR_q15_len32 = { 111 32, twiddleCoef_32_q15, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH 112 }; 113 114 const arm_cfft_instance_q15 arm_cfft_sR_q15_len64 = { 115 64, twiddleCoef_64_q15, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH 116 }; 117 118 const arm_cfft_instance_q15 arm_cfft_sR_q15_len128 = { 119 128, twiddleCoef_128_q15, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH 120 }; 121 122 const arm_cfft_instance_q15 arm_cfft_sR_q15_len256 = { 123 256, twiddleCoef_256_q15, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH 124 }; 125 126 const arm_cfft_instance_q15 arm_cfft_sR_q15_len512 = { 127 512, twiddleCoef_512_q15, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH 128 }; 129 130 const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024 = { 131 1024, twiddleCoef_1024_q15, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH 132 }; 133 134 const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048 = { 135 2048, twiddleCoef_2048_q15, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH 136 }; 137 138 const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096 = { 139 4096, twiddleCoef_4096_q15, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH 140 }; 141 142 /* Structure for real-value inputs */ 143 /* Floating-point structs */ 144 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len32 = { 145 { 16, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_16_TABLE_LENGTH }, 146 32u, 147 (float32_t *)twiddleCoef_rfft_32 148 }; 149 150 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len64 = { 151 { 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH }, 152 64u, 153 (float32_t *)twiddleCoef_rfft_64 154 }; 155 156 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len128 = { 157 { 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH }, 158 128u, 159 (float32_t *)twiddleCoef_rfft_128 160 }; 161 162 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len256 = { 163 { 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH }, 164 256u, 165 (float32_t *)twiddleCoef_rfft_256 166 }; 167 168 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len512 = { 169 { 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH }, 170 512u, 171 (float32_t *)twiddleCoef_rfft_512 172 }; 173 174 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len1024 = { 175 { 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH }, 176 1024u, 177 (float32_t *)twiddleCoef_rfft_1024 178 }; 179 180 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len2048 = { 181 { 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH }, 182 2048u, 183 (float32_t *)twiddleCoef_rfft_2048 184 }; 185 186 const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len4096 = { 187 { 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH }, 188 4096u, 189 (float32_t *)twiddleCoef_rfft_4096 190 }; 191 192 /* Fixed-point structs */ 193 /* q31_t */ 194 extern const q31_t realCoefAQ31[8192]; 195 extern const q31_t realCoefBQ31[8192]; 196 197 const arm_rfft_instance_q31 arm_rfft_sR_q31_len32 = { 198 32u, 199 0, 200 1, 201 256u, 202 (q31_t*)realCoefAQ31, 203 (q31_t*)realCoefBQ31, 204 &arm_cfft_sR_q31_len16 205 }; 206 207 const arm_rfft_instance_q31 arm_rfft_sR_q31_len64 = { 208 64u, 209 0, 210 1, 211 128u, 212 (q31_t*)realCoefAQ31, 213 (q31_t*)realCoefBQ31, 214 &arm_cfft_sR_q31_len32 215 }; 216 217 const arm_rfft_instance_q31 arm_rfft_sR_q31_len128 = { 218 128u, 219 0, 220 1, 221 64u, 222 (q31_t*)realCoefAQ31, 223 (q31_t*)realCoefBQ31, 224 &arm_cfft_sR_q31_len64 225 }; 226 227 const arm_rfft_instance_q31 arm_rfft_sR_q31_len256 = { 228 256u, 229 0, 230 1, 231 32u, 232 (q31_t*)realCoefAQ31, 233 (q31_t*)realCoefBQ31, 234 &arm_cfft_sR_q31_len128 235 }; 236 237 const arm_rfft_instance_q31 arm_rfft_sR_q31_len512 = { 238 512u, 239 0, 240 1, 241 16u, 242 (q31_t*)realCoefAQ31, 243 (q31_t*)realCoefBQ31, 244 &arm_cfft_sR_q31_len256 245 }; 246 247 const arm_rfft_instance_q31 arm_rfft_sR_q31_len1024 = { 248 1024u, 249 0, 250 1, 251 8u, 252 (q31_t*)realCoefAQ31, 253 (q31_t*)realCoefBQ31, 254 &arm_cfft_sR_q31_len512 255 }; 256 257 const arm_rfft_instance_q31 arm_rfft_sR_q31_len2048 = { 258 2048u, 259 0, 260 1, 261 4u, 262 (q31_t*)realCoefAQ31, 263 (q31_t*)realCoefBQ31, 264 &arm_cfft_sR_q31_len1024 265 }; 266 267 const arm_rfft_instance_q31 arm_rfft_sR_q31_len4096 = { 268 4096u, 269 0, 270 1, 271 2u, 272 (q31_t*)realCoefAQ31, 273 (q31_t*)realCoefBQ31, 274 &arm_cfft_sR_q31_len2048 275 }; 276 277 const arm_rfft_instance_q31 arm_rfft_sR_q31_len8192 = { 278 8192u, 279 0, 280 1, 281 1u, 282 (q31_t*)realCoefAQ31, 283 (q31_t*)realCoefBQ31, 284 &arm_cfft_sR_q31_len4096 285 }; 286 287 /* q15_t */ 288 extern const q15_t realCoefAQ15[8192]; 289 extern const q15_t realCoefBQ15[8192]; 290 291 const arm_rfft_instance_q15 arm_rfft_sR_q15_len32 = { 292 32u, 293 0, 294 1, 295 256u, 296 (q15_t*)realCoefAQ15, 297 (q15_t*)realCoefBQ15, 298 &arm_cfft_sR_q15_len16 299 }; 300 301 const arm_rfft_instance_q15 arm_rfft_sR_q15_len64 = { 302 64u, 303 0, 304 1, 305 128u, 306 (q15_t*)realCoefAQ15, 307 (q15_t*)realCoefBQ15, 308 &arm_cfft_sR_q15_len32 309 }; 310 311 const arm_rfft_instance_q15 arm_rfft_sR_q15_len128 = { 312 128u, 313 0, 314 1, 315 64u, 316 (q15_t*)realCoefAQ15, 317 (q15_t*)realCoefBQ15, 318 &arm_cfft_sR_q15_len64 319 }; 320 321 const arm_rfft_instance_q15 arm_rfft_sR_q15_len256 = { 322 256u, 323 0, 324 1, 325 32u, 326 (q15_t*)realCoefAQ15, 327 (q15_t*)realCoefBQ15, 328 &arm_cfft_sR_q15_len128 329 }; 330 331 const arm_rfft_instance_q15 arm_rfft_sR_q15_len512 = { 332 512u, 333 0, 334 1, 335 16u, 336 (q15_t*)realCoefAQ15, 337 (q15_t*)realCoefBQ15, 338 &arm_cfft_sR_q15_len256 339 }; 340 341 const arm_rfft_instance_q15 arm_rfft_sR_q15_len1024 = { 342 1024u, 343 0, 344 1, 345 8u, 346 (q15_t*)realCoefAQ15, 347 (q15_t*)realCoefBQ15, 348 &arm_cfft_sR_q15_len512 349 }; 350 351 const arm_rfft_instance_q15 arm_rfft_sR_q15_len2048 = { 352 2048u, 353 0, 354 1, 355 4u, 356 (q15_t*)realCoefAQ15, 357 (q15_t*)realCoefBQ15, 358 &arm_cfft_sR_q15_len1024 359 }; 360 361 const arm_rfft_instance_q15 arm_rfft_sR_q15_len4096 = { 362 4096u, 363 0, 364 1, 365 2u, 366 (q15_t*)realCoefAQ15, 367 (q15_t*)realCoefBQ15, 368 &arm_cfft_sR_q15_len2048 369 }; 370 371 const arm_rfft_instance_q15 arm_rfft_sR_q15_len8192 = { 372 8192u, 373 0, 374 1, 375 1u, 376 (q15_t*)realCoefAQ15, 377 (q15_t*)realCoefBQ15, 378 &arm_cfft_sR_q15_len4096 379 }; 380