Subversion Repositories DashDisplay

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/* ----------------------------------------------------------------------    
2
* Copyright (C) 2010-2014 ARM Limited. All rights reserved.    
3
*    
4
* $Date:        19. March 2015
5
* $Revision:    V.1.4.5  
6
*    
7
* Project:          CMSIS DSP Library    
8
* Title:            arm_common_tables.c    
9
*    
10
* Description:  This file has common tables like fft twiddle factors, Bitreverse, reciprocal etc which are used across different functions    
11
*    
12
* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
13
*  
14
* Redistribution and use in source and binary forms, with or without
15
* modification, are permitted provided that the following conditions
16
* are met:
17
*   - Redistributions of source code must retain the above copyright
18
*     notice, this list of conditions and the following disclaimer.
19
*   - Redistributions in binary form must reproduce the above copyright
20
*     notice, this list of conditions and the following disclaimer in
21
*     the documentation and/or other materials provided with the
22
*     distribution.
23
*   - Neither the name of ARM LIMITED nor the names of its contributors
24
*     may be used to endorse or promote products derived from this
25
*     software without specific prior written permission.
26
*
27
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
29
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
30
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
31
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
32
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
33
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
34
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
35
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
36
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
37
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
38
* POSSIBILITY OF SUCH DAMAGE.  
39
* -------------------------------------------------------------------- */
40
 
41
 
42
#include "arm_math.h"
43
#include "arm_common_tables.h"
44
 
45
/**    
46
 * @ingroup groupTransforms    
47
 */
48
 
49
/**    
50
 * @addtogroup CFFT_CIFFT Complex FFT Tables  
51
 * @{    
52
 */
53
 
54
/**    
55
* \par    
56
* Pseudo code for Generation of Bit reversal Table is    
57
* \par    
58
* <pre>for(l=1;l <= N/4;l++)    
59
* {    
60
*   for(i=0;i<logN2;i++)    
61
*   {    
62
*     a[i]=l&(1<<i);    
63
*   }    
64
*   for(j=0; j<logN2; j++)    
65
*   {    
66
*     if (a[j]!=0)    
67
*     y[l]+=(1<<((logN2-1)-j));    
68
*   }    
69
*   y[l] = y[l] >> 1;    
70
*  } </pre>    
71
* \par    
72
* where N = 4096        logN2 = 12  
73
* \par    
74
* N is the maximum FFT Size supported    
75
*/
76
 
77
/*    
78
* @brief  Table for bit reversal process    
79
*/
80
const uint16_t armBitRevTable[1024] = {
81
   0x400, 0x200, 0x600, 0x100, 0x500, 0x300, 0x700, 0x80, 0x480, 0x280,
82
   0x680, 0x180, 0x580, 0x380, 0x780, 0x40, 0x440, 0x240, 0x640, 0x140,
83
   0x540, 0x340, 0x740, 0xc0, 0x4c0, 0x2c0, 0x6c0, 0x1c0, 0x5c0, 0x3c0,
84
   0x7c0, 0x20, 0x420, 0x220, 0x620, 0x120, 0x520, 0x320, 0x720, 0xa0,
85
   0x4a0, 0x2a0, 0x6a0, 0x1a0, 0x5a0, 0x3a0, 0x7a0, 0x60, 0x460, 0x260,
86
   0x660, 0x160, 0x560, 0x360, 0x760, 0xe0, 0x4e0, 0x2e0, 0x6e0, 0x1e0,
87
   0x5e0, 0x3e0, 0x7e0, 0x10, 0x410, 0x210, 0x610, 0x110, 0x510, 0x310,
88
   0x710, 0x90, 0x490, 0x290, 0x690, 0x190, 0x590, 0x390, 0x790, 0x50,
89
   0x450, 0x250, 0x650, 0x150, 0x550, 0x350, 0x750, 0xd0, 0x4d0, 0x2d0,
90
   0x6d0, 0x1d0, 0x5d0, 0x3d0, 0x7d0, 0x30, 0x430, 0x230, 0x630, 0x130,
91
   0x530, 0x330, 0x730, 0xb0, 0x4b0, 0x2b0, 0x6b0, 0x1b0, 0x5b0, 0x3b0,
92
   0x7b0, 0x70, 0x470, 0x270, 0x670, 0x170, 0x570, 0x370, 0x770, 0xf0,
93
   0x4f0, 0x2f0, 0x6f0, 0x1f0, 0x5f0, 0x3f0, 0x7f0, 0x8, 0x408, 0x208,
94
   0x608, 0x108, 0x508, 0x308, 0x708, 0x88, 0x488, 0x288, 0x688, 0x188,
95
   0x588, 0x388, 0x788, 0x48, 0x448, 0x248, 0x648, 0x148, 0x548, 0x348,
96
   0x748, 0xc8, 0x4c8, 0x2c8, 0x6c8, 0x1c8, 0x5c8, 0x3c8, 0x7c8, 0x28,
97
   0x428, 0x228, 0x628, 0x128, 0x528, 0x328, 0x728, 0xa8, 0x4a8, 0x2a8,
98
   0x6a8, 0x1a8, 0x5a8, 0x3a8, 0x7a8, 0x68, 0x468, 0x268, 0x668, 0x168,
99
   0x568, 0x368, 0x768, 0xe8, 0x4e8, 0x2e8, 0x6e8, 0x1e8, 0x5e8, 0x3e8,
100
   0x7e8, 0x18, 0x418, 0x218, 0x618, 0x118, 0x518, 0x318, 0x718, 0x98,
101
   0x498, 0x298, 0x698, 0x198, 0x598, 0x398, 0x798, 0x58, 0x458, 0x258,
102
   0x658, 0x158, 0x558, 0x358, 0x758, 0xd8, 0x4d8, 0x2d8, 0x6d8, 0x1d8,
103
   0x5d8, 0x3d8, 0x7d8, 0x38, 0x438, 0x238, 0x638, 0x138, 0x538, 0x338,
104
   0x738, 0xb8, 0x4b8, 0x2b8, 0x6b8, 0x1b8, 0x5b8, 0x3b8, 0x7b8, 0x78,
105
   0x478, 0x278, 0x678, 0x178, 0x578, 0x378, 0x778, 0xf8, 0x4f8, 0x2f8,
106
   0x6f8, 0x1f8, 0x5f8, 0x3f8, 0x7f8, 0x4, 0x404, 0x204, 0x604, 0x104,
107
   0x504, 0x304, 0x704, 0x84, 0x484, 0x284, 0x684, 0x184, 0x584, 0x384,
108
   0x784, 0x44, 0x444, 0x244, 0x644, 0x144, 0x544, 0x344, 0x744, 0xc4,
109
   0x4c4, 0x2c4, 0x6c4, 0x1c4, 0x5c4, 0x3c4, 0x7c4, 0x24, 0x424, 0x224,
110
   0x624, 0x124, 0x524, 0x324, 0x724, 0xa4, 0x4a4, 0x2a4, 0x6a4, 0x1a4,
111
   0x5a4, 0x3a4, 0x7a4, 0x64, 0x464, 0x264, 0x664, 0x164, 0x564, 0x364,
112
   0x764, 0xe4, 0x4e4, 0x2e4, 0x6e4, 0x1e4, 0x5e4, 0x3e4, 0x7e4, 0x14,
113
   0x414, 0x214, 0x614, 0x114, 0x514, 0x314, 0x714, 0x94, 0x494, 0x294,
114
   0x694, 0x194, 0x594, 0x394, 0x794, 0x54, 0x454, 0x254, 0x654, 0x154,
115
   0x554, 0x354, 0x754, 0xd4, 0x4d4, 0x2d4, 0x6d4, 0x1d4, 0x5d4, 0x3d4,
116
   0x7d4, 0x34, 0x434, 0x234, 0x634, 0x134, 0x534, 0x334, 0x734, 0xb4,
117
   0x4b4, 0x2b4, 0x6b4, 0x1b4, 0x5b4, 0x3b4, 0x7b4, 0x74, 0x474, 0x274,
118
   0x674, 0x174, 0x574, 0x374, 0x774, 0xf4, 0x4f4, 0x2f4, 0x6f4, 0x1f4,
119
   0x5f4, 0x3f4, 0x7f4, 0xc, 0x40c, 0x20c, 0x60c, 0x10c, 0x50c, 0x30c,
120
   0x70c, 0x8c, 0x48c, 0x28c, 0x68c, 0x18c, 0x58c, 0x38c, 0x78c, 0x4c,
121
   0x44c, 0x24c, 0x64c, 0x14c, 0x54c, 0x34c, 0x74c, 0xcc, 0x4cc, 0x2cc,
122
   0x6cc, 0x1cc, 0x5cc, 0x3cc, 0x7cc, 0x2c, 0x42c, 0x22c, 0x62c, 0x12c,
123
   0x52c, 0x32c, 0x72c, 0xac, 0x4ac, 0x2ac, 0x6ac, 0x1ac, 0x5ac, 0x3ac,
124
   0x7ac, 0x6c, 0x46c, 0x26c, 0x66c, 0x16c, 0x56c, 0x36c, 0x76c, 0xec,
125
   0x4ec, 0x2ec, 0x6ec, 0x1ec, 0x5ec, 0x3ec, 0x7ec, 0x1c, 0x41c, 0x21c,
126
   0x61c, 0x11c, 0x51c, 0x31c, 0x71c, 0x9c, 0x49c, 0x29c, 0x69c, 0x19c,
127
   0x59c, 0x39c, 0x79c, 0x5c, 0x45c, 0x25c, 0x65c, 0x15c, 0x55c, 0x35c,
128
   0x75c, 0xdc, 0x4dc, 0x2dc, 0x6dc, 0x1dc, 0x5dc, 0x3dc, 0x7dc, 0x3c,
129
   0x43c, 0x23c, 0x63c, 0x13c, 0x53c, 0x33c, 0x73c, 0xbc, 0x4bc, 0x2bc,
130
   0x6bc, 0x1bc, 0x5bc, 0x3bc, 0x7bc, 0x7c, 0x47c, 0x27c, 0x67c, 0x17c,
131
   0x57c, 0x37c, 0x77c, 0xfc, 0x4fc, 0x2fc, 0x6fc, 0x1fc, 0x5fc, 0x3fc,
132
   0x7fc, 0x2, 0x402, 0x202, 0x602, 0x102, 0x502, 0x302, 0x702, 0x82,
133
   0x482, 0x282, 0x682, 0x182, 0x582, 0x382, 0x782, 0x42, 0x442, 0x242,
134
   0x642, 0x142, 0x542, 0x342, 0x742, 0xc2, 0x4c2, 0x2c2, 0x6c2, 0x1c2,
135
   0x5c2, 0x3c2, 0x7c2, 0x22, 0x422, 0x222, 0x622, 0x122, 0x522, 0x322,
136
   0x722, 0xa2, 0x4a2, 0x2a2, 0x6a2, 0x1a2, 0x5a2, 0x3a2, 0x7a2, 0x62,
137
   0x462, 0x262, 0x662, 0x162, 0x562, 0x362, 0x762, 0xe2, 0x4e2, 0x2e2,
138
   0x6e2, 0x1e2, 0x5e2, 0x3e2, 0x7e2, 0x12, 0x412, 0x212, 0x612, 0x112,
139
   0x512, 0x312, 0x712, 0x92, 0x492, 0x292, 0x692, 0x192, 0x592, 0x392,
140
   0x792, 0x52, 0x452, 0x252, 0x652, 0x152, 0x552, 0x352, 0x752, 0xd2,
141
   0x4d2, 0x2d2, 0x6d2, 0x1d2, 0x5d2, 0x3d2, 0x7d2, 0x32, 0x432, 0x232,
142
   0x632, 0x132, 0x532, 0x332, 0x732, 0xb2, 0x4b2, 0x2b2, 0x6b2, 0x1b2,
143
   0x5b2, 0x3b2, 0x7b2, 0x72, 0x472, 0x272, 0x672, 0x172, 0x572, 0x372,
144
   0x772, 0xf2, 0x4f2, 0x2f2, 0x6f2, 0x1f2, 0x5f2, 0x3f2, 0x7f2, 0xa,
145
   0x40a, 0x20a, 0x60a, 0x10a, 0x50a, 0x30a, 0x70a, 0x8a, 0x48a, 0x28a,
146
   0x68a, 0x18a, 0x58a, 0x38a, 0x78a, 0x4a, 0x44a, 0x24a, 0x64a, 0x14a,
147
   0x54a, 0x34a, 0x74a, 0xca, 0x4ca, 0x2ca, 0x6ca, 0x1ca, 0x5ca, 0x3ca,
148
   0x7ca, 0x2a, 0x42a, 0x22a, 0x62a, 0x12a, 0x52a, 0x32a, 0x72a, 0xaa,
149
   0x4aa, 0x2aa, 0x6aa, 0x1aa, 0x5aa, 0x3aa, 0x7aa, 0x6a, 0x46a, 0x26a,
150
   0x66a, 0x16a, 0x56a, 0x36a, 0x76a, 0xea, 0x4ea, 0x2ea, 0x6ea, 0x1ea,
151
   0x5ea, 0x3ea, 0x7ea, 0x1a, 0x41a, 0x21a, 0x61a, 0x11a, 0x51a, 0x31a,
152
   0x71a, 0x9a, 0x49a, 0x29a, 0x69a, 0x19a, 0x59a, 0x39a, 0x79a, 0x5a,
153
   0x45a, 0x25a, 0x65a, 0x15a, 0x55a, 0x35a, 0x75a, 0xda, 0x4da, 0x2da,
154
   0x6da, 0x1da, 0x5da, 0x3da, 0x7da, 0x3a, 0x43a, 0x23a, 0x63a, 0x13a,
155
   0x53a, 0x33a, 0x73a, 0xba, 0x4ba, 0x2ba, 0x6ba, 0x1ba, 0x5ba, 0x3ba,
156
   0x7ba, 0x7a, 0x47a, 0x27a, 0x67a, 0x17a, 0x57a, 0x37a, 0x77a, 0xfa,
157
   0x4fa, 0x2fa, 0x6fa, 0x1fa, 0x5fa, 0x3fa, 0x7fa, 0x6, 0x406, 0x206,
158
   0x606, 0x106, 0x506, 0x306, 0x706, 0x86, 0x486, 0x286, 0x686, 0x186,
159
   0x586, 0x386, 0x786, 0x46, 0x446, 0x246, 0x646, 0x146, 0x546, 0x346,
160
   0x746, 0xc6, 0x4c6, 0x2c6, 0x6c6, 0x1c6, 0x5c6, 0x3c6, 0x7c6, 0x26,
161
   0x426, 0x226, 0x626, 0x126, 0x526, 0x326, 0x726, 0xa6, 0x4a6, 0x2a6,
162
   0x6a6, 0x1a6, 0x5a6, 0x3a6, 0x7a6, 0x66, 0x466, 0x266, 0x666, 0x166,
163
   0x566, 0x366, 0x766, 0xe6, 0x4e6, 0x2e6, 0x6e6, 0x1e6, 0x5e6, 0x3e6,
164
   0x7e6, 0x16, 0x416, 0x216, 0x616, 0x116, 0x516, 0x316, 0x716, 0x96,
165
   0x496, 0x296, 0x696, 0x196, 0x596, 0x396, 0x796, 0x56, 0x456, 0x256,
166
   0x656, 0x156, 0x556, 0x356, 0x756, 0xd6, 0x4d6, 0x2d6, 0x6d6, 0x1d6,
167
   0x5d6, 0x3d6, 0x7d6, 0x36, 0x436, 0x236, 0x636, 0x136, 0x536, 0x336,
168
   0x736, 0xb6, 0x4b6, 0x2b6, 0x6b6, 0x1b6, 0x5b6, 0x3b6, 0x7b6, 0x76,
169
   0x476, 0x276, 0x676, 0x176, 0x576, 0x376, 0x776, 0xf6, 0x4f6, 0x2f6,
170
   0x6f6, 0x1f6, 0x5f6, 0x3f6, 0x7f6, 0xe, 0x40e, 0x20e, 0x60e, 0x10e,
171
   0x50e, 0x30e, 0x70e, 0x8e, 0x48e, 0x28e, 0x68e, 0x18e, 0x58e, 0x38e,
172
   0x78e, 0x4e, 0x44e, 0x24e, 0x64e, 0x14e, 0x54e, 0x34e, 0x74e, 0xce,
173
   0x4ce, 0x2ce, 0x6ce, 0x1ce, 0x5ce, 0x3ce, 0x7ce, 0x2e, 0x42e, 0x22e,
174
   0x62e, 0x12e, 0x52e, 0x32e, 0x72e, 0xae, 0x4ae, 0x2ae, 0x6ae, 0x1ae,
175
   0x5ae, 0x3ae, 0x7ae, 0x6e, 0x46e, 0x26e, 0x66e, 0x16e, 0x56e, 0x36e,
176
   0x76e, 0xee, 0x4ee, 0x2ee, 0x6ee, 0x1ee, 0x5ee, 0x3ee, 0x7ee, 0x1e,
177
   0x41e, 0x21e, 0x61e, 0x11e, 0x51e, 0x31e, 0x71e, 0x9e, 0x49e, 0x29e,
178
   0x69e, 0x19e, 0x59e, 0x39e, 0x79e, 0x5e, 0x45e, 0x25e, 0x65e, 0x15e,
179
   0x55e, 0x35e, 0x75e, 0xde, 0x4de, 0x2de, 0x6de, 0x1de, 0x5de, 0x3de,
180
   0x7de, 0x3e, 0x43e, 0x23e, 0x63e, 0x13e, 0x53e, 0x33e, 0x73e, 0xbe,
181
   0x4be, 0x2be, 0x6be, 0x1be, 0x5be, 0x3be, 0x7be, 0x7e, 0x47e, 0x27e,
182
   0x67e, 0x17e, 0x57e, 0x37e, 0x77e, 0xfe, 0x4fe, 0x2fe, 0x6fe, 0x1fe,
183
   0x5fe, 0x3fe, 0x7fe, 0x1
184
};
185
 
186
 
187
/*    
188
* @brief  Floating-point Twiddle factors Table Generation    
189
*/
190
 
191
/**    
192
* \par    
193
* Example code for Floating-point Twiddle factors Generation:    
194
* \par    
195
* <pre>for(i = 0; i< N/; i++)    
196
* {    
197
*       twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
198
*       twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
199
* } </pre>    
200
* \par    
201
* where N = 16  and PI = 3.14159265358979    
202
* \par    
203
* Cos and Sin values are in interleaved fashion    
204
*    
205
*/
206
const float32_t twiddleCoef_16[32] = {
207
    1.000000000f,  0.000000000f,
208
    0.923879533f,  0.382683432f,
209
    0.707106781f,  0.707106781f,
210
    0.382683432f,  0.923879533f,
211
    0.000000000f,  1.000000000f,
212
   -0.382683432f,  0.923879533f,
213
   -0.707106781f,  0.707106781f,
214
   -0.923879533f,  0.382683432f,
215
   -1.000000000f,  0.000000000f,
216
   -0.923879533f, -0.382683432f,
217
   -0.707106781f, -0.707106781f,
218
   -0.382683432f, -0.923879533f,
219
   -0.000000000f, -1.000000000f,
220
    0.382683432f, -0.923879533f,
221
    0.707106781f, -0.707106781f,
222
    0.923879533f, -0.382683432f
223
};
224
 
225
/**    
226
* \par    
227
* Example code for Floating-point Twiddle factors Generation:    
228
* \par    
229
* <pre>for(i = 0; i< N/; i++)    
230
* {    
231
*       twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
232
*       twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
233
* } </pre>    
234
* \par    
235
* where N = 32  and PI = 3.14159265358979    
236
* \par    
237
* Cos and Sin values are in interleaved fashion    
238
*    
239
*/
240
const float32_t twiddleCoef_32[64] = {
241
    1.000000000f,  0.000000000f,
242
    0.980785280f,  0.195090322f,
243
    0.923879533f,  0.382683432f,
244
    0.831469612f,  0.555570233f,
245
    0.707106781f,  0.707106781f,
246
    0.555570233f,  0.831469612f,
247
    0.382683432f,  0.923879533f,
248
    0.195090322f,  0.980785280f,
249
    0.000000000f,  1.000000000f,
250
   -0.195090322f,  0.980785280f,
251
   -0.382683432f,  0.923879533f,
252
   -0.555570233f,  0.831469612f,
253
   -0.707106781f,  0.707106781f,
254
   -0.831469612f,  0.555570233f,
255
   -0.923879533f,  0.382683432f,
256
   -0.980785280f,  0.195090322f,
257
   -1.000000000f,  0.000000000f,
258
   -0.980785280f, -0.195090322f,
259
   -0.923879533f, -0.382683432f,
260
   -0.831469612f, -0.555570233f,
261
   -0.707106781f, -0.707106781f,
262
   -0.555570233f, -0.831469612f,
263
   -0.382683432f, -0.923879533f,
264
   -0.195090322f, -0.980785280f,
265
   -0.000000000f, -1.000000000f,
266
    0.195090322f, -0.980785280f,
267
    0.382683432f, -0.923879533f,
268
    0.555570233f, -0.831469612f,
269
    0.707106781f, -0.707106781f,
270
    0.831469612f, -0.555570233f,
271
    0.923879533f, -0.382683432f,
272
    0.980785280f, -0.195090322f
273
};
274
 
275
/**    
276
* \par    
277
* Example code for Floating-point Twiddle factors Generation:    
278
* \par    
279
* <pre>for(i = 0; i< N/; i++)    
280
* {    
281
*       twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
282
*       twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
283
* } </pre>    
284
* \par    
285
* where N = 64  and PI = 3.14159265358979    
286
* \par    
287
* Cos and Sin values are in interleaved fashion    
288
*    
289
*/
290
const float32_t twiddleCoef_64[128] = {
291
    1.000000000f,  0.000000000f,
292
    0.995184727f,  0.098017140f,
293
    0.980785280f,  0.195090322f,
294
    0.956940336f,  0.290284677f,
295
    0.923879533f,  0.382683432f,
296
    0.881921264f,  0.471396737f,
297
    0.831469612f,  0.555570233f,
298
    0.773010453f,  0.634393284f,
299
    0.707106781f,  0.707106781f,
300
    0.634393284f,  0.773010453f,
301
    0.555570233f,  0.831469612f,
302
    0.471396737f,  0.881921264f,
303
    0.382683432f,  0.923879533f,
304
    0.290284677f,  0.956940336f,
305
    0.195090322f,  0.980785280f,
306
    0.098017140f,  0.995184727f,
307
    0.000000000f,  1.000000000f,
308
   -0.098017140f,  0.995184727f,
309
   -0.195090322f,  0.980785280f,
310
   -0.290284677f,  0.956940336f,
311
   -0.382683432f,  0.923879533f,
312
   -0.471396737f,  0.881921264f,
313
   -0.555570233f,  0.831469612f,
314
   -0.634393284f,  0.773010453f,
315
   -0.707106781f,  0.707106781f,
316
   -0.773010453f,  0.634393284f,
317
   -0.831469612f,  0.555570233f,
318
   -0.881921264f,  0.471396737f,
319
   -0.923879533f,  0.382683432f,
320
   -0.956940336f,  0.290284677f,
321
   -0.980785280f,  0.195090322f,
322
   -0.995184727f,  0.098017140f,
323
   -1.000000000f,  0.000000000f,
324
   -0.995184727f, -0.098017140f,
325
   -0.980785280f, -0.195090322f,
326
   -0.956940336f, -0.290284677f,
327
   -0.923879533f, -0.382683432f,
328
   -0.881921264f, -0.471396737f,
329
   -0.831469612f, -0.555570233f,
330
   -0.773010453f, -0.634393284f,
331
   -0.707106781f, -0.707106781f,
332
   -0.634393284f, -0.773010453f,
333
   -0.555570233f, -0.831469612f,
334
   -0.471396737f, -0.881921264f,
335
   -0.382683432f, -0.923879533f,
336
   -0.290284677f, -0.956940336f,
337
   -0.195090322f, -0.980785280f,
338
   -0.098017140f, -0.995184727f,
339
   -0.000000000f, -1.000000000f,
340
    0.098017140f, -0.995184727f,
341
    0.195090322f, -0.980785280f,
342
    0.290284677f, -0.956940336f,
343
    0.382683432f, -0.923879533f,
344
    0.471396737f, -0.881921264f,
345
    0.555570233f, -0.831469612f,
346
    0.634393284f, -0.773010453f,
347
    0.707106781f, -0.707106781f,
348
    0.773010453f, -0.634393284f,
349
    0.831469612f, -0.555570233f,
350
    0.881921264f, -0.471396737f,
351
    0.923879533f, -0.382683432f,
352
    0.956940336f, -0.290284677f,
353
    0.980785280f, -0.195090322f,
354
    0.995184727f, -0.098017140f
355
};
356
 
357
/**    
358
* \par    
359
* Example code for Floating-point Twiddle factors Generation:    
360
* \par    
361
* <pre>for(i = 0; i< N/; i++)    
362
* {    
363
*       twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
364
*       twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
365
* } </pre>    
366
* \par    
367
* where N = 128 and PI = 3.14159265358979    
368
* \par    
369
* Cos and Sin values are in interleaved fashion    
370
*    
371
*/
372
 
373
const float32_t twiddleCoef_128[256] = {
374
    1.000000000f        ,       0.000000000f    ,
375
    0.998795456f        ,       0.049067674f    ,
376
    0.995184727f        ,       0.098017140f    ,
377
    0.989176510f        ,       0.146730474f    ,
378
    0.980785280f        ,       0.195090322f    ,
379
    0.970031253f        ,       0.242980180f    ,
380
    0.956940336f        ,       0.290284677f    ,
381
    0.941544065f        ,       0.336889853f    ,
382
    0.923879533f        ,       0.382683432f    ,
383
    0.903989293f        ,       0.427555093f    ,
384
    0.881921264f        ,       0.471396737f    ,
385
    0.857728610f        ,       0.514102744f    ,
386
    0.831469612f        ,       0.555570233f    ,
387
    0.803207531f        ,       0.595699304f    ,
388
    0.773010453f        ,       0.634393284f    ,
389
    0.740951125f        ,       0.671558955f    ,
390
    0.707106781f        ,       0.707106781f    ,
391
    0.671558955f        ,       0.740951125f    ,
392
    0.634393284f        ,       0.773010453f    ,
393
    0.595699304f        ,       0.803207531f    ,
394
    0.555570233f        ,       0.831469612f    ,
395
    0.514102744f        ,       0.857728610f    ,
396
    0.471396737f        ,       0.881921264f    ,
397
    0.427555093f        ,       0.903989293f    ,
398
    0.382683432f        ,       0.923879533f    ,
399
    0.336889853f        ,       0.941544065f    ,
400
    0.290284677f        ,       0.956940336f    ,
401
    0.242980180f        ,       0.970031253f    ,
402
    0.195090322f        ,       0.980785280f    ,
403
    0.146730474f        ,       0.989176510f    ,
404
    0.098017140f        ,       0.995184727f    ,
405
    0.049067674f        ,       0.998795456f    ,
406
    0.000000000f        ,       1.000000000f    ,
407
    -0.049067674f       ,       0.998795456f    ,
408
    -0.098017140f       ,       0.995184727f    ,
409
    -0.146730474f       ,       0.989176510f    ,
410
    -0.195090322f       ,       0.980785280f    ,
411
    -0.242980180f       ,       0.970031253f    ,
412
    -0.290284677f       ,       0.956940336f    ,
413
    -0.336889853f       ,       0.941544065f    ,
414
    -0.382683432f       ,       0.923879533f    ,
415
    -0.427555093f       ,       0.903989293f    ,
416
    -0.471396737f       ,       0.881921264f    ,
417
    -0.514102744f       ,       0.857728610f    ,
418
    -0.555570233f       ,       0.831469612f    ,
419
    -0.595699304f       ,       0.803207531f    ,
420
    -0.634393284f       ,       0.773010453f    ,
421
    -0.671558955f       ,       0.740951125f    ,
422
    -0.707106781f       ,       0.707106781f    ,
423
    -0.740951125f       ,       0.671558955f    ,
424
    -0.773010453f       ,       0.634393284f    ,
425
    -0.803207531f       ,       0.595699304f    ,
426
    -0.831469612f       ,       0.555570233f    ,
427
    -0.857728610f       ,       0.514102744f    ,
428
    -0.881921264f       ,       0.471396737f    ,
429
    -0.903989293f       ,       0.427555093f    ,
430
    -0.923879533f       ,       0.382683432f    ,
431
    -0.941544065f       ,       0.336889853f    ,
432
    -0.956940336f       ,       0.290284677f    ,
433
    -0.970031253f       ,       0.242980180f    ,
434
    -0.980785280f       ,       0.195090322f    ,
435
    -0.989176510f       ,       0.146730474f    ,
436
    -0.995184727f       ,       0.098017140f    ,
437
    -0.998795456f       ,       0.049067674f    ,
438
    -1.000000000f       ,       0.000000000f    ,
439
    -0.998795456f       ,       -0.049067674f   ,
440
    -0.995184727f       ,       -0.098017140f   ,
441
    -0.989176510f       ,       -0.146730474f   ,
442
    -0.980785280f       ,       -0.195090322f   ,
443
    -0.970031253f       ,       -0.242980180f   ,
444
    -0.956940336f       ,       -0.290284677f   ,
445
    -0.941544065f       ,       -0.336889853f   ,
446
    -0.923879533f       ,       -0.382683432f   ,
447
    -0.903989293f       ,       -0.427555093f   ,
448
    -0.881921264f       ,       -0.471396737f   ,
449
    -0.857728610f       ,       -0.514102744f   ,
450
    -0.831469612f       ,       -0.555570233f   ,
451
    -0.803207531f       ,       -0.595699304f   ,
452
    -0.773010453f       ,       -0.634393284f   ,
453
    -0.740951125f       ,       -0.671558955f   ,
454
    -0.707106781f       ,       -0.707106781f   ,
455
    -0.671558955f       ,       -0.740951125f   ,
456
    -0.634393284f       ,       -0.773010453f   ,
457
    -0.595699304f       ,       -0.803207531f   ,
458
    -0.555570233f       ,       -0.831469612f   ,
459
    -0.514102744f       ,       -0.857728610f   ,
460
    -0.471396737f       ,       -0.881921264f   ,
461
    -0.427555093f       ,       -0.903989293f   ,
462
    -0.382683432f       ,       -0.923879533f   ,
463
    -0.336889853f       ,       -0.941544065f   ,
464
    -0.290284677f       ,       -0.956940336f   ,
465
    -0.242980180f       ,       -0.970031253f   ,
466
    -0.195090322f       ,       -0.980785280f   ,
467
    -0.146730474f       ,       -0.989176510f   ,
468
    -0.098017140f       ,       -0.995184727f   ,
469
    -0.049067674f       ,       -0.998795456f   ,
470
    -0.000000000f       ,       -1.000000000f   ,
471
    0.049067674f        ,       -0.998795456f   ,
472
    0.098017140f        ,       -0.995184727f   ,
473
    0.146730474f        ,       -0.989176510f   ,
474
    0.195090322f        ,       -0.980785280f   ,
475
    0.242980180f        ,       -0.970031253f   ,
476
    0.290284677f        ,       -0.956940336f   ,
477
    0.336889853f        ,       -0.941544065f   ,
478
    0.382683432f        ,       -0.923879533f   ,
479
    0.427555093f        ,       -0.903989293f   ,
480
    0.471396737f        ,       -0.881921264f   ,
481
    0.514102744f        ,       -0.857728610f   ,
482
    0.555570233f        ,       -0.831469612f   ,
483
    0.595699304f        ,       -0.803207531f   ,
484
    0.634393284f        ,       -0.773010453f   ,
485
    0.671558955f        ,       -0.740951125f   ,
486
    0.707106781f        ,       -0.707106781f   ,
487
    0.740951125f        ,       -0.671558955f   ,
488
    0.773010453f        ,       -0.634393284f   ,
489
    0.803207531f        ,       -0.595699304f   ,
490
    0.831469612f        ,       -0.555570233f   ,
491
    0.857728610f        ,       -0.514102744f   ,
492
    0.881921264f        ,       -0.471396737f   ,
493
    0.903989293f        ,       -0.427555093f   ,
494
    0.923879533f        ,       -0.382683432f   ,
495
    0.941544065f        ,       -0.336889853f   ,
496
    0.956940336f        ,       -0.290284677f   ,
497
    0.970031253f        ,       -0.242980180f   ,
498
    0.980785280f        ,       -0.195090322f   ,
499
    0.989176510f        ,       -0.146730474f   ,
500
    0.995184727f        ,       -0.098017140f   ,
501
    0.998795456f        ,       -0.049067674f
502
};
503
 
504
/**    
505
* \par    
506
* Example code for Floating-point Twiddle factors Generation:    
507
* \par    
508
* <pre>for(i = 0; i< N/; i++)    
509
* {    
510
*       twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
511
*       twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
512
* } </pre>    
513
* \par    
514
* where N = 256 and PI = 3.14159265358979    
515
* \par    
516
* Cos and Sin values are in interleaved fashion    
517
*    
518
*//**    
519
* \par    
520
* Example code for Floating-point Twiddle factors Generation:    
521
* \par    
522
* <pre>for(i = 0; i< N/; i++)    
523
* {    
524
*       twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
525
*       twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
526
* } </pre>    
527
* \par    
528
* where N = 512 and PI = 3.14159265358979    
529
* \par    
530
* Cos and Sin values are in interleaved fashion    
531
*    
532
*//**    
533
* \par    
534
* Example code for Floating-point Twiddle factors Generation:    
535
* \par    
536
* <pre>for(i = 0; i< N/; i++)    
537
* {    
538
*       twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
539
*       twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
540
* } </pre>    
541
* \par    
542
* where N = 1024        and PI = 3.14159265358979    
543
* \par    
544
* Cos and Sin values are in interleaved fashion    
545
*    
546
*//**    
547
* \par    
548
* Example code for Floating-point Twiddle factors Generation:    
549
* \par    
550
* <pre>for(i = 0; i< N/; i++)    
551
* {    
552
*       twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
553
*       twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
554
* } </pre>    
555
* \par    
556
* where N = 2048        and PI = 3.14159265358979    
557
* \par    
558
* Cos and Sin values are in interleaved fashion    
559
*    
560
*//**    
561
* \par    
562
* Example code for Floating-point Twiddle factors Generation:    
563
* \par    
564
* <pre>for(i = 0; i< N/; i++)    
565
* {    
566
*       twiddleCoef[2*i]= cos(i * 2*PI/(float)N);    
567
*       twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);    
568
* } </pre>    
569
* \par    
570
* where N = 4096        and PI = 3.14159265358979    
571
* \par    
572
* Cos and Sin values are in interleaved fashion    
573
*    
574
*//*    
575
* @brief  Q31 Twiddle factors Table    
576
*/
577
578
579
/**    
580
* \par  
581
* Example code for Q31 Twiddle factors Generation::    
582
* \par    
583
* <pre>for(i = 0; i< 3N/4; i++)    
584
* {    
585
*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
586
*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
587
* } </pre>    
588
* \par    
589
* where N = 16  and PI = 3.14159265358979    
590
* \par    
591
* Cos and Sin values are interleaved fashion    
592
* \par    
593
* Convert Floating point to Q31(Fixed point 1.31):    
594
*       round(twiddleCoefQ31(i) * pow(2, 31))    
595
*    
596
*/
597
const q31_t twiddleCoef_16_q31[24] = {
598
    0x7FFFFFFF, 0x00000000,
599
    0x7641AF3C, 0x30FBC54D,
600
    0x5A82799A, 0x5A82799A,
601
    0x30FBC54D, 0x7641AF3C,
602
    0x00000000, 0x7FFFFFFF,
603
    0xCF043AB2, 0x7641AF3C,
604
    0xA57D8666, 0x5A82799A,
605
    0x89BE50C3, 0x30FBC54D,
606
    0x80000000, 0x00000000,
607
    0x89BE50C3, 0xCF043AB2,
608
    0xA57D8666, 0xA57D8666,
609
    0xCF043AB2, 0x89BE50C3
610
};
611
612
/**    
613
* \par  
614
* Example code for Q31 Twiddle factors Generation::    
615
* \par    
616
* <pre>for(i = 0; i< 3N/4; i++)    
617
* {    
618
*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
619
*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
620
* } </pre>    
621
* \par    
622
* where N = 32  and PI = 3.14159265358979    
623
* \par    
624
* Cos and Sin values are interleaved fashion    
625
* \par    
626
* Convert Floating point to Q31(Fixed point 1.31):    
627
*       round(twiddleCoefQ31(i) * pow(2, 31))    
628
*    
629
*/
630
const q31_t twiddleCoef_32_q31[48] = {
631
    0x7FFFFFFF, 0x00000000,
632
    0x7D8A5F3F, 0x18F8B83C,
633
    0x7641AF3C, 0x30FBC54D,
634
    0x6A6D98A4, 0x471CECE6,
635
    0x5A82799A, 0x5A82799A,
636
    0x471CECE6, 0x6A6D98A4,
637
    0x30FBC54D, 0x7641AF3C,
638
    0x18F8B83C, 0x7D8A5F3F,
639
    0x00000000, 0x7FFFFFFF,
640
    0xE70747C3, 0x7D8A5F3F,
641
    0xCF043AB2, 0x7641AF3C,
642
    0xB8E31319, 0x6A6D98A4,
643
    0xA57D8666, 0x5A82799A,
644
    0x9592675B, 0x471CECE6,
645
    0x89BE50C3, 0x30FBC54D,
646
    0x8275A0C0, 0x18F8B83C,
647
    0x80000000, 0x00000000,
648
    0x8275A0C0, 0xE70747C3,
649
    0x89BE50C3, 0xCF043AB2,
650
    0x9592675B, 0xB8E31319,
651
    0xA57D8666, 0xA57D8666,
652
    0xB8E31319, 0x9592675B,
653
    0xCF043AB2, 0x89BE50C3,
654
    0xE70747C3, 0x8275A0C0
655
};
656
657
/**    
658
* \par  
659
* Example code for Q31 Twiddle factors Generation::    
660
* \par    
661
* <pre>for(i = 0; i< 3N/4; i++)    
662
* {    
663
*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
664
*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
665
* } </pre>    
666
* \par    
667
* where N = 64  and PI = 3.14159265358979    
668
* \par    
669
* Cos and Sin values are interleaved fashion    
670
* \par    
671
* Convert Floating point to Q31(Fixed point 1.31):    
672
*       round(twiddleCoefQ31(i) * pow(2, 31))    
673
*    
674
*/
675
const q31_t twiddleCoef_64_q31[96] = {
676
    0x7FFFFFFF, 0x00000000,
677
    0x7F62368F, 0x0C8BD35E,
678
    0x7D8A5F3F, 0x18F8B83C,
679
    0x7A7D055B, 0x25280C5D,
680
    0x7641AF3C, 0x30FBC54D,
681
    0x70E2CBC6, 0x3C56BA70,
682
    0x6A6D98A4, 0x471CECE6,
683
    0x62F201AC, 0x5133CC94,
684
    0x5A82799A, 0x5A82799A,
685
    0x5133CC94, 0x62F201AC,
686
    0x471CECE6, 0x6A6D98A4,
687
    0x3C56BA70, 0x70E2CBC6,
688
    0x30FBC54D, 0x7641AF3C,
689
    0x25280C5D, 0x7A7D055B,
690
    0x18F8B83C, 0x7D8A5F3F,
691
    0x0C8BD35E, 0x7F62368F,
692
    0x00000000, 0x7FFFFFFF,
693
    0xF3742CA1, 0x7F62368F,
694
    0xE70747C3, 0x7D8A5F3F,
695
    0xDAD7F3A2, 0x7A7D055B,
696
    0xCF043AB2, 0x7641AF3C,
697
    0xC3A9458F, 0x70E2CBC6,
698
    0xB8E31319, 0x6A6D98A4,
699
    0xAECC336B, 0x62F201AC,
700
    0xA57D8666, 0x5A82799A,
701
    0x9D0DFE53, 0x5133CC94,
702
    0x9592675B, 0x471CECE6,
703
    0x8F1D343A, 0x3C56BA70,
704
    0x89BE50C3, 0x30FBC54D,
705
    0x8582FAA4, 0x25280C5D,
706
    0x8275A0C0, 0x18F8B83C,
707
    0x809DC970, 0x0C8BD35E,
708
    0x80000000, 0x00000000,
709
    0x809DC970, 0xF3742CA1,
710
    0x8275A0C0, 0xE70747C3,
711
    0x8582FAA4, 0xDAD7F3A2,
712
    0x89BE50C3, 0xCF043AB2,
713
    0x8F1D343A, 0xC3A9458F,
714
    0x9592675B, 0xB8E31319,
715
    0x9D0DFE53, 0xAECC336B,
716
    0xA57D8666, 0xA57D8666,
717
    0xAECC336B, 0x9D0DFE53,
718
    0xB8E31319, 0x9592675B,
719
    0xC3A9458F, 0x8F1D343A,
720
    0xCF043AB2, 0x89BE50C3,
721
    0xDAD7F3A2, 0x8582FAA4,
722
    0xE70747C3, 0x8275A0C0,
723
    0xF3742CA1, 0x809DC970
724
};
725
726
/**    
727
* \par  
728
* Example code for Q31 Twiddle factors Generation::    
729
* \par    
730
* <pre>for(i = 0; i< 3N/4; i++)    
731
* {    
732
*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
733
*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
734
* } </pre>    
735
* \par    
736
* where N = 128 and PI = 3.14159265358979    
737
* \par    
738
* Cos and Sin values are interleaved fashion    
739
* \par    
740
* Convert Floating point to Q31(Fixed point 1.31):    
741
*       round(twiddleCoefQ31(i) * pow(2, 31))    
742
*    
743
*/
744
const q31_t twiddleCoef_128_q31[192] = {
745
    0x7FFFFFFF, 0x00000000,
746
    0x7FD8878D, 0x0647D97C,
747
    0x7F62368F, 0x0C8BD35E,
748
    0x7E9D55FC, 0x12C8106E,
749
    0x7D8A5F3F, 0x18F8B83C,
750
    0x7C29FBEE, 0x1F19F97B,
751
    0x7A7D055B, 0x25280C5D,
752
    0x78848413, 0x2B1F34EB,
753
    0x7641AF3C, 0x30FBC54D,
754
    0x73B5EBD0, 0x36BA2013,
755
    0x70E2CBC6, 0x3C56BA70,
756
    0x6DCA0D14, 0x41CE1E64,
757
    0x6A6D98A4, 0x471CECE6,
758
    0x66CF811F, 0x4C3FDFF3,
759
    0x62F201AC, 0x5133CC94,
760
    0x5ED77C89, 0x55F5A4D2,
761
    0x5A82799A, 0x5A82799A,
762
    0x55F5A4D2, 0x5ED77C89,
763
    0x5133CC94, 0x62F201AC,
764
    0x4C3FDFF3, 0x66CF811F,
765
    0x471CECE6, 0x6A6D98A4,
766
    0x41CE1E64, 0x6DCA0D14,
767
    0x3C56BA70, 0x70E2CBC6,
768
    0x36BA2013, 0x73B5EBD0,
769
    0x30FBC54D, 0x7641AF3C,
770
    0x2B1F34EB, 0x78848413,
771
    0x25280C5D, 0x7A7D055B,
772
    0x1F19F97B, 0x7C29FBEE,
773
    0x18F8B83C, 0x7D8A5F3F,
774
    0x12C8106E, 0x7E9D55FC,
775
    0x0C8BD35E, 0x7F62368F,
776
    0x0647D97C, 0x7FD8878D,
777
 
778
    0xF9B82683, 0x7FD8878D,
779
    0xF3742CA1, 0x7F62368F,
780
    0xED37EF91, 0x7E9D55FC,
781
    0xE70747C3, 0x7D8A5F3F,
782
    0xE0E60684, 0x7C29FBEE,
783
    0xDAD7F3A2, 0x7A7D055B,
784
    0xD4E0CB14, 0x78848413,
785
    0xCF043AB2, 0x7641AF3C,
786
    0xC945DFEC, 0x73B5EBD0,
787
    0xC3A9458F, 0x70E2CBC6,
788
    0xBE31E19B, 0x6DCA0D14,
789
    0xB8E31319, 0x6A6D98A4,
790
    0xB3C0200C, 0x66CF811F,
791
    0xAECC336B, 0x62F201AC,
792
    0xAA0A5B2D, 0x5ED77C89,
793
    0xA57D8666, 0x5A82799A,
794
    0xA1288376, 0x55F5A4D2,
795
    0x9D0DFE53, 0x5133CC94,
796
    0x99307EE0, 0x4C3FDFF3,
797
    0x9592675B, 0x471CECE6,
798
    0x9235F2EB, 0x41CE1E64,
799
    0x8F1D343A, 0x3C56BA70,
800
    0x8C4A142F, 0x36BA2013,
801
    0x89BE50C3, 0x30FBC54D,
802
    0x877B7BEC, 0x2B1F34EB,
803
    0x8582FAA4, 0x25280C5D,
804
    0x83D60411, 0x1F19F97B,
805
    0x8275A0C0, 0x18F8B83C,
806
    0x8162AA03, 0x12C8106E,
807
    0x809DC970, 0x0C8BD35E,
808
    0x80277872, 0x0647D97C,
809
    0x80000000, 0x00000000,
810
    0x80277872, 0xF9B82683,
811
    0x809DC970, 0xF3742CA1,
812
    0x8162AA03, 0xED37EF91,
813
    0x8275A0C0, 0xE70747C3,
814
    0x83D60411, 0xE0E60684,
815
    0x8582FAA4, 0xDAD7F3A2,
816
    0x877B7BEC, 0xD4E0CB14,
817
    0x89BE50C3, 0xCF043AB2,
818
    0x8C4A142F, 0xC945DFEC,
819
    0x8F1D343A, 0xC3A9458F,
820
    0x9235F2EB, 0xBE31E19B,
821
    0x9592675B, 0xB8E31319,
822
    0x99307EE0, 0xB3C0200C,
823
    0x9D0DFE53, 0xAECC336B,
824
    0xA1288376, 0xAA0A5B2D,
825
    0xA57D8666, 0xA57D8666,
826
    0xAA0A5B2D, 0xA1288376,
827
    0xAECC336B, 0x9D0DFE53,
828
    0xB3C0200C, 0x99307EE0,
829
    0xB8E31319, 0x9592675B,
830
    0xBE31E19B, 0x9235F2EB,
831
    0xC3A9458F, 0x8F1D343A,
832
    0xC945DFEC, 0x8C4A142F,
833
    0xCF043AB2, 0x89BE50C3,
834
    0xD4E0CB14, 0x877B7BEC,
835
    0xDAD7F3A2, 0x8582FAA4,
836
    0xE0E60684, 0x83D60411,
837
    0xE70747C3, 0x8275A0C0,
838
    0xED37EF91, 0x8162AA03,
839
    0xF3742CA1, 0x809DC970,
840
    0xF9B82683, 0x80277872
841
};
842
843
/**    
844
* \par  
845
* Example code for Q31 Twiddle factors Generation::    
846
* \par    
847
* <pre>for(i = 0; i< 3N/4; i++)    
848
* {    
849
*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
850
*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
851
* } </pre>    
852
* \par    
853
* where N = 256 and PI = 3.14159265358979    
854
* \par    
855
* Cos and Sin values are interleaved fashion    
856
* \par    
857
* Convert Floating point to Q31(Fixed point 1.31):    
858
*       round(twiddleCoefQ31(i) * pow(2, 31))    
859
*    
860
*/
861
const q31_t twiddleCoef_256_q31[384] = {
862
    0x7FFFFFFF, 0x00000000,
863
    0x7FF62182, 0x03242ABF,
864
    0x7FD8878D, 0x0647D97C,
865
    0x7FA736B4, 0x096A9049,
866
    0x7F62368F, 0x0C8BD35E,
867
    0x7F0991C3, 0x0FAB272B,
868
    0x7E9D55FC, 0x12C8106E,
869
    0x7E1D93E9, 0x15E21444,
870
    0x7D8A5F3F, 0x18F8B83C,
871
    0x7CE3CEB1, 0x1C0B826A,
872
    0x7C29FBEE, 0x1F19F97B,
873
    0x7B5D039D, 0x2223A4C5,
874
    0x7A7D055B, 0x25280C5D,
875
    0x798A23B1, 0x2826B928,
876
    0x78848413, 0x2B1F34EB,
877
    0x776C4EDB, 0x2E110A62,
878
    0x7641AF3C, 0x30FBC54D,
879
    0x7504D345, 0x33DEF287,
880
    0x73B5EBD0, 0x36BA2013,
881
    0x72552C84, 0x398CDD32,
882
    0x70E2CBC6, 0x3C56BA70,
883
    0x6F5F02B1, 0x3F1749B7,
884
    0x6DCA0D14, 0x41CE1E64,
885
    0x6C242960, 0x447ACD50,
886
    0x6A6D98A4, 0x471CECE6,
887
    0x68A69E81, 0x49B41533,
888
    0x66CF811F, 0x4C3FDFF3,
889
    0x64E88926, 0x4EBFE8A4,
890
    0x62F201AC, 0x5133CC94,
891
    0x60EC3830, 0x539B2AEF,
892
    0x5ED77C89, 0x55F5A4D2,
893
    0x5CB420DF, 0x5842DD54,
894
    0x5A82799A, 0x5A82799A,
895
    0x5842DD54, 0x5CB420DF,
896
    0x55F5A4D2, 0x5ED77C89,
897
    0x539B2AEF, 0x60EC3830,
898
    0x5133CC94, 0x62F201AC,
899
    0x4EBFE8A4, 0x64E88926,
900
    0x4C3FDFF3, 0x66CF811F,
901
    0x49B41533, 0x68A69E81,
902
    0x471CECE6, 0x6A6D98A4,
903
    0x447ACD50, 0x6C242960,
904
    0x41CE1E64, 0x6DCA0D14,
905
    0x3F1749B7, 0x6F5F02B1,
906
    0x3C56BA70, 0x70E2CBC6,
907
    0x398CDD32, 0x72552C84,
908
    0x36BA2013, 0x73B5EBD0,
909
    0x33DEF287, 0x7504D345,
910
    0x30FBC54D, 0x7641AF3C,
911
    0x2E110A62, 0x776C4EDB,
912
    0x2B1F34EB, 0x78848413,
913
    0x2826B928, 0x798A23B1,
914
    0x25280C5D, 0x7A7D055B,
915
    0x2223A4C5, 0x7B5D039D,
916
    0x1F19F97B, 0x7C29FBEE,
917
    0x1C0B826A, 0x7CE3CEB1,
918
    0x18F8B83C, 0x7D8A5F3F,
919
    0x15E21444, 0x7E1D93E9,
920
    0x12C8106E, 0x7E9D55FC,
921
    0x0FAB272B, 0x7F0991C3,
922
    0x0C8BD35E, 0x7F62368F,
923
    0x096A9049, 0x7FA736B4,
924
    0x0647D97C, 0x7FD8878D,
925
    0x03242ABF, 0x7FF62182,
926
    0x00000000, 0x7FFFFFFF,
927
    0xFCDBD541, 0x7FF62182,
928
    0xF9B82683, 0x7FD8878D,
929
    0xF6956FB6, 0x7FA736B4,
930
    0xF3742CA1, 0x7F62368F,
931
    0xF054D8D4, 0x7F0991C3,
932
    0xED37EF91, 0x7E9D55FC,
933
    0xEA1DEBBB, 0x7E1D93E9,
934
    0xE70747C3, 0x7D8A5F3F,
935
    0xE3F47D95, 0x7CE3CEB1,
936
    0xE0E60684, 0x7C29FBEE,
937
    0xDDDC5B3A, 0x7B5D039D,
938
    0xDAD7F3A2, 0x7A7D055B,
939
    0xD7D946D7, 0x798A23B1,
940
    0xD4E0CB14, 0x78848413,
941
    0xD1EEF59E, 0x776C4EDB,
942
    0xCF043AB2, 0x7641AF3C,
943
    0xCC210D78, 0x7504D345,
944
    0xC945DFEC, 0x73B5EBD0,
945
    0xC67322CD, 0x72552C84,
946
    0xC3A9458F, 0x70E2CBC6,
947
    0xC0E8B648, 0x6F5F02B1,
948
    0xBE31E19B, 0x6DCA0D14,
949
    0xBB8532AF, 0x6C242960,
950
    0xB8E31319, 0x6A6D98A4,
951
    0xB64BEACC, 0x68A69E81,
952
    0xB3C0200C, 0x66CF811F,
953
    0xB140175B, 0x64E88926,
954
    0xAECC336B, 0x62F201AC,
955
    0xAC64D510, 0x60EC3830,
956
    0xAA0A5B2D, 0x5ED77C89,
957
    0xA7BD22AB, 0x5CB420DF,
958
    0xA57D8666, 0x5A82799A,
959
    0xA34BDF20, 0x5842DD54,
960
    0xA1288376, 0x55F5A4D2,
961
    0x9F13C7D0, 0x539B2AEF,
962
    0x9D0DFE53, 0x5133CC94,
963
    0x9B1776D9, 0x4EBFE8A4,
964
    0x99307EE0, 0x4C3FDFF3,
965
    0x9759617E, 0x49B41533,
966
    0x9592675B, 0x471CECE6,
967
    0x93DBD69F, 0x447ACD50,
968
    0x9235F2EB, 0x41CE1E64,
969
    0x90A0FD4E, 0x3F1749B7,
970
    0x8F1D343A, 0x3C56BA70,
971
    0x8DAAD37B, 0x398CDD32,
972
    0x8C4A142F, 0x36BA2013,
973
    0x8AFB2CBA, 0x33DEF287,
974
    0x89BE50C3, 0x30FBC54D,
975
    0x8893B124, 0x2E110A62,
976
    0x877B7BEC, 0x2B1F34EB,
977
    0x8675DC4E, 0x2826B928,
978
    0x8582FAA4, 0x25280C5D,
979
    0x84A2FC62, 0x2223A4C5,
980
    0x83D60411, 0x1F19F97B,
981
    0x831C314E, 0x1C0B826A,
982
    0x8275A0C0, 0x18F8B83C,
983
    0x81E26C16, 0x15E21444,
984
    0x8162AA03, 0x12C8106E,
985
    0x80F66E3C, 0x0FAB272B,
986
    0x809DC970, 0x0C8BD35E,
987
    0x8058C94C, 0x096A9049,
988
    0x80277872, 0x0647D97C,
989
    0x8009DE7D, 0x03242ABF,
990
    0x80000000, 0x00000000,
991
    0x8009DE7D, 0xFCDBD541,
992
    0x80277872, 0xF9B82683,
993
    0x8058C94C, 0xF6956FB6,
994
    0x809DC970, 0xF3742CA1,
995
    0x80F66E3C, 0xF054D8D4,
996
    0x8162AA03, 0xED37EF91,
997
    0x81E26C16, 0xEA1DEBBB,
998
    0x8275A0C0, 0xE70747C3,
999
    0x831C314E, 0xE3F47D95,
1000
    0x83D60411, 0xE0E60684,
1001
    0x84A2FC62, 0xDDDC5B3A,
1002
    0x8582FAA4, 0xDAD7F3A2,
1003
    0x8675DC4E, 0xD7D946D7,
1004
    0x877B7BEC, 0xD4E0CB14,
1005
    0x8893B124, 0xD1EEF59E,
1006
    0x89BE50C3, 0xCF043AB2,
1007
    0x8AFB2CBA, 0xCC210D78,
1008
    0x8C4A142F, 0xC945DFEC,
1009
    0x8DAAD37B, 0xC67322CD,
1010
    0x8F1D343A, 0xC3A9458F,
1011
    0x90A0FD4E, 0xC0E8B648,
1012
    0x9235F2EB, 0xBE31E19B,
1013
    0x93DBD69F, 0xBB8532AF,
1014
    0x9592675B, 0xB8E31319,
1015
    0x9759617E, 0xB64BEACC,
1016
    0x99307EE0, 0xB3C0200C,
1017
    0x9B1776D9, 0xB140175B,
1018
    0x9D0DFE53, 0xAECC336B,
1019
    0x9F13C7D0, 0xAC64D510,
1020
    0xA1288376, 0xAA0A5B2D,
1021
    0xA34BDF20, 0xA7BD22AB,
1022
    0xA57D8666, 0xA57D8666,
1023
    0xA7BD22AB, 0xA34BDF20,
1024
    0xAA0A5B2D, 0xA1288376,
1025
    0xAC64D510, 0x9F13C7D0,
1026
    0xAECC336B, 0x9D0DFE53,
1027
    0xB140175B, 0x9B1776D9,
1028
    0xB3C0200C, 0x99307EE0,
1029
    0xB64BEACC, 0x9759617E,
1030
    0xB8E31319, 0x9592675B,
1031
    0xBB8532AF, 0x93DBD69F,
1032
    0xBE31E19B, 0x9235F2EB,
1033
    0xC0E8B648, 0x90A0FD4E,
1034
    0xC3A9458F, 0x8F1D343A,
1035
    0xC67322CD, 0x8DAAD37B,
1036
    0xC945DFEC, 0x8C4A142F,
1037
    0xCC210D78, 0x8AFB2CBA,
1038
    0xCF043AB2, 0x89BE50C3,
1039
    0xD1EEF59E, 0x8893B124,
1040
    0xD4E0CB14, 0x877B7BEC,
1041
    0xD7D946D7, 0x8675DC4E,
1042
    0xDAD7F3A2, 0x8582FAA4,
1043
    0xDDDC5B3A, 0x84A2FC62,
1044
    0xE0E60684, 0x83D60411,
1045
    0xE3F47D95, 0x831C314E,
1046
    0xE70747C3, 0x8275A0C0,
1047
    0xEA1DEBBB, 0x81E26C16,
1048
    0xED37EF91, 0x8162AA03,
1049
    0xF054D8D4, 0x80F66E3C,
1050
    0xF3742CA1, 0x809DC970,
1051
    0xF6956FB6, 0x8058C94C,
1052
    0xF9B82683, 0x80277872,
1053
    0xFCDBD541, 0x8009DE7D
1054
};
1055
1056
/**    
1057
* \par  
1058
* Example code for Q31 Twiddle factors Generation::    
1059
* \par    
1060
* <pre>for(i = 0; i< 3N/4; i++)    
1061
* {    
1062
*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
1063
*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
1064
* } </pre>    
1065
* \par    
1066
* where N = 512 and PI = 3.14159265358979    
1067
* \par    
1068
* Cos and Sin values are interleaved fashion    
1069
* \par    
1070
* Convert Floating point to Q31(Fixed point 1.31):    
1071
*       round(twiddleCoefQ31(i) * pow(2, 31))    
1072
*    
1073
*//**    
1074
* \par  
1075
* Example code for Q31 Twiddle factors Generation::    
1076
* \par    
1077
* <pre>for(i = 0; i< 3N/4; i++)    
1078
* {    
1079
*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
1080
*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
1081
* } </pre>    
1082
* \par    
1083
* where N = 1024        and PI = 3.14159265358979    
1084
* \par    
1085
* Cos and Sin values are interleaved fashion    
1086
* \par    
1087
* Convert Floating point to Q31(Fixed point 1.31):    
1088
*       round(twiddleCoefQ31(i) * pow(2, 31))    
1089
*    
1090
*//**    
1091
* \par  
1092
* Example code for Q31 Twiddle factors Generation::    
1093
* \par    
1094
* <pre>for(i = 0; i< 3N/4; i++)    
1095
* {    
1096
*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
1097
*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
1098
* } </pre>    
1099
* \par    
1100
* where N = 2048        and PI = 3.14159265358979    
1101
* \par    
1102
* Cos and Sin values are interleaved fashion    
1103
* \par    
1104
* Convert Floating point to Q31(Fixed point 1.31):    
1105
*       round(twiddleCoefQ31(i) * pow(2, 31))    
1106
*    
1107
*//**    
1108
* \par  
1109
* Example code for Q31 Twiddle factors Generation::    
1110
* \par    
1111
* <pre>for(i = 0; i< 3N/4; i++)    
1112
* {    
1113
*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);    
1114
*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);    
1115
* } </pre>    
1116
* \par    
1117
* where N = 4096        and PI = 3.14159265358979    
1118
* \par    
1119
* Cos and Sin values are interleaved fashion    
1120
* \par    
1121
* Convert Floating point to Q31(Fixed point 1.31):    
1122
*       round(twiddleCoefQ31(i) * pow(2, 31))    
1123
*    
1124
*//*    
1125
* @brief  q15 Twiddle factors Table    
1126
*/
1127
1128
1129
/**    
1130
* \par  
1131
* Example code for q15 Twiddle factors Generation::    
1132
* \par    
1133
* <pre>for(i = 0; i< 3N/4; i++)    
1134
* {    
1135
*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
1136
*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
1137
* } </pre>    
1138
* \par    
1139
* where N = 16  and PI = 3.14159265358979    
1140
* \par    
1141
* Cos and Sin values are interleaved fashion    
1142
* \par    
1143
* Convert Floating point to q15(Fixed point 1.15):    
1144
*       round(twiddleCoefq15(i) * pow(2, 15))    
1145
*    
1146
*/
1147
const q15_t twiddleCoef_16_q15[24] = {
1148
    0x7FFF, 0x0000,
1149
    0x7641, 0x30FB,
1150
    0x5A82, 0x5A82,
1151
    0x30FB, 0x7641,
1152
    0x0000, 0x7FFF,
1153
    0xCF04, 0x7641,
1154
    0xA57D, 0x5A82,
1155
    0x89BE, 0x30FB,
1156
    0x8000, 0x0000,
1157
    0x89BE, 0xCF04,
1158
    0xA57D, 0xA57D,
1159
    0xCF04, 0x89BE
1160
};
1161
1162
/**    
1163
* \par  
1164
* Example code for q15 Twiddle factors Generation::    
1165
* \par    
1166
* <pre>for(i = 0; i< 3N/4; i++)    
1167
* {    
1168
*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
1169
*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
1170
* } </pre>    
1171
* \par    
1172
* where N = 32  and PI = 3.14159265358979    
1173
* \par    
1174
* Cos and Sin values are interleaved fashion    
1175
* \par    
1176
* Convert Floating point to q15(Fixed point 1.15):    
1177
*       round(twiddleCoefq15(i) * pow(2, 15))    
1178
*    
1179
*/
1180
const q15_t twiddleCoef_32_q15[48] = {
1181
    0x7FFF, 0x0000,
1182
    0x7D8A, 0x18F8,
1183
    0x7641, 0x30FB,
1184
    0x6A6D, 0x471C,
1185
    0x5A82, 0x5A82,
1186
    0x471C, 0x6A6D,
1187
    0x30FB, 0x7641,
1188
    0x18F8, 0x7D8A,
1189
    0x0000, 0x7FFF,
1190
    0xE707, 0x7D8A,
1191
    0xCF04, 0x7641,
1192
    0xB8E3, 0x6A6D,
1193
    0xA57D, 0x5A82,
1194
    0x9592, 0x471C,
1195
    0x89BE, 0x30FB,
1196
    0x8275, 0x18F8,
1197
    0x8000, 0x0000,
1198
    0x8275, 0xE707,
1199
    0x89BE, 0xCF04,
1200
    0x9592, 0xB8E3,
1201
    0xA57D, 0xA57D,
1202
    0xB8E3, 0x9592,
1203
    0xCF04, 0x89BE,
1204
    0xE707, 0x8275
1205
};
1206
1207
/**    
1208
* \par  
1209
* Example code for q15 Twiddle factors Generation::    
1210
* \par    
1211
* <pre>for(i = 0; i< 3N/4; i++)    
1212
* {    
1213
*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
1214
*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
1215
* } </pre>    
1216
* \par    
1217
* where N = 64  and PI = 3.14159265358979    
1218
* \par    
1219
* Cos and Sin values are interleaved fashion    
1220
* \par    
1221
* Convert Floating point to q15(Fixed point 1.15):    
1222
*       round(twiddleCoefq15(i) * pow(2, 15))    
1223
*    
1224
*/
1225
const q15_t twiddleCoef_64_q15[96] = {
1226
    0x7FFF, 0x0000,
1227
    0x7F62, 0x0C8B,
1228
    0x7D8A, 0x18F8,
1229
    0x7A7D, 0x2528,
1230
    0x7641, 0x30FB,
1231
    0x70E2, 0x3C56,
1232
    0x6A6D, 0x471C,
1233
    0x62F2, 0x5133,
1234
    0x5A82, 0x5A82,
1235
    0x5133, 0x62F2,
1236
    0x471C, 0x6A6D,
1237
    0x3C56, 0x70E2,
1238
    0x30FB, 0x7641,
1239
    0x2528, 0x7A7D,
1240
    0x18F8, 0x7D8A,
1241
    0x0C8B, 0x7F62,
1242
    0x0000, 0x7FFF,
1243
    0xF374, 0x7F62,
1244
    0xE707, 0x7D8A,
1245
    0xDAD7, 0x7A7D,
1246
    0xCF04, 0x7641,
1247
    0xC3A9, 0x70E2,
1248
    0xB8E3, 0x6A6D,
1249
    0xAECC, 0x62F2,
1250
    0xA57D, 0x5A82,
1251
    0x9D0D, 0x5133,
1252
    0x9592, 0x471C,
1253
    0x8F1D, 0x3C56,
1254
    0x89BE, 0x30FB,
1255
    0x8582, 0x2528,
1256
    0x8275, 0x18F8,
1257
    0x809D, 0x0C8B,
1258
    0x8000, 0x0000,
1259
    0x809D, 0xF374,
1260
    0x8275, 0xE707,
1261
    0x8582, 0xDAD7,
1262
    0x89BE, 0xCF04,
1263
    0x8F1D, 0xC3A9,
1264
    0x9592, 0xB8E3,
1265
    0x9D0D, 0xAECC,
1266
    0xA57D, 0xA57D,
1267
    0xAECC, 0x9D0D,
1268
    0xB8E3, 0x9592,
1269
    0xC3A9, 0x8F1D,
1270
    0xCF04, 0x89BE,
1271
    0xDAD7, 0x8582,
1272
    0xE707, 0x8275,
1273
    0xF374, 0x809D
1274
};
1275
1276
/**    
1277
* \par  
1278
* Example code for q15 Twiddle factors Generation::    
1279
* \par    
1280
* <pre>for(i = 0; i< 3N/4; i++)    
1281
* {    
1282
*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
1283
*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
1284
* } </pre>    
1285
* \par    
1286
* where N = 128 and PI = 3.14159265358979    
1287
* \par    
1288
* Cos and Sin values are interleaved fashion    
1289
* \par    
1290
* Convert Floating point to q15(Fixed point 1.15):    
1291
*       round(twiddleCoefq15(i) * pow(2, 15))    
1292
*    
1293
*/
1294
const q15_t twiddleCoef_128_q15[192] = {
1295
    0x7FFF, 0x0000,
1296
    0x7FD8, 0x0647,
1297
    0x7F62, 0x0C8B,
1298
    0x7E9D, 0x12C8,
1299
    0x7D8A, 0x18F8,
1300
    0x7C29, 0x1F19,
1301
    0x7A7D, 0x2528,
1302
    0x7884, 0x2B1F,
1303
    0x7641, 0x30FB,
1304
    0x73B5, 0x36BA,
1305
    0x70E2, 0x3C56,
1306
    0x6DCA, 0x41CE,
1307
    0x6A6D, 0x471C,
1308
    0x66CF, 0x4C3F,
1309
    0x62F2, 0x5133,
1310
    0x5ED7, 0x55F5,
1311
    0x5A82, 0x5A82,
1312
    0x55F5, 0x5ED7,
1313
    0x5133, 0x62F2,
1314
    0x4C3F, 0x66CF,
1315
    0x471C, 0x6A6D,
1316
    0x41CE, 0x6DCA,
1317
    0x3C56, 0x70E2,
1318
    0x36BA, 0x73B5,
1319
    0x30FB, 0x7641,
1320
    0x2B1F, 0x7884,
1321
    0x2528, 0x7A7D,
1322
    0x1F19, 0x7C29,
1323
    0x18F8, 0x7D8A,
1324
    0x12C8, 0x7E9D,
1325
    0x0C8B, 0x7F62,
1326
    0x0647, 0x7FD8,
1327
    0x0000, 0x7FFF,
1328
    0xF9B8, 0x7FD8,
1329
    0xF374, 0x7F62,
1330
    0xED37, 0x7E9D,
1331
    0xE707, 0x7D8A,
1332
    0xE0E6, 0x7C29,
1333
    0xDAD7, 0x7A7D,
1334
    0xD4E0, 0x7884,
1335
    0xCF04, 0x7641,
1336
    0xC945, 0x73B5,
1337
    0xC3A9, 0x70E2,
1338
    0xBE31, 0x6DCA,
1339
    0xB8E3, 0x6A6D,
1340
    0xB3C0, 0x66CF,
1341
    0xAECC, 0x62F2,
1342
    0xAA0A, 0x5ED7,
1343
    0xA57D, 0x5A82,
1344
    0xA128, 0x55F5,
1345
    0x9D0D, 0x5133,
1346
    0x9930, 0x4C3F,
1347
    0x9592, 0x471C,
1348
    0x9235, 0x41CE,
1349
    0x8F1D, 0x3C56,
1350
    0x8C4A, 0x36BA,
1351
    0x89BE, 0x30FB,
1352
    0x877B, 0x2B1F,
1353
    0x8582, 0x2528,
1354
    0x83D6, 0x1F19,
1355
    0x8275, 0x18F8,
1356
    0x8162, 0x12C8,
1357
    0x809D, 0x0C8B,
1358
    0x8027, 0x0647,
1359
    0x8000, 0x0000,
1360
    0x8027, 0xF9B8,
1361
    0x809D, 0xF374,
1362
    0x8162, 0xED37,
1363
    0x8275, 0xE707,
1364
    0x83D6, 0xE0E6,
1365
    0x8582, 0xDAD7,
1366
    0x877B, 0xD4E0,
1367
    0x89BE, 0xCF04,
1368
    0x8C4A, 0xC945,
1369
    0x8F1D, 0xC3A9,
1370
    0x9235, 0xBE31,
1371
    0x9592, 0xB8E3,
1372
    0x9930, 0xB3C0,
1373
    0x9D0D, 0xAECC,
1374
    0xA128, 0xAA0A,
1375
    0xA57D, 0xA57D,
1376
    0xAA0A, 0xA128,
1377
    0xAECC, 0x9D0D,
1378
    0xB3C0, 0x9930,
1379
    0xB8E3, 0x9592,
1380
    0xBE31, 0x9235,
1381
    0xC3A9, 0x8F1D,
1382
    0xC945, 0x8C4A,
1383
    0xCF04, 0x89BE,
1384
    0xD4E0, 0x877B,
1385
    0xDAD7, 0x8582,
1386
    0xE0E6, 0x83D6,
1387
    0xE707, 0x8275,
1388
    0xED37, 0x8162,
1389
    0xF374, 0x809D,
1390
    0xF9B8, 0x8027
1391
};
1392
1393
/**    
1394
* \par  
1395
* Example code for q15 Twiddle factors Generation::    
1396
* \par    
1397
* <pre>for(i = 0; i< 3N/4; i++)    
1398
* {    
1399
*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
1400
*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
1401
* } </pre>    
1402
* \par    
1403
* where N = 256 and PI = 3.14159265358979    
1404
* \par    
1405
* Cos and Sin values are interleaved fashion    
1406
* \par    
1407
* Convert Floating point to q15(Fixed point 1.15):    
1408
*       round(twiddleCoefq15(i) * pow(2, 15))    
1409
*    
1410
*/
1411
const q15_t twiddleCoef_256_q15[384] = {
1412
    0x7FFF, 0x0000,
1413
    0x7FF6, 0x0324,
1414
    0x7FD8, 0x0647,
1415
    0x7FA7, 0x096A,
1416
    0x7F62, 0x0C8B,
1417
    0x7F09, 0x0FAB,
1418
    0x7E9D, 0x12C8,
1419
    0x7E1D, 0x15E2,
1420
    0x7D8A, 0x18F8,
1421
    0x7CE3, 0x1C0B,
1422
    0x7C29, 0x1F19,
1423
    0x7B5D, 0x2223,
1424
    0x7A7D, 0x2528,
1425
    0x798A, 0x2826,
1426
    0x7884, 0x2B1F,
1427
    0x776C, 0x2E11,
1428
    0x7641, 0x30FB,
1429
    0x7504, 0x33DE,
1430
    0x73B5, 0x36BA,
1431
    0x7255, 0x398C,
1432
    0x70E2, 0x3C56,
1433
    0x6F5F, 0x3F17,
1434
    0x6DCA, 0x41CE,
1435
    0x6C24, 0x447A,
1436
    0x6A6D, 0x471C,
1437
    0x68A6, 0x49B4,
1438
    0x66CF, 0x4C3F,
1439
    0x64E8, 0x4EBF,
1440
    0x62F2, 0x5133,
1441
    0x60EC, 0x539B,
1442
    0x5ED7, 0x55F5,
1443
    0x5CB4, 0x5842,
1444
    0x5A82, 0x5A82,
1445
    0x5842, 0x5CB4,
1446
    0x55F5, 0x5ED7,
1447
    0x539B, 0x60EC,
1448
    0x5133, 0x62F2,
1449
    0x4EBF, 0x64E8,
1450
    0x4C3F, 0x66CF,
1451
    0x49B4, 0x68A6,
1452
    0x471C, 0x6A6D,
1453
    0x447A, 0x6C24,
1454
    0x41CE, 0x6DCA,
1455
    0x3F17, 0x6F5F,
1456
    0x3C56, 0x70E2,
1457
    0x398C, 0x7255,
1458
    0x36BA, 0x73B5,
1459
    0x33DE, 0x7504,
1460
    0x30FB, 0x7641,
1461
    0x2E11, 0x776C,
1462
    0x2B1F, 0x7884,
1463
    0x2826, 0x798A,
1464
    0x2528, 0x7A7D,
1465
    0x2223, 0x7B5D,
1466
    0x1F19, 0x7C29,
1467
    0x1C0B, 0x7CE3,
1468
    0x18F8, 0x7D8A,
1469
    0x15E2, 0x7E1D,
1470
    0x12C8, 0x7E9D,
1471
    0x0FAB, 0x7F09,
1472
    0x0C8B, 0x7F62,
1473
    0x096A, 0x7FA7,
1474
    0x0647, 0x7FD8,
1475
    0x0324, 0x7FF6,
1476
    0x0000, 0x7FFF,
1477
    0xFCDB, 0x7FF6,
1478
    0xF9B8, 0x7FD8,
1479
    0xF695, 0x7FA7,
1480
    0xF374, 0x7F62,
1481
    0xF054, 0x7F09,
1482
    0xED37, 0x7E9D,
1483
    0xEA1D, 0x7E1D,
1484
    0xE707, 0x7D8A,
1485
    0xE3F4, 0x7CE3,
1486
    0xE0E6, 0x7C29,
1487
    0xDDDC, 0x7B5D,
1488
    0xDAD7, 0x7A7D,
1489
    0xD7D9, 0x798A,
1490
    0xD4E0, 0x7884,
1491
    0xD1EE, 0x776C,
1492
    0xCF04, 0x7641,
1493
    0xCC21, 0x7504,
1494
    0xC945, 0x73B5,
1495
    0xC673, 0x7255,
1496
    0xC3A9, 0x70E2,
1497
    0xC0E8, 0x6F5F,
1498
    0xBE31, 0x6DCA,
1499
    0xBB85, 0x6C24,
1500
    0xB8E3, 0x6A6D,
1501
    0xB64B, 0x68A6,
1502
    0xB3C0, 0x66CF,
1503
    0xB140, 0x64E8,
1504
    0xAECC, 0x62F2,
1505
    0xAC64, 0x60EC,
1506
    0xAA0A, 0x5ED7,
1507
    0xA7BD, 0x5CB4,
1508
    0xA57D, 0x5A82,
1509
    0xA34B, 0x5842,
1510
    0xA128, 0x55F5,
1511
    0x9F13, 0x539B,
1512
    0x9D0D, 0x5133,
1513
    0x9B17, 0x4EBF,
1514
    0x9930, 0x4C3F,
1515
    0x9759, 0x49B4,
1516
    0x9592, 0x471C,
1517
    0x93DB, 0x447A,
1518
    0x9235, 0x41CE,
1519
    0x90A0, 0x3F17,
1520
    0x8F1D, 0x3C56,
1521
    0x8DAA, 0x398C,
1522
    0x8C4A, 0x36BA,
1523
    0x8AFB, 0x33DE,
1524
    0x89BE, 0x30FB,
1525
    0x8893, 0x2E11,
1526
    0x877B, 0x2B1F,
1527
    0x8675, 0x2826,
1528
    0x8582, 0x2528,
1529
    0x84A2, 0x2223,
1530
    0x83D6, 0x1F19,
1531
    0x831C, 0x1C0B,
1532
    0x8275, 0x18F8,
1533
    0x81E2, 0x15E2,
1534
    0x8162, 0x12C8,
1535
    0x80F6, 0x0FAB,
1536
    0x809D, 0x0C8B,
1537
    0x8058, 0x096A,
1538
    0x8027, 0x0647,
1539
    0x8009, 0x0324,
1540
    0x8000, 0x0000,
1541
    0x8009, 0xFCDB,
1542
    0x8027, 0xF9B8,
1543
    0x8058, 0xF695,
1544
    0x809D, 0xF374,
1545
    0x80F6, 0xF054,
1546
    0x8162, 0xED37,
1547
    0x81E2, 0xEA1D,
1548
    0x8275, 0xE707,
1549
    0x831C, 0xE3F4,
1550
    0x83D6, 0xE0E6,
1551
    0x84A2, 0xDDDC,
1552
    0x8582, 0xDAD7,
1553
    0x8675, 0xD7D9,
1554
    0x877B, 0xD4E0,
1555
    0x8893, 0xD1EE,
1556
    0x89BE, 0xCF04,
1557
    0x8AFB, 0xCC21,
1558
    0x8C4A, 0xC945,
1559
    0x8DAA, 0xC673,
1560
    0x8F1D, 0xC3A9,
1561
    0x90A0, 0xC0E8,
1562
    0x9235, 0xBE31,
1563
    0x93DB, 0xBB85,
1564
    0x9592, 0xB8E3,
1565
    0x9759, 0xB64B,
1566
    0x9930, 0xB3C0,
1567
    0x9B17, 0xB140,
1568
    0x9D0D, 0xAECC,
1569
    0x9F13, 0xAC64,
1570
    0xA128, 0xAA0A,
1571
    0xA34B, 0xA7BD,
1572
    0xA57D, 0xA57D,
1573
    0xA7BD, 0xA34B,
1574
    0xAA0A, 0xA128,
1575
    0xAC64, 0x9F13,
1576
    0xAECC, 0x9D0D,
1577
    0xB140, 0x9B17,
1578
    0xB3C0, 0x9930,
1579
    0xB64B, 0x9759,
1580
    0xB8E3, 0x9592,
1581
    0xBB85, 0x93DB,
1582
    0xBE31, 0x9235,
1583
    0xC0E8, 0x90A0,
1584
    0xC3A9, 0x8F1D,
1585
    0xC673, 0x8DAA,
1586
    0xC945, 0x8C4A,
1587
    0xCC21, 0x8AFB,
1588
    0xCF04, 0x89BE,
1589
    0xD1EE, 0x8893,
1590
    0xD4E0, 0x877B,
1591
    0xD7D9, 0x8675,
1592
    0xDAD7, 0x8582,
1593
    0xDDDC, 0x84A2,
1594
    0xE0E6, 0x83D6,
1595
    0xE3F4, 0x831C,
1596
    0xE707, 0x8275,
1597
    0xEA1D, 0x81E2,
1598
    0xED37, 0x8162,
1599
    0xF054, 0x80F6,
1600
    0xF374, 0x809D,
1601
    0xF695, 0x8058,
1602
    0xF9B8, 0x8027,
1603
    0xFCDB, 0x8009
1604
};
1605
1606
/**    
1607
* \par  
1608
* Example code for q15 Twiddle factors Generation::    
1609
* \par    
1610
* <pre>for(i = 0; i< 3N/4; i++)    
1611
* {    
1612
*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
1613
*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
1614
* } </pre>    
1615
* \par    
1616
* where N = 512 and PI = 3.14159265358979    
1617
* \par    
1618
* Cos and Sin values are interleaved fashion    
1619
* \par    
1620
* Convert Floating point to q15(Fixed point 1.15):    
1621
*       round(twiddleCoefq15(i) * pow(2, 15))    
1622
*    
1623
*/
1624
const q15_t twiddleCoef_512_q15[768] = {
1625
    0x7FFF, 0x0000,
1626
    0x7FFD, 0x0192,
1627
    0x7FF6, 0x0324,
1628
    0x7FE9, 0x04B6,
1629
    0x7FD8, 0x0647,
1630
    0x7FC2, 0x07D9,
1631
    0x7FA7, 0x096A,
1632
    0x7F87, 0x0AFB,
1633
    0x7F62, 0x0C8B,
1634
    0x7F38, 0x0E1B,
1635
    0x7F09, 0x0FAB,
1636
    0x7ED5, 0x1139,
1637
    0x7E9D, 0x12C8,
1638
    0x7E5F, 0x1455,
1639
    0x7E1D, 0x15E2,
1640
    0x7DD6, 0x176D,
1641
    0x7D8A, 0x18F8,
1642
    0x7D39, 0x1A82,
1643
    0x7CE3, 0x1C0B,
1644
    0x7C89, 0x1D93,
1645
    0x7C29, 0x1F19,
1646
    0x7BC5, 0x209F,
1647
    0x7B5D, 0x2223,
1648
    0x7AEF, 0x23A6,
1649
    0x7A7D, 0x2528,
1650
    0x7A05, 0x26A8,
1651
    0x798A, 0x2826,
1652
    0x7909, 0x29A3,
1653
    0x7884, 0x2B1F,
1654
    0x77FA, 0x2C98,
1655
    0x776C, 0x2E11,
1656
    0x76D9, 0x2F87,
1657
    0x7641, 0x30FB,
1658
    0x75A5, 0x326E,
1659
    0x7504, 0x33DE,
1660
    0x745F, 0x354D,
1661
    0x73B5, 0x36BA,
1662
    0x7307, 0x3824,
1663
    0x7255, 0x398C,
1664
    0x719E, 0x3AF2,
1665
    0x70E2, 0x3C56,
1666
    0x7023, 0x3DB8,
1667
    0x6F5F, 0x3F17,
1668
    0x6E96, 0x4073,
1669
    0x6DCA, 0x41CE,
1670
    0x6CF9, 0x4325,
1671
    0x6C24, 0x447A,
1672
    0x6B4A, 0x45CD,
1673
    0x6A6D, 0x471C,
1674
    0x698C, 0x4869,
1675
    0x68A6, 0x49B4,
1676
    0x67BD, 0x4AFB,
1677
    0x66CF, 0x4C3F,
1678
    0x65DD, 0x4D81,
1679
    0x64E8, 0x4EBF,
1680
    0x63EF, 0x4FFB,
1681
    0x62F2, 0x5133,
1682
    0x61F1, 0x5269,
1683
    0x60EC, 0x539B,
1684
    0x5FE3, 0x54CA,
1685
    0x5ED7, 0x55F5,
1686
    0x5DC7, 0x571D,
1687
    0x5CB4, 0x5842,
1688
    0x5B9D, 0x5964,
1689
    0x5A82, 0x5A82,
1690
    0x5964, 0x5B9D,
1691
    0x5842, 0x5CB4,
1692
    0x571D, 0x5DC7,
1693
    0x55F5, 0x5ED7,
1694
    0x54CA, 0x5FE3,
1695
    0x539B, 0x60EC,
1696
    0x5269, 0x61F1,
1697
    0x5133, 0x62F2,
1698
    0x4FFB, 0x63EF,
1699
    0x4EBF, 0x64E8,
1700
    0x4D81, 0x65DD,
1701
    0x4C3F, 0x66CF,
1702
    0x4AFB, 0x67BD,
1703
    0x49B4, 0x68A6,
1704
    0x4869, 0x698C,
1705
    0x471C, 0x6A6D,
1706
    0x45CD, 0x6B4A,
1707
    0x447A, 0x6C24,
1708
    0x4325, 0x6CF9,
1709
    0x41CE, 0x6DCA,
1710
    0x4073, 0x6E96,
1711
    0x3F17, 0x6F5F,
1712
    0x3DB8, 0x7023,
1713
    0x3C56, 0x70E2,
1714
    0x3AF2, 0x719E,
1715
    0x398C, 0x7255,
1716
    0x3824, 0x7307,
1717
    0x36BA, 0x73B5,
1718
    0x354D, 0x745F,
1719
    0x33DE, 0x7504,
1720
    0x326E, 0x75A5,
1721
    0x30FB, 0x7641,
1722
    0x2F87, 0x76D9,
1723
    0x2E11, 0x776C,
1724
    0x2C98, 0x77FA,
1725
    0x2B1F, 0x7884,
1726
    0x29A3, 0x7909,
1727
    0x2826, 0x798A,
1728
    0x26A8, 0x7A05,
1729
    0x2528, 0x7A7D,
1730
    0x23A6, 0x7AEF,
1731
    0x2223, 0x7B5D,
1732
    0x209F, 0x7BC5,
1733
    0x1F19, 0x7C29,
1734
    0x1D93, 0x7C89,
1735
    0x1C0B, 0x7CE3,
1736
    0x1A82, 0x7D39,
1737
    0x18F8, 0x7D8A,
1738
    0x176D, 0x7DD6,
1739
    0x15E2, 0x7E1D,
1740
    0x1455, 0x7E5F,
1741
    0x12C8, 0x7E9D,
1742
    0x1139, 0x7ED5,
1743
    0x0FAB, 0x7F09,
1744
    0x0E1B, 0x7F38,
1745
    0x0C8B, 0x7F62,
1746
    0x0AFB, 0x7F87,
1747
    0x096A, 0x7FA7,
1748
    0x07D9, 0x7FC2,
1749
    0x0647, 0x7FD8,
1750
    0x04B6, 0x7FE9,
1751
    0x0324, 0x7FF6,
1752
    0x0192, 0x7FFD,
1753
    0x0000, 0x7FFF,
1754
    0xFE6D, 0x7FFD,
1755
    0xFCDB, 0x7FF6,
1756
    0xFB49, 0x7FE9,
1757
    0xF9B8, 0x7FD8,
1758
    0xF826, 0x7FC2,
1759
    0xF695, 0x7FA7,
1760
    0xF504, 0x7F87,
1761
    0xF374, 0x7F62,
1762
    0xF1E4, 0x7F38,
1763
    0xF054, 0x7F09,
1764
    0xEEC6, 0x7ED5,
1765
    0xED37, 0x7E9D,
1766
    0xEBAA, 0x7E5F,
1767
    0xEA1D, 0x7E1D,
1768
    0xE892, 0x7DD6,
1769
    0xE707, 0x7D8A,
1770
    0xE57D, 0x7D39,
1771
    0xE3F4, 0x7CE3,
1772
    0xE26C, 0x7C89,
1773
    0xE0E6, 0x7C29,
1774
    0xDF60, 0x7BC5,
1775
    0xDDDC, 0x7B5D,
1776
    0xDC59, 0x7AEF,
1777
    0xDAD7, 0x7A7D,
1778
    0xD957, 0x7A05,
1779
    0xD7D9, 0x798A,
1780
    0xD65C, 0x7909,
1781
    0xD4E0, 0x7884,
1782
    0xD367, 0x77FA,
1783
    0xD1EE, 0x776C,
1784
    0xD078, 0x76D9,
1785
    0xCF04, 0x7641,
1786
    0xCD91, 0x75A5,
1787
    0xCC21, 0x7504,
1788
    0xCAB2, 0x745F,
1789
    0xC945, 0x73B5,
1790
    0xC7DB, 0x7307,
1791
    0xC673, 0x7255,
1792
    0xC50D, 0x719E,
1793
    0xC3A9, 0x70E2,
1794
    0xC247, 0x7023,
1795
    0xC0E8, 0x6F5F,
1796
    0xBF8C, 0x6E96,
1797
    0xBE31, 0x6DCA,
1798
    0xBCDA, 0x6CF9,
1799
    0xBB85, 0x6C24,
1800
    0xBA32, 0x6B4A,
1801
    0xB8E3, 0x6A6D,
1802
    0xB796, 0x698C,
1803
    0xB64B, 0x68A6,
1804
    0xB504, 0x67BD,
1805
    0xB3C0, 0x66CF,
1806
    0xB27E, 0x65DD,
1807
    0xB140, 0x64E8,
1808
    0xB004, 0x63EF,
1809
    0xAECC, 0x62F2,
1810
    0xAD96, 0x61F1,
1811
    0xAC64, 0x60EC,
1812
    0xAB35, 0x5FE3,
1813
    0xAA0A, 0x5ED7,
1814
    0xA8E2, 0x5DC7,
1815
    0xA7BD, 0x5CB4,
1816
    0xA69B, 0x5B9D,
1817
    0xA57D, 0x5A82,
1818
    0xA462, 0x5964,
1819
    0xA34B, 0x5842,
1820
    0xA238, 0x571D,
1821
    0xA128, 0x55F5,
1822
    0xA01C, 0x54CA,
1823
    0x9F13, 0x539B,
1824
    0x9E0E, 0x5269,
1825
    0x9D0D, 0x5133,
1826
    0x9C10, 0x4FFB,
1827
    0x9B17, 0x4EBF,
1828
    0x9A22, 0x4D81,
1829
    0x9930, 0x4C3F,
1830
    0x9842, 0x4AFB,
1831
    0x9759, 0x49B4,
1832
    0x9673, 0x4869,
1833
    0x9592, 0x471C,
1834
    0x94B5, 0x45CD,
1835
    0x93DB, 0x447A,
1836
    0x9306, 0x4325,
1837
    0x9235, 0x41CE,
1838
    0x9169, 0x4073,
1839
    0x90A0, 0x3F17,
1840
    0x8FDC, 0x3DB8,
1841
    0x8F1D, 0x3C56,
1842
    0x8E61, 0x3AF2,
1843
    0x8DAA, 0x398C,
1844
    0x8CF8, 0x3824,
1845
    0x8C4A, 0x36BA,
1846
    0x8BA0, 0x354D,
1847
    0x8AFB, 0x33DE,
1848
    0x8A5A, 0x326E,
1849
    0x89BE, 0x30FB,
1850
    0x8926, 0x2F87,
1851
    0x8893, 0x2E11,
1852
    0x8805, 0x2C98,
1853
    0x877B, 0x2B1F,
1854
    0x86F6, 0x29A3,
1855
    0x8675, 0x2826,
1856
    0x85FA, 0x26A8,
1857
    0x8582, 0x2528,
1858
    0x8510, 0x23A6,
1859
    0x84A2, 0x2223,
1860
    0x843A, 0x209F,
1861
    0x83D6, 0x1F19,
1862
    0x8376, 0x1D93,
1863
    0x831C, 0x1C0B,
1864
    0x82C6, 0x1A82,
1865
    0x8275, 0x18F8,
1866
    0x8229, 0x176D,
1867
    0x81E2, 0x15E2,
1868
    0x81A0, 0x1455,
1869
    0x8162, 0x12C8,
1870
    0x812A, 0x1139,
1871
    0x80F6, 0x0FAB,
1872
    0x80C7, 0x0E1B,
1873
    0x809D, 0x0C8B,
1874
    0x8078, 0x0AFB,
1875
    0x8058, 0x096A,
1876
    0x803D, 0x07D9,
1877
    0x8027, 0x0647,
1878
    0x8016, 0x04B6,
1879
    0x8009, 0x0324,
1880
    0x8002, 0x0192,
1881
    0x8000, 0x0000,
1882
    0x8002, 0xFE6D,
1883
    0x8009, 0xFCDB,
1884
    0x8016, 0xFB49,
1885
    0x8027, 0xF9B8,
1886
    0x803D, 0xF826,
1887
    0x8058, 0xF695,
1888
    0x8078, 0xF504,
1889
    0x809D, 0xF374,
1890
    0x80C7, 0xF1E4,
1891
    0x80F6, 0xF054,
1892
    0x812A, 0xEEC6,
1893
    0x8162, 0xED37,
1894
    0x81A0, 0xEBAA,
1895
    0x81E2, 0xEA1D,
1896
    0x8229, 0xE892,
1897
    0x8275, 0xE707,
1898
    0x82C6, 0xE57D,
1899
    0x831C, 0xE3F4,
1900
    0x8376, 0xE26C,
1901
    0x83D6, 0xE0E6,
1902
    0x843A, 0xDF60,
1903
    0x84A2, 0xDDDC,
1904
    0x8510, 0xDC59,
1905
    0x8582, 0xDAD7,
1906
    0x85FA, 0xD957,
1907
    0x8675, 0xD7D9,
1908
    0x86F6, 0xD65C,
1909
    0x877B, 0xD4E0,
1910
    0x8805, 0xD367,
1911
    0x8893, 0xD1EE,
1912
    0x8926, 0xD078,
1913
    0x89BE, 0xCF04,
1914
    0x8A5A, 0xCD91,
1915
    0x8AFB, 0xCC21,
1916
    0x8BA0, 0xCAB2,
1917
    0x8C4A, 0xC945,
1918
    0x8CF8, 0xC7DB,
1919
    0x8DAA, 0xC673,
1920
    0x8E61, 0xC50D,
1921
    0x8F1D, 0xC3A9,
1922
    0x8FDC, 0xC247,
1923
    0x90A0, 0xC0E8,
1924
    0x9169, 0xBF8C,
1925
    0x9235, 0xBE31,
1926
    0x9306, 0xBCDA,
1927
    0x93DB, 0xBB85,
1928
    0x94B5, 0xBA32,
1929
    0x9592, 0xB8E3,
1930
    0x9673, 0xB796,
1931
    0x9759, 0xB64B,
1932
    0x9842, 0xB504,
1933
    0x9930, 0xB3C0,
1934
    0x9A22, 0xB27E,
1935
    0x9B17, 0xB140,
1936
    0x9C10, 0xB004,
1937
    0x9D0D, 0xAECC,
1938
    0x9E0E, 0xAD96,
1939
    0x9F13, 0xAC64,
1940
    0xA01C, 0xAB35,
1941
    0xA128, 0xAA0A,
1942
    0xA238, 0xA8E2,
1943
    0xA34B, 0xA7BD,
1944
    0xA462, 0xA69B,
1945
    0xA57D, 0xA57D,
1946
    0xA69B, 0xA462,
1947
    0xA7BD, 0xA34B,
1948
    0xA8E2, 0xA238,
1949
    0xAA0A, 0xA128,
1950
    0xAB35, 0xA01C,
1951
    0xAC64, 0x9F13,
1952
    0xAD96, 0x9E0E,
1953
    0xAECC, 0x9D0D,
1954
    0xB004, 0x9C10,
1955
    0xB140, 0x9B17,
1956
    0xB27E, 0x9A22,
1957
    0xB3C0, 0x9930,
1958
    0xB504, 0x9842,
1959
    0xB64B, 0x9759,
1960
    0xB796, 0x9673,
1961
    0xB8E3, 0x9592,
1962
    0xBA32, 0x94B5,
1963
    0xBB85, 0x93DB,
1964
    0xBCDA, 0x9306,
1965
    0xBE31, 0x9235,
1966
    0xBF8C, 0x9169,
1967
    0xC0E8, 0x90A0,
1968
    0xC247, 0x8FDC,
1969
    0xC3A9, 0x8F1D,
1970
    0xC50D, 0x8E61,
1971
    0xC673, 0x8DAA,
1972
    0xC7DB, 0x8CF8,
1973
    0xC945, 0x8C4A,
1974
    0xCAB2, 0x8BA0,
1975
    0xCC21, 0x8AFB,
1976
    0xCD91, 0x8A5A,
1977
    0xCF04, 0x89BE,
1978
    0xD078, 0x8926,
1979
    0xD1EE, 0x8893,
1980
    0xD367, 0x8805,
1981
    0xD4E0, 0x877B,
1982
    0xD65C, 0x86F6,
1983
    0xD7D9, 0x8675,
1984
    0xD957, 0x85FA,
1985
    0xDAD7, 0x8582,
1986
    0xDC59, 0x8510,
1987
    0xDDDC, 0x84A2,
1988
    0xDF60, 0x843A,
1989
    0xE0E6, 0x83D6,
1990
    0xE26C, 0x8376,
1991
    0xE3F4, 0x831C,
1992
    0xE57D, 0x82C6,
1993
    0xE707, 0x8275,
1994
    0xE892, 0x8229,
1995
    0xEA1D, 0x81E2,
1996
    0xEBAA, 0x81A0,
1997
    0xED37, 0x8162,
1998
    0xEEC6, 0x812A,
1999
    0xF054, 0x80F6,
2000
    0xF1E4, 0x80C7,
2001
    0xF374, 0x809D,
2002
    0xF504, 0x8078,
2003
    0xF695, 0x8058,
2004
    0xF826, 0x803D,
2005
    0xF9B8, 0x8027,
2006
    0xFB49, 0x8016,
2007
    0xFCDB, 0x8009,
2008
    0xFE6D, 0x8002
2009
};
2010
2011
/**    
2012
* \par  
2013
* Example code for q15 Twiddle factors Generation::    
2014
* \par    
2015
* <pre>for(i = 0; i< 3N/4; i++)    
2016
* {    
2017
*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
2018
*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
2019
* } </pre>    
2020
* \par    
2021
* where N = 1024        and PI = 3.14159265358979    
2022
* \par    
2023
* Cos and Sin values are interleaved fashion    
2024
* \par    
2025
* Convert Floating point to q15(Fixed point 1.15):    
2026
*       round(twiddleCoefq15(i) * pow(2, 15))    
2027
*    
2028
*//**    
2029
* \par  
2030
* Example code for q15 Twiddle factors Generation::    
2031
* \par    
2032
* <pre>for(i = 0; i< 3N/4; i++)    
2033
* {    
2034
*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
2035
*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
2036
* } </pre>    
2037
* \par    
2038
* where N = 2048        and PI = 3.14159265358979    
2039
* \par    
2040
* Cos and Sin values are interleaved fashion    
2041
* \par    
2042
* Convert Floating point to q15(Fixed point 1.15):    
2043
*       round(twiddleCoefq15(i) * pow(2, 15))    
2044
*    
2045
*//**    
2046
* \par  
2047
* Example code for q15 Twiddle factors Generation::    
2048
* \par    
2049
* <pre>for(i = 0; i< 3N/4; i++)    
2050
* {    
2051
*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);    
2052
*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);    
2053
* } </pre>    
2054
* \par    
2055
* where N = 4096        and PI = 3.14159265358979    
2056
* \par    
2057
* Cos and Sin values are interleaved fashion    
2058
* \par    
2059
* Convert Floating point to q15(Fixed point 1.15):    
2060
*       round(twiddleCoefq15(i) * pow(2, 15))    
2061
*    
2062
*//**    
2063
* @} end of CFFT_CIFFT group    
2064
*/
2065
2066
/*    
2067
* @brief  Q15 table for reciprocal    
2068
*/
2069
const q15_t ALIGN4 armRecipTableQ15[64] = {
2070
 0x7F03, 0x7D13, 0x7B31, 0x795E, 0x7798, 0x75E0,
2071
 0x7434, 0x7294, 0x70FF, 0x6F76, 0x6DF6, 0x6C82,
2072
 0x6B16, 0x69B5, 0x685C, 0x670C, 0x65C4, 0x6484,
2073
 0x634C, 0x621C, 0x60F3, 0x5FD0, 0x5EB5, 0x5DA0,
2074
 0x5C91, 0x5B88, 0x5A85, 0x5988, 0x5890, 0x579E,
2075
 0x56B0, 0x55C8, 0x54E4, 0x5405, 0x532B, 0x5255,
2076
 0x5183, 0x50B6, 0x4FEC, 0x4F26, 0x4E64, 0x4DA6,
2077
 0x4CEC, 0x4C34, 0x4B81, 0x4AD0, 0x4A23, 0x4978,
2078
 0x48D1, 0x482D, 0x478C, 0x46ED, 0x4651, 0x45B8,
2079
 0x4521, 0x448D, 0x43FC, 0x436C, 0x42DF, 0x4255,
2080
 0x41CC, 0x4146, 0x40C2, 0x4040
2081
};
2082
2083
/*    
2084
* @brief  Q31 table for reciprocal    
2085
*/
2086
const q31_t armRecipTableQ31[64] = {
2087
  0x7F03F03F, 0x7D137420, 0x7B31E739, 0x795E9F94, 0x7798FD29, 0x75E06928,
2088
  0x7434554D, 0x72943B4B, 0x70FF9C40, 0x6F760031, 0x6DF6F593, 0x6C8210E3,
2089
  0x6B16EC3A, 0x69B526F6, 0x685C655F, 0x670C505D, 0x65C4952D, 0x6484E519,
2090
  0x634CF53E, 0x621C7E4F, 0x60F33C61, 0x5FD0EEB3, 0x5EB55785, 0x5DA03BEB,
2091
  0x5C9163A1, 0x5B8898E6, 0x5A85A85A, 0x598860DF, 0x58909373, 0x579E1318,
2092
  0x56B0B4B8, 0x55C84F0B, 0x54E4BA80, 0x5405D124, 0x532B6E8F, 0x52556FD0,
2093
  0x5183B35A, 0x50B618F3, 0x4FEC81A2, 0x4F26CFA2, 0x4E64E64E, 0x4DA6AA1D,
2094
  0x4CEC008B, 0x4C34D010, 0x4B810016, 0x4AD078EF, 0x4A2323C4, 0x4978EA96,
2095
  0x48D1B827, 0x482D77FE, 0x478C1657, 0x46ED801D, 0x4651A2E5, 0x45B86CE2,
2096
  0x4521CCE1, 0x448DB244, 0x43FC0CFA, 0x436CCD78, 0x42DFE4B4, 0x42554426,
2097
  0x41CCDDB6, 0x4146A3C6, 0x40C28923, 0x40408102
2098
};
2099
2100
const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE__16_TABLE_LENGTH] =
2101
{
2102
   //8x2, size 20
2103
   8,64, 24,72, 16,64, 40,80, 32,64, 56,88, 48,72, 88,104, 72,96, 104,112
2104
};
2105
2106
const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE__32_TABLE_LENGTH] =
2107
{
2108
   //8x4, size 48
2109
   8,64, 16,128, 24,192, 32,64, 40,72, 48,136, 56,200, 64,128, 72,80, 88,208,
2110
   80,144, 96,192, 104,208, 112,152, 120,216, 136,192, 144,160, 168,208,
2111
   152,224, 176,208, 184,232, 216,240, 200,224, 232,240
2112
};
2113
2114
const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE__64_TABLE_LENGTH] =
2115
{  
2116
   //radix 8, size 56
2117
   8,64, 16,128, 24,192, 32,256, 40,320, 48,384, 56,448, 80,136, 88,200,
2118
   96,264, 104,328, 112,392, 120,456, 152,208, 160,272, 168,336, 176,400,
2119
   184,464, 224,280, 232,344, 240,408, 248,472, 296,352, 304,416, 312,480,
2120
   368,424, 376,488, 440,496
2121
};
2122
2123
const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH] =
2124
{
2125
   //8x2, size 208
2126
   8,512, 16,64, 24,576, 32,128, 40,640, 48,192, 56,704, 64,256, 72,768,
2127
   80,320, 88,832, 96,384, 104,896, 112,448, 120,960, 128,512, 136,520,
2128
   144,768, 152,584, 160,520, 168,648, 176,200, 184,712, 192,264, 200,776,
2129
   208,328, 216,840, 224,392, 232,904, 240,456, 248,968, 264,528, 272,320,
2130
   280,592, 288,768, 296,656, 304,328, 312,720, 328,784, 344,848, 352,400,
2131
   360,912, 368,464, 376,976, 384,576, 392,536, 400,832, 408,600, 416,584,
2132
   424,664, 432,840, 440,728, 448,592, 456,792, 464,848, 472,856, 480,600,
2133
   488,920, 496,856, 504,984, 520,544, 528,576, 536,608, 552,672, 560,608,
2134
   568,736, 576,768, 584,800, 592,832, 600,864, 608,800, 616,928, 624,864,
2135
   632,992, 648,672, 656,896, 664,928, 688,904, 696,744, 704,896, 712,808,
2136
   720,912, 728,872, 736,928, 744,936, 752,920, 760,1000, 776,800, 784,832,
2137
   792,864, 808,904, 816,864, 824,920, 840,864, 856,880, 872,944, 888,1008,
2138
   904,928, 912,960, 920,992, 944,968, 952,1000, 968,992, 984,1008
2139
};
2140
2141
const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH] =
2142
{
2143
   //8x4, size 440
2144
   8,512, 16,1024, 24,1536, 32,64, 40,576, 48,1088, 56,1600, 64,128, 72,640,
2145
   80,1152, 88,1664, 96,192, 104,704, 112,1216, 120,1728, 128,256, 136,768,
2146
   144,1280, 152,1792, 160,320, 168,832, 176,1344, 184,1856, 192,384,
2147
   200,896, 208,1408, 216,1920, 224,448, 232,960, 240,1472, 248,1984,
2148
   256,512, 264,520, 272,1032, 280,1544, 288,640, 296,584, 304,1096, 312,1608,
2149
   320,768, 328,648, 336,1160, 344,1672, 352,896, 360,712, 368,1224, 376,1736,
2150
   384,520, 392,776, 400,1288, 408,1800, 416,648, 424,840, 432,1352, 440,1864,
2151
   448,776, 456,904, 464,1416, 472,1928, 480,904, 488,968, 496,1480, 504,1992,
2152
   520,528, 512,1024, 528,1040, 536,1552, 544,1152, 552,592, 560,1104,
2153
   568,1616, 576,1280, 584,656, 592,1168, 600,1680, 608,1408, 616,720,
2154
   624,1232, 632,1744, 640,1032, 648,784, 656,1296, 664,1808, 672,1160,
2155
   680,848, 688,1360, 696,1872, 704,1288, 712,912, 720,1424, 728,1936,
2156
   736,1416, 744,976, 752,1488, 760,2000, 768,1536, 776,1552, 784,1048,
2157
   792,1560, 800,1664, 808,1680, 816,1112, 824,1624, 832,1792, 840,1808,
2158
   848,1176, 856,1688, 864,1920, 872,1936, 880,1240, 888,1752, 896,1544,
2159
   904,1560, 912,1304, 920,1816, 928,1672, 936,1688, 944,1368, 952,1880,
2160
   960,1800, 968,1816, 976,1432, 984,1944, 992,1928, 1000,1944, 1008,1496,
2161
   1016,2008, 1032,1152, 1040,1056, 1048,1568, 1064,1408, 1072,1120,
2162
   1080,1632, 1088,1536, 1096,1160, 1104,1184, 1112,1696, 1120,1552,
2163
   1128,1416, 1136,1248, 1144,1760, 1160,1664, 1168,1312, 1176,1824,
2164
   1184,1544, 1192,1920, 1200,1376, 1208,1888, 1216,1568, 1224,1672,
2165
   1232,1440, 1240,1952, 1248,1560, 1256,1928, 1264,1504, 1272,2016,
2166
   1288,1312, 1296,1408, 1304,1576, 1320,1424, 1328,1416, 1336,1640,
2167
   1344,1792, 1352,1824, 1360,1920, 1368,1704, 1376,1800, 1384,1432,
2168
   1392,1928, 1400,1768, 1416,1680, 1432,1832, 1440,1576, 1448,1936,
2169
   1456,1832, 1464,1896, 1472,1808, 1480,1688, 1488,1936, 1496,1960,
2170
   1504,1816, 1512,1944, 1520,1944, 1528,2024, 1560,1584, 1592,1648,
2171
   1600,1792, 1608,1920, 1616,1800, 1624,1712, 1632,1808, 1640,1936,
2172
   1648,1816, 1656,1776, 1672,1696, 1688,1840, 1704,1952, 1712,1928,
2173
   1720,1904, 1728,1824, 1736,1952, 1744,1832, 1752,1968, 1760,1840,
2174
   1768,1960, 1776,1944, 1784,2032, 1864,1872, 1848,1944, 1872,1888,
2175
   1880,1904, 1888,1984, 1896,2000, 1912,2032, 1904,2016, 1976,2032,
2176
   1960,1968, 2008,2032, 1992,2016, 2024,2032
2177
};
2178
2179
const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH] =
2180
{
2181
   //radix 8, size 448
2182
   8,512, 16,1024, 24,1536, 32,2048, 40,2560, 48,3072, 56,3584, 72,576,
2183
   80,1088, 88,1600, 96,2112, 104,2624, 112,3136, 120,3648, 136,640, 144,1152,
2184
   152,1664, 160,2176, 168,2688, 176,3200, 184,3712, 200,704, 208,1216,
2185
   216,1728, 224,2240, 232,2752, 240,3264, 248,3776, 264,768, 272,1280,
2186
   280,1792, 288,2304, 296,2816, 304,3328, 312,3840, 328,832, 336,1344,
2187
   344,1856, 352,2368, 360,2880, 368,3392, 376,3904, 392,896, 400,1408,
2188
   408,1920, 416,2432, 424,2944, 432,3456, 440,3968, 456,960, 464,1472,
2189
   472,1984, 480,2496, 488,3008, 496,3520, 504,4032, 528,1032, 536,1544,
2190
   544,2056, 552,2568, 560,3080, 568,3592, 592,1096, 600,1608, 608,2120,
2191
   616,2632, 624,3144, 632,3656, 656,1160, 664,1672, 672,2184, 680,2696,
2192
   688,3208, 696,3720, 720,1224, 728,1736, 736,2248, 744,2760, 752,3272,
2193
   760,3784, 784,1288, 792,1800, 800,2312, 808,2824, 816,3336, 824,3848,
2194
   848,1352, 856,1864, 864,2376, 872,2888, 880,3400, 888,3912, 912,1416,
2195
   920,1928, 928,2440, 936,2952, 944,3464, 952,3976, 976,1480, 984,1992,
2196
   992,2504, 1000,3016, 1008,3528, 1016,4040, 1048,1552, 1056,2064, 1064,2576,
2197
   1072,3088, 1080,3600, 1112,1616, 1120,2128, 1128,2640, 1136,3152,
2198
   1144,3664, 1176,1680, 1184,2192, 1192,2704, 1200,3216, 1208,3728,
2199
   1240,1744, 1248,2256, 1256,2768, 1264,3280, 1272,3792, 1304,1808,
2200
   1312,2320, 1320,2832, 1328,3344, 1336,3856, 1368,1872, 1376,2384,
2201
   1384,2896, 1392,3408, 1400,3920, 1432,1936, 1440,2448, 1448,2960,
2202
   1456,3472, 1464,3984, 1496,2000, 1504,2512, 1512,3024, 1520,3536,
2203
   1528,4048, 1568,2072, 1576,2584, 1584,3096, 1592,3608, 1632,2136,
2204
   1640,2648, 1648,3160, 1656,3672, 1696,2200, 1704,2712, 1712,3224,
2205
   1720,3736, 1760,2264, 1768,2776, 1776,3288, 1784,3800, 1824,2328,
2206
   1832,2840, 1840,3352, 1848,3864, 1888,2392, 1896,2904, 1904,3416,
2207
   1912,3928, 1952,2456, 1960,2968, 1968,3480, 1976,3992, 2016,2520,
2208
   2024,3032, 2032,3544, 2040,4056, 2088,2592, 2096,3104, 2104,3616,
2209
   2152,2656, 2160,3168, 2168,3680, 2216,2720, 2224,3232, 2232,3744,
2210
   2280,2784, 2288,3296, 2296,3808, 2344,2848, 2352,3360, 2360,3872,
2211
   2408,2912, 2416,3424, 2424,3936, 2472,2976, 2480,3488, 2488,4000,
2212
   2536,3040, 2544,3552, 2552,4064, 2608,3112, 2616,3624, 2672,3176,
2213
   2680,3688, 2736,3240, 2744,3752, 2800,3304, 2808,3816, 2864,3368,
2214
   2872,3880, 2928,3432, 2936,3944, 2992,3496, 3000,4008, 3056,3560,
2215
   3064,4072, 3128,3632, 3192,3696, 3256,3760, 3320,3824, 3384,3888,
2216
   3448,3952, 3512,4016, 3576,4080
2217
};
2218
2219
const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE1024_TABLE_LENGTH] =
2220
{
2221
   //8x2, size 1800//8x2, size 3808//radix 8, size 4032//radix 4, size 12
2222
   8,64, 16,32, 24,96, 40,80, 56,112, 88,104
2223
};
2224
2225
const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH] =
2226
{
2227
   //4x2, size 24
2228
   8,128, 16,64, 24,192, 40,160, 48,96, 56,224, 72,144,
2229
   88,208, 104,176, 120,240, 152,200, 184,232
2230
};
2231
2232
const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH] =
2233
{  
2234
   //radix 4, size 56
2235
   8,256, 16,128, 24,384, 32,64, 40,320, 48,192, 56,448, 72,288, 80,160, 88,416, 104,352,
2236
   112,224, 120,480, 136,272, 152,400, 168,336, 176,208, 184,464, 200,304, 216,432,
2237
   232,368, 248,496, 280,392, 296,328, 312,456, 344,424, 376,488, 440,472
2238
};
2239
2240
const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH] =
2241
{
2242
   //4x2, size 112
2243
   8,512, 16,256, 24,768, 32,128, 40,640, 48,384, 56,896, 72,576, 80,320, 88,832, 96,192,
2244
   104,704, 112,448, 120,960, 136,544, 144,288, 152,800, 168,672, 176,416, 184,928, 200,608,
2245
   208,352, 216,864, 232,736, 240,480, 248,992, 264,528, 280,784, 296,656, 304,400, 312,912,
2246
   328,592, 344,848, 360,720, 368,464, 376,976, 392,560, 408,816, 424,688, 440,944, 456,624,
2247
   472,880, 488,752, 504,1008, 536,776, 552,648, 568,904, 600,840, 616,712, 632,968,
2248
   664,808, 696,936, 728,872, 760,1000, 824,920, 888,984
2249
};
2250
2251
const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH] =
2252
{
2253
   //radix 4, size 240
2254
   8,1024, 16,512, 24,1536, 32,256, 40,1280, 48,768, 56,1792, 64,128, 72,1152, 80,640,
2255
   88,1664, 96,384, 104,1408, 112,896, 120,1920, 136,1088, 144,576, 152,1600, 160,320,
2256
   168,1344, 176,832, 184,1856, 200,1216, 208,704, 216,1728, 224,448, 232,1472, 240,960,
2257
   248,1984, 264,1056, 272,544, 280,1568, 296,1312, 304,800, 312,1824, 328,1184, 336,672,
2258
   344,1696, 352,416, 360,1440, 368,928, 376,1952, 392,1120, 400,608, 408,1632, 424,1376,
2259
   432,864, 440,1888, 456,1248, 464,736, 472,1760, 488,1504, 496,992, 504,2016, 520,1040,
2260
   536,1552, 552,1296, 560,784, 568,1808, 584,1168, 592,656, 600,1680, 616,1424, 624,912,
2261
   632,1936, 648,1104, 664,1616, 680,1360, 688,848, 696,1872, 712,1232, 728,1744, 744,1488,
2262
   752,976, 760,2000, 776,1072, 792,1584, 808,1328, 824,1840, 840,1200, 856,1712, 872,1456,
2263
   880,944, 888,1968, 904,1136, 920,1648, 936,1392, 952,1904, 968,1264, 984,1776, 1000,1520,
2264
   1016,2032, 1048,1544, 1064,1288, 1080,1800, 1096,1160, 1112,1672, 1128,1416, 1144,1928,
2265
   1176,1608, 1192,1352, 1208,1864, 1240,1736, 1256,1480, 1272,1992, 1304,1576, 1336,1832,
2266
   1368,1704, 1384,1448, 1400,1960, 1432,1640, 1464,1896, 1496,1768, 1528,2024, 1592,1816,
2267
   1624,1688, 1656,1944, 1720,1880, 1784,2008, 1912,1976
2268
};
2269
2270
const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH] =
2271
{
2272
   //4x2, size 480
2273
   8,2048, 16,1024, 24,3072, 32,512, 40,2560, 48,1536, 56,3584, 64,256, 72,2304, 80,1280,
2274
   88,3328, 96,768, 104,2816, 112,1792, 120,3840, 136,2176, 144,1152, 152,3200, 160,640,
2275
   168,2688, 176,1664, 184,3712, 192,384, 200,2432, 208,1408, 216,3456, 224,896, 232,2944,
2276
   240,1920, 248,3968, 264,2112, 272,1088, 280,3136, 288,576, 296,2624, 304,1600, 312,3648,
2277
   328,2368, 336,1344, 344,3392, 352,832, 360,2880, 368,1856, 376,3904, 392,2240, 400,1216,
2278
   408,3264, 416,704, 424,2752, 432,1728, 440,3776, 456,2496, 464,1472, 472,3520, 480,960,
2279
   488,3008, 496,1984, 504,4032, 520,2080, 528,1056, 536,3104, 552,2592, 560,1568, 568,3616,
2280
   584,2336, 592,1312, 600,3360, 608,800, 616,2848, 624,1824, 632,3872, 648,2208, 656,1184,
2281
   664,3232, 680,2720, 688,1696, 696,3744, 712,2464, 720,1440, 728,3488, 736,928, 744,2976,
2282
   752,1952, 760,4000, 776,2144, 784,1120, 792,3168, 808,2656, 816,1632, 824,3680, 840,2400,
2283
   848,1376, 856,3424, 872,2912, 880,1888, 888,3936, 904,2272, 912,1248, 920,3296, 936,2784,
2284
   944,1760, 952,3808, 968,2528, 976,1504, 984,3552, 1000,3040, 1008,2016, 1016,4064,
2285
   1032,2064, 1048,3088, 1064,2576, 1072,1552, 1080,3600, 1096,2320, 1104,1296, 1112,3344,
2286
   1128,2832, 1136,1808, 1144,3856, 1160,2192, 1176,3216, 1192,2704, 1200,1680, 1208,3728,
2287
   1224,2448, 1232,1424, 1240,3472, 1256,2960, 1264,1936, 1272,3984, 1288,2128, 1304,3152,
2288
   1320,2640, 1328,1616, 1336,3664, 1352,2384, 1368,3408, 1384,2896, 1392,1872, 1400,3920,
2289
   1416,2256, 1432,3280, 1448,2768, 1456,1744, 1464,3792, 1480,2512, 1496,3536, 1512,3024,
2290
   1520,2000, 1528,4048, 1544,2096, 1560,3120, 1576,2608, 1592,3632, 1608,2352, 1624,3376,
2291
   1640,2864, 1648,1840, 1656,3888, 1672,2224, 1688,3248, 1704,2736, 1720,3760, 1736,2480,
2292
   1752,3504, 1768,2992, 1776,1968, 1784,4016, 1800,2160, 1816,3184, 1832,2672, 1848,3696,
2293
   1864,2416, 1880,3440, 1896,2928, 1912,3952, 1928,2288, 1944,3312, 1960,2800, 1976,3824,
2294
   1992,2544, 2008,3568, 2024,3056, 2040,4080, 2072,3080, 2088,2568, 2104,3592, 2120,2312,
2295
   2136,3336, 2152,2824, 2168,3848, 2200,3208, 2216,2696, 2232,3720, 2248,2440, 2264,3464,
2296
   2280,2952, 2296,3976, 2328,3144, 2344,2632, 2360,3656, 2392,3400, 2408,2888, 2424,3912,
2297
   2456,3272, 2472,2760, 2488,3784, 2520,3528, 2536,3016, 2552,4040, 2584,3112, 2616,3624,
2298
   2648,3368, 2664,2856, 2680,3880, 2712,3240, 2744,3752, 2776,3496, 2792,2984, 2808,4008,
2299
   2840,3176, 2872,3688, 2904,3432, 2936,3944, 2968,3304, 3000,3816, 3032,3560, 3064,4072,
2300
   3128,3608, 3160,3352, 3192,3864, 3256,3736, 3288,3480, 3320,3992, 3384,3672, 3448,3928,
2301
   3512,3800, 3576,4056, 3704,3896, 3832,4024
2302
};
2303
2304
const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH] =
2305
{
2306
    //radix 4, size 992
2307
    8,4096, 16,2048, 24,6144, 32,1024, 40,5120, 48,3072, 56,7168, 64,512, 72,4608,
2308
    80,2560, 88,6656, 96,1536, 104,5632, 112,3584, 120,7680, 128,256, 136,4352,
2309
    144,2304, 152,6400, 160,1280, 168,5376, 176,3328, 184,7424, 192,768, 200,4864,
2310
    208,2816, 216,6912, 224,1792, 232,5888, 240,3840, 248,7936, 264,4224, 272,2176,
2311
    280,6272, 288,1152, 296,5248, 304,3200, 312,7296, 320,640, 328,4736, 336,2688,
2312
    344,6784, 352,1664, 360,5760, 368,3712, 376,7808, 392,4480, 400,2432, 408,6528,
2313
    416,1408, 424,5504, 432,3456, 440,7552, 448,896, 456,4992, 464,2944, 472,7040,
2314
    480,1920, 488,6016, 496,3968, 504,8064, 520,4160, 528,2112, 536,6208, 544,1088,
2315
    552,5184, 560,3136, 568,7232, 584,4672, 592,2624, 600,6720, 608,1600, 616,5696,
2316
    624,3648, 632,7744, 648,4416, 656,2368, 664,6464, 672,1344, 680,5440, 688,3392,
2317
    696,7488, 704,832, 712,4928, 720,2880, 728,6976, 736,1856, 744,5952, 752,3904,
2318
    760,8000, 776,4288, 784,2240, 792,6336, 800,1216, 808,5312, 816,3264, 824,7360,
2319
    840,4800, 848,2752, 856,6848, 864,1728, 872,5824, 880,3776, 888,7872, 904,4544,
2320
    912,2496, 920,6592, 928,1472, 936,5568, 944,3520, 952,7616, 968,5056, 976,3008,
2321
    984,7104, 992,1984, 1000,6080, 1008,4032, 1016,8128, 1032,4128, 1040,2080,
2322
    1048,6176, 1064,5152, 1072,3104, 1080,7200, 1096,4640, 1104,2592, 1112,6688,
2323
    1120,1568, 1128,5664, 1136,3616, 1144,7712, 1160,4384, 1168,2336, 1176,6432,
2324
    1184,1312, 1192,5408, 1200,3360, 1208,7456, 1224,4896, 1232,2848, 1240,6944,
2325
    1248,1824, 1256,5920, 1264,3872, 1272,7968, 1288,4256, 1296,2208, 1304,6304,
2326
    1320,5280, 1328,3232, 1336,7328, 1352,4768, 1360,2720, 1368,6816, 1376,1696,
2327
    1384,5792, 1392,3744, 1400,7840, 1416,4512, 1424,2464, 1432,6560, 1448,5536,
2328
    1456,3488, 1464,7584, 1480,5024, 1488,2976, 1496,7072, 1504,1952, 1512,6048,
2329
    1520,4000, 1528,8096, 1544,4192, 1552,2144, 1560,6240, 1576,5216, 1584,3168,
2330
    1592,7264, 1608,4704, 1616,2656, 1624,6752, 1640,5728, 1648,3680, 1656,7776,
2331
    1672,4448, 1680,2400, 1688,6496, 1704,5472, 1712,3424, 1720,7520, 1736,4960,
2332
    1744,2912, 1752,7008, 1760,1888, 1768,5984, 1776,3936, 1784,8032, 1800,4320,
2333
    1808,2272, 1816,6368, 1832,5344, 1840,3296, 1848,7392, 1864,4832, 1872,2784,
2334
    1880,6880, 1896,5856, 1904,3808, 1912,7904, 1928,4576, 1936,2528, 1944,6624,
2335
    1960,5600, 1968,3552, 1976,7648, 1992,5088, 2000,3040, 2008,7136, 2024,6112,
2336
    2032,4064, 2040,8160, 2056,4112, 2072,6160, 2088,5136, 2096,3088, 2104,7184,
2337
    2120,4624, 2128,2576, 2136,6672, 2152,5648, 2160,3600, 2168,7696, 2184,4368,
2338
    2192,2320, 2200,6416, 2216,5392, 2224,3344, 2232,7440, 2248,4880, 2256,2832,
2339
    2264,6928, 2280,5904, 2288,3856, 2296,7952, 2312,4240, 2328,6288, 2344,5264,
2340
    2352,3216, 2360,7312, 2376,4752, 2384,2704, 2392,6800, 2408,5776, 2416,3728,
2341
    2424,7824, 2440,4496, 2456,6544, 2472,5520, 2480,3472, 2488,7568, 2504,5008,
2342
    2512,2960, 2520,7056, 2536,6032, 2544,3984, 2552,8080, 2568,4176, 2584,6224,
2343
    2600,5200, 2608,3152, 2616,7248, 2632,4688, 2648,6736, 2664,5712, 2672,3664,
2344
    2680,7760, 2696,4432, 2712,6480, 2728,5456, 2736,3408, 2744,7504, 2760,4944,
2345
    2768,2896, 2776,6992, 2792,5968, 2800,3920, 2808,8016, 2824,4304, 2840,6352,
2346
    2856,5328, 2864,3280, 2872,7376, 2888,4816, 2904,6864, 2920,5840, 2928,3792,
2347
    2936,7888, 2952,4560, 2968,6608, 2984,5584, 2992,3536, 3000,7632, 3016,5072,
2348
 
2349
    3128,7216, 3144,4656, 3160,6704, 3176,5680, 3184,3632, 3192,7728, 3208,4400,
2350
    3224,6448, 3240,5424, 3248,3376, 3256,7472, 3272,4912, 3288,6960, 3304,5936,
2351
    3312,3888, 3320,7984, 3336,4272, 3352,6320, 3368,5296, 3384,7344, 3400,4784,
2352
    3416,6832, 3432,5808, 3440,3760, 3448,7856, 3464,4528, 3480,6576, 3496,5552,
2353
    3512,7600, 3528,5040, 3544,7088, 3560,6064, 3568,4016, 3576,8112, 3592,4208,
2354
    3608,6256, 3624,5232, 3640,7280, 3656,4720, 3672,6768, 3688,5744, 3704,7792,
2355
    3720,4464, 3736,6512, 3752,5488, 3768,7536, 3784,4976, 3800,7024, 3816,6000,
2356
    3824,3952, 3832,8048, 3848,4336, 3864,6384, 3880,5360, 3896,7408, 3912,4848,
2357
    3928,6896, 3944,5872, 3960,7920, 3976,4592, 3992,6640, 4008,5616, 4024,7664,
2358
    4040,5104, 4056,7152, 4072,6128, 4088,8176, 4120,6152, 4136,5128, 4152,7176,
2359
    4168,4616, 4184,6664, 4200,5640, 4216,7688, 4232,4360, 4248,6408, 4264,5384,
2360
    4280,7432, 4296,4872, 4312,6920, 4328,5896, 4344,7944, 4376,6280, 4392,5256,
2361
    4408,7304, 4424,4744, 4440,6792, 4456,5768, 4472,7816, 4504,6536, 4520,5512,
2362
    4536,7560, 4552,5000, 4568,7048, 4584,6024, 4600,8072, 4632,6216, 4648,5192,
2363
    4664,7240, 4696,6728, 4712,5704, 4728,7752, 4760,6472, 4776,5448, 4792,7496,
2364
    4808,4936, 4824,6984, 4840,5960, 4856,8008, 4888,6344, 4904,5320, 4920,7368,
2365
    4952,6856, 4968,5832, 4984,7880, 5016,6600, 5032,5576, 5048,7624, 5080,7112,
2366
    5096,6088, 5112,8136, 5144,6184, 5176,7208, 5208,6696, 5224,5672, 5240,7720,
2367
    5272,6440, 5288,5416, 5304,7464, 5336,6952, 5352,5928, 5368,7976, 5400,6312,
2368
    5432,7336, 5464,6824, 5480,5800, 5496,7848, 5528,6568, 5560,7592, 5592,7080,
2369
    5608,6056, 5624,8104, 5656,6248, 5688,7272, 5720,6760, 5752,7784, 5784,6504,
2370
    5816,7528, 5848,7016, 5864,5992, 5880,8040, 5912,6376, 5944,7400, 5976,6888,
2371
    6008,7912, 6040,6632, 6072,7656, 6104,7144, 6136,8168, 6200,7192, 6232,6680,
2372
    6264,7704, 6296,6424, 6328,7448, 6360,6936, 6392,7960, 6456,7320, 6488,6808,
2373
    6520,7832, 6584,7576, 6616,7064, 6648,8088, 6712,7256, 6776,7768, 6840,7512,
2374
    6872,7000, 6904,8024, 6968,7384, 7032,7896, 7096,7640, 7160,8152, 7288,7736,
2375
    7352,7480, 7416,7992, 7544,7864, 7672,8120, 7928,8056
2376
};
2377
2378
const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH] =
2379
{
2380
    //4x2, size 1984//radix 4, size 4032/**    
2381
* \par    
2382
* Example code for Floating-point RFFT Twiddle factors Generation:    
2383
* \par    
2384
* <pre>TW = exp(2*pi*i*[0:L/2-1]/L - pi/2*i).' </pre>    
2385
* \par    
2386
* Real and Imag values are in interleaved fashion    
2387
*//**  
2388
 * \par    
2389
 * Example code for the generation of the floating-point sine table:
2390
 * <pre>
2391
 * tableSize = 512;    
2392
 * for(n = 0; n < (tableSize + 1); n++)    
2393
 * {    
2394
 *      sinTable[n]=sin(2*pi*n/tableSize);    
2395
 * }</pre>    
2396
 * \par    
2397
 * where pi value is  3.14159265358979    
2398
 */
2399
2400
const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1] = {
2401
   0.00000000f, 0.01227154f, 0.02454123f, 0.03680722f, 0.04906767f, 0.06132074f,
2402
   0.07356456f, 0.08579731f, 0.09801714f, 0.11022221f, 0.12241068f, 0.13458071f,
2403
   0.14673047f, 0.15885814f, 0.17096189f, 0.18303989f, 0.19509032f, 0.20711138f,
2404
   0.21910124f, 0.23105811f, 0.24298018f, 0.25486566f, 0.26671276f, 0.27851969f,
2405
   0.29028468f, 0.30200595f, 0.31368174f, 0.32531029f, 0.33688985f, 0.34841868f,
2406
   0.35989504f, 0.37131719f, 0.38268343f, 0.39399204f, 0.40524131f, 0.41642956f,
2407
   0.42755509f, 0.43861624f, 0.44961133f, 0.46053871f, 0.47139674f, 0.48218377f,
2408
   0.49289819f, 0.50353838f, 0.51410274f, 0.52458968f, 0.53499762f, 0.54532499f,
2409
   0.55557023f, 0.56573181f, 0.57580819f, 0.58579786f, 0.59569930f, 0.60551104f,
2410
   0.61523159f, 0.62485949f, 0.63439328f, 0.64383154f, 0.65317284f, 0.66241578f,
2411
   0.67155895f, 0.68060100f, 0.68954054f, 0.69837625f, 0.70710678f, 0.71573083f,
2412
   0.72424708f, 0.73265427f, 0.74095113f, 0.74913639f, 0.75720885f, 0.76516727f,
2413
   0.77301045f, 0.78073723f, 0.78834643f, 0.79583690f, 0.80320753f, 0.81045720f,
2414
   0.81758481f, 0.82458930f, 0.83146961f, 0.83822471f, 0.84485357f, 0.85135519f,
2415
   0.85772861f, 0.86397286f, 0.87008699f, 0.87607009f, 0.88192126f, 0.88763962f,
2416
   0.89322430f, 0.89867447f, 0.90398929f, 0.90916798f, 0.91420976f, 0.91911385f,
2417
   0.92387953f, 0.92850608f, 0.93299280f, 0.93733901f, 0.94154407f, 0.94560733f,
2418
   0.94952818f, 0.95330604f, 0.95694034f, 0.96043052f, 0.96377607f, 0.96697647f,
2419
   0.97003125f, 0.97293995f, 0.97570213f, 0.97831737f, 0.98078528f, 0.98310549f,
2420
   0.98527764f, 0.98730142f, 0.98917651f, 0.99090264f, 0.99247953f, 0.99390697f,
2421
   0.99518473f, 0.99631261f, 0.99729046f, 0.99811811f, 0.99879546f, 0.99932238f,
2422
   0.99969882f, 0.99992470f, 1.00000000f, 0.99992470f, 0.99969882f, 0.99932238f,
2423
   0.99879546f, 0.99811811f, 0.99729046f, 0.99631261f, 0.99518473f, 0.99390697f,
2424
   0.99247953f, 0.99090264f, 0.98917651f, 0.98730142f, 0.98527764f, 0.98310549f,
2425
   0.98078528f, 0.97831737f, 0.97570213f, 0.97293995f, 0.97003125f, 0.96697647f,
2426
   0.96377607f, 0.96043052f, 0.95694034f, 0.95330604f, 0.94952818f, 0.94560733f,
2427
   0.94154407f, 0.93733901f, 0.93299280f, 0.92850608f, 0.92387953f, 0.91911385f,
2428
   0.91420976f, 0.90916798f, 0.90398929f, 0.89867447f, 0.89322430f, 0.88763962f,
2429
   0.88192126f, 0.87607009f, 0.87008699f, 0.86397286f, 0.85772861f, 0.85135519f,
2430
   0.84485357f, 0.83822471f, 0.83146961f, 0.82458930f, 0.81758481f, 0.81045720f,
2431
   0.80320753f, 0.79583690f, 0.78834643f, 0.78073723f, 0.77301045f, 0.76516727f,
2432
   0.75720885f, 0.74913639f, 0.74095113f, 0.73265427f, 0.72424708f, 0.71573083f,
2433
   0.70710678f, 0.69837625f, 0.68954054f, 0.68060100f, 0.67155895f, 0.66241578f,
2434
   0.65317284f, 0.64383154f, 0.63439328f, 0.62485949f, 0.61523159f, 0.60551104f,
2435
   0.59569930f, 0.58579786f, 0.57580819f, 0.56573181f, 0.55557023f, 0.54532499f,
2436
   0.53499762f, 0.52458968f, 0.51410274f, 0.50353838f, 0.49289819f, 0.48218377f,
2437
   0.47139674f, 0.46053871f, 0.44961133f, 0.43861624f, 0.42755509f, 0.41642956f,
2438
   0.40524131f, 0.39399204f, 0.38268343f, 0.37131719f, 0.35989504f, 0.34841868f,
2439
   0.33688985f, 0.32531029f, 0.31368174f, 0.30200595f, 0.29028468f, 0.27851969f,
2440
   0.26671276f, 0.25486566f, 0.24298018f, 0.23105811f, 0.21910124f, 0.20711138f,
2441
   0.19509032f, 0.18303989f, 0.17096189f, 0.15885814f, 0.14673047f, 0.13458071f,
2442
   0.12241068f, 0.11022221f, 0.09801714f, 0.08579731f, 0.07356456f, 0.06132074f,
2443
   0.04906767f, 0.03680722f, 0.02454123f, 0.01227154f, 0.00000000f, -0.01227154f,
2444
   -0.02454123f, -0.03680722f, -0.04906767f, -0.06132074f, -0.07356456f,
2445
   -0.08579731f, -0.09801714f, -0.11022221f, -0.12241068f, -0.13458071f,
2446
   -0.14673047f, -0.15885814f, -0.17096189f, -0.18303989f, -0.19509032f,
2447
   -0.20711138f, -0.21910124f, -0.23105811f, -0.24298018f, -0.25486566f,
2448
   -0.26671276f, -0.27851969f, -0.29028468f, -0.30200595f, -0.31368174f,
2449
   -0.32531029f, -0.33688985f, -0.34841868f, -0.35989504f, -0.37131719f,
2450
   -0.38268343f, -0.39399204f, -0.40524131f, -0.41642956f, -0.42755509f,
2451
   -0.43861624f, -0.44961133f, -0.46053871f, -0.47139674f, -0.48218377f,
2452
   -0.49289819f, -0.50353838f, -0.51410274f, -0.52458968f, -0.53499762f,
2453
   -0.54532499f, -0.55557023f, -0.56573181f, -0.57580819f, -0.58579786f,
2454
   -0.59569930f, -0.60551104f, -0.61523159f, -0.62485949f, -0.63439328f,
2455
   -0.64383154f, -0.65317284f, -0.66241578f, -0.67155895f, -0.68060100f,
2456
   -0.68954054f, -0.69837625f, -0.70710678f, -0.71573083f, -0.72424708f,
2457
   -0.73265427f, -0.74095113f, -0.74913639f, -0.75720885f, -0.76516727f,
2458
   -0.77301045f, -0.78073723f, -0.78834643f, -0.79583690f, -0.80320753f,
2459
   -0.81045720f, -0.81758481f, -0.82458930f, -0.83146961f, -0.83822471f,
2460
   -0.84485357f, -0.85135519f, -0.85772861f, -0.86397286f, -0.87008699f,
2461
   -0.87607009f, -0.88192126f, -0.88763962f, -0.89322430f, -0.89867447f,
2462
   -0.90398929f, -0.90916798f, -0.91420976f, -0.91911385f, -0.92387953f,
2463
   -0.92850608f, -0.93299280f, -0.93733901f, -0.94154407f, -0.94560733f,
2464
   -0.94952818f, -0.95330604f, -0.95694034f, -0.96043052f, -0.96377607f,
2465
   -0.96697647f, -0.97003125f, -0.97293995f, -0.97570213f, -0.97831737f,
2466
   -0.98078528f, -0.98310549f, -0.98527764f, -0.98730142f, -0.98917651f,
2467
   -0.99090264f, -0.99247953f, -0.99390697f, -0.99518473f, -0.99631261f,
2468
   -0.99729046f, -0.99811811f, -0.99879546f, -0.99932238f, -0.99969882f,
2469
   -0.99992470f, -1.00000000f, -0.99992470f, -0.99969882f, -0.99932238f,
2470
   -0.99879546f, -0.99811811f, -0.99729046f, -0.99631261f, -0.99518473f,
2471
   -0.99390697f, -0.99247953f, -0.99090264f, -0.98917651f, -0.98730142f,
2472
   -0.98527764f, -0.98310549f, -0.98078528f, -0.97831737f, -0.97570213f,
2473
   -0.97293995f, -0.97003125f, -0.96697647f, -0.96377607f, -0.96043052f,
2474
   -0.95694034f, -0.95330604f, -0.94952818f, -0.94560733f, -0.94154407f,
2475
   -0.93733901f, -0.93299280f, -0.92850608f, -0.92387953f, -0.91911385f,
2476
   -0.91420976f, -0.90916798f, -0.90398929f, -0.89867447f, -0.89322430f,
2477
   -0.88763962f, -0.88192126f, -0.87607009f, -0.87008699f, -0.86397286f,
2478
   -0.85772861f, -0.85135519f, -0.84485357f, -0.83822471f, -0.83146961f,
2479
   -0.82458930f, -0.81758481f, -0.81045720f, -0.80320753f, -0.79583690f,
2480
   -0.78834643f, -0.78073723f, -0.77301045f, -0.76516727f, -0.75720885f,
2481
   -0.74913639f, -0.74095113f, -0.73265427f, -0.72424708f, -0.71573083f,
2482
   -0.70710678f, -0.69837625f, -0.68954054f, -0.68060100f, -0.67155895f,
2483
   -0.66241578f, -0.65317284f, -0.64383154f, -0.63439328f, -0.62485949f,
2484
   -0.61523159f, -0.60551104f, -0.59569930f, -0.58579786f, -0.57580819f,
2485
   -0.56573181f, -0.55557023f, -0.54532499f, -0.53499762f, -0.52458968f,
2486
   -0.51410274f, -0.50353838f, -0.49289819f, -0.48218377f, -0.47139674f,
2487
   -0.46053871f, -0.44961133f, -0.43861624f, -0.42755509f, -0.41642956f,
2488
   -0.40524131f, -0.39399204f, -0.38268343f, -0.37131719f, -0.35989504f,
2489
   -0.34841868f, -0.33688985f, -0.32531029f, -0.31368174f, -0.30200595f,
2490
   -0.29028468f, -0.27851969f, -0.26671276f, -0.25486566f, -0.24298018f,
2491
   -0.23105811f, -0.21910124f, -0.20711138f, -0.19509032f, -0.18303989f,
2492
   -0.17096189f, -0.15885814f, -0.14673047f, -0.13458071f, -0.12241068f,
2493
   -0.11022221f, -0.09801714f, -0.08579731f, -0.07356456f, -0.06132074f,
2494
   -0.04906767f, -0.03680722f, -0.02454123f, -0.01227154f, -0.00000000f
2495
};
2496
2497
/**  
2498
 * \par    
2499
 * Table values are in Q31 (1.31 fixed-point format) and generation is done in
2500
 * three steps.  First,  generate sin values in floating point:    
2501
 * <pre>
2502
 * tableSize = 512;      
2503
 * for(n = 0; n < (tableSize + 1); n++)    
2504
 * {    
2505
 *      sinTable[n]= sin(2*pi*n/tableSize);    
2506
 * } </pre>    
2507
 * where pi value is  3.14159265358979    
2508
 * \par    
2509
 * Second, convert floating-point to Q31 (Fixed point):
2510
 *      (sinTable[i] * pow(2, 31))    
2511
 * \par    
2512
 * Finally, round to the nearest integer value:
2513
 *      sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);    
2514
 */
2515
const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1] = {
2516
   0x00000000, 0x01921D20, 0x03242ABF, 0x04B6195D, 0x0647D97C, 0x07D95B9E,
2517
   0x096A9049, 0x0AFB6805, 0x0C8BD35E, 0x0E1BC2E4, 0x0FAB272B, 0x1139F0CF,
2518
   0x12C8106F, 0x145576B1, 0x15E21445, 0x176DD9DE, 0x18F8B83C, 0x1A82A026,
2519
   0x1C0B826A, 0x1D934FE5, 0x1F19F97B, 0x209F701C, 0x2223A4C5, 0x23A6887F,
2520
   0x25280C5E, 0x26A82186, 0x2826B928, 0x29A3C485, 0x2B1F34EB, 0x2C98FBBA,
2521
   0x2E110A62, 0x2F875262, 0x30FBC54D, 0x326E54C7, 0x33DEF287, 0x354D9057,
2522
   0x36BA2014, 0x382493B0, 0x398CDD32, 0x3AF2EEB7, 0x3C56BA70, 0x3DB832A6,
2523
   0x3F1749B8, 0x4073F21D, 0x41CE1E65, 0x4325C135, 0x447ACD50, 0x45CD358F,
2524
   0x471CECE7, 0x4869E665, 0x49B41533, 0x4AFB6C98, 0x4C3FDFF4, 0x4D8162C4,
2525
   0x4EBFE8A5, 0x4FFB654D, 0x5133CC94, 0x5269126E, 0x539B2AF0, 0x54CA0A4B,
2526
   0x55F5A4D2, 0x571DEEFA, 0x5842DD54, 0x59646498, 0x5A82799A, 0x5B9D1154,
2527
   0x5CB420E0, 0x5DC79D7C, 0x5ED77C8A, 0x5FE3B38D, 0x60EC3830, 0x61F1003F,
2528
   0x62F201AC, 0x63EF3290, 0x64E88926, 0x65DDFBD3, 0x66CF8120, 0x67BD0FBD,
2529
   0x68A69E81, 0x698C246C, 0x6A6D98A4, 0x6B4AF279, 0x6C242960, 0x6CF934FC,
2530
   0x6DCA0D14, 0x6E96A99D, 0x6F5F02B2, 0x7023109A, 0x70E2CBC6, 0x719E2CD2,
2531
   0x72552C85, 0x7307C3D0, 0x73B5EBD1, 0x745F9DD1, 0x7504D345, 0x75A585CF,
2532
   0x7641AF3D, 0x76D94989, 0x776C4EDB, 0x77FAB989, 0x78848414, 0x7909A92D,
2533
   0x798A23B1, 0x7A05EEAD, 0x7A7D055B, 0x7AEF6323, 0x7B5D039E, 0x7BC5E290,
2534
   0x7C29FBEE, 0x7C894BDE, 0x7CE3CEB2, 0x7D3980EC, 0x7D8A5F40, 0x7DD6668F,
2535
   0x7E1D93EA, 0x7E5FE493, 0x7E9D55FC, 0x7ED5E5C6, 0x7F0991C4, 0x7F3857F6,
2536
   0x7F62368F, 0x7F872BF3, 0x7FA736B4, 0x7FC25596, 0x7FD8878E, 0x7FE9CBC0,
2537
   0x7FF62182, 0x7FFD885A, 0x7FFFFFFF, 0x7FFD885A, 0x7FF62182, 0x7FE9CBC0,
2538
   0x7FD8878E, 0x7FC25596, 0x7FA736B4, 0x7F872BF3, 0x7F62368F, 0x7F3857F6,
2539
   0x7F0991C4, 0x7ED5E5C6, 0x7E9D55FC, 0x7E5FE493, 0x7E1D93EA, 0x7DD6668F,
2540
   0x7D8A5F40, 0x7D3980EC, 0x7CE3CEB2, 0x7C894BDE, 0x7C29FBEE, 0x7BC5E290,
2541
   0x7B5D039E, 0x7AEF6323, 0x7A7D055B, 0x7A05EEAD, 0x798A23B1, 0x7909A92D,
2542
   0x78848414, 0x77FAB989, 0x776C4EDB, 0x76D94989, 0x7641AF3D, 0x75A585CF,
2543
   0x7504D345, 0x745F9DD1, 0x73B5EBD1, 0x7307C3D0, 0x72552C85, 0x719E2CD2,
2544
   0x70E2CBC6, 0x7023109A, 0x6F5F02B2, 0x6E96A99D, 0x6DCA0D14, 0x6CF934FC,
2545
   0x6C242960, 0x6B4AF279, 0x6A6D98A4, 0x698C246C, 0x68A69E81, 0x67BD0FBD,
2546
   0x66CF8120, 0x65DDFBD3, 0x64E88926, 0x63EF3290, 0x62F201AC, 0x61F1003F,
2547
   0x60EC3830, 0x5FE3B38D, 0x5ED77C8A, 0x5DC79D7C, 0x5CB420E0, 0x5B9D1154,
2548
   0x5A82799A, 0x59646498, 0x5842DD54, 0x571DEEFA, 0x55F5A4D2, 0x54CA0A4B,
2549
   0x539B2AF0, 0x5269126E, 0x5133CC94, 0x4FFB654D, 0x4EBFE8A5, 0x4D8162C4,
2550
   0x4C3FDFF4, 0x4AFB6C98, 0x49B41533, 0x4869E665, 0x471CECE7, 0x45CD358F,
2551
   0x447ACD50, 0x4325C135, 0x41CE1E65, 0x4073F21D, 0x3F1749B8, 0x3DB832A6,
2552
   0x3C56BA70, 0x3AF2EEB7, 0x398CDD32, 0x382493B0, 0x36BA2014, 0x354D9057,
2553
   0x33DEF287, 0x326E54C7, 0x30FBC54D, 0x2F875262, 0x2E110A62, 0x2C98FBBA,
2554
   0x2B1F34EB, 0x29A3C485, 0x2826B928, 0x26A82186, 0x25280C5E, 0x23A6887F,
2555
   0x2223A4C5, 0x209F701C, 0x1F19F97B, 0x1D934FE5, 0x1C0B826A, 0x1A82A026,
2556
   0x18F8B83C, 0x176DD9DE, 0x15E21445, 0x145576B1, 0x12C8106F, 0x1139F0CF,
2557
   0x0FAB272B, 0x0E1BC2E4, 0x0C8BD35E, 0x0AFB6805, 0x096A9049, 0x07D95B9E,
2558
   0x0647D97C, 0x04B6195D, 0x03242ABF, 0x01921D20, 0x00000000, 0xFE6DE2E0,
2559
   0xFCDBD541, 0xFB49E6A3, 0xF9B82684, 0xF826A462, 0xF6956FB7, 0xF50497FB,
2560
   0xF3742CA2, 0xF1E43D1C, 0xF054D8D5, 0xEEC60F31, 0xED37EF91, 0xEBAA894F,
2561
   0xEA1DEBBB, 0xE8922622, 0xE70747C4, 0xE57D5FDA, 0xE3F47D96, 0xE26CB01B,
2562
   0xE0E60685, 0xDF608FE4, 0xDDDC5B3B, 0xDC597781, 0xDAD7F3A2, 0xD957DE7A,
2563
   0xD7D946D8, 0xD65C3B7B, 0xD4E0CB15, 0xD3670446, 0xD1EEF59E, 0xD078AD9E,
2564
   0xCF043AB3, 0xCD91AB39, 0xCC210D79, 0xCAB26FA9, 0xC945DFEC, 0xC7DB6C50,
2565
   0xC67322CE, 0xC50D1149, 0xC3A94590, 0xC247CD5A, 0xC0E8B648, 0xBF8C0DE3,
2566
   0xBE31E19B, 0xBCDA3ECB, 0xBB8532B0, 0xBA32CA71, 0xB8E31319, 0xB796199B,
2567
   0xB64BEACD, 0xB5049368, 0xB3C0200C, 0xB27E9D3C, 0xB140175B, 0xB0049AB3,
2568
   0xAECC336C, 0xAD96ED92, 0xAC64D510, 0xAB35F5B5, 0xAA0A5B2E, 0xA8E21106,
2569
   0xA7BD22AC, 0xA69B9B68, 0xA57D8666, 0xA462EEAC, 0xA34BDF20, 0xA2386284,
2570
   0xA1288376, 0xA01C4C73, 0x9F13C7D0, 0x9E0EFFC1, 0x9D0DFE54, 0x9C10CD70,
2571
   0x9B1776DA, 0x9A22042D, 0x99307EE0, 0x9842F043, 0x9759617F, 0x9673DB94,
2572
   0x9592675C, 0x94B50D87, 0x93DBD6A0, 0x9306CB04, 0x9235F2EC, 0x91695663,
2573
   0x90A0FD4E, 0x8FDCEF66, 0x8F1D343A, 0x8E61D32E, 0x8DAAD37B, 0x8CF83C30,
2574
   0x8C4A142F, 0x8BA0622F, 0x8AFB2CBB, 0x8A5A7A31, 0x89BE50C3, 0x8926B677,
2575
   0x8893B125, 0x88054677, 0x877B7BEC, 0x86F656D3, 0x8675DC4F, 0x85FA1153,
2576
   0x8582FAA5, 0x85109CDD, 0x84A2FC62, 0x843A1D70, 0x83D60412, 0x8376B422,
2577
   0x831C314E, 0x82C67F14, 0x8275A0C0, 0x82299971, 0x81E26C16, 0x81A01B6D,
2578
   0x8162AA04, 0x812A1A3A, 0x80F66E3C, 0x80C7A80A, 0x809DC971, 0x8078D40D,
2579
   0x8058C94C, 0x803DAA6A, 0x80277872, 0x80163440, 0x8009DE7E, 0x800277A6,
2580
   0x80000000, 0x800277A6, 0x8009DE7E, 0x80163440, 0x80277872, 0x803DAA6A,
2581
   0x8058C94C, 0x8078D40D, 0x809DC971, 0x80C7A80A, 0x80F66E3C, 0x812A1A3A,
2582
   0x8162AA04, 0x81A01B6D, 0x81E26C16, 0x82299971, 0x8275A0C0, 0x82C67F14,
2583
   0x831C314E, 0x8376B422, 0x83D60412, 0x843A1D70, 0x84A2FC62, 0x85109CDD,
2584
   0x8582FAA5, 0x85FA1153, 0x8675DC4F, 0x86F656D3, 0x877B7BEC, 0x88054677,
2585
   0x8893B125, 0x8926B677, 0x89BE50C3, 0x8A5A7A31, 0x8AFB2CBB, 0x8BA0622F,
2586
   0x8C4A142F, 0x8CF83C30, 0x8DAAD37B, 0x8E61D32E, 0x8F1D343A, 0x8FDCEF66,
2587
   0x90A0FD4E, 0x91695663, 0x9235F2EC, 0x9306CB04, 0x93DBD6A0, 0x94B50D87,
2588
   0x9592675C, 0x9673DB94, 0x9759617F, 0x9842F043, 0x99307EE0, 0x9A22042D,
2589
   0x9B1776DA, 0x9C10CD70, 0x9D0DFE54, 0x9E0EFFC1, 0x9F13C7D0, 0xA01C4C73,
2590
   0xA1288376, 0xA2386284, 0xA34BDF20, 0xA462EEAC, 0xA57D8666, 0xA69B9B68,
2591
   0xA7BD22AC, 0xA8E21106, 0xAA0A5B2E, 0xAB35F5B5, 0xAC64D510, 0xAD96ED92,
2592
   0xAECC336C, 0xB0049AB3, 0xB140175B, 0xB27E9D3C, 0xB3C0200C, 0xB5049368,
2593
   0xB64BEACD, 0xB796199B, 0xB8E31319, 0xBA32CA71, 0xBB8532B0, 0xBCDA3ECB,
2594
   0xBE31E19B, 0xBF8C0DE3, 0xC0E8B648, 0xC247CD5A, 0xC3A94590, 0xC50D1149,
2595
   0xC67322CE, 0xC7DB6C50, 0xC945DFEC, 0xCAB26FA9, 0xCC210D79, 0xCD91AB39,
2596
   0xCF043AB3, 0xD078AD9E, 0xD1EEF59E, 0xD3670446, 0xD4E0CB15, 0xD65C3B7B,
2597
   0xD7D946D8, 0xD957DE7A, 0xDAD7F3A2, 0xDC597781, 0xDDDC5B3B, 0xDF608FE4,
2598
   0xE0E60685, 0xE26CB01B, 0xE3F47D96, 0xE57D5FDA, 0xE70747C4, 0xE8922622,
2599
   0xEA1DEBBB, 0xEBAA894F, 0xED37EF91, 0xEEC60F31, 0xF054D8D5, 0xF1E43D1C,
2600
   0xF3742CA2, 0xF50497FB, 0xF6956FB7, 0xF826A462, 0xF9B82684, 0xFB49E6A3,
2601
   0xFCDBD541, 0xFE6DE2E0, 0x00000000
2602
};
2603
2604
/**  
2605
 * \par    
2606
 * Table values are in Q15 (1.15 fixed-point format) and generation is done in
2607
 * three steps.  First,  generate sin values in floating point:    
2608
 * <pre>
2609
 * tableSize = 512;      
2610
 * for(n = 0; n < (tableSize + 1); n++)    
2611
 * {    
2612
 *      sinTable[n]= sin(2*pi*n/tableSize);    
2613
 * } </pre>    
2614
 * where pi value is  3.14159265358979    
2615
 * \par    
2616
 * Second, convert floating-point to Q15 (Fixed point):
2617
 *      (sinTable[i] * pow(2, 15))    
2618
 * \par    
2619
 * Finally, round to the nearest integer value:
2620
 *      sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);    
2621
 */
2622
const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1] = {
2623
   0x0000, 0x0192, 0x0324, 0x04B6, 0x0648, 0x07D9, 0x096B, 0x0AFB, 0x0C8C, 0x0E1C, 0x0FAB, 0x113A, 0x12C8,
2624
   0x1455, 0x15E2, 0x176E, 0x18F9, 0x1A83, 0x1C0C, 0x1D93, 0x1F1A, 0x209F, 0x2224, 0x23A7, 0x2528, 0x26A8,
2625
   0x2827, 0x29A4, 0x2B1F, 0x2C99, 0x2E11, 0x2F87, 0x30FC, 0x326E, 0x33DF, 0x354E, 0x36BA, 0x3825, 0x398D,
2626
   0x3AF3, 0x3C57, 0x3DB8, 0x3F17, 0x4074, 0x41CE, 0x4326, 0x447B, 0x45CD, 0x471D, 0x486A, 0x49B4, 0x4AFB,
2627
   0x4C40, 0x4D81, 0x4EC0, 0x4FFB, 0x5134, 0x5269, 0x539B, 0x54CA, 0x55F6, 0x571E, 0x5843, 0x5964, 0x5A82,
2628
   0x5B9D, 0x5CB4, 0x5DC8, 0x5ED7, 0x5FE4, 0x60EC, 0x61F1, 0x62F2, 0x63EF, 0x64E9, 0x65DE, 0x66D0, 0x67BD,
2629
   0x68A7, 0x698C, 0x6A6E, 0x6B4B, 0x6C24, 0x6CF9, 0x6DCA, 0x6E97, 0x6F5F, 0x7023, 0x70E3, 0x719E, 0x7255,
2630
   0x7308, 0x73B6, 0x7460, 0x7505, 0x75A6, 0x7642, 0x76D9, 0x776C, 0x77FB, 0x7885, 0x790A, 0x798A, 0x7A06,
2631
   0x7A7D, 0x7AEF, 0x7B5D, 0x7BC6, 0x7C2A, 0x7C89, 0x7CE4, 0x7D3A, 0x7D8A, 0x7DD6, 0x7E1E, 0x7E60, 0x7E9D,
2632
   0x7ED6, 0x7F0A, 0x7F38, 0x7F62, 0x7F87, 0x7FA7, 0x7FC2, 0x7FD9, 0x7FEA, 0x7FF6, 0x7FFE, 0x7FFF, 0x7FFE,
2633
   0x7FF6, 0x7FEA, 0x7FD9, 0x7FC2, 0x7FA7, 0x7F87, 0x7F62, 0x7F38, 0x7F0A, 0x7ED6, 0x7E9D, 0x7E60, 0x7E1E,
2634
   0x7DD6, 0x7D8A, 0x7D3A, 0x7CE4, 0x7C89, 0x7C2A, 0x7BC6, 0x7B5D, 0x7AEF, 0x7A7D, 0x7A06, 0x798A, 0x790A,
2635
   0x7885, 0x77FB, 0x776C, 0x76D9, 0x7642, 0x75A6, 0x7505, 0x7460, 0x73B6, 0x7308, 0x7255, 0x719E, 0x70E3,
2636
   0x7023, 0x6F5F, 0x6E97, 0x6DCA, 0x6CF9, 0x6C24, 0x6B4B, 0x6A6E, 0x698C, 0x68A7, 0x67BD, 0x66D0, 0x65DE,
2637
   0x64E9, 0x63EF, 0x62F2, 0x61F1, 0x60EC, 0x5FE4, 0x5ED7, 0x5DC8, 0x5CB4, 0x5B9D, 0x5A82, 0x5964, 0x5843,
2638
   0x571E, 0x55F6, 0x54CA, 0x539B, 0x5269, 0x5134, 0x4FFB, 0x4EC0, 0x4D81, 0x4C40, 0x4AFB, 0x49B4, 0x486A,
2639
   0x471D, 0x45CD, 0x447B, 0x4326, 0x41CE, 0x4074, 0x3F17, 0x3DB8, 0x3C57, 0x3AF3, 0x398D, 0x3825, 0x36BA,
2640
   0x354E, 0x33DF, 0x326E, 0x30FC, 0x2F87, 0x2E11, 0x2C99, 0x2B1F, 0x29A4, 0x2827, 0x26A8, 0x2528, 0x23A7,
2641
   0x2224, 0x209F, 0x1F1A, 0x1D93, 0x1C0C, 0x1A83, 0x18F9, 0x176E, 0x15E2, 0x1455, 0x12C8, 0x113A, 0x0FAB,
2642
   0x0E1C, 0x0C8C, 0x0AFB, 0x096B, 0x07D9, 0x0648, 0x04B6, 0x0324, 0x0192, 0x0000, 0xFE6E, 0xFCDC, 0xFB4A,
2643
   0xF9B8, 0xF827, 0xF695, 0xF505, 0xF374, 0xF1E4, 0xF055, 0xEEC6, 0xED38, 0xEBAB, 0xEA1E, 0xE892, 0xE707,
2644
   0xE57D, 0xE3F4, 0xE26D, 0xE0E6, 0xDF61, 0xDDDC, 0xDC59, 0xDAD8, 0xD958, 0xD7D9, 0xD65C, 0xD4E1, 0xD367,
2645
   0xD1EF, 0xD079, 0xCF04, 0xCD92, 0xCC21, 0xCAB2, 0xC946, 0xC7DB, 0xC673, 0xC50D, 0xC3A9, 0xC248, 0xC0E9,
2646
   0xBF8C, 0xBE32, 0xBCDA, 0xBB85, 0xBA33, 0xB8E3, 0xB796, 0xB64C, 0xB505, 0xB3C0, 0xB27F, 0xB140, 0xB005,
2647
   0xAECC, 0xAD97, 0xAC65, 0xAB36, 0xAA0A, 0xA8E2, 0xA7BD, 0xA69C, 0xA57E, 0xA463, 0xA34C, 0xA238, 0xA129,
2648
   0xA01C, 0x9F14, 0x9E0F, 0x9D0E, 0x9C11, 0x9B17, 0x9A22, 0x9930, 0x9843, 0x9759, 0x9674, 0x9592, 0x94B5,
2649
   0x93DC, 0x9307, 0x9236, 0x9169, 0x90A1, 0x8FDD, 0x8F1D, 0x8E62, 0x8DAB, 0x8CF8, 0x8C4A, 0x8BA0, 0x8AFB,
2650
   0x8A5A, 0x89BE, 0x8927, 0x8894, 0x8805, 0x877B, 0x86F6, 0x8676, 0x85FA, 0x8583, 0x8511, 0x84A3, 0x843A,
2651
   0x83D6, 0x8377, 0x831C, 0x82C6, 0x8276, 0x822A, 0x81E2, 0x81A0, 0x8163, 0x812A, 0x80F6, 0x80C8, 0x809E,
2652
   0x8079, 0x8059, 0x803E, 0x8027, 0x8016, 0x800A, 0x8002, 0x8000, 0x8002, 0x800A, 0x8016, 0x8027, 0x803E,
2653
   0x8059, 0x8079, 0x809E, 0x80C8, 0x80F6, 0x812A, 0x8163, 0x81A0, 0x81E2, 0x822A, 0x8276, 0x82C6, 0x831C,
2654
   0x8377, 0x83D6, 0x843A, 0x84A3, 0x8511, 0x8583, 0x85FA, 0x8676, 0x86F6, 0x877B, 0x8805, 0x8894, 0x8927,
2655
   0x89BE, 0x8A5A, 0x8AFB, 0x8BA0, 0x8C4A, 0x8CF8, 0x8DAB, 0x8E62, 0x8F1D, 0x8FDD, 0x90A1, 0x9169, 0x9236,
2656
   0x9307, 0x93DC, 0x94B5, 0x9592, 0x9674, 0x9759, 0x9843, 0x9930, 0x9A22, 0x9B17, 0x9C11, 0x9D0E, 0x9E0F,
2657
   0x9F14, 0xA01C, 0xA129, 0xA238, 0xA34C, 0xA463, 0xA57E, 0xA69C, 0xA7BD, 0xA8E2, 0xAA0A, 0xAB36, 0xAC65,
2658
   0xAD97, 0xAECC, 0xB005, 0xB140, 0xB27F, 0xB3C0, 0xB505, 0xB64C, 0xB796, 0xB8E3, 0xBA33, 0xBB85, 0xBCDA,
2659
   0xBE32, 0xBF8C, 0xC0E9, 0xC248, 0xC3A9, 0xC50D, 0xC673, 0xC7DB, 0xC946, 0xCAB2, 0xCC21, 0xCD92, 0xCF04,
2660
   0xD079, 0xD1EF, 0xD367, 0xD4E1, 0xD65C, 0xD7D9, 0xD958, 0xDAD8, 0xDC59, 0xDDDC, 0xDF61, 0xE0E6, 0xE26D,
2661
   0xE3F4, 0xE57D, 0xE707, 0xE892, 0xEA1E, 0xEBAB, 0xED38, 0xEEC6, 0xF055, 0xF1E4, 0xF374, 0xF505, 0xF695,
2662
   0xF827, 0xF9B8, 0xFB4A, 0xFCDC, 0xFE6E, 0x0000
2663
};
2664
 
2665