Subversion Repositories DashDisplay

Rev

Rev 28 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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.     0x00000000, 0x7FFFFFFF,
  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.     3032,7120, 3048,6096, 3056,4048, 3064,8144, 3080,4144, 3096,6192, 3112,5168,
  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.