ref: d81e3555e2df1b812f83e267bbcf0644edf4174f
parent: e6651e57c8f32b278a94e36b75ab94ffb193a293
author: menno <menno>
date: Thu Sep 26 15:01:45 EDT 2002
Big cleanup of FFT (completely using complex_t type now) Changed bitstream reading functions Reordered huffman decoding a bit
--- a/libfaad/bits.c
+++ b/libfaad/bits.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: bits.c,v 1.8 2002/08/10 19:01:18 menno Exp $
+** $Id: bits.c,v 1.9 2002/09/26 19:01:45 menno Exp $
**/
#include "common.h"
@@ -42,18 +42,18 @@
#endif
ld->bufb = tmp;
- ld->pos = 0;
+ ld->bits_left = 32;
ld->tail = ((uint32_t*)buffer + 2);
}
uint32_t faad_get_processed_bits(bitfile *ld)
{
- return 8 * (4*(ld->tail - ld->start) - 4) - (32 - ld->pos);
+ return 8 * (4*(ld->tail - ld->start) - 4) - (ld->bits_left);
}
uint8_t faad_byte_align(bitfile *ld)
{
- uint8_t remainder = (uint8_t)(ld->pos % 8);
+ uint8_t remainder = (uint8_t)((32 - ld->bits_left) % 8);
if (remainder)
{
@@ -63,24 +63,24 @@
return 0;
}
-uint8_t *faad_getbitbuffer(bitfile *ld, uint16_t bits
+uint8_t *faad_getbitbuffer(bitfile *ld, uint32_t bits
DEBUGDEC)
{
uint16_t i;
uint8_t temp;
- uint16_t bytes = bits / 8;
- uint8_t remainder = bits % 8;
+ uint16_t bytes = (uint16_t)bits / 8;
+ uint8_t remainder = (uint8_t)bits % 8;
uint8_t *buffer = (uint8_t*)malloc((bytes+1)*sizeof(uint8_t));
for (i = 0; i < bytes; i++)
{
- buffer[i] = faad_getbits(ld, 8 DEBUGVAR(print,var,dbg));
+ buffer[i] = (uint8_t)faad_getbits(ld, 8 DEBUGVAR(print,var,dbg));
}
if (remainder)
{
- temp = faad_getbits(ld, remainder DEBUGVAR(print,var,dbg)) << (8-remainder);
+ temp = (uint8_t)faad_getbits(ld, remainder DEBUGVAR(print,var,dbg)) << (8-remainder);
buffer[bytes] = temp;
}
--- a/libfaad/bits.h
+++ b/libfaad/bits.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: bits.h,v 1.7 2002/08/07 08:14:31 menno Exp $
+** $Id: bits.h,v 1.8 2002/09/26 19:01:45 menno Exp $
**/
#ifndef __BITS_H__
@@ -37,64 +37,69 @@
typedef struct _bitfile
{
/* bit input */
- uint32_t bufa;
- uint32_t bufb;
- uint32_t pos;
- uint32_t *tail;
- uint32_t *start;
+ uint32_t bufa;
+ uint32_t bufb;
+ uint32_t bits_left;
+ uint32_t *tail;
+ uint32_t *start;
} bitfile;
-#if defined(_WIN32)
+#if defined (_WIN32)
#define BSWAP(a) __asm mov eax,a __asm bswap eax __asm mov a, eax
#elif defined(LINUX) || defined(DJGPP)
#define BSWAP(a) __asm__ ( "bswapl %0\n" : "=r" (a) : "0" (a) )
#else
#define BSWAP(a) \
- ((a) = ( ((a)&0xff)<<24) | (((a)&0xff00)<<8) | (((a)>>8)&0xff00) | (((a)>>24)&0xff))
+ ((a) = ( ((a)&0xff)<<24) | (((a)&0xff00)<<8) | (((a)>>8)&0xff00) | (((a)>>24)&0xff))
#endif
+static uint32_t bitmask[] = {
+ 0x0, 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, 0x1FF,
+ 0x3FF, 0x7FF, 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF,
+ 0x1FFFF, 0x3FFFF, 0x7FFFF, 0xFFFFF, 0x1FFFFF, 0x3FFFFF,
+ 0x7FFFFF, 0xFFFFFF, 0x1FFFFFF, 0x3FFFFFF, 0x7FFFFFF,
+ 0xFFFFFFF, 0x1FFFFFFF, 0x3FFFFFFF, 0x7FFFFFFF
+};
void faad_initbits(bitfile *ld, void *buffer);
uint8_t faad_byte_align(bitfile *ld);
uint32_t faad_get_processed_bits(bitfile *ld);
-uint8_t *faad_getbitbuffer(bitfile *ld, uint16_t bits
+uint8_t *faad_getbitbuffer(bitfile *ld, uint32_t bits
DEBUGDEC);
-
-static INLINE uint32_t faad_showbits(bitfile *ld, uint8_t bits)
+static INLINE uint32_t faad_showbits(bitfile *ld, uint32_t bits)
{
- int32_t nbit = (bits + ld->pos) - 32;
- if (nbit > 0)
+ if (bits <= ld->bits_left)
{
- return ((ld->bufa & (0xffffffff >> ld->pos)) << nbit) |
- (ld->bufb >> (32 - nbit));
+ return (ld->bufa >> (ld->bits_left - bits)) & bitmask[bits];
} else {
- return (ld->bufa & (0xffffffff >> ld->pos)) >> (32 - ld->pos - bits);
+ bits -= ld->bits_left;
+ return ((ld->bufa & bitmask[ld->bits_left]) << bits) | (ld->bufb >> (32 - bits));
}
}
-static INLINE void faad_flushbits(bitfile *ld, uint8_t bits)
+static INLINE void faad_flushbits(bitfile *ld, uint32_t bits)
{
- ld->pos += bits;
+ if (bits < ld->bits_left)
+ {
+ ld->bits_left -= bits;
+ } else {
+ uint32_t tmp;
- if (ld->pos >= 32)
- {
- uint32_t tmp;
-
- ld->bufa = ld->bufb;
- tmp = *(uint32_t*)ld->tail;
+ ld->bufa = ld->bufb;
+ tmp = *(uint32_t*)ld->tail;
#ifndef ARCH_IS_BIG_ENDIAN
- BSWAP(tmp);
+ BSWAP(tmp);
#endif
- ld->bufb = tmp;
- ld->tail++;
- ld->pos -= 32;
- }
+ ld->bufb = tmp;
+ ld->tail++;
+ ld->bits_left += (32 - bits);
+ }
}
/* return next n bits (right adjusted) */
-static INLINE uint32_t faad_getbits(bitfile *ld, uint8_t n DEBUGDEC)
+static INLINE uint32_t faad_getbits(bitfile *ld, uint32_t n DEBUGDEC)
{
uint32_t ret;
@@ -101,8 +106,8 @@
if (n == 0)
return 0;
- ret = faad_showbits(ld, n);
- faad_flushbits(ld, n);
+ ret = faad_showbits(ld, n);
+ faad_flushbits(ld, n);
#ifdef ANALYSIS
if (print)
@@ -109,7 +114,7 @@
fprintf(stdout, "%4d %2d bits, val: %4d, variable: %d %s\n", dbg_count++, n, ret, var, dbg);
#endif
- return ret;
+ return ret;
}
static INLINE uint8_t faad_get1bit(bitfile *ld DEBUGDEC)
--- a/libfaad/cfft.c
+++ b/libfaad/cfft.c
@@ -16,19 +16,22 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: cfft.c,v 1.7 2002/09/13 13:08:45 menno Exp $
+** $Id: cfft.c,v 1.8 2002/09/26 19:01:45 menno Exp $
**/
/*
* Algorithmically based on Fortran-77 FFTPACK
* by Paul N. Swarztrauber(Version 4, 1985).
+ *
+ * Does even sized fft only
*/
/* isign is +1 for backward and -1 for forward transforms */
-
#include "common.h"
+
#include <stdlib.h>
+#include <assert.h>
#include "cfft.h"
#include "cfft_tab.h"
@@ -35,39 +38,46 @@
/*----------------------------------------------------------------------
- passf2, passf3, passf4, passf5, passf. Complex FFT passes fwd and bwd.
+ passf2, passf3, passf4, passf5. Complex FFT passes fwd and bwd.
----------------------------------------------------------------------*/
-static void passf2(uint16_t ido, uint16_t l1, real_t *cc, real_t *ch,
- real_t *wa1, int8_t isign)
+static void passf2(uint16_t ido, uint16_t l1, complex_t *cc, complex_t *ch,
+ complex_t *wa, int8_t isign)
{
uint16_t i, k, ah, ac;
- real_t ti2, tr2;
- if (ido <= 2)
+ if (ido == 1)
{
for (k = 0; k < l1; k++)
{
- ah = k*ido;
- ac = 2*k*ido;
- ch[ah] = cc[ac] + cc[ac+ido];
- ch[ah+ido*l1] = cc[ac] - cc[ac+ido];
- ch[ah+1] = cc[ac+1] + cc[ac+ido+1];
- ch[ah+ido*l1+1] = cc[ac+1] - cc[ac+ido+1];
+ ah = 2*k;
+ ac = 4*k;
+
+ RE(ch[ah]) = RE(cc[ac]) + RE(cc[ac+1]);
+ IM(ch[ah]) = IM(cc[ac]) + IM(cc[ac+1]);
+ RE(ch[ah+l1]) = RE(cc[ac]) - RE(cc[ac+1]);
+ IM(ch[ah+l1]) = IM(cc[ac]) - IM(cc[ac+1]);
}
} else {
for (k = 0; k < l1; k++)
{
- for (i = 0; i < ido-1; i += 2)
+ ah = k*ido;
+ ac = 2*k*ido;
+
+ for (i = 0; i < ido; i++)
{
- ah = i + k*ido;
- ac = i + 2*k*ido;
- ch[ah] = cc[ac] + cc[ac+ido];
- tr2 = cc[ac] - cc[ac+ido];
- ch[ah+1] = cc[ac+1] + cc[ac+1+ido];
- ti2 = cc[ac+1] - cc[ac+1+ido];
- ch[ah+l1*ido+1] = MUL_R_C(ti2,wa1[i]) + MUL_R_C(tr2,wa1[i+1])*isign;
- ch[ah+l1*ido] = MUL_R_C(tr2,wa1[i]) - MUL_R_C(ti2,wa1[i+1])*isign;
+ complex_t t2;
+
+ RE(ch[ah]) = RE(cc[ac]) + RE(cc[ac+ido]);
+ IM(ch[ah]) = IM(cc[ac]) + IM(cc[ac+ido]);
+
+ RE(t2) = RE(cc[ac]) - RE(cc[ac+ido]);
+ IM(t2) = IM(cc[ac]) - IM(cc[ac+ido]);
+
+ RE(ch[ah+l1*ido]) = MUL_R_C(RE(t2),RE(wa[i])) - MUL_R_C(IM(t2),IM(wa[i]))*isign;
+ IM(ch[ah+l1*ido]) = MUL_R_C(IM(t2),RE(wa[i])) + MUL_R_C(RE(t2),IM(wa[i]))*isign;
+ ah++;
+ ac++;
}
}
}
@@ -74,58 +84,65 @@
}
-static void passf3(uint16_t ido, uint16_t l1, real_t *cc, real_t *ch,
- real_t *wa1, real_t *wa2, int8_t isign)
+static void passf3(uint16_t ido, uint16_t l1, complex_t *cc, complex_t *ch,
+ complex_t *wa1, complex_t *wa2, int8_t isign)
{
static real_t taur = COEF_CONST(-0.5);
static real_t taui = COEF_CONST(0.866025403784439);
uint16_t i, k, ac, ah;
- real_t ci2, ci3, di2, di3, cr2, cr3, dr2, dr3, ti2, tr2;
+ complex_t c2, c3, d2, d3, t2;
- if (ido == 2)
+ if (ido == 1)
{
- for (k = 1; k <= l1; k++)
+ for (k = 0; k < l1; k++)
{
- ac = (3*k-2) * ido;
- tr2 = cc[ac] + cc[ac+ido];
- cr2 = cc[ac-ido] + MUL_R_C(tr2,taur);
- ah = (k-1) * ido;
- ch[ah] = cc[ac-ido] + tr2;
+ ac = 3*k+1;
+ ah = k;
- ti2 = cc[ac+1] + cc[ac+ido+1];
- ci2 = cc[ac-ido+1] + MUL_R_C(ti2,taur);
- ch[ah+1] = cc[ac-ido+1] + ti2;
+ RE(t2) = RE(cc[ac]) + RE(cc[ac+1]);
+ IM(t2) = IM(cc[ac]) + IM(cc[ac+1]);
+ RE(c2) = RE(cc[ac-1]) + MUL_R_C(RE(t2),taur);
+ IM(c2) = IM(cc[ac-1]) + MUL_R_C(IM(t2),taur);
- cr3 = MUL_R_C((cc[ac] - cc[ac+ido]), taui)*isign;
- ci3 = MUL_R_C((cc[ac+1] - cc[ac+ido+1]), taui)*isign;
- ch[ah+l1*ido] = cr2 - ci3;
- ch[ah+2*l1*ido] = cr2 + ci3;
- ch[ah+l1*ido+1] = ci2 + cr3;
- ch[ah+2*l1*ido+1] = ci2 - cr3;
+ RE(ch[ah]) = RE(cc[ac-1]) + RE(t2);
+ IM(ch[ah]) = IM(cc[ac-1]) + IM(t2);
+
+ RE(c3) = MUL_R_C((RE(cc[ac]) - RE(cc[ac+1])), taui)*isign;
+ IM(c3) = MUL_R_C((IM(cc[ac]) - IM(cc[ac+1])), taui)*isign;
+
+ RE(ch[ah+l1]) = RE(c2) - IM(c3);
+ IM(ch[ah+l1]) = IM(c2) + RE(c3);
+ RE(ch[ah+2*l1]) = RE(c2) + IM(c3);
+ IM(ch[ah+2*l1]) = IM(c2) - RE(c3);
}
} else {
- for (k = 1; k <= l1; k++)
+ for (k = 0; k < l1; k++)
{
- for (i = 0; i < ido-1; i += 2)
+ for (i = 0; i < ido; i++)
{
- ac = i + (3*k-2) * ido;
- tr2 = cc[ac] + cc[ac+ido];
- cr2 = cc[ac-ido] + MUL_R_C(tr2,taur);
- ah = i + (k-1) * ido;
- ch[ah] = cc[ac-ido] + tr2;
- ti2 = cc[ac+1] + cc[ac+ido+1];
- ci2 = cc[ac-ido+1] + MUL_R_C(ti2,taur);
- ch[ah+1] = cc[ac-ido+1] + ti2;
- cr3 = MUL_R_C((cc[ac] - cc[ac+ido]), taui)*isign;
- ci3 = MUL_R_C((cc[ac+1] - cc[ac+ido+1]), taui)*isign;
- dr2 = cr2 - ci3;
- dr3 = cr2 + ci3;
- di2 = ci2 + cr3;
- di3 = ci2 - cr3;
- ch[ah+l1*ido+1] = MUL_R_C(di2,wa1[i]) + MUL_R_C(dr2,wa1[i+1])*isign;
- ch[ah+l1*ido] = MUL_R_C(dr2,wa1[i]) - MUL_R_C(di2,wa1[i+1])*isign;
- ch[ah+2*l1*ido+1] = MUL_R_C(di3,wa2[i]) + MUL_R_C(dr3,wa2[i+1])*isign;
- ch[ah+2*l1*ido] = MUL_R_C(dr3,wa2[i]) - MUL_R_C(di3,wa2[i+1])*isign;
+ ac = i + (3*k+1)*ido;
+ ah = i + k * ido;
+
+ RE(t2) = RE(cc[ac]) + RE(cc[ac+ido]);
+ RE(c2) = RE(cc[ac-ido]) + MUL_R_C(RE(t2),taur);
+ IM(t2) = IM(cc[ac]) + IM(cc[ac+ido]);
+ IM(c2) = IM(cc[ac-ido]) + MUL_R_C(IM(t2),taur);
+
+ RE(ch[ah]) = RE(cc[ac-ido]) + RE(t2);
+ IM(ch[ah]) = IM(cc[ac-ido]) + IM(t2);
+
+ RE(c3) = MUL_R_C((RE(cc[ac]) - RE(cc[ac+ido])), taui)*isign;
+ IM(c3) = MUL_R_C((IM(cc[ac]) - IM(cc[ac+ido])), taui)*isign;
+
+ RE(d2) = RE(c2) - IM(c3);
+ IM(d3) = IM(c2) - RE(c3);
+ RE(d3) = RE(c2) + IM(c3);
+ IM(d2) = IM(c2) + RE(c3);
+
+ RE(ch[ah+l1*ido]) = MUL_R_C(RE(d2),RE(wa1[i])) - MUL_R_C(IM(d2),IM(wa1[i]))*isign;
+ IM(ch[ah+l1*ido]) = MUL_R_C(IM(d2),RE(wa1[i])) + MUL_R_C(RE(d2),IM(wa1[i]))*isign;
+ RE(ch[ah+l1*2*ido]) = MUL_R_C(RE(d3),RE(wa2[i])) - MUL_R_C(IM(d3),IM(wa2[i]))*isign;
+ IM(ch[ah+l1*2*ido]) = MUL_R_C(IM(d3),RE(wa2[i])) + MUL_R_C(RE(d3),IM(wa2[i]))*isign;
}
}
}
@@ -132,65 +149,70 @@
}
-static void passf4(uint16_t ido, uint16_t l1, real_t *cc, real_t *ch,
- real_t *wa1, real_t *wa2, real_t *wa3, int8_t isign)
+static void passf4(uint16_t ido, uint16_t l1, complex_t *cc, complex_t *ch,
+ complex_t *wa1, complex_t *wa2, complex_t *wa3, int8_t isign)
{
uint16_t i, k, ac, ah;
- real_t ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2,
- tr3, tr4;
+ complex_t c2, c3, c4, t1, t2, t3, t4;
- if (ido == 2)
+ if (ido == 1)
{
for (k = 0; k < l1; k++)
{
- ac = 4*k*ido + 1;
- ti1 = cc[ac] - cc[ac+2*ido];
- ti2 = cc[ac] + cc[ac+2*ido];
- tr4 = cc[ac+3*ido] - cc[ac+ido];
- ti3 = cc[ac+ido] + cc[ac+3*ido];
- tr1 = cc[ac-1] - cc[ac+2*ido-1];
- tr2 = cc[ac-1] + cc[ac+2*ido-1];
- ti4 = cc[ac+ido-1] - cc[ac+3*ido-1];
- tr3 = cc[ac+ido-1] + cc[ac+3*ido-1];
- ah = k*ido;
- ch[ah] = tr2 + tr3;
- ch[ah+2*l1*ido] = tr2 - tr3;
- ch[ah+1] = ti2 + ti3;
- ch[ah+2*l1*ido+1] = ti2 - ti3;
- ch[ah+l1*ido] = tr1 + tr4*isign;
- ch[ah+3*l1*ido] = tr1 - tr4*isign;
- ch[ah+l1*ido+1] = ti1 + ti4*isign;
- ch[ah+3*l1*ido+1] = ti1 - ti4*isign;
+ ac = 4*k;
+ ah = k;
+
+ RE(t2) = RE(cc[ac]) + RE(cc[ac+2]);
+ IM(t2) = IM(cc[ac]) + IM(cc[ac+2]);
+ RE(t3) = RE(cc[ac+1]) + RE(cc[ac+3]);
+ IM(t3) = IM(cc[ac+1]) + IM(cc[ac+3]);
+ RE(t1) = RE(cc[ac]) - RE(cc[ac+2]);
+ IM(t1) = IM(cc[ac]) - IM(cc[ac+2]);
+ RE(t4) = IM(cc[ac+3]) - IM(cc[ac+1]);
+ IM(t4) = RE(cc[ac+1]) - RE(cc[ac+3]);
+
+ RE(ch[ah]) = RE(t2) + RE(t3);
+ IM(ch[ah]) = IM(t2) + IM(t3);
+ RE(ch[ah+l1]) = RE(t1) + RE(t4)*isign;
+ IM(ch[ah+l1]) = IM(t1) + IM(t4)*isign;
+ RE(ch[ah+2*l1]) = RE(t2) - RE(t3);
+ IM(ch[ah+2*l1]) = IM(t2) - IM(t3);
+ RE(ch[ah+3*l1]) = RE(t1) - RE(t4)*isign;
+ IM(ch[ah+3*l1]) = IM(t1) - IM(t4)*isign;
}
} else {
for (k = 0; k < l1; k++)
{
- for (i = 0; i < ido-1; i += 2)
+ for (i = 0; i < ido; i++)
{
- ac = i + 1 + 4*k*ido;
- ti1 = cc[ac] - cc[ac+2*ido];
- ti2 = cc[ac] + cc[ac+2*ido];
- ti3 = cc[ac+ido] + cc[ac+3*ido];
- tr4 = cc[ac+3*ido] - cc[ac+ido];
- tr1 = cc[ac-1] - cc[ac+2*ido-1];
- tr2 = cc[ac-1] + cc[ac+2*ido-1];
- ti4 = cc[ac+ido-1] - cc[ac+3*ido-1];
- tr3 = cc[ac+ido-1] + cc[ac+3*ido-1];
+ ac = i + 4*k*ido;
ah = i + k*ido;
- ch[ah] = tr2 + tr3;
- cr3 = tr2 - tr3;
- ch[ah+1] = ti2 + ti3;
- ci3 = ti2 - ti3;
- cr2 = tr1 + tr4*isign;
- cr4 = tr1 - tr4*isign;
- ci2 = ti1 + ti4*isign;
- ci4 = ti1 - ti4*isign;
- ch[ah+l1*ido] = MUL_R_C(cr2,wa1[i]) - MUL_R_C(ci2,wa1[i+1])*isign;
- ch[ah+l1*ido+1] = MUL_R_C(ci2,wa1[i]) + MUL_R_C(cr2,wa1[i+1])*isign;
- ch[ah+2*l1*ido] = MUL_R_C(cr3,wa2[i]) - MUL_R_C(ci3,wa2[i+1])*isign;
- ch[ah+2*l1*ido+1] = MUL_R_C(ci3,wa2[i]) + MUL_R_C(cr3,wa2[i+1])*isign;
- ch[ah+3*l1*ido] = MUL_R_C(cr4,wa3[i]) - MUL_R_C(ci4,wa3[i+1])*isign;
- ch[ah+3*l1*ido+1] = MUL_R_C(ci4,wa3[i]) + MUL_R_C(cr4,wa3[i+1])*isign;
+
+ RE(t2) = RE(cc[ac]) + RE(cc[ac+2*ido]);
+ IM(t2) = IM(cc[ac]) + IM(cc[ac+2*ido]);
+ RE(t3) = RE(cc[ac+ido]) + RE(cc[ac+3*ido]);
+ IM(t3) = IM(cc[ac+ido]) + IM(cc[ac+3*ido]);
+ RE(t1) = RE(cc[ac]) - RE(cc[ac+2*ido]);
+ IM(t1) = IM(cc[ac]) - IM(cc[ac+2*ido]);
+ RE(t4) = IM(cc[ac+3*ido]) - IM(cc[ac+ido]);
+ IM(t4) = RE(cc[ac+ido]) - RE(cc[ac+3*ido]);
+
+ RE(ch[ah]) = RE(t2) + RE(t3);
+ IM(ch[ah]) = IM(t2) + IM(t3);
+
+ RE(c2) = RE(t1) + RE(t4)*isign;
+ IM(c2) = IM(t1) + IM(t4)*isign;
+ RE(c3) = RE(t2) - RE(t3);
+ IM(c3) = IM(t2) - IM(t3);
+ RE(c4) = RE(t1) - RE(t4)*isign;
+ IM(c4) = IM(t1) - IM(t4)*isign;
+
+ RE(ch[ah+l1*ido]) = MUL_R_C(RE(c2),RE(wa1[i])) - MUL_R_C(IM(c2),IM(wa1[i]))*isign;
+ IM(ch[ah+l1*ido]) = MUL_R_C(IM(c2),RE(wa1[i])) + MUL_R_C(RE(c2),IM(wa1[i]))*isign;
+ RE(ch[ah+2*l1*ido]) = MUL_R_C(RE(c3),RE(wa2[i])) - MUL_R_C(IM(c3),IM(wa2[i]))*isign;
+ IM(ch[ah+2*l1*ido]) = MUL_R_C(IM(c3),RE(wa2[i])) + MUL_R_C(RE(c3),IM(wa2[i]))*isign;
+ RE(ch[ah+3*l1*ido]) = MUL_R_C(RE(c4),RE(wa3[i])) - MUL_R_C(IM(c4),IM(wa3[i]))*isign;
+ IM(ch[ah+3*l1*ido]) = MUL_R_C(IM(c4),RE(wa3[i])) + MUL_R_C(RE(c4),IM(wa3[i]))*isign;
}
}
}
@@ -197,8 +219,8 @@
}
-static void passf5(uint16_t ido, uint16_t l1, real_t *cc, real_t *ch,
- real_t *wa1, real_t *wa2, real_t *wa3, real_t *wa4,
+static void passf5(uint16_t ido, uint16_t l1, complex_t *cc, complex_t *ch,
+ complex_t *wa1, complex_t *wa2, complex_t *wa3, complex_t *wa4,
int8_t isign)
{
static real_t tr11 = COEF_CONST(0.309016994374947);
@@ -206,276 +228,107 @@
static real_t tr12 = COEF_CONST(-0.809016994374947);
static real_t ti12 = COEF_CONST(0.587785252292473);
uint16_t i, k, ac, ah;
- real_t ci2, ci3, ci4, ci5, di3, di4, di5, di2, cr2, cr3, cr5, cr4,
- ti2, ti3, ti4, ti5, dr3, dr4, dr5, dr2, tr2, tr3, tr4, tr5;
+ complex_t c2, c3, c4, c5, d3, d4, d5, d2, t2, t3, t4, t5;
- if (ido == 2)
+ if (ido == 1)
{
- for (k = 1; k <= l1; ++k)
+ for (k = 0; k < l1; k++)
{
- ac = (5*k-4) * ido + 1;
- ti5 = cc[ac] - cc[ac+3*ido];
- ti2 = cc[ac] + cc[ac+3*ido];
- ti4 = cc[ac+ido] - cc[ac+2*ido];
- ti3 = cc[ac+ido] + cc[ac+2*ido];
- tr5 = cc[ac-1] - cc[ac+3*ido-1];
- tr2 = cc[ac-1] + cc[ac+3*ido-1];
- tr4 = cc[ac+ido-1] - cc[ac+2*ido-1];
- tr3 = cc[ac+ido-1] + cc[ac+2*ido-1];
- ah = (k-1) * ido;
- ch[ah] = cc[ac-ido-1] + tr2 + tr3;
- ch[ah+1] = cc[ac-ido] + ti2 + ti3;
- cr2 = cc[ac-ido-1] + MUL_R_C(tr2,tr11) + MUL_R_C(tr3,tr12);
- ci2 = cc[ac-ido] + MUL_R_C(ti2,tr11) + MUL_R_C(ti3,tr12);
- cr3 = cc[ac-ido-1] + MUL_R_C(tr2,tr12) + MUL_R_C(tr3,tr11);
- ci3 = cc[ac-ido] + MUL_R_C(ti2,tr12) + MUL_R_C(ti3,tr11);
- cr5 = (MUL_R_C(tr5,ti11)*isign + MUL_R_C(tr4,ti12));
- ci5 = (MUL_R_C(ti5,ti11)*isign + MUL_R_C(ti4,ti12));
- cr4 = (MUL_R_C(tr5,ti12)*isign - MUL_R_C(tr4,ti11));
- ci4 = (MUL_R_C(ti5,ti12)*isign - MUL_R_C(ti4,ti11));
- ch[ah+l1*ido] = cr2 - ci5;
- ch[ah+4*l1*ido] = cr2 + ci5;
- ch[ah+l1*ido+1] = ci2 + cr5;
- ch[ah+2*l1*ido+1]=ci3 + cr4;
- ch[ah+2*l1*ido] = cr3 - ci4;
- ch[ah+3*l1*ido] = cr3 + ci4;
- ch[ah+3*l1*ido+1] = ci3 - cr4;
- ch[ah+4*l1*ido+1] = ci2 - cr5;
- }
- } else {
- for (k = 1; k <= l1; k++)
- {
- for (i = 0; i < ido-1; i += 2)
- {
- ac = i + 1 + (k*5-4) * ido;
- ti5 = cc[ac] - cc[ac+3*ido];
- ti2 = cc[ac] + cc[ac+3*ido];
- ti4 = cc[ac+ido] - cc[ac+2*ido];
- ti3 = cc[ac+ido] + cc[ac+2*ido];
- tr5 = cc[ac-1] - cc[ac+3*ido-1];
- tr2 = cc[ac-1] + cc[ac+3*ido-1];
- tr4 = cc[ac+ido-1] - cc[ac+2*ido-1];
- tr3 = cc[ac+ido-1] + cc[ac+2*ido-1];
- ah = i + (k-1) * ido;
- ch[ah] = cc[ac-ido-1] + tr2 + tr3;
- ch[ah+1] = cc[ac-ido] + ti2 + ti3;
- cr2 = cc[ac-ido-1] + MUL_R_C(tr2,tr11) + MUL_R_C(tr3,tr12);
- ci2 = cc[ac-ido] + MUL_R_C(ti2,tr11) + MUL_R_C(ti3,tr12);
- cr3 = cc[ac-ido-1] + MUL_R_C(tr2,tr12) + MUL_R_C(tr3,tr11);
- ci3 = cc[ac-ido] + MUL_R_C(ti2,tr12) + MUL_R_C(ti3,tr11);
- cr5 = (MUL_R_C(tr5,ti11)*isign + MUL_R_C(tr4,ti12));
- ci5 = (MUL_R_C(ti5,ti11)*isign + MUL_R_C(ti4,ti12));
- cr4 = (MUL_R_C(tr5,ti12)*isign - MUL_R_C(tr4,ti11));
- ci4 = (MUL_R_C(ti5,ti12)*isign - MUL_R_C(ti4,ti11));
- dr3 = cr3 - ci4;
- dr4 = cr3 + ci4;
- di3 = ci3 + cr4;
- di4 = ci3 - cr4;
- dr5 = cr2 + ci5;
- dr2 = cr2 - ci5;
- di5 = ci2 - cr5;
- di2 = ci2 + cr5;
- ch[ah+l1*ido] = MUL_R_C(dr2,wa1[i]) - MUL_R_C(di2,wa1[i+1])*isign;
- ch[ah+l1*ido+1] = MUL_R_C(di2,wa1[i]) + MUL_R_C(dr2,wa1[i+1])*isign;
- ch[ah+2*l1*ido] = MUL_R_C(dr3,wa2[i]) - MUL_R_C(di3,wa2[i+1])*isign;
- ch[ah+2*l1*ido+1] = MUL_R_C(di3,wa2[i]) + MUL_R_C(dr3,wa2[i+1])*isign;
- ch[ah+3*l1*ido] = MUL_R_C(dr4,wa3[i]) - MUL_R_C(di4,wa3[i+1])*isign;
- ch[ah+3*l1*ido+1] = MUL_R_C(di4,wa3[i]) + MUL_R_C(dr4,wa3[i+1])*isign;
- ch[ah+4*l1*ido] = MUL_R_C(dr5,wa4[i]) - MUL_R_C(di5,wa4[i+1])*isign;
- ch[ah+4*l1*ido+1] = MUL_R_C(di5,wa4[i]) + MUL_R_C(dr5,wa4[i+1])*isign;
- }
- }
- }
-}
+ ac = 5*k + 1;
+ ah = k;
+ RE(t2) = RE(cc[ac]) + RE(cc[ac+3]);
+ IM(t2) = IM(cc[ac]) + IM(cc[ac+3]);
+ RE(t3) = RE(cc[ac+1]) + RE(cc[ac+2]);
+ IM(t3) = IM(cc[ac+1]) + IM(cc[ac+2]);
+ RE(t4) = RE(cc[ac+1]) - RE(cc[ac+2]);
+ IM(t4) = IM(cc[ac+1]) - IM(cc[ac+2]);
+ RE(t5) = RE(cc[ac]) - RE(cc[ac+3]);
+ IM(t5) = IM(cc[ac]) - IM(cc[ac+3]);
-static void passf(uint16_t *nac, uint16_t ido, uint16_t ip, uint16_t l1,
- uint16_t idl1, real_t *cc, real_t *ch, real_t *wa,
- int8_t isign)
-{
- uint16_t idij, idlj, idot, ipph, i, j, k, l, jc, lc, ik, nt, idj, idl;
- uint16_t inc, idp;
- real_t wai, war;
+ RE(ch[ah]) = RE(cc[ac-1]) + RE(t2) + RE(t3);
+ IM(ch[ah]) = IM(cc[ac-1]) + IM(t2) + IM(t3);
- idot = ido / 2;
- nt = ip*idl1;
- ipph = (ip+1) / 2;
- idp = ip*ido;
+ RE(c2) = RE(cc[ac-1]) + MUL_R_C(RE(t2),tr11) + MUL_R_C(RE(t3),tr12);
+ IM(c2) = IM(cc[ac-1]) + MUL_R_C(IM(t2),tr11) + MUL_R_C(IM(t3),tr12);
+ RE(c3) = RE(cc[ac-1]) + MUL_R_C(RE(t2),tr12) + MUL_R_C(RE(t3),tr11);
+ IM(c3) = IM(cc[ac-1]) + MUL_R_C(IM(t2),tr12) + MUL_R_C(IM(t3),tr11);
+ RE(c4) = (MUL_R_C(RE(t5),ti12)*isign - MUL_R_C(RE(t4),ti11));
+ IM(c4) = (MUL_R_C(IM(t5),ti12)*isign - MUL_R_C(IM(t4),ti11));
+ RE(c5) = (MUL_R_C(RE(t5),ti11)*isign + MUL_R_C(RE(t4),ti12));
+ IM(c5) = (MUL_R_C(IM(t5),ti11)*isign + MUL_R_C(IM(t4),ti12));
- if (ido >= l1)
- {
- for (j = 1; j < ipph; j++)
- {
- jc = ip - j;
-
- for (k = 0; k < l1; k++)
- {
- for (i = 0; i < ido; i++)
- {
- ch[i+(k+j*l1)*ido] = cc[i+(j+k*ip)*ido] + cc[i+(jc+k*ip)*ido];
- ch[i+(k+jc*l1)*ido] = cc[i+(j+k*ip)*ido] - cc[i+(jc+k*ip)*ido];
- }
- }
+ RE(ch[ah+l1]) = RE(c2) - IM(c5);
+ IM(ch[ah+l1]) = IM(c2) + RE(c5);
+ RE(ch[ah+2*l1]) = RE(c3) - IM(c4);
+ IM(ch[ah+2*l1]) = IM(c3) + RE(c4);
+ RE(ch[ah+3*l1]) = RE(c3) + IM(c4);
+ IM(ch[ah+3*l1]) = IM(c3) - RE(c4);
+ RE(ch[ah+4*l1]) = RE(c2) + IM(c5);
+ IM(ch[ah+4*l1]) = IM(c2) - RE(c5);
}
-
+ } else {
for (k = 0; k < l1; k++)
{
for (i = 0; i < ido; i++)
- ch[i+k*ido] = cc[i+k*ip*ido];
- }
- } else {
- for (j = 1; j < ipph; j++)
- {
- jc = ip - j;
-
- for (i = 0; i < ido; i++)
{
- for (k = 0; k < l1; k++)
- {
- ch[i+(k+j*l1)*ido] = cc[i+(j+k*ip)*ido] + cc[i+(jc+k*ip)*ido];
- ch[i+(k+jc*l1)*ido] = cc[i+(j+k*ip)*ido] - cc[i+(jc+k*ip)*ido];
- }
- }
- }
+ ac = i + (k*5 + 1) * ido;
+ ah = i + k * ido;
- for (i = 0; i < ido; i++)
- {
- for (k = 0; k < l1; k++)
- ch[i+k*ido] = cc[i+k*ip*ido];
- }
- }
+ RE(t2) = RE(cc[ac]) + RE(cc[ac+3*ido]);
+ IM(t2) = IM(cc[ac]) + IM(cc[ac+3*ido]);
+ RE(t3) = RE(cc[ac+ido]) + RE(cc[ac+2*ido]);
+ IM(t3) = IM(cc[ac+ido]) + IM(cc[ac+2*ido]);
+ RE(t4) = RE(cc[ac+ido]) - RE(cc[ac+2*ido]);
+ IM(t4) = IM(cc[ac+ido]) - IM(cc[ac+2*ido]);
+ RE(t5) = RE(cc[ac]) - RE(cc[ac+3*ido]);
+ IM(t5) = IM(cc[ac]) - IM(cc[ac+3*ido]);
- idl = 2 - ido;
- inc = 0;
+ RE(ch[ah]) = RE(cc[ac-ido]) + RE(t2) + RE(t3);
+ IM(ch[ah]) = IM(cc[ac-ido]) + IM(t2) + IM(t3);
- for (l = 1; l < ipph; l++)
- {
- lc = ip - l;
- idl += ido;
+ RE(c2) = RE(cc[ac-ido]) + MUL_R_C(RE(t2),tr11) + MUL_R_C(RE(t3),tr12);
+ IM(c2) = IM(cc[ac-ido]) + MUL_R_C(IM(t2),tr11) + MUL_R_C(IM(t3),tr12);
+ RE(c3) = RE(cc[ac-ido]) + MUL_R_C(RE(t2),tr12) + MUL_R_C(RE(t3),tr11);
+ IM(c3) = IM(cc[ac-ido]) + MUL_R_C(IM(t2),tr12) + MUL_R_C(IM(t3),tr11);
+ RE(c4) = (MUL_R_C(RE(t5),ti12)*isign - MUL_R_C(RE(t4),ti11));
+ IM(c4) = (MUL_R_C(IM(t5),ti12)*isign - MUL_R_C(IM(t4),ti11));
+ RE(c5) = (MUL_R_C(RE(t5),ti11)*isign + MUL_R_C(RE(t4),ti12));
+ IM(c5) = (MUL_R_C(IM(t5),ti11)*isign + MUL_R_C(IM(t4),ti12));
- for (ik = 0; ik < idl1; ik++)
- {
- cc[ik+l*idl1] = ch[ik] + MUL_R_C(ch[ik+idl1],wa[idl-2]);
- cc[ik+lc*idl1] = MUL_R_C(ch[ik+(ip-1)*idl1],wa[idl-1])*isign;
- }
+ IM(d2) = IM(c2) + RE(c5);
+ IM(d3) = IM(c3) + RE(c4);
+ RE(d4) = RE(c3) + IM(c4);
+ RE(d5) = RE(c2) + IM(c5);
+ RE(d2) = RE(c2) - IM(c5);
+ IM(d5) = IM(c2) - RE(c5);
+ RE(d3) = RE(c3) - IM(c4);
+ IM(d4) = IM(c3) - RE(c4);
- idlj = idl;
- inc += ido;
-
- for (j = 2; j < ipph; j++)
- {
- jc = ip - j;
- idlj += inc;
-
- if (idlj > idp)
- idlj -= idp;
-
- war = wa[idlj-2];
- wai = wa[idlj-1];
-
- for (ik = 0; ik < idl1; ik++)
- {
- cc[ik+l*idl1] += MUL_R_C(ch[ik+j*idl1],war);
- cc[ik+lc*idl1] += MUL_R_C(ch[ik+jc*idl1],wai)*isign;
+ RE(ch[ah+l1*ido]) = MUL_R_C(RE(d2),RE(wa1[i])) - MUL_R_C(IM(d2),IM(wa1[i]))*isign;
+ IM(ch[ah+l1*ido]) = MUL_R_C(IM(d2),RE(wa1[i])) + MUL_R_C(RE(d2),IM(wa1[i]))*isign;
+ RE(ch[ah+2*l1*ido]) = MUL_R_C(RE(d3),RE(wa2[i])) - MUL_R_C(IM(d3),IM(wa2[i]))*isign;
+ IM(ch[ah+2*l1*ido]) = MUL_R_C(IM(d3),RE(wa2[i])) + MUL_R_C(RE(d3),IM(wa2[i]))*isign;
+ RE(ch[ah+3*l1*ido]) = MUL_R_C(RE(d4),RE(wa3[i])) - MUL_R_C(IM(d4),IM(wa3[i]))*isign;
+ IM(ch[ah+3*l1*ido]) = MUL_R_C(IM(d4),RE(wa3[i])) + MUL_R_C(RE(d4),IM(wa3[i]))*isign;
+ RE(ch[ah+4*l1*ido]) = MUL_R_C(RE(d5),RE(wa4[i])) - MUL_R_C(IM(d5),IM(wa4[i]))*isign;
+ IM(ch[ah+4*l1*ido]) = MUL_R_C(IM(d5),RE(wa4[i])) + MUL_R_C(RE(d5),IM(wa4[i]))*isign;
}
}
}
-
- for (j = 1; j < ipph; j++)
- {
- for (ik = 0; ik < idl1; ik++)
- ch[ik] += ch[ik+j*idl1];
- }
-
- for (j = 1; j < ipph; j++)
- {
- jc = ip - j;
-
- for (ik = 1; ik < idl1; ik += 2)
- {
- ch[ik-1+j*idl1] = cc[ik-1+j*idl1] - cc[ik+jc*idl1];
- ch[ik-1+jc*idl1] = cc[ik-1+j*idl1] + cc[ik+jc*idl1];
- ch[ik+j*idl1] = cc[ik+j*idl1] + cc[ik-1+jc*idl1];
- ch[ik+jc*idl1] = cc[ik+j*idl1] - cc[ik-1+jc*idl1];
- }
- }
-
- *nac = 1;
-
- if (ido == 2)
- return;
-
- *nac = 0;
-
- for (ik = 0; ik < idl1; ik++)
- cc[ik] = ch[ik];
-
- for (j = 1; j < ip; j++)
- {
- for (k = 0; k < l1; k++)
- {
- cc[(k+j*l1)*ido+0] = ch[(k+j*l1)*ido+0];
- cc[(k+j*l1)*ido+1] = ch[(k+j*l1)*ido+1];
- }
- }
-
- if (idot <= l1)
- {
- idij = 0;
-
- for (j = 1; j < ip; j++)
- {
- idij += 2;
-
- for (i = 3; i < ido; i += 2)
- {
- idij += 2;
-
- for (k = 0; k < l1; k++)
- {
- cc[i-1+(k+j*l1)*ido] = MUL_R_C(ch[i-1+(k+j*l1)*ido],wa[idij-2]) -
- MUL_R_C(ch[i+(k+j*l1)*ido],wa[idij-1])*isign;
- cc[i+(k+j*l1)*ido] = MUL_R_C(ch[i+(k+j*l1)*ido],wa[idij-2]) +
- MUL_R_C(ch[i-1+(k+j*l1)*ido],wa[idij-1])*isign;
- }
- }
- }
- } else {
- idj = 2 - ido;
+}
- for (j = 1; j < ip; j++)
- {
- idj += ido;
- for (k = 0; k < l1; k++)
- {
- idij = idj;
-
- for (i = 3; i < ido; i += 2)
- {
- idij += 2;
- cc[i-1+(k+j*l1)*ido] = MUL_R_C(ch[i-1+(k+j*l1)*ido],wa[idij-2]) -
- MUL_R_C(ch[i+(k+j*l1)*ido],wa[idij-1])*isign;
- cc[i+(k+j*l1)*ido] = MUL_R_C(ch[i+(k+j*l1)*ido],wa[idij-2]) +
- MUL_R_C(ch[i-1+(k+j*l1)*ido],wa[idij-1])*isign;
- }
- }
- }
- }
-}
-
-
-
/*----------------------------------------------------------------------
cfftf1, cfftf, cfftb, cffti1, cffti. Complex FFTs.
----------------------------------------------------------------------*/
-INLINE void cfftf1(uint16_t n, real_t *c, real_t *ch, real_t *wa,
- uint16_t *ifac, int8_t isign)
+INLINE void cfftf1(uint16_t n, complex_t *c, complex_t *ch,
+ uint16_t *ifac, complex_t *wa, int8_t isign)
{
- uint16_t idot, i;
+ uint16_t i;
uint16_t k1, l1, l2;
- uint16_t na, nf, ip, iw, ix2, ix3, ix4, nac, ido, idl1;
+ uint16_t na, nf, ip, iw, ix2, ix3, ix4, ido, idl1;
nf = ifac[1];
na = 0;
@@ -487,90 +340,83 @@
ip = ifac[k1];
l2 = ip*l1;
ido = n / l2;
- idot = ido+ido;
- idl1 = idot*l1;
+ idl1 = ido*l1;
switch (ip)
{
case 2:
if (na == 0)
- passf2(idot, l1, c, ch, &wa[iw], isign);
+ passf2(ido, l1, c, ch, &wa[iw], isign);
else
- passf2(idot, l1, ch, c, &wa[iw], isign);
+ passf2(ido, l1, ch, c, &wa[iw], isign);
na = 1 - na;
break;
case 3:
- ix2 = iw + idot;
+ ix2 = iw + ido;
if (na == 0)
- passf3(idot, l1, c, ch, &wa[iw], &wa[ix2], isign);
+ passf3(ido, l1, c, ch, &wa[iw], &wa[ix2], isign);
else
- passf3(idot, l1, ch, c, &wa[iw], &wa[ix2], isign);
+ passf3(ido, l1, ch, c, &wa[iw], &wa[ix2], isign);
na = 1 - na;
break;
case 4:
- ix2 = iw + idot;
- ix3 = ix2 + idot;
+ ix2 = iw + ido;
+ ix3 = ix2 + ido;
if (na == 0)
- passf4(idot, l1, c, ch, &wa[iw], &wa[ix2], &wa[ix3], isign);
+ passf4(ido, l1, c, ch, &wa[iw], &wa[ix2], &wa[ix3], isign);
else
- passf4(idot, l1, ch, c, &wa[iw], &wa[ix2], &wa[ix3], isign);
+ passf4(ido, l1, ch, c, &wa[iw], &wa[ix2], &wa[ix3], isign);
na = 1 - na;
break;
case 5:
- ix2 = iw + idot;
- ix3 = ix2 + idot;
- ix4 = ix3 + idot;
+ ix2 = iw + ido;
+ ix3 = ix2 + ido;
+ ix4 = ix3 + ido;
if (na == 0)
- passf5(idot, l1, c, ch, &wa[iw], &wa[ix2], &wa[ix3], &wa[ix4], isign);
+ passf5(ido, l1, c, ch, &wa[iw], &wa[ix2], &wa[ix3], &wa[ix4], isign);
else
- passf5(idot, l1, ch, c, &wa[iw], &wa[ix2], &wa[ix3], &wa[ix4], isign);
+ passf5(ido, l1, ch, c, &wa[iw], &wa[ix2], &wa[ix3], &wa[ix4], isign);
na = 1 - na;
break;
- default:
- if (na == 0)
- passf(&nac, idot, ip, l1, idl1, c, ch, &wa[iw], isign);
- else
- passf(&nac, idot, ip, l1, idl1, ch, c, &wa[iw], isign);
-
- if (nac != 0)
- na = 1 - na;
- break;
}
l1 = l2;
- iw += (ip-1) * idot;
+ iw += (ip-1) * ido;
}
if (na == 0)
return;
- for (i = 0; i < 2*n; i++)
- c[i] = ch[i];
+ for (i = 0; i < n; i++)
+ {
+ RE(c[i]) = RE(ch[i]);
+ IM(c[i]) = IM(ch[i]);
+ }
}
-void cfftf(cfft_info *cfft, real_t *c)
+void cfftf(cfft_info *cfft, complex_t *c)
{
- cfftf1(cfft->n, c, cfft->work, cfft->tab, cfft->ifac, -1);
+ cfftf1(cfft->n, c, cfft->work, cfft->ifac, cfft->tab, -1);
}
-void cfftb(cfft_info *cfft, real_t *c)
+void cfftb(cfft_info *cfft, complex_t *c)
{
- cfftf1(cfft->n, c, cfft->work, cfft->tab, cfft->ifac, +1);
+ cfftf1(cfft->n, c, cfft->work, cfft->ifac, cfft->tab, +1);
}
-static void cffti1(uint16_t n, real_t *wa, uint16_t *ifac)
+static void cffti1(uint16_t n, complex_t *wa, uint16_t *ifac)
{
static uint16_t ntryh[4] = {3, 4, 2, 5};
#ifndef FIXED_POINT
real_t arg, argh, argld, fi;
- uint16_t idot, ido, ipm;
+ uint16_t ido, ipm;
uint16_t i1, k1, l1, l2;
uint16_t ld, ii, ip;
#endif
@@ -618,7 +464,7 @@
#ifndef FIXED_POINT
argh = 2.0*M_PI / (real_t)n;
- i = 1;
+ i = 0;
l1 = 1;
for (k1 = 1; k1 <= nf; k1++)
@@ -627,31 +473,30 @@
ld = 0;
l2 = l1*ip;
ido = n / l2;
- idot = ido + ido + 2;
ipm = ip - 1;
- for (j = 1; j <= ipm; j++)
+ for (j = 0; j < ipm; j++)
{
i1 = i;
- wa[i-1] = 1.0;
- wa[i] = 0.0;
+ RE(wa[i]) = 1.0;
+ IM(wa[i]) = 0.0;
ld += l1;
fi = 0;
argld = ld*argh;
- for (ii = 4; ii <= idot; ii += 2)
+ for (ii = 0; ii < ido; ii++)
{
- i += 2;
- fi += 1;
+ i++;
+ fi++;
arg = fi * argld;
- wa[i-1] = cos(arg);
- wa[i] = sin(arg);
+ RE(wa[i]) = cos(arg);
+ IM(wa[i]) = sin(arg);
}
if (ip > 5)
{
- wa[i1-1] = wa[i-1];
- wa[i1] = wa[i];
+ RE(wa[i1]) = RE(wa[i]);
+ IM(wa[i1]) = IM(wa[i]);
}
}
l1 = l2;
@@ -664,10 +509,10 @@
cfft_info *cfft = (cfft_info*)malloc(sizeof(cfft_info));
cfft->n = n;
- cfft->work = (real_t*)malloc(2*n*sizeof(real_t));
+ cfft->work = (complex_t*)malloc(n*sizeof(complex_t));
#ifndef FIXED_POINT
- cfft->tab = (real_t*)malloc(2*n*sizeof(real_t));
+ cfft->tab = (complex_t*)malloc(n*sizeof(complex_t));
cffti1(n, cfft->tab, cfft->ifac);
#else
--- a/libfaad/cfft.h
+++ b/libfaad/cfft.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: cfft.h,v 1.3 2002/09/08 18:14:37 menno Exp $
+** $Id: cfft.h,v 1.4 2002/09/26 19:01:45 menno Exp $
**/
#ifndef __CFFT_H__
@@ -28,33 +28,30 @@
typedef struct
{
- real_t *work;
- real_t *tab;
- uint16_t ifac[15];
uint16_t n;
+ uint16_t ifac[15];
+ complex_t *work;
+ complex_t *tab;
} cfft_info;
-void cfftf(cfft_info *cfft, real_t *c);
-void cfftb(cfft_info *cfft, real_t *c);
+void cfftf(cfft_info *cfft, complex_t *c);
+void cfftb(cfft_info *cfft, complex_t *c);
cfft_info *cffti(uint16_t n);
void cfftu(cfft_info *cfft);
-static void passf2(uint16_t ido, uint16_t l1, real_t *cc, real_t *ch,
- real_t *wa1, int8_t isign);
-static void passf3(uint16_t ido, uint16_t l1, real_t *cc, real_t *ch,
- real_t *wa1, real_t *wa2, int8_t isign);
-static void passf4(uint16_t ido, uint16_t l1, real_t *cc, real_t *ch,
- real_t *wa1, real_t *wa2, real_t *wa3, int8_t isign);
-static void passf5(uint16_t ido, uint16_t l1, real_t *cc, real_t *ch,
- real_t *wa1, real_t *wa2, real_t *wa3, real_t *wa4,
+static void passf2(uint16_t ido, uint16_t l1, complex_t *cc, complex_t *ch,
+ complex_t *wa, int8_t isign);
+static void passf3(uint16_t ido, uint16_t l1, complex_t *cc, complex_t *ch,
+ complex_t *wa1, complex_t *wa2, int8_t isign);
+static void passf4(uint16_t ido, uint16_t l1, complex_t *cc, complex_t *ch,
+ complex_t *wa1, complex_t *wa2, complex_t *wa3, int8_t isign);
+static void passf5(uint16_t ido, uint16_t l1, complex_t *cc, complex_t *ch,
+ complex_t *wa1, complex_t *wa2, complex_t *wa3, complex_t *wa4,
int8_t isign);
-static void passf(uint16_t *nac, uint16_t ido, uint16_t ip, uint16_t l1,
- uint16_t idl1, real_t *cc, real_t *ch, real_t *wa,
- int8_t isign);
-INLINE void cfftf1(uint16_t n, real_t *c, real_t *ch, real_t *wa,
- uint16_t *ifac, int8_t isign);
-static void cffti1(uint16_t n, real_t *wa, uint16_t *ifac);
+INLINE void cfftf1(uint16_t n, complex_t *c, complex_t *ch,
+ uint16_t *ifac, complex_t *wa, int8_t isign);
+static void cffti1(uint16_t n, complex_t *wa, uint16_t *ifac);
#ifdef __cplusplus
--- a/libfaad/cfft_tab.h
+++ b/libfaad/cfft_tab.h
@@ -1,22 +1,22 @@
/*
** FAAD - Freeware Advanced Audio Decoder
** Copyright (C) 2002 M. Bakker
-**
+**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
-**
+**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
-**
+**
** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
+** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: cfft_tab.h,v 1.1 2002/09/13 13:08:45 menno Exp $
+** $Id: cfft_tab.h,v 1.2 2002/09/26 19:01:45 menno Exp $
**/
#ifndef __CFFT_TAB_H__
@@ -28,3254 +28,1642 @@
#ifdef FIXED_POINT
-real_t cfft_tab_512[] =
-{
- 0x10000000,
- 0x0,
- 0xFFFB10B,
- 0x3243A4,
- 0xFFEC430,
- 0x648558,
- 0xFFD3977,
- 0x96C32B,
- 0xFFB10F1,
- 0xC8FB2F,
- 0xFF84AB2,
- 0xFB2B74,
- 0xFF4E6D6,
- 0x12D5209,
- 0xFF0E57E,
- 0x15F6D01,
- 0xFEC46D1,
- 0x1917A6C,
- 0xFE70AFE,
- 0x1C3785D,
- 0xFE13238,
- 0x1F564E6,
- 0xFDABCB8,
- 0x2273E1A,
- 0xFD3AABF,
- 0x259020E,
- 0xFCBFC92,
- 0x28AAED7,
- 0xFC3B27D,
- 0x2BC4289,
- 0xFBACCD1,
- 0x2EDBB3D,
- 0xFB14BE7,
- 0x31F1708,
- 0xFA7301D,
- 0x3505406,
- 0xF9C79D5,
- 0x381704E,
- 0xF91297B,
- 0x3B269FE,
- 0xF853F7D,
- 0x3E33F31,
- 0xF78BC51,
- 0x413EE05,
- 0xF6BA073,
- 0x444749A,
- 0xF5DEC63,
- 0x474D111,
- 0xF4FA0AA,
- 0x4A5018D,
- 0xF40BDD4,
- 0x4D50432,
- 0xF314475,
- 0x504D727,
- 0xF213524,
- 0x5347892,
- 0xF109081,
- 0x563E69F,
- 0xEFF5730,
- 0x5931F79,
- 0xEED89DA,
- 0x5C2214E,
- 0xEDB2930,
- 0x5F0EA4E,
- 0xEC835E6,
- 0x61F78AC,
- 0xEB4B0B8,
- 0x64DCA9B,
- 0xEA09A67,
- 0x67BDE53,
- 0xE8BF3B8,
- 0x6A9B20D,
- 0xE76BD78,
- 0x6D74405,
- 0xE60F878,
- 0x7049279,
- 0xE4AA58F,
- 0x7319BA9,
- 0xE33C598,
- 0x75E5DDA,
- 0xE1C5977,
- 0x78AD751,
- 0xE046211,
- 0x7B70658,
- 0xDEBE054,
- 0x7E2E93A,
- 0xDD2D531,
- 0x80E7E47,
- 0xDB941A0,
- 0x839C3D0,
- 0xD9F269D,
- 0x864B82A,
- 0xD848529,
- 0x88F59AD,
- 0xD695E4C,
- 0x8B9A6B5,
- 0xD4DB312,
- 0x8E39DA0,
- 0xD31848A,
- 0x90D3CD0,
- 0xD14D3CD,
- 0x93682AA,
- 0xCF7A1F4,
- 0x95F6D96,
- 0xCD9F021,
- 0x987FC02,
- 0xCBBBF77,
- 0x9B02C5C,
- 0xC9D1121,
- 0x9D7FD18,
- 0xC7DE64E,
- 0x9FF6CAD,
- 0xC5E4032,
- 0xA267996,
- 0xC3E2004,
- 0xA4D2251,
- 0xC1D8702,
- 0xA736561,
- 0xBFC766E,
- 0xA99414D,
- 0xBDAEF8D,
- 0xABEB49E,
- 0xBB8F3AB,
- 0xAE3BDE3,
- 0xB968418,
- 0xB085BAE,
- 0xB73A226,
- 0xB2C8C97,
- 0xB504F2F,
- 0xB504F37,
- 0xB2C8C8E,
- 0xB73A22E,
- 0xB085BA6,
- 0xB968420,
- 0xAE3BDDA,
- 0xBB8F3B3,
- 0xABEB495,
- 0xBDAEF95,
- 0xA994144,
- 0xBFC7675,
- 0xA736559,
- 0xC1D870A,
- 0xA4D2248,
- 0xC3E200C,
- 0xA26798D,
- 0xC5E4039,
- 0x9FF6CA4,
- 0xC7DE656,
- 0x9D7FD0F,
- 0xC9D1128,
- 0x9B02C53,
- 0xCBBBF7E,
- 0x987FBF8,
- 0xCD9F028,
- 0x95F6D8D,
- 0xCF7A1FB,
- 0x93682A0,
- 0xD14D3D4,
- 0x90D3CC6,
- 0xD318491,
- 0x8E39D96,
- 0xD4DB318,
- 0x8B9A6AB,
- 0xD695E53,
- 0x88F59A3,
- 0xD848530,
- 0x864B820,
- 0xD9F26A3,
- 0x839C3C5,
- 0xDB941A6,
- 0x80E7E3C,
- 0xDD2D537,
- 0x7E2E930,
- 0xDEBE05A,
- 0x7B7064D,
- 0xE046217,
- 0x78AD746,
- 0xE1C597C,
- 0x75E5DCF,
- 0xE33C59E,
- 0x7319B9E,
- 0xE4AA594,
- 0x704926E,
- 0xE60F87D,
- 0x6D743FA,
- 0xE76BD7D,
- 0x6A9B203,
- 0xE8BF3BD,
- 0x67BDE49,
- 0xEA09A6C,
- 0x64DCA90,
- 0xEB4B0BD,
- 0x61F78A1,
- 0xEC835EA,
- 0x5F0EA44,
- 0xEDB2934,
- 0x5C22143,
- 0xEED89DE,
- 0x5931F6E,
- 0xEFF5734,
- 0x563E694,
- 0xF109085,
- 0x5347887,
- 0xF213528,
- 0x504D71C,
- 0xF314479,
- 0x4D50427,
- 0xF40BDD8,
- 0x4A50182,
- 0xF4FA0AE,
- 0x474D106,
- 0xF5DEC67,
- 0x444748F,
- 0xF6BA076,
- 0x413EDFA,
- 0xF78BC54,
- 0x3E33F25,
- 0xF853F80,
- 0x3B269F2,
- 0xF91297E,
- 0x3817043,
- 0xF9C79D8,
- 0x35053FA,
- 0xFA7301F,
- 0x31F16FD,
- 0xFB14BE9,
- 0x2EDBB31,
- 0xFBACCD3,
- 0x2BC427E,
- 0xFC3B27F,
- 0x28AAECB,
- 0xFCBFC94,
- 0x2590203,
- 0xFD3AAC1,
- 0x2273E0F,
- 0xFDABCBA,
- 0x1F564DA,
- 0xFE13239,
- 0x1C37851,
- 0xFE70AFF,
- 0x1917A60,
- 0xFEC46D2,
- 0x15F6CF5,
- 0xFF0E57F,
- 0x12D51FE,
- 0xFF4E6D7,
- 0xFB2B68,
- 0xFF84AB3,
- 0xC8FB24,
- 0xFFB10F2,
- 0x96C320,
- 0xFFD3978,
- 0x64854C,
- 0xFFEC430,
- 0x324398,
- 0xFFFB10B,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFFCDBC51,
- 0xFFFB10B,
- 0xFF9B7A9D,
- 0xFFEC42F,
- 0xFF693CC9,
- 0xFFD3977,
- 0xFF3704C5,
- 0xFFB10F1,
- 0xFF04D481,
- 0xFF84AB2,
- 0xFED2ADEB,
- 0xFF4E6D5,
- 0xFEA092F4,
- 0xFF0E57D,
- 0xFE6E8588,
- 0xFEC46D0,
- 0xFE3C8798,
- 0xFE70AFD,
- 0xFE0A9B0F,
- 0xFE13236,
- 0xFDD8C1DA,
- 0xFDABCB7,
- 0xFDA6FDE6,
- 0xFD3AABD,
- 0xFD75511E,
- 0xFCBFC90,
- 0xFD43BD6B,
- 0xFC3B27A,
- 0xFD1244B8,
- 0xFBACCCF,
- 0xFCE0E8EC,
- 0xFB14BE5,
- 0xFCAFABEF,
- 0xFA7301A,
- 0xFC7E8FA6,
- 0xF9C79D3,
- 0xFC4D95F7,
- 0xF912978,
- 0xFC1CC0C4,
- 0xF853F7A,
- 0xFBEC11F0,
- 0xF78BC4E,
- 0xFBBB8B5B,
- 0xF6BA070,
- 0xFB8B2EE3,
- 0xF5DEC60,
- 0xFB5AFE67,
- 0xF4FA0A7,
- 0xFB2AFBC2,
- 0xF40BDD1,
- 0xFAFB28CE,
- 0xF314471,
- 0xFACB8762,
- 0xF213520,
- 0xFA9C1956,
- 0xF10907D,
- 0xFA6CE07C,
- 0xEFF572C,
- 0xFA3DDEA7,
- 0xEED89D6,
- 0xFA0F15A7,
- 0xEDB292B,
- 0xF9E08749,
- 0xEC835E1,
- 0xF9B2355A,
- 0xEB4B0B4,
- 0xF98421A2,
- 0xEA09A62,
- 0xF9564DE8,
- 0xE8BF3B3,
- 0xF928BBF0,
- 0xE76BD73,
- 0xF8FB6D7D,
- 0xE60F873,
- 0xF8CE644D,
- 0xE4AA589,
- 0xF8A1A21C,
- 0xE33C593,
- 0xF87528A5,
- 0xE1C5971,
- 0xF848F99E,
- 0xE04620B,
- 0xF81D16BC,
- 0xDEBE04E,
- 0xF7F181AF,
- 0xDD2D52B,
- 0xF7C63C26,
- 0xDB9419A,
- 0xF79B47CC,
- 0xD9F2697,
- 0xF770A649,
- 0xD848523,
- 0xF7465941,
- 0xD695E46,
- 0xF71C6256,
- 0xD4DB30B,
- 0xF6F2C327,
- 0xD318484,
- 0xF6C97D4D,
- 0xD14D3C6,
- 0xF6A09260,
- 0xCF7A1ED,
- 0xF67803F5,
- 0xCD9F01A,
- 0xF64FD39B,
- 0xCBBBF70,
- 0xF62802DF,
- 0xC9D111A,
- 0xF600934A,
- 0xC7DE647,
- 0xF5D98661,
- 0xC5E402A,
- 0xF5B2DDA6,
- 0xC3E1FFC,
- 0xF58C9A96,
- 0xC1D86FA,
- 0xF566BEAA,
- 0xBFC7666,
- 0xF5414B59,
- 0xBDAEF85,
- 0xF51C4215,
- 0xBB8F3A3,
- 0xF4F7A449,
- 0xB96840F,
- 0xF4D37361,
- 0xB73A21E,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF48C5DCA,
- 0xB2C8C86,
- 0xF4697BD8,
- 0xB085B9D,
- 0xF4470C45,
- 0xAE3BDD2,
- 0xF4251063,
- 0xABEB48C,
- 0xF4038983,
- 0xA99413B,
- 0xF3E278EF,
- 0xA736550,
- 0xF3C1DFED,
- 0xA4D223F,
- 0xF3A1BFBF,
- 0xA267984,
- 0xF38219A3,
- 0x9FF6C9B,
- 0xF362EED0,
- 0x9D7FD05,
- 0xF344407B,
- 0x9B02C49,
- 0xF3260FD1,
- 0x987FBEF,
- 0xF3085DFE,
- 0x95F6D83,
- 0xF2EB2C25,
- 0x9368296,
- 0xF2CE7B68,
- 0x90D3CBC,
- 0xF2B24CE1,
- 0x8E39D8C,
- 0xF296A1A7,
- 0x8B9A6A1,
- 0xF27B7ACA,
- 0x88F5999,
- 0xF260D957,
- 0x864B816,
- 0xF246BE54,
- 0x839C3BB,
- 0xF22D2AC3,
- 0x80E7E32,
- 0xF2141FA1,
- 0x7E2E925,
- 0xF1FB9DE4,
- 0x7B70643,
- 0xF1E3A67E,
- 0x78AD73C,
- 0xF1CC3A5D,
- 0x75E5DC5,
- 0xF1B55A67,
- 0x7319B94,
- 0xF19F077E,
- 0x7049263,
- 0xF189427E,
- 0x6D743F0,
- 0xF1740C3E,
- 0x6A9B1F8,
- 0xF15F6590,
- 0x67BDE3E,
- 0xF14B4F3F,
- 0x64DCA86,
- 0xF137CA11,
- 0x61F7896,
- 0xF124D6C8,
- 0x5F0EA39,
- 0xF112761E,
- 0x5C22138,
- 0xF100A8C8,
- 0x5931F63,
- 0xF0EF6F77,
- 0x563E689,
- 0xF0DECAD4,
- 0x534787C,
- 0xF0CEBB84,
- 0x504D711,
- 0xF0BF4224,
- 0x4D5041C,
- 0xF0B05F4F,
- 0x4A50177,
- 0xF0A21396,
- 0x474D0FB,
- 0xF0945F87,
- 0x4447484,
- 0xF08743A9,
- 0x413EDEE,
- 0xF07AC07D,
- 0x3E33F1A,
- 0xF06ED680,
- 0x3B269E7,
- 0xF0638626,
- 0x3817038,
- 0xF058CFDE,
- 0x35053EF,
- 0xF04EB414,
- 0x31F16F1,
- 0xF045332B,
- 0x2EDBB26,
- 0xF03C4D7F,
- 0x2BC4272,
- 0xF034036B,
- 0x28AAEC0,
- 0xF02C553E,
- 0x25901F7,
- 0xF0254345,
- 0x2273E03,
- 0xF01ECDC5,
- 0x1F564CF,
- 0xF018F4FF,
- 0x1C37845,
- 0xF013B92C,
- 0x1917A55,
- 0xF00F1A80,
- 0x15F6CE9,
- 0xF00B1928,
- 0x12D51F2,
- 0xF007B54C,
- 0xFB2B5C,
- 0xF004EF0E,
- 0xC8FB18,
- 0xF002C688,
- 0x96C314,
- 0xF0013BD0,
- 0x648540,
- 0xF0004EF5,
- 0x32438C,
- 0x10000000,
- 0x0,
- 0xFFEC430,
- 0x648558,
- 0xFFB10F1,
- 0xC8FB2F,
- 0xFF4E6D6,
- 0x12D5209,
- 0xFEC46D1,
- 0x1917A6C,
- 0xFE13238,
- 0x1F564E6,
- 0xFD3AABF,
- 0x259020E,
- 0xFC3B27D,
- 0x2BC4289,
- 0xFB14BE7,
- 0x31F1708,
- 0xF9C79D5,
- 0x381704E,
- 0xF853F7D,
- 0x3E33F31,
- 0xF6BA073,
- 0x444749A,
- 0xF4FA0AA,
- 0x4A5018D,
- 0xF314475,
- 0x504D727,
- 0xF109081,
- 0x563E69F,
- 0xEED89DA,
- 0x5C2214E,
- 0xEC835E6,
- 0x61F78AC,
- 0xEA09A67,
- 0x67BDE53,
- 0xE76BD78,
- 0x6D74405,
- 0xE4AA58F,
- 0x7319BA9,
- 0xE1C5977,
- 0x78AD751,
- 0xDEBE054,
- 0x7E2E93A,
- 0xDB941A0,
- 0x839C3D0,
- 0xD848529,
- 0x88F59AD,
- 0xD4DB312,
- 0x8E39DA0,
- 0xD14D3CD,
- 0x93682AA,
- 0xCD9F021,
- 0x987FC02,
- 0xC9D1121,
- 0x9D7FD18,
- 0xC5E4032,
- 0xA267996,
- 0xC1D8702,
- 0xA736561,
- 0xBDAEF8D,
- 0xABEB49E,
- 0xB968418,
- 0xB085BAE,
- 0xB504F2F,
- 0xB504F37,
- 0xB085BA6,
- 0xB968420,
- 0xABEB495,
- 0xBDAEF95,
- 0xA736559,
- 0xC1D870A,
- 0xA26798D,
- 0xC5E4039,
- 0x9D7FD0F,
- 0xC9D1128,
- 0x987FBF8,
- 0xCD9F028,
- 0x93682A0,
- 0xD14D3D4,
- 0x8E39D96,
- 0xD4DB318,
- 0x88F59A3,
- 0xD848530,
- 0x839C3C5,
- 0xDB941A6,
- 0x7E2E930,
- 0xDEBE05A,
- 0x78AD746,
- 0xE1C597C,
- 0x7319B9E,
- 0xE4AA594,
- 0x6D743FA,
- 0xE76BD7D,
- 0x67BDE49,
- 0xEA09A6C,
- 0x61F78A1,
- 0xEC835EA,
- 0x5C22143,
- 0xEED89DE,
- 0x563E694,
- 0xF109085,
- 0x504D71C,
- 0xF314479,
- 0x4A50182,
- 0xF4FA0AE,
- 0x444748F,
- 0xF6BA076,
- 0x3E33F25,
- 0xF853F80,
- 0x3817043,
- 0xF9C79D8,
- 0x31F16FD,
- 0xFB14BE9,
- 0x2BC427E,
- 0xFC3B27F,
- 0x2590203,
- 0xFD3AAC1,
- 0x1F564DA,
- 0xFE13239,
- 0x1917A60,
- 0xFEC46D2,
- 0x12D51FE,
- 0xFF4E6D7,
- 0xC8FB24,
- 0xFFB10F2,
- 0x64854C,
- 0xFFEC430,
- 0x10000000,
- 0x0,
- 0xFFB10F1,
- 0xC8FB2F,
- 0xFEC46D1,
- 0x1917A6C,
- 0xFD3AABF,
- 0x259020E,
- 0xFB14BE7,
- 0x31F1708,
- 0xF853F7D,
- 0x3E33F31,
- 0xF4FA0AA,
- 0x4A5018D,
- 0xF109081,
- 0x563E69F,
- 0xEC835E6,
- 0x61F78AC,
- 0xE76BD78,
- 0x6D74405,
- 0xE1C5977,
- 0x78AD751,
- 0xDB941A0,
- 0x839C3D0,
- 0xD4DB312,
- 0x8E39DA0,
- 0xCD9F021,
- 0x987FC02,
- 0xC5E4032,
- 0xA267996,
- 0xBDAEF8D,
- 0xABEB49E,
- 0xB504F2F,
- 0xB504F37,
- 0xABEB495,
- 0xBDAEF95,
- 0xA26798D,
- 0xC5E4039,
- 0x987FBF8,
- 0xCD9F028,
- 0x8E39D96,
- 0xD4DB318,
- 0x839C3C5,
- 0xDB941A6,
- 0x78AD746,
- 0xE1C597C,
- 0x6D743FA,
- 0xE76BD7D,
- 0x61F78A1,
- 0xEC835EA,
- 0x563E694,
- 0xF109085,
- 0x4A50182,
- 0xF4FA0AE,
- 0x3E33F25,
- 0xF853F80,
- 0x31F16FD,
- 0xFB14BE9,
- 0x2590203,
- 0xFD3AAC1,
- 0x1917A60,
- 0xFEC46D2,
- 0xC8FB24,
- 0xFFB10F2,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFF3704C5,
- 0xFFB10F1,
- 0xFE6E8588,
- 0xFEC46D0,
- 0xFDA6FDE6,
- 0xFD3AABD,
- 0xFCE0E8EC,
- 0xFB14BE5,
- 0xFC1CC0C4,
- 0xF853F7A,
- 0xFB5AFE67,
- 0xF4FA0A7,
- 0xFA9C1956,
- 0xF10907D,
- 0xF9E08749,
- 0xEC835E1,
- 0xF928BBF0,
- 0xE76BD73,
- 0xF87528A5,
- 0xE1C5971,
- 0xF7C63C26,
- 0xDB9419A,
- 0xF71C6256,
- 0xD4DB30B,
- 0xF67803F5,
- 0xCD9F01A,
- 0xF5D98661,
- 0xC5E402A,
- 0xF5414B59,
- 0xBDAEF85,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF4251063,
- 0xABEB48C,
- 0xF3A1BFBF,
- 0xA267984,
- 0xF3260FD1,
- 0x987FBEF,
- 0xF2B24CE1,
- 0x8E39D8C,
- 0xF246BE54,
- 0x839C3BB,
- 0xF1E3A67E,
- 0x78AD73C,
- 0xF189427E,
- 0x6D743F0,
- 0xF137CA11,
- 0x61F7896,
- 0xF0EF6F77,
- 0x563E689,
- 0xF0B05F4F,
- 0x4A50177,
- 0xF07AC07D,
- 0x3E33F1A,
- 0xF04EB414,
- 0x31F16F1,
- 0xF02C553E,
- 0x25901F7,
- 0xF013B92C,
- 0x1917A55,
- 0xF004EF0E,
- 0xC8FB18,
- 0x10000000,
- 0x0,
- 0xFF4E6D6,
- 0x12D5209,
- 0xFD3AABF,
- 0x259020D,
- 0xF9C79D6,
- 0x381704D,
- 0xF4FA0AB,
- 0x4A5018B,
- 0xEED89DB,
- 0x5C2214C,
- 0xE76BD79,
- 0x6D74402,
- 0xDEBE056,
- 0x7E2E937,
- 0xD4DB314,
- 0x8E39D9D,
- 0xC9D1124,
- 0x9D7FD14,
- 0xBDAEF90,
- 0xABEB49A,
- 0xB085BAA,
- 0xB96841C,
- 0xA267992,
- 0xC5E4035,
- 0x93682A5,
- 0xD14D3D0,
- 0x839C3CB,
- 0xDB941A2,
- 0x7319BA5,
- 0xE4AA590,
- 0x61F78A8,
- 0xEC835E7,
- 0x504D724,
- 0xF314476,
- 0x3E33F2E,
- 0xF853F7E,
- 0x2BC4287,
- 0xFC3B27D,
- 0x1917A6A,
- 0xFEC46D2,
- 0x648556,
- 0xFFEC430,
- 0xFF3704D0,
- 0xFFB10F1,
- 0xFE0A9B1A,
- 0xFE13238,
- 0xFCE0E8F8,
- 0xFB14BE7,
- 0xFBBB8B67,
- 0xF6BA073,
- 0xFA9C1962,
- 0xF109082,
- 0xF98421AE,
- 0xEA09A68,
- 0xF87528B1,
- 0xE1C5978,
- 0xF770A655,
- 0xD84852B,
- 0xF6780401,
- 0xCD9F023,
- 0xF58C9AA1,
- 0xC1D8704,
- 0xF4AFB0CC,
- 0xB504F32,
- 0xF3E278F9,
- 0xA73655C,
- 0xF3260FDC,
- 0x987FBFD,
- 0xF27B7AD4,
- 0x88F59A8,
- 0xF1E3A687,
- 0x78AD74C,
- 0xF15F6597,
- 0x67BDE4F,
- 0xF0EF6F7D,
- 0x563E69B,
- 0xF0945F8C,
- 0x4447496,
- 0xF04EB418,
- 0x31F1705,
- 0xF01ECDC8,
- 0x1F564E3,
- 0xF004EF0F,
- 0xC8FB2D,
- 0xF0013BD0,
- 0xFF9B7AA6,
- 0xF013B92F,
- 0xFE6E8593,
- 0xF03C4D84,
- 0xFD43BD76,
- 0xF07AC083,
- 0xFC1CC0CF,
- 0xF0CEBB8B,
- 0xFAFB28D9,
- 0xF137CA1A,
- 0xF9E08755,
- 0xF1B55A71,
- 0xF8CE6458,
- 0xF246BE5F,
- 0xF7C63C32,
- 0xF2EB2C32,
- 0xF6C97D58,
- 0xF3A1BFCD,
- 0xF5D9866C,
- 0xF4697BE6,
- 0xF4F7A454,
- 0xF5414B68,
- 0xF425106D,
- 0xF62802EE,
- 0xF362EEDA,
- 0xF71C6266,
- 0xF2B24CEA,
- 0xF81D16CC,
- 0xF2141FA9,
- 0xF928BC01,
- 0xF1894285,
- 0xFA3DDEB7,
- 0xF1127624,
- 0xFB5AFE78,
- 0xF0B05F54,
- 0xFC7E8FB6,
- 0xF063862A,
- 0xFDA6FDF6,
- 0xF02C5541,
- 0xFED2ADFA,
- 0xF00B192A,
- 0x10000000,
- 0x0,
- 0xFEC46D1,
- 0x1917A6C,
- 0xFB14BE7,
- 0x31F1708,
- 0xF4FA0AA,
- 0x4A5018D,
- 0xEC835E6,
- 0x61F78AC,
- 0xE1C5977,
- 0x78AD751,
- 0xD4DB312,
- 0x8E39DA0,
- 0xC5E4032,
- 0xA267996,
- 0xB504F2F,
- 0xB504F37,
- 0xA26798D,
- 0xC5E4039,
- 0x8E39D96,
- 0xD4DB318,
- 0x78AD746,
- 0xE1C597C,
- 0x61F78A1,
- 0xEC835EA,
- 0x4A50182,
- 0xF4FA0AE,
- 0x31F16FD,
- 0xFB14BE9,
- 0x1917A60,
- 0xFEC46D2,
- 0x10000000,
- 0x0,
- 0xFB14BE7,
- 0x31F1708,
- 0xEC835E6,
- 0x61F78AC,
- 0xD4DB312,
- 0x8E39DA0,
- 0xB504F2F,
- 0xB504F37,
- 0x8E39D96,
- 0xD4DB318,
- 0x61F78A1,
- 0xEC835EA,
- 0x31F16FD,
- 0xFB14BE9,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFCE0E8EC,
- 0xFB14BE5,
- 0xF9E08749,
- 0xEC835E1,
- 0xF71C6256,
- 0xD4DB30B,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF2B24CE1,
- 0x8E39D8C,
- 0xF137CA11,
- 0x61F7896,
- 0xF04EB414,
- 0x31F16F1,
- 0x10000000,
- 0x0,
- 0xF4FA0AB,
- 0x4A5018B,
- 0xD4DB314,
- 0x8E39D9D,
- 0xA267992,
- 0xC5E4035,
- 0x61F78A8,
- 0xEC835E7,
- 0x1917A6A,
- 0xFEC46D2,
- 0xFCE0E8F8,
- 0xFB14BE7,
- 0xF87528B1,
- 0xE1C5978,
- 0xF4AFB0CC,
- 0xB504F32,
- 0xF1E3A687,
- 0x78AD74C,
- 0xF04EB418,
- 0x31F1705,
- 0xF013B92F,
- 0xFE6E8593,
- 0xF137CA1A,
- 0xF9E08755,
- 0xF3A1BFCD,
- 0xF5D9866C,
- 0xF71C6266,
- 0xF2B24CEA,
- 0xFB5AFE78,
- 0xF0B05F54,
- 0x10000000,
- 0x0,
- 0xEC835E6,
- 0x61F78AC,
- 0xB504F2F,
- 0xB504F37,
- 0x61F78A1,
- 0xEC835EA,
- 0x10000000,
- 0x0,
- 0xB504F2F,
- 0xB504F37,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xF4AFB0C1,
- 0xB504F26,
- 0x10000000,
- 0x0,
- 0x61F78A8,
- 0xEC835E7,
- 0xF4AFB0CC,
- 0xB504F32,
- 0xF137CA1A,
- 0xF9E08755,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x3,
- 0xF0000001,
+complex_t cfft_tab_512[] =
+{
+ { 0x10000000, 0x0 },
+ { 0xFFFB110, 0x3243A4 },
+ { 0xFFEC430, 0x648558 },
+ { 0xFFD3970, 0x96C32C },
+ { 0xFFB10F0, 0xC8FB30 },
+ { 0xFF84AB0, 0xFB2B75 },
+ { 0xFF4E6D0, 0x12D520A },
+ { 0xFF0E580, 0x15F6D02 },
+ { 0xFEC46D0, 0x1917A6C },
+ { 0xFE70B00, 0x1C3785C },
+ { 0xFE13240, 0x1F564E6 },
+ { 0xFDABCC0, 0x2273E1C },
+ { 0xFD3AAC0, 0x259020C },
+ { 0xFCBFC90, 0x28AAED8 },
+ { 0xFC3B280, 0x2BC428C },
+ { 0xFBACCD0, 0x2EDBB3C },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xFA73020, 0x3505408 },
+ { 0xF9C79D0, 0x381704C },
+ { 0xF912980, 0x3B26A00 },
+ { 0xF853F80, 0x3E33F34 },
+ { 0xF78BC50, 0x413EE08 },
+ { 0xF6BA070, 0x44474A0 },
+ { 0xF5DEC60, 0x474D110 },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xF40BDD0, 0x4D50430 },
+ { 0xF314470, 0x504D728 },
+ { 0xF213520, 0x5347898 },
+ { 0xF109080, 0x563E6A0 },
+ { 0xEFF5730, 0x5931F78 },
+ { 0xEED89E0, 0x5C22150 },
+ { 0xEDB2930, 0x5F0EA50 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xEB4B0C0, 0x64DCAA0 },
+ { 0xEA09A60, 0x67BDE58 },
+ { 0xE8BF3B0, 0x6A9B210 },
+ { 0xE76BD80, 0x6D74400 },
+ { 0xE60F880, 0x7049278 },
+ { 0xE4AA590, 0x7319BA8 },
+ { 0xE33C5A0, 0x75E5DD8 },
+ { 0xE1C5970, 0x78AD750 },
+ { 0xE046210, 0x7B70650 },
+ { 0xDEBE050, 0x7E2E940 },
+ { 0xDD2D530, 0x80E7E40 },
+ { 0xDB941A0, 0x839C3D0 },
+ { 0xD9F26A0, 0x864B830 },
+ { 0xD848530, 0x88F59B0 },
+ { 0xD695E50, 0x8B9A6B0 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xD318480, 0x90D3CD0 },
+ { 0xD14D3D0, 0x93682B0 },
+ { 0xCF7A1F0, 0x95F6DA0 },
+ { 0xCD9F020, 0x987FC00 },
+ { 0xCBBBF80, 0x9B02C50 },
+ { 0xC9D1120, 0x9D7FD20 },
+ { 0xC7DE650, 0x9FF6CB0 },
+ { 0xC5E4030, 0xA2679A0 },
+ { 0xC3E2000, 0xA4D2250 },
+ { 0xC1D8700, 0xA736560 },
+ { 0xBFC7670, 0xA994150 },
+ { 0xBDAEF90, 0xABEB4A0 },
+ { 0xBB8F3B0, 0xAE3BDE0 },
+ { 0xB968420, 0xB085BB0 },
+ { 0xB73A220, 0xB2C8CA0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xB2C8C90, 0xB73A230 },
+ { 0xB085BA0, 0xB968420 },
+ { 0xAE3BDE0, 0xBB8F3B0 },
+ { 0xABEB490, 0xBDAEFA0 },
+ { 0xA994140, 0xBFC7670 },
+ { 0xA736550, 0xC1D8710 },
+ { 0xA4D2250, 0xC3E2010 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x9FF6CA0, 0xC7DE660 },
+ { 0x9D7FD10, 0xC9D1120 },
+ { 0x9B02C50, 0xCBBBF80 },
+ { 0x987FC00, 0xCD9F020 },
+ { 0x95F6D90, 0xCF7A1F0 },
+ { 0x93682A0, 0xD14D3D0 },
+ { 0x90D3CD0, 0xD318490 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x8B9A6B0, 0xD695E50 },
+ { 0x88F59B0, 0xD848530 },
+ { 0x864B820, 0xD9F26A0 },
+ { 0x839C3C0, 0xDB941B0 },
+ { 0x80E7E50, 0xDD2D530 },
+ { 0x7E2E938, 0xDEBE050 },
+ { 0x7B70648, 0xE046220 },
+ { 0x78AD738, 0xE1C5980 },
+ { 0x75E5DD8, 0xE33C5A0 },
+ { 0x7319BA0, 0xE4AA590 },
+ { 0x7049268, 0xE60F880 },
+ { 0x6D74408, 0xE76BD80 },
+ { 0x6A9B208, 0xE8BF3C0 },
+ { 0x67BDE48, 0xEA09A70 },
+ { 0x64DCA80, 0xEB4B0C0 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x5F0EA40, 0xEDB2930 },
+ { 0x5C22138, 0xEED89E0 },
+ { 0x5931F78, 0xEFF5730 },
+ { 0x563E698, 0xF109080 },
+ { 0x5347880, 0xF213530 },
+ { 0x504D710, 0xF314480 },
+ { 0x4D50430, 0xF40BDD0 },
+ { 0x4A50180, 0xF4FA0B0 },
+ { 0x474D0F8, 0xF5DEC70 },
+ { 0x4447498, 0xF6BA070 },
+ { 0x413EE00, 0xF78BC50 },
+ { 0x3E33F20, 0xF853F80 },
+ { 0x3B26A04, 0xF912980 },
+ { 0x3817048, 0xF9C79D0 },
+ { 0x35053F8, 0xFA73020 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0x2EDBB3C, 0xFBACCD0 },
+ { 0x2BC4280, 0xFC3B280 },
+ { 0x28AAEC4, 0xFCBFC90 },
+ { 0x2590214, 0xFD3AAC0 },
+ { 0x2273E14, 0xFDABCC0 },
+ { 0x1F564D8, 0xFE13240 },
+ { 0x1C37844, 0xFE70B00 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0x15F6CF6, 0xFF0E580 },
+ { 0x12D51F6, 0xFF4E6D0 },
+ { 0xFB2B77, 0xFF84AB0 },
+ { 0xC8FB29, 0xFFB10F0 },
+ { 0x96C31C, 0xFFD3980 },
+ { 0x64853F, 0xFFEC430 },
+ { 0x3243A1, 0xFFFB110 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFFCDBC47, 0xFFFB110 },
+ { 0xFF9B7AAA, 0xFFEC430 },
+ { 0xFF693CCD, 0xFFD3970 },
+ { 0xFF3704BF, 0xFFB10F0 },
+ { 0xFF04D472, 0xFF84AB0 },
+ { 0xFED2ADF4, 0xFF4E6D0 },
+ { 0xFEA092F2, 0xFF0E580 },
+ { 0xFE6E857E, 0xFEC46D0 },
+ { 0xFE3C87A4, 0xFE70B00 },
+ { 0xFE0A9B12, 0xFE13230 },
+ { 0xFDD8C1D4, 0xFDABCB0 },
+ { 0xFDA6FDD8, 0xFD3AAC0 },
+ { 0xFD755124, 0xFCBFC90 },
+ { 0xFD43BD68, 0xFC3B280 },
+ { 0xFD1244AC, 0xFBACCD0 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xFCAFABF0, 0xFA73020 },
+ { 0xFC7E8FA0, 0xF9C79D0 },
+ { 0xFC4D95E8, 0xF912970 },
+ { 0xFC1CC0CC, 0xF853F80 },
+ { 0xFBEC11F0, 0xF78BC50 },
+ { 0xFBBB8B50, 0xF6BA070 },
+ { 0xFB8B2EF0, 0xF5DEC60 },
+ { 0xFB5AFE68, 0xF4FA0A0 },
+ { 0xFB2AFBB8, 0xF40BDD0 },
+ { 0xFAFB28E0, 0xF314470 },
+ { 0xFACB8768, 0xF213520 },
+ { 0xFA9C1950, 0xF109080 },
+ { 0xFA6CE070, 0xEFF5720 },
+ { 0xFA3DDEB0, 0xEED89E0 },
+ { 0xFA0F15A8, 0xEDB2930 },
+ { 0xF9E08740, 0xEC835E0 },
+ { 0xF9B23568, 0xEB4B0C0 },
+ { 0xF98421A8, 0xEA09A60 },
+ { 0xF9564E00, 0xE8BF3C0 },
+ { 0xF928BC00, 0xE76BD80 },
+ { 0xF8FB6D88, 0xE60F870 },
+ { 0xF8CE6450, 0xE4AA590 },
+ { 0xF8A1A210, 0xE33C590 },
+ { 0xF8752898, 0xE1C5970 },
+ { 0xF848F988, 0xE046200 },
+ { 0xF81D16D0, 0xDEBE060 },
+ { 0xF7F181C0, 0xDD2D530 },
+ { 0xF7C63C30, 0xDB941A0 },
+ { 0xF79B47D0, 0xD9F2690 },
+ { 0xF770A640, 0xD848520 },
+ { 0xF7465930, 0xD695E40 },
+ { 0xF71C6240, 0xD4DB300 },
+ { 0xF6F2C340, 0xD318490 },
+ { 0xF6C97D60, 0xD14D3D0 },
+ { 0xF6A09260, 0xCF7A1F0 },
+ { 0xF67803F0, 0xCD9F020 },
+ { 0xF64FD390, 0xCBBBF70 },
+ { 0xF62802D0, 0xC9D1110 },
+ { 0xF6009330, 0xC7DE630 },
+ { 0xF5D98670, 0xC5E4040 },
+ { 0xF5B2DDB0, 0xC3E2000 },
+ { 0xF58C9AA0, 0xC1D8700 },
+ { 0xF566BEB0, 0xBFC7660 },
+ { 0xF5414B50, 0xBDAEF80 },
+ { 0xF51C4200, 0xBB8F390 },
+ { 0xF4F7A430, 0xB968400 },
+ { 0xF4D37370, 0xB73A230 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF48C5DD0, 0xB2C8C90 },
+ { 0xF4697BD0, 0xB085BA0 },
+ { 0xF4470C40, 0xAE3BDD0 },
+ { 0xF4251050, 0xABEB480 },
+ { 0xF4038970, 0xA994120 },
+ { 0xF3E27900, 0xA736560 },
+ { 0xF3C1DFF0, 0xA4D2250 },
+ { 0xF3A1BFC0, 0xA267990 },
+ { 0xF38219A0, 0x9FF6CA0 },
+ { 0xF362EED0, 0x9D7FD00 },
+ { 0xF3444070, 0x9B02C40 },
+ { 0xF3260FC0, 0x987FBD0 },
+ { 0xF3085E10, 0x95F6D90 },
+ { 0xF2EB2C30, 0x93682A0 },
+ { 0xF2CE7B70, 0x90D3CC0 },
+ { 0xF2B24CE0, 0x8E39D90 },
+ { 0xF296A1A0, 0x8B9A690 },
+ { 0xF27B7AC0, 0x88F5980 },
+ { 0xF260D940, 0x864B800 },
+ { 0xF246BE60, 0x839C3D0 },
+ { 0xF22D2AD0, 0x80E7E40 },
+ { 0xF2141FA0, 0x7E2E928 },
+ { 0xF1FB9DE0, 0x7B70640 },
+ { 0xF1E3A670, 0x78AD730 },
+ { 0xF1CC3A50, 0x75E5DB0 },
+ { 0xF1B55A70, 0x7319BB0 },
+ { 0xF19F0780, 0x7049278 },
+ { 0xF1894280, 0x6D743F8 },
+ { 0xF1740C40, 0x6A9B1F8 },
+ { 0xF15F6590, 0x67BDE38 },
+ { 0xF14B4F40, 0x64DCA78 },
+ { 0xF137CA00, 0x61F7880 },
+ { 0xF124D6D0, 0x5F0EA58 },
+ { 0xF1127620, 0x5C22150 },
+ { 0xF100A8D0, 0x5931F70 },
+ { 0xF0EF6F70, 0x563E690 },
+ { 0xF0DECAD0, 0x5347878 },
+ { 0xF0CEBB80, 0x504D700 },
+ { 0xF0BF4220, 0x4D50408 },
+ { 0xF0B05F50, 0x4A50198 },
+ { 0xF0A213A0, 0x474D110 },
+ { 0xF0945F90, 0x4447490 },
+ { 0xF08743B0, 0x413EDF0 },
+ { 0xF07AC080, 0x3E33F14 },
+ { 0xF06ED680, 0x3B269D8 },
+ { 0xF0638620, 0x3817020 },
+ { 0xF058CFE0, 0x350540C },
+ { 0xF04EB410, 0x31F1704 },
+ { 0xF0453330, 0x2EDBB30 },
+ { 0xF03C4D80, 0x2BC4274 },
+ { 0xF0340370, 0x28AAEB8 },
+ { 0xF02C5540, 0x25901E8 },
+ { 0xF0254340, 0x2273DE8 },
+ { 0xF01ECDD0, 0x1F564EC },
+ { 0xF018F500, 0x1C3785A },
+ { 0xF013B930, 0x1917A60 },
+ { 0xF00F1A80, 0x15F6CEA },
+ { 0xF00B1920, 0x12D51EA },
+ { 0xF007B550, 0xFB2B4B },
+ { 0xF004EF10, 0xC8FAFD },
+ { 0xF002C690, 0x96C330 },
+ { 0xF0013BD0, 0x648553 },
+ { 0xF0004EF0, 0x324395 },
+ { 0x10000000, 0x0 },
+ { 0xFFEC430, 0x648558 },
+ { 0xFFB10F0, 0xC8FB30 },
+ { 0xFF4E6D0, 0x12D520A },
+ { 0xFEC46D0, 0x1917A6C },
+ { 0xFE13240, 0x1F564E6 },
+ { 0xFD3AAC0, 0x259020C },
+ { 0xFC3B280, 0x2BC428C },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xF9C79D0, 0x381704C },
+ { 0xF853F80, 0x3E33F34 },
+ { 0xF6BA070, 0x44474A0 },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xF314470, 0x504D728 },
+ { 0xF109080, 0x563E6A0 },
+ { 0xEED89E0, 0x5C22150 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xEA09A60, 0x67BDE58 },
+ { 0xE76BD80, 0x6D74400 },
+ { 0xE4AA590, 0x7319BA8 },
+ { 0xE1C5970, 0x78AD750 },
+ { 0xDEBE050, 0x7E2E940 },
+ { 0xDB941A0, 0x839C3D0 },
+ { 0xD848530, 0x88F59B0 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xD14D3D0, 0x93682B0 },
+ { 0xCD9F020, 0x987FC00 },
+ { 0xC9D1120, 0x9D7FD20 },
+ { 0xC5E4030, 0xA2679A0 },
+ { 0xC1D8700, 0xA736560 },
+ { 0xBDAEF90, 0xABEB4A0 },
+ { 0xB968420, 0xB085BB0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xB085BA0, 0xB968420 },
+ { 0xABEB490, 0xBDAEFA0 },
+ { 0xA736550, 0xC1D8710 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x9D7FD10, 0xC9D1120 },
+ { 0x987FC00, 0xCD9F020 },
+ { 0x93682A0, 0xD14D3D0 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x88F59B0, 0xD848530 },
+ { 0x839C3C0, 0xDB941B0 },
+ { 0x7E2E938, 0xDEBE050 },
+ { 0x78AD738, 0xE1C5980 },
+ { 0x7319BA0, 0xE4AA590 },
+ { 0x6D74408, 0xE76BD80 },
+ { 0x67BDE48, 0xEA09A70 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x5C22138, 0xEED89E0 },
+ { 0x563E698, 0xF109080 },
+ { 0x504D710, 0xF314480 },
+ { 0x4A50180, 0xF4FA0B0 },
+ { 0x4447498, 0xF6BA070 },
+ { 0x3E33F20, 0xF853F80 },
+ { 0x3817048, 0xF9C79D0 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0x2BC4280, 0xFC3B280 },
+ { 0x2590214, 0xFD3AAC0 },
+ { 0x1F564D8, 0xFE13240 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0x12D51F6, 0xFF4E6D0 },
+ { 0xC8FB29, 0xFFB10F0 },
+ { 0x64853F, 0xFFEC430 },
+ { 0x10000000, 0x0 },
+ { 0xFFB10F0, 0xC8FB30 },
+ { 0xFEC46D0, 0x1917A6C },
+ { 0xFD3AAC0, 0x259020C },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xF853F80, 0x3E33F34 },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xF109080, 0x563E6A0 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xE76BD80, 0x6D74400 },
+ { 0xE1C5970, 0x78AD750 },
+ { 0xDB941A0, 0x839C3D0 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xCD9F020, 0x987FC00 },
+ { 0xC5E4030, 0xA2679A0 },
+ { 0xBDAEF90, 0xABEB4A0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xABEB490, 0xBDAEFA0 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x987FC00, 0xCD9F020 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x839C3C0, 0xDB941B0 },
+ { 0x78AD738, 0xE1C5980 },
+ { 0x6D74408, 0xE76BD80 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x563E698, 0xF109080 },
+ { 0x4A50180, 0xF4FA0B0 },
+ { 0x3E33F20, 0xF853F80 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0x2590214, 0xFD3AAC0 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0xC8FB29, 0xFFB10F0 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFF3704BF, 0xFFB10F0 },
+ { 0xFE6E857E, 0xFEC46D0 },
+ { 0xFDA6FDD8, 0xFD3AAC0 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xFC1CC0CC, 0xF853F80 },
+ { 0xFB5AFE68, 0xF4FA0A0 },
+ { 0xFA9C1950, 0xF109080 },
+ { 0xF9E08740, 0xEC835E0 },
+ { 0xF928BC00, 0xE76BD80 },
+ { 0xF8752898, 0xE1C5970 },
+ { 0xF7C63C30, 0xDB941A0 },
+ { 0xF71C6240, 0xD4DB300 },
+ { 0xF67803F0, 0xCD9F020 },
+ { 0xF5D98670, 0xC5E4040 },
+ { 0xF5414B50, 0xBDAEF80 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF4251050, 0xABEB480 },
+ { 0xF3A1BFC0, 0xA267990 },
+ { 0xF3260FC0, 0x987FBD0 },
+ { 0xF2B24CE0, 0x8E39D90 },
+ { 0xF246BE60, 0x839C3D0 },
+ { 0xF1E3A670, 0x78AD730 },
+ { 0xF1894280, 0x6D743F8 },
+ { 0xF137CA00, 0x61F7880 },
+ { 0xF0EF6F70, 0x563E690 },
+ { 0xF0B05F50, 0x4A50198 },
+ { 0xF07AC080, 0x3E33F14 },
+ { 0xF04EB410, 0x31F1704 },
+ { 0xF02C5540, 0x25901E8 },
+ { 0xF013B930, 0x1917A60 },
+ { 0xF004EF10, 0xC8FAFD },
+ { 0x10000000, 0x0 },
+ { 0xFF4E6D0, 0x12D520A },
+ { 0xFD3AAC0, 0x259020C },
+ { 0xF9C79D0, 0x381704C },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xEED89E0, 0x5C22150 },
+ { 0xE76BD80, 0x6D74400 },
+ { 0xDEBE050, 0x7E2E940 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xC9D1130, 0x9D7FD10 },
+ { 0xBDAEF90, 0xABEB4A0 },
+ { 0xB085BA0, 0xB968420 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x93682B0, 0xD14D3D0 },
+ { 0x839C3C0, 0xDB941B0 },
+ { 0x7319BA0, 0xE4AA590 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x504D728, 0xF314470 },
+ { 0x3E33F40, 0xF853F80 },
+ { 0x2BC4280, 0xFC3B280 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0x64855F, 0xFFEC430 },
+ { 0xFF3704BF, 0xFFB10F0 },
+ { 0xFE0A9B12, 0xFE13230 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xFBBB8B70, 0xF6BA070 },
+ { 0xFA9C1970, 0xF109080 },
+ { 0xF98421A8, 0xEA09A60 },
+ { 0xF8752898, 0xE1C5970 },
+ { 0xF770A640, 0xD848520 },
+ { 0xF67803F0, 0xCD9F020 },
+ { 0xF58C9AA0, 0xC1D8700 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF3E27900, 0xA736560 },
+ { 0xF3260FE0, 0x987FC10 },
+ { 0xF27B7AE0, 0x88F59C0 },
+ { 0xF1E3A690, 0x78AD768 },
+ { 0xF15F6590, 0x67BDE38 },
+ { 0xF0EF6F70, 0x563E690 },
+ { 0xF0945F90, 0x4447490 },
+ { 0xF04EB410, 0x31F1704 },
+ { 0xF01ECDD0, 0x1F564EC },
+ { 0xF004EF10, 0xC8FB3D },
+ { 0xF0013BD0, 0xFF9B7ABE },
+ { 0xF013B930, 0xFE6E8572 },
+ { 0xF03C4D80, 0xFD43BD5C },
+ { 0xF07AC080, 0xFC1CC0C0 },
+ { 0xF0CEBB90, 0xFAFB28D0 },
+ { 0xF137CA20, 0xF9E08758 },
+ { 0xF1B55A70, 0xF8CE6460 },
+ { 0xF246BE50, 0xF7C63C40 },
+ { 0xF2EB2C20, 0xF6C97D70 },
+ { 0xF3A1BFB0, 0xF5D98680 },
+ { 0xF4697BF0, 0xF4F7A440 },
+ { 0xF5414B70, 0xF4251060 },
+ { 0xF62802F0, 0xF362EED0 },
+ { 0xF71C62A0, 0xF2B24CC0 },
+ { 0xF81D16C8, 0xF2141FB0 },
+ { 0xF928BC28, 0xF1894270 },
+ { 0xFA3DDEA0, 0xF1127630 },
+ { 0xFB5AFE98, 0xF0B05F50 },
+ { 0xFC7E8F90, 0xF0638630 },
+ { 0xFDA6FE04, 0xF02C5540 },
+ { 0xFED2ADC2, 0xF00B1930 },
+ { 0x10000000, 0x0 },
+ { 0xFEC46D0, 0x1917A6C },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xE1C5970, 0x78AD750 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xC5E4030, 0xA2679A0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x78AD738, 0xE1C5980 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x4A50180, 0xF4FA0B0 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0x10000000, 0x0 },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xF9E08740, 0xEC835E0 },
+ { 0xF71C6240, 0xD4DB300 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF2B24CE0, 0x8E39D90 },
+ { 0xF137CA00, 0x61F7880 },
+ { 0xF04EB410, 0x31F1704 },
+ { 0x10000000, 0x0 },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xF8752898, 0xE1C5970 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF1E3A690, 0x78AD768 },
+ { 0xF04EB410, 0x31F1704 },
+ { 0xF013B930, 0xFE6E8572 },
+ { 0xF137CA20, 0xF9E08758 },
+ { 0xF3A1BFB0, 0xF5D98680 },
+ { 0xF71C62A0, 0xF2B24CC0 },
+ { 0xFB5AFE98, 0xF0B05F50 },
+ { 0x10000000, 0x0 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x10000000, 0x0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0x10000000, 0x0 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF137CA20, 0xF9E08758 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x3, 0xF0000000 }
};
-real_t cfft_tab_480[] =
+complex_t cfft_tab_480[] =
{
- 0x10000000,
- 0x0,
- 0xFFFA62A,
- 0x359D6F,
- 0xFFE98AD,
- 0x6B3885,
- 0xFFCD795,
- 0xA0CEE6,
- 0xFFA62F6,
- 0xD65E3A,
- 0xFF73AEB,
- 0x10BE427,
- 0xFF35F97,
- 0x1415E53,
- 0xFEED125,
- 0x176CA67,
- 0xFE98FCA,
- 0x1AC260A,
- 0xFE39BBF,
- 0x1E16EE5,
- 0xFDCF549,
- 0x216A2A2,
- 0xFD59CB1,
- 0x24BBEEC,
- 0xFCD9249,
- 0x280C16E,
- 0xFC4D66D,
- 0x2B5A7D4,
- 0xFBB697F,
- 0x2EA6FCD,
- 0xFB14BE7,
- 0x31F1708,
- 0xFA67E18,
- 0x3539B37,
- 0xF9B008C,
- 0x387FA0A,
- 0xF8ED3C2,
- 0x3BC3136,
- 0xF81F844,
- 0x3F03E71,
- 0xF746EA3,
- 0x4241F72,
- 0xF663775,
- 0x457D1F2,
- 0xF57535C,
- 0x48B53AE,
- 0xF47C2FD,
- 0x4BEA263,
- 0xF378708,
- 0x4F1BBD0,
- 0xF26A034,
- 0x5249DB7,
- 0xF150F3D,
- 0x55745DE,
- 0xF02D4EA,
- 0x589B20C,
- 0xEEFF206,
- 0x5BBE00A,
- 0xEDC6766,
- 0x5EDCDA5,
- 0xEC835E6,
- 0x61F78AC,
- 0xEB35E68,
- 0x650DEF1,
- 0xE9DE1D6,
- 0x681FE4B,
- 0xE87C121,
- 0x6B2D490,
- 0xE70FD42,
- 0x6E35F9D,
- 0xE599739,
- 0x7139D51,
- 0xE41900D,
- 0x7438B8D,
- 0xE28E8CA,
- 0x7732839,
- 0xE0FA286,
- 0x7A2713C,
- 0xDF5BE5D,
- 0x7D16485,
- 0xDDB3D72,
- 0x8000003,
- 0xDC020ED,
- 0x82E41AC,
- 0xDA46A01,
- 0x85C2777,
- 0xD8819E3,
- 0x889AF63,
- 0xD6B31D1,
- 0x8B6D76F,
- 0xD4DB312,
- 0x8E39DA0,
- 0xD2F9EEE,
- 0x9100000,
- 0xD10F6B9,
- 0x93BFC9C,
- 0xCF1BBCB,
- 0x9679186,
- 0xCD1EF81,
- 0x992BCD4,
- 0xCB19342,
- 0x9BD7CA3,
- 0xC90A879,
- 0x9E7CF12,
- 0xC6F3097,
- 0xA11B246,
- 0xC4D2D14,
- 0xA3B2468,
- 0xC2A9F6E,
- 0xA6423A7,
- 0xC07892A,
- 0xA8CAE36,
- 0xBE3EBD0,
- 0xAB4C24F,
- 0xBBFC8F1,
- 0xADC5E2F,
- 0xB9B2224,
- 0xB03801A,
- 0xB75F902,
- 0xB2A2658,
- 0xB504F2F,
- 0xB504F37,
- 0xB2A2650,
- 0xB75F90A,
- 0xB038012,
- 0xB9B222C,
- 0xADC5E27,
- 0xBBFC8F9,
- 0xAB4C246,
- 0xBE3EBD8,
- 0xA8CAE2D,
- 0xC078931,
- 0xA64239E,
- 0xC2A9F76,
- 0xA3B245F,
- 0xC4D2D1B,
- 0xA11B23C,
- 0xC6F309E,
- 0x9E7CF09,
- 0xC90A880,
- 0x9BD7C9A,
- 0xCB19349,
- 0x992BCCB,
- 0xCD1EF88,
- 0x967917C,
- 0xCF1BBD1,
- 0x93BFC92,
- 0xD10F6C0,
- 0x90FFFF6,
- 0xD2F9EF5,
- 0x8E39D96,
- 0xD4DB318,
- 0x8B6D765,
- 0xD6B31D8,
- 0x889AF59,
- 0xD8819E9,
- 0x85C276D,
- 0xDA46A07,
- 0x82E41A2,
- 0xDC020F3,
- 0x7FFFFF9,
- 0xDDB3D78,
- 0x7D1647A,
- 0xDF5BE63,
- 0x7A27132,
- 0xE0FA28C,
- 0x773282E,
- 0xE28E8CF,
- 0x7438B83,
- 0xE419012,
- 0x7139D46,
- 0xE59973F,
- 0x6E35F92,
- 0xE70FD48,
- 0x6B2D485,
- 0xE87C126,
- 0x681FE40,
- 0xE9DE1DA,
- 0x650DEE7,
- 0xEB35E6C,
- 0x61F78A1,
- 0xEC835EA,
- 0x5EDCD9A,
- 0xEDC676B,
- 0x5BBDFFF,
- 0xEEFF20A,
- 0x589B201,
- 0xF02D4EE,
- 0x55745D3,
- 0xF150F41,
- 0x5249DAC,
- 0xF26A038,
- 0x4F1BBC4,
- 0xF37870C,
- 0x4BEA257,
- 0xF47C301,
- 0x48B53A3,
- 0xF57535F,
- 0x457D1E7,
- 0xF663778,
- 0x4241F66,
- 0xF746EA6,
- 0x3F03E65,
- 0xF81F847,
- 0x3BC312A,
- 0xF8ED3C5,
- 0x387F9FE,
- 0xF9B008E,
- 0x3539B2B,
- 0xFA67E1B,
- 0x31F16FD,
- 0xFB14BE9,
- 0x2EA6FC2,
- 0xFBB6981,
- 0x2B5A7C8,
- 0xFC4D66F,
- 0x280C162,
- 0xFCD924B,
- 0x24BBEE0,
- 0xFD59CB2,
- 0x216A297,
- 0xFDCF54A,
- 0x1E16EDA,
- 0xFE39BC1,
- 0x1AC25FE,
- 0xFE98FCB,
- 0x176CA5B,
- 0xFEED126,
- 0x1415E48,
- 0xFF35F97,
- 0x10BE41B,
- 0xFF73AEB,
- 0xD65E2E,
- 0xFFA62F7,
- 0xA0CEDB,
- 0xFFCD796,
- 0x6B3879,
- 0xFFE98AE,
- 0x359D63,
- 0xFFFA62A,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFFCA6285,
- 0xFFFA62A,
- 0xFF94C770,
- 0xFFE98AD,
- 0xFF5F310E,
- 0xFFCD795,
- 0xFF29A1BA,
- 0xFFA62F5,
- 0xFEF41BCD,
- 0xFF73AEA,
- 0xFEBEA1A1,
- 0xFF35F96,
- 0xFE89358D,
- 0xFEED124,
- 0xFE53D9EA,
- 0xFE98FC9,
- 0xFE1E910F,
- 0xFE39BBE,
- 0xFDE95D52,
- 0xFDCF547,
- 0xFDB44108,
- 0xFD59CAF,
- 0xFD7F3E87,
- 0xFCD9248,
- 0xFD4A5820,
- 0xFC4D66B,
- 0xFD159027,
- 0xFBB697D,
- 0xFCE0E8EC,
- 0xFB14BE5,
- 0xFCAC64BE,
- 0xFA67E16,
- 0xFC7805EB,
- 0xF9B0089,
- 0xFC43CEBF,
- 0xF8ED3BF,
- 0xFC0FC184,
- 0xF81F841,
- 0xFBDBE083,
- 0xF746EA0,
- 0xFBA82E02,
- 0xF663772,
- 0xFB74AC47,
- 0xF575358,
- 0xFB415D92,
- 0xF47C2FA,
- 0xFB0E4425,
- 0xF378705,
- 0xFADB623E,
- 0xF26A030,
- 0xFAA8BA17,
- 0xF150F39,
- 0xFA764DE9,
- 0xF02D4E6,
- 0xFA441FEB,
- 0xEEFF202,
- 0xFA123250,
- 0xEDC6762,
- 0xF9E08749,
- 0xEC835E1,
- 0xF9AF2104,
- 0xEB35E63,
- 0xF97E01AB,
- 0xE9DE1D1,
- 0xF94D2B65,
- 0xE87C11C,
- 0xF91CA058,
- 0xE70FD3D,
- 0xF8EC62A5,
- 0xE599734,
- 0xF8BC7468,
- 0xE419007,
- 0xF88CD7BD,
- 0xE28E8C4,
- 0xF85D8EBA,
- 0xE0FA281,
- 0xF82E9B71,
- 0xDF5BE57,
- 0xF7FFFFF3,
- 0xDDB3D6C,
- 0xF7D1BE4A,
- 0xDC020E7,
- 0xF7A3D87F,
- 0xDA469FB,
- 0xF7765093,
- 0xD8819DC,
- 0xF7492887,
- 0xD6B31CB,
- 0xF71C6256,
- 0xD4DB30B,
- 0xF6EFFFF7,
- 0xD2F9EE8,
- 0xF6C4035B,
- 0xD10F6B2,
- 0xF6986E71,
- 0xCF1BBC4,
- 0xF66D4322,
- 0xCD1EF7A,
- 0xF6428354,
- 0xCB1933B,
- 0xF61830E5,
- 0xC90A872,
- 0xF5EE4DB1,
- 0xC6F308F,
- 0xF5C4DB8F,
- 0xC4D2D0C,
- 0xF59BDC51,
- 0xC2A9F67,
- 0xF57351C1,
- 0xC078922,
- 0xF54B3DA8,
- 0xBE3EBC8,
- 0xF523A1C8,
- 0xBBFC8E9,
- 0xF4FC7FDD,
- 0xB9B221C,
- 0xF4D5D9A0,
- 0xB75F8FA,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF48A06ED,
- 0xB2A2647,
- 0xF464DDCC,
- 0xB038009,
- 0xF44036FF,
- 0xADC5E1E,
- 0xF41C1420,
- 0xAB4C23E,
- 0xF3F876C7,
- 0xA8CAE24,
- 0xF3D56083,
- 0xA642395,
- 0xF3B2D2DD,
- 0xA3B2456,
- 0xF390CF5A,
- 0xA11B233,
- 0xF36F5779,
- 0x9E7CF00,
- 0xF34E6CB0,
- 0x9BD7C91,
- 0xF32E1071,
- 0x992BCC2,
- 0xF30E4428,
- 0x9679173,
- 0xF2EF0939,
- 0x93BFC88,
- 0xF2D06105,
- 0x90FFFEC,
- 0xF2B24CE1,
- 0x8E39D8C,
- 0xF294CE22,
- 0x8B6D75B,
- 0xF277E611,
- 0x889AF4F,
- 0xF25B95F3,
- 0x85C2763,
- 0xF23FDF07,
- 0x82E4197,
- 0xF224C283,
- 0x7FFFFEF,
- 0xF20A4197,
- 0x7D16470,
- 0xF1F05D6F,
- 0x7A27128,
- 0xF1D7172B,
- 0x7732824,
- 0xF1BE6FE9,
- 0x7438B79,
- 0xF1A668BC,
- 0x7139D3C,
- 0xF18F02B3,
- 0x6E35F88,
- 0xF1783ED5,
- 0x6B2D47B,
- 0xF1621E21,
- 0x681FE35,
- 0xF14CA18F,
- 0x650DEDC,
- 0xF137CA11,
- 0x61F7896,
- 0xF1239891,
- 0x5EDCD8F,
- 0xF1100DF2,
- 0x5BBDFF4,
- 0xF0FD2B0E,
- 0x589B1F6,
- 0xF0EAF0BB,
- 0x55745C8,
- 0xF0D95FC5,
- 0x5249DA1,
- 0xF0C878F0,
- 0x4F1BBB9,
- 0xF0B83CFC,
- 0x4BEA24C,
- 0xF0A8AC9E,
- 0x48B5398,
- 0xF099C884,
- 0x457D1DC,
- 0xF08B9157,
- 0x4241F5B,
- 0xF07E07B6,
- 0x3F03E5A,
- 0xF0712C38,
- 0x3BC311F,
- 0xF064FF6F,
- 0x387F9F3,
- 0xF05981E3,
- 0x3539B20,
- 0xF04EB414,
- 0x31F16F1,
- 0xF044967D,
- 0x2EA6FB6,
- 0xF03B298F,
- 0x2B5A7BD,
- 0xF0326DB3,
- 0x280C156,
- 0xF02A634C,
- 0x24BBED5,
- 0xF0230AB4,
- 0x216A28B,
- 0xF01C643E,
- 0x1E16ECE,
- 0xF0167034,
- 0x1AC25F3,
- 0xF0112ED9,
- 0x176CA50,
- 0xF00CA068,
- 0x1415E3C,
- 0xF008C514,
- 0x10BE40F,
- 0xF0059D09,
- 0xD65E23,
- 0xF003286A,
- 0xA0CECF,
- 0xF0016752,
- 0x6B386D,
- 0xF00059D6,
- 0x359D58,
- 0x10000000,
- 0x0,
- 0xFFE98AD,
- 0x6B3885,
- 0xFFA62F6,
- 0xD65E3A,
- 0xFF35F97,
- 0x1415E53,
- 0xFE98FCA,
- 0x1AC260A,
- 0xFDCF549,
- 0x216A2A2,
- 0xFCD9249,
- 0x280C16E,
- 0xFBB697F,
- 0x2EA6FCD,
- 0xFA67E18,
- 0x3539B37,
- 0xF8ED3C2,
- 0x3BC3136,
- 0xF746EA3,
- 0x4241F72,
- 0xF57535C,
- 0x48B53AE,
- 0xF378708,
- 0x4F1BBD0,
- 0xF150F3D,
- 0x55745DE,
- 0xEEFF206,
- 0x5BBE00A,
- 0xEC835E6,
- 0x61F78AC,
- 0xE9DE1D6,
- 0x681FE4B,
- 0xE70FD42,
- 0x6E35F9D,
- 0xE41900D,
- 0x7438B8D,
- 0xE0FA286,
- 0x7A2713C,
- 0xDDB3D72,
- 0x8000003,
- 0xDA46A01,
- 0x85C2777,
- 0xD6B31D1,
- 0x8B6D76F,
- 0xD2F9EEE,
- 0x9100000,
- 0xCF1BBCB,
- 0x9679186,
- 0xCB19342,
- 0x9BD7CA3,
- 0xC6F3097,
- 0xA11B246,
- 0xC2A9F6E,
- 0xA6423A7,
- 0xBE3EBD0,
- 0xAB4C24F,
- 0xB9B2224,
- 0xB03801A,
- 0xB504F2F,
- 0xB504F37,
- 0xB038012,
- 0xB9B222C,
- 0xAB4C246,
- 0xBE3EBD8,
- 0xA64239E,
- 0xC2A9F76,
- 0xA11B23C,
- 0xC6F309E,
- 0x9BD7C9A,
- 0xCB19349,
- 0x967917C,
- 0xCF1BBD1,
- 0x90FFFF6,
- 0xD2F9EF5,
- 0x8B6D765,
- 0xD6B31D8,
- 0x85C276D,
- 0xDA46A07,
- 0x7FFFFF9,
- 0xDDB3D78,
- 0x7A27132,
- 0xE0FA28C,
- 0x7438B83,
- 0xE419012,
- 0x6E35F92,
- 0xE70FD48,
- 0x681FE40,
- 0xE9DE1DA,
- 0x61F78A1,
- 0xEC835EA,
- 0x5BBDFFF,
- 0xEEFF20A,
- 0x55745D3,
- 0xF150F41,
- 0x4F1BBC4,
- 0xF37870C,
- 0x48B53A3,
- 0xF57535F,
- 0x4241F66,
- 0xF746EA6,
- 0x3BC312A,
- 0xF8ED3C5,
- 0x3539B2B,
- 0xFA67E1B,
- 0x2EA6FC2,
- 0xFBB6981,
- 0x280C162,
- 0xFCD924B,
- 0x216A297,
- 0xFDCF54A,
- 0x1AC25FE,
- 0xFE98FCB,
- 0x1415E48,
- 0xFF35F97,
- 0xD65E2E,
- 0xFFA62F7,
- 0x6B3879,
- 0xFFE98AE,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFF94C770,
- 0xFFE98AD,
- 0xFF29A1BA,
- 0xFFA62F5,
- 0xFEBEA1A1,
- 0xFF35F96,
- 0xFE53D9EA,
- 0xFE98FC9,
- 0xFDE95D52,
- 0xFDCF547,
- 0xFD7F3E87,
- 0xFCD9248,
- 0xFD159027,
- 0xFBB697D,
- 0xFCAC64BE,
- 0xFA67E16,
- 0xFC43CEBF,
- 0xF8ED3BF,
- 0xFBDBE083,
- 0xF746EA0,
- 0xFB74AC47,
- 0xF575358,
- 0xFB0E4425,
- 0xF378705,
- 0xFAA8BA17,
- 0xF150F39,
- 0xFA441FEB,
- 0xEEFF202,
- 0xF9E08749,
- 0xEC835E1,
- 0xF97E01AB,
- 0xE9DE1D1,
- 0xF91CA058,
- 0xE70FD3D,
- 0xF8BC7468,
- 0xE419007,
- 0xF85D8EBA,
- 0xE0FA281,
- 0x10000000,
- 0x0,
- 0xFFA62F6,
- 0xD65E3A,
- 0xFE98FCA,
- 0x1AC260A,
- 0xFCD9249,
- 0x280C16E,
- 0xFA67E18,
- 0x3539B37,
- 0xF746EA3,
- 0x4241F72,
- 0xF378708,
- 0x4F1BBD0,
- 0xEEFF206,
- 0x5BBE00A,
- 0xE9DE1D6,
- 0x681FE4B,
- 0xE41900D,
- 0x7438B8D,
- 0xDDB3D72,
- 0x8000003,
- 0xD6B31D1,
- 0x8B6D76F,
- 0xCF1BBCB,
- 0x9679186,
- 0xC6F3097,
- 0xA11B246,
- 0xBE3EBD0,
- 0xAB4C24F,
- 0xB504F2F,
- 0xB504F37,
- 0xAB4C246,
- 0xBE3EBD8,
- 0xA11B23C,
- 0xC6F309E,
- 0x967917C,
- 0xCF1BBD1,
- 0x8B6D765,
- 0xD6B31D8,
- 0x7FFFFF9,
- 0xDDB3D78,
- 0x7438B83,
- 0xE419012,
- 0x681FE40,
- 0xE9DE1DA,
- 0x5BBDFFF,
- 0xEEFF20A,
- 0x4F1BBC4,
- 0xF37870C,
- 0x4241F66,
- 0xF746EA6,
- 0x3539B2B,
- 0xFA67E1B,
- 0x280C162,
- 0xFCD924B,
- 0x1AC25FE,
- 0xFE98FCB,
- 0xD65E2E,
- 0xFFA62F7,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFF29A1BA,
- 0xFFA62F5,
- 0xFE53D9EA,
- 0xFE98FC9,
- 0xFD7F3E87,
- 0xFCD9248,
- 0xFCAC64BE,
- 0xFA67E16,
- 0xFBDBE083,
- 0xF746EA0,
- 0xFB0E4425,
- 0xF378705,
- 0xFA441FEB,
- 0xEEFF202,
- 0xF97E01AB,
- 0xE9DE1D1,
- 0xF8BC7468,
- 0xE419007,
- 0xF7FFFFF3,
- 0xDDB3D6C,
- 0xF7492887,
- 0xD6B31CB,
- 0xF6986E71,
- 0xCF1BBC4,
- 0xF5EE4DB1,
- 0xC6F308F,
- 0xF54B3DA8,
- 0xBE3EBC8,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF41C1420,
- 0xAB4C23E,
- 0xF390CF5A,
- 0xA11B233,
- 0xF30E4428,
- 0x9679173,
- 0xF294CE22,
- 0x8B6D75B,
- 0xF224C283,
- 0x7FFFFEF,
- 0xF1BE6FE9,
- 0x7438B79,
- 0xF1621E21,
- 0x681FE35,
- 0xF1100DF2,
- 0x5BBDFF4,
- 0xF0C878F0,
- 0x4F1BBB9,
- 0xF08B9157,
- 0x4241F5B,
- 0xF05981E3,
- 0x3539B20,
- 0xF0326DB3,
- 0x280C156,
- 0xF0167034,
- 0x1AC25F3,
- 0xF0059D09,
- 0xD65E23,
- 0xF0000001,
- 0xFFFFFFE9,
- 0xF0059D0B,
- 0xFF29A1AE,
- 0xF0167039,
- 0xFE53D9DF,
- 0xF0326DBA,
- 0xFD7F3E7B,
- 0xF05981EC,
- 0xFCAC64B2,
- 0xF08B9163,
- 0xFBDBE078,
- 0xF0C878FF,
- 0xFB0E441A,
- 0xF1100E02,
- 0xFA441FE0,
- 0xF1621E34,
- 0xF97E01A0,
- 0xF1BE6FFE,
- 0xF8BC745E,
- 0xF224C29A,
- 0xF7FFFFE9,
- 0xF294CE3B,
- 0xF749287D,
- 0xF30E4443,
- 0xF6986E67,
- 0xF390CF78,
- 0xF5EE4DA8,
- 0xF41C1440,
- 0xF54B3DA0,
- 0xF4AFB0E2,
- 0xF4AFB0B9,
- 0xF54B3DCB,
- 0xF41C1419,
- 0xF5EE4DD6,
- 0xF390CF53,
- 0xF6986E97,
- 0xF30E4421,
- 0xF74928AF,
- 0xF294CE1B,
- 0x10000000,
- 0x0,
- 0xFF35F97,
- 0x1415E53,
- 0xFCD9249,
- 0x280C16E,
- 0xF8ED3C2,
- 0x3BC3136,
- 0xF378708,
- 0x4F1BBD0,
- 0xEC835E6,
- 0x61F78AC,
- 0xE41900D,
- 0x7438B8D,
- 0xDA46A01,
- 0x85C2777,
- 0xCF1BBCB,
- 0x9679186,
- 0xC2A9F6E,
- 0xA6423A7,
- 0xB504F2F,
- 0xB504F37,
- 0xA64239E,
- 0xC2A9F76,
- 0x967917C,
- 0xCF1BBD1,
- 0x85C276D,
- 0xDA46A07,
- 0x7438B83,
- 0xE419012,
- 0x61F78A1,
- 0xEC835EA,
- 0x4F1BBC4,
- 0xF37870C,
- 0x3BC312A,
- 0xF8ED3C5,
- 0x280C162,
- 0xFCD924B,
- 0x1415E48,
- 0xFF35F97,
- 0x10000000,
- 0x0,
- 0xFCD9249,
- 0x280C16E,
- 0xF378708,
- 0x4F1BBD0,
- 0xE41900D,
- 0x7438B8D,
- 0xCF1BBCB,
- 0x9679186,
- 0xB504F2F,
- 0xB504F37,
- 0x967917C,
- 0xCF1BBD1,
- 0x7438B83,
- 0xE419012,
- 0x4F1BBC4,
- 0xF37870C,
- 0x280C162,
- 0xFCD924B,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFD7F3E87,
- 0xFCD9248,
- 0xFB0E4425,
- 0xF378705,
- 0xF8BC7468,
- 0xE419007,
- 0xF6986E71,
- 0xCF1BBC4,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF30E4428,
- 0x9679173,
- 0xF1BE6FE9,
- 0x7438B79,
- 0xF0C878F0,
- 0x4F1BBB9,
- 0xF0326DB3,
- 0x280C156,
- 0x10000000,
- 0x0,
- 0xF8ED3C2,
- 0x3BC3136,
- 0xE41900D,
- 0x7438B8D,
- 0xC2A9F6E,
- 0xA6423A7,
- 0x967917C,
- 0xCF1BBD1,
- 0x61F78A1,
- 0xEC835EA,
- 0x280C162,
- 0xFCD924B,
- 0xFEBEA1A1,
- 0xFF35F96,
- 0xFB0E4425,
- 0xF378705,
- 0xF7A3D87F,
- 0xDA469FB,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF25B95F3,
- 0x85C2763,
- 0xF0C878F0,
- 0x4F1BBB9,
- 0xF00CA068,
- 0x1415E3C,
- 0xF0326DBA,
- 0xFD7F3E7B,
- 0xF137CA23,
- 0xF9E0873E,
- 0xF30E4443,
- 0xF6986E67,
- 0xF59BDC74,
- 0xF3D5607B,
- 0xF8BC7492,
- 0xF1BE6FE3,
- 0xFC43CEEC,
- 0xF0712C36,
- 0x10000000,
- 0x0,
- 0xF378708,
- 0x4F1BBD0,
- 0xCF1BBCB,
- 0x9679186,
- 0x967917C,
- 0xCF1BBD1,
- 0x4F1BBC4,
- 0xF37870C,
- 0x10000000,
- 0x0,
- 0xCF1BBCB,
- 0x9679186,
- 0x4F1BBC4,
- 0xF37870C,
- 0xFB0E4425,
- 0xF378705,
- 0xF30E4428,
- 0x9679173,
- 0x10000000,
- 0x0,
- 0x967917C,
- 0xCF1BBD1,
- 0xFB0E4425,
- 0xF378705,
- 0xF0C878F0,
- 0x4F1BBB9,
- 0xF30E4443,
- 0xF6986E67,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x4F1BBF1,
- 0xF0C87902,
+ { 0x10000000, 0x0 },
+ { 0xFFFA630, 0x359D6F },
+ { 0xFFE98B0, 0x6B3885 },
+ { 0xFFCD790, 0xA0CEE7 },
+ { 0xFFA62F0, 0xD65E3B },
+ { 0xFF73AF0, 0x10BE428 },
+ { 0xFF35F90, 0x1415E54 },
+ { 0xFEED120, 0x176CA68 },
+ { 0xFE98FD0, 0x1AC260A },
+ { 0xFE39BC0, 0x1E16EE6 },
+ { 0xFDCF550, 0x216A2A4 },
+ { 0xFD59CB0, 0x24BBEEC },
+ { 0xFCD9250, 0x280C170 },
+ { 0xFC4D670, 0x2B5A7D4 },
+ { 0xFBB6980, 0x2EA6FCC },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xFA67E20, 0x3539B38 },
+ { 0xF9B0090, 0x387FA0C },
+ { 0xF8ED3C0, 0x3BC3138 },
+ { 0xF81F840, 0x3F03E70 },
+ { 0xF746EA0, 0x4241F70 },
+ { 0xF663770, 0x457D1F0 },
+ { 0xF575360, 0x48B53B0 },
+ { 0xF47C300, 0x4BEA268 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xF26A030, 0x5249DB0 },
+ { 0xF150F40, 0x55745E0 },
+ { 0xF02D4F0, 0x589B210 },
+ { 0xEEFF200, 0x5BBE008 },
+ { 0xEDC6770, 0x5EDCDA0 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xEB35E60, 0x650DEF8 },
+ { 0xE9DE1D0, 0x681FE48 },
+ { 0xE87C120, 0x6B2D490 },
+ { 0xE70FD40, 0x6E35FA0 },
+ { 0xE599740, 0x7139D58 },
+ { 0xE419010, 0x7438B90 },
+ { 0xE28E8D0, 0x7732838 },
+ { 0xE0FA280, 0x7A27140 },
+ { 0xDF5BE60, 0x7D16488 },
+ { 0xDDB3D70, 0x8000000 },
+ { 0xDC020F0, 0x82E41B0 },
+ { 0xDA46A00, 0x85C2770 },
+ { 0xD8819E0, 0x889AF60 },
+ { 0xD6B31D0, 0x8B6D770 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xD2F9EF0, 0x9100000 },
+ { 0xD10F6B0, 0x93BFCA0 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0xCD1EF80, 0x992BCD0 },
+ { 0xCB19340, 0x9BD7CA0 },
+ { 0xC90A870, 0x9E7CF10 },
+ { 0xC6F3090, 0xA11B240 },
+ { 0xC4D2D10, 0xA3B2460 },
+ { 0xC2A9F70, 0xA6423B0 },
+ { 0xC078920, 0xA8CAE40 },
+ { 0xBE3EBD0, 0xAB4C250 },
+ { 0xBBFC8F0, 0xADC5E30 },
+ { 0xB9B2230, 0xB038010 },
+ { 0xB75F900, 0xB2A2660 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xB2A2650, 0xB75F910 },
+ { 0xB038010, 0xB9B2230 },
+ { 0xADC5E20, 0xBBFC900 },
+ { 0xAB4C240, 0xBE3EBE0 },
+ { 0xA8CAE30, 0xC078930 },
+ { 0xA6423A0, 0xC2A9F70 },
+ { 0xA3B2460, 0xC4D2D20 },
+ { 0xA11B240, 0xC6F30A0 },
+ { 0x9E7CF10, 0xC90A880 },
+ { 0x9BD7C90, 0xCB19350 },
+ { 0x992BCD0, 0xCD1EF90 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x93BFC90, 0xD10F6C0 },
+ { 0x9100000, 0xD2F9EF0 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x8B6D760, 0xD6B31E0 },
+ { 0x889AF60, 0xD8819E0 },
+ { 0x85C2760, 0xDA46A10 },
+ { 0x82E41B0, 0xDC020F0 },
+ { 0x7FFFFF8, 0xDDB3D80 },
+ { 0x7D16470, 0xDF5BE70 },
+ { 0x7A27138, 0xE0FA290 },
+ { 0x7732828, 0xE28E8D0 },
+ { 0x7438B90, 0xE419010 },
+ { 0x7139D48, 0xE599740 },
+ { 0x6E35F88, 0xE70FD50 },
+ { 0x6B2D490, 0xE87C120 },
+ { 0x681FE40, 0xE9DE1E0 },
+ { 0x650DEE0, 0xEB35E70 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x5EDCD98, 0xEDC6770 },
+ { 0x5BBDFF0, 0xEEFF210 },
+ { 0x589B208, 0xF02D4F0 },
+ { 0x55745D0, 0xF150F40 },
+ { 0x5249DB8, 0xF26A030 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x4BEA250, 0xF47C300 },
+ { 0x48B53A8, 0xF575360 },
+ { 0x457D1E0, 0xF663780 },
+ { 0x4241F78, 0xF746EA0 },
+ { 0x3F03E68, 0xF81F840 },
+ { 0x3BC3124, 0xF8ED3C0 },
+ { 0x387FA0C, 0xF9B0090 },
+ { 0x3539B2C, 0xFA67E20 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0x2EA6FCC, 0xFBB6980 },
+ { 0x2B5A7C4, 0xFC4D670 },
+ { 0x280C154, 0xFCD9250 },
+ { 0x24BBEE4, 0xFD59CB0 },
+ { 0x216A290, 0xFDCF550 },
+ { 0x1E16EE6, 0xFE39BC0 },
+ { 0x1AC25FE, 0xFE98FD0 },
+ { 0x176CA50, 0xFEED120 },
+ { 0x1415E50, 0xFF35F90 },
+ { 0x10BE418, 0xFF73AF0 },
+ { 0xD65E3F, 0xFFA62F0 },
+ { 0xA0CEDF, 0xFFCD790 },
+ { 0x6B3871, 0xFFE98B0 },
+ { 0x359D70, 0xFFFA630 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFFCA6279, 0xFFFA630 },
+ { 0xFF94C777, 0xFFE98B0 },
+ { 0xFF5F3109, 0xFFCD790 },
+ { 0xFF29A1AA, 0xFFA62F0 },
+ { 0xFEF41BD0, 0xFF73AF0 },
+ { 0xFEBEA198, 0xFF35F90 },
+ { 0xFE893598, 0xFEED120 },
+ { 0xFE53D9EA, 0xFE98FD0 },
+ { 0xFE1E9102, 0xFE39BC0 },
+ { 0xFDE95D58, 0xFDCF550 },
+ { 0xFDB44104, 0xFD59CB0 },
+ { 0xFD7F3E98, 0xFCD9250 },
+ { 0xFD4A5824, 0xFC4D670 },
+ { 0xFD159020, 0xFBB6980 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xFCAC64BC, 0xFA67E10 },
+ { 0xFC7805E0, 0xF9B0080 },
+ { 0xFC43CEC4, 0xF8ED3C0 },
+ { 0xFC0FC180, 0xF81F840 },
+ { 0xFBDBE070, 0xF746EA0 },
+ { 0xFBA82E08, 0xF663770 },
+ { 0xFB74AC40, 0xF575350 },
+ { 0xFB415DA0, 0xF47C300 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xFADB6230, 0xF26A030 },
+ { 0xFAA8BA20, 0xF150F40 },
+ { 0xFA764DE8, 0xF02D4E0 },
+ { 0xFA441FF8, 0xEEFF210 },
+ { 0xFA123250, 0xEDC6760 },
+ { 0xF9E08740, 0xEC835E0 },
+ { 0xF9AF2110, 0xEB35E70 },
+ { 0xF97E01A8, 0xE9DE1D0 },
+ { 0xF94D2B58, 0xE87C110 },
+ { 0xF91CA060, 0xE70FD40 },
+ { 0xF8EC62C0, 0xE599740 },
+ { 0xF8BC7458, 0xE419000 },
+ { 0xF88CD7C0, 0xE28E8C0 },
+ { 0xF85D8ED0, 0xE0FA290 },
+ { 0xF82E9B60, 0xDF5BE50 },
+ { 0xF7FFFFF0, 0xDDB3D70 },
+ { 0xF7D1BE60, 0xDC020F0 },
+ { 0xF7A3D870, 0xDA469F0 },
+ { 0xF7765090, 0xD8819E0 },
+ { 0xF7492890, 0xD6B31D0 },
+ { 0xF71C6240, 0xD4DB300 },
+ { 0xF6EFFFF0, 0xD2F9EE0 },
+ { 0xF6C40360, 0xD10F6C0 },
+ { 0xF6986E90, 0xCF1BBD0 },
+ { 0xF66D4320, 0xCD1EF70 },
+ { 0xF6428360, 0xCB19340 },
+ { 0xF6183100, 0xC90A880 },
+ { 0xF5EE4DA0, 0xC6F3080 },
+ { 0xF5C4DB90, 0xC4D2D10 },
+ { 0xF59BDC60, 0xC2A9F70 },
+ { 0xF57351B0, 0xC078910 },
+ { 0xF54B3DA0, 0xBE3EBD0 },
+ { 0xF523A1D0, 0xBBFC8F0 },
+ { 0xF4FC7FD0, 0xB9B2210 },
+ { 0xF4D5D9A0, 0xB75F8F0 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF48A06E0, 0xB2A2630 },
+ { 0xF464DDC0, 0xB038000 },
+ { 0xF4403700, 0xADC5E20 },
+ { 0xF41C1410, 0xAB4C220 },
+ { 0xF3F876C0, 0xA8CAE20 },
+ { 0xF3D56080, 0xA6423A0 },
+ { 0xF3B2D2F0, 0xA3B2470 },
+ { 0xF390CF50, 0xA11B220 },
+ { 0xF36F5780, 0x9E7CF00 },
+ { 0xF34E6CC0, 0x9BD7CA0 },
+ { 0xF32E1060, 0x992BCB0 },
+ { 0xF30E4420, 0x9679170 },
+ { 0xF2EF0940, 0x93BFCA0 },
+ { 0xF2D060F0, 0x90FFFE0 },
+ { 0xF2B24CE0, 0x8E39D90 },
+ { 0xF294CE30, 0x8B6D770 },
+ { 0xF277E600, 0x889AF30 },
+ { 0xF25B95F0, 0x85C2760 },
+ { 0xF23FDF10, 0x82E41A0 },
+ { 0xF224C290, 0x8000010 },
+ { 0xF20A4190, 0x7D16468 },
+ { 0xF1F05D70, 0x7A27130 },
+ { 0xF1D71730, 0x7732840 },
+ { 0xF1BE6FE0, 0x7438B68 },
+ { 0xF1A668C0, 0x7139D40 },
+ { 0xF18F02C0, 0x6E35FA0 },
+ { 0xF1783ED0, 0x6B2D468 },
+ { 0xF1621E20, 0x681FE38 },
+ { 0xF14CA190, 0x650DEF0 },
+ { 0xF137CA00, 0x61F7880 },
+ { 0xF1239890, 0x5EDCD88 },
+ { 0xF1100DF0, 0x5BBE000 },
+ { 0xF0FD2B00, 0x589B1E0 },
+ { 0xF0EAF0B0, 0x55745C0 },
+ { 0xF0D95FC0, 0x5249DB0 },
+ { 0xF0C878E0, 0x4F1BB98 },
+ { 0xF0B83CF0, 0x4BEA240 },
+ { 0xF0A8ACA0, 0x48B53A0 },
+ { 0xF099C890, 0x457D1F8 },
+ { 0xF08B9150, 0x4241F50 },
+ { 0xF07E07B0, 0x3F03E60 },
+ { 0xF0712C40, 0x3BC3138 },
+ { 0xF064FF70, 0x387F9E0 },
+ { 0xF05981E0, 0x3539B20 },
+ { 0xF04EB410, 0x31F1704 },
+ { 0xF0449680, 0x2EA6FA0 },
+ { 0xF03B2990, 0x2B5A7B8 },
+ { 0xF0326DB0, 0x280C168 },
+ { 0xF02A6340, 0x24BBEB8 },
+ { 0xF0230AB0, 0x216A284 },
+ { 0xF01C6440, 0x1E16EDA },
+ { 0xF0167030, 0x1AC2612 },
+ { 0xF0112ED0, 0x176CA44 },
+ { 0xF00CA060, 0x1415E44 },
+ { 0xF008C510, 0x10BE42C },
+ { 0xF0059D00, 0xD65E13 },
+ { 0xF0032870, 0xA0CED3 },
+ { 0xF0016750, 0x6B3886 },
+ { 0xF00059D0, 0x359D44 },
+ { 0x10000000, 0x0 },
+ { 0xFFE98B0, 0x6B3885 },
+ { 0xFFA62F0, 0xD65E3B },
+ { 0xFF35F90, 0x1415E54 },
+ { 0xFE98FD0, 0x1AC260A },
+ { 0xFDCF550, 0x216A2A4 },
+ { 0xFCD9250, 0x280C170 },
+ { 0xFBB6980, 0x2EA6FCC },
+ { 0xFA67E20, 0x3539B38 },
+ { 0xF8ED3C0, 0x3BC3138 },
+ { 0xF746EA0, 0x4241F70 },
+ { 0xF575360, 0x48B53B0 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xF150F40, 0x55745E0 },
+ { 0xEEFF200, 0x5BBE008 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xE9DE1D0, 0x681FE48 },
+ { 0xE70FD40, 0x6E35FA0 },
+ { 0xE419010, 0x7438B90 },
+ { 0xE0FA280, 0x7A27140 },
+ { 0xDDB3D70, 0x8000000 },
+ { 0xDA46A00, 0x85C2770 },
+ { 0xD6B31D0, 0x8B6D770 },
+ { 0xD2F9EF0, 0x9100000 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0xCB19340, 0x9BD7CA0 },
+ { 0xC6F3090, 0xA11B240 },
+ { 0xC2A9F70, 0xA6423B0 },
+ { 0xBE3EBD0, 0xAB4C250 },
+ { 0xB9B2230, 0xB038010 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xB038010, 0xB9B2230 },
+ { 0xAB4C240, 0xBE3EBE0 },
+ { 0xA6423A0, 0xC2A9F70 },
+ { 0xA11B240, 0xC6F30A0 },
+ { 0x9BD7C90, 0xCB19350 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x9100000, 0xD2F9EF0 },
+ { 0x8B6D760, 0xD6B31E0 },
+ { 0x85C2760, 0xDA46A10 },
+ { 0x7FFFFF8, 0xDDB3D80 },
+ { 0x7A27138, 0xE0FA290 },
+ { 0x7438B90, 0xE419010 },
+ { 0x6E35F88, 0xE70FD50 },
+ { 0x681FE40, 0xE9DE1E0 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x5BBDFF0, 0xEEFF210 },
+ { 0x55745D0, 0xF150F40 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x48B53A8, 0xF575360 },
+ { 0x4241F78, 0xF746EA0 },
+ { 0x3BC3124, 0xF8ED3C0 },
+ { 0x3539B2C, 0xFA67E20 },
+ { 0x2EA6FCC, 0xFBB6980 },
+ { 0x280C154, 0xFCD9250 },
+ { 0x216A290, 0xFDCF550 },
+ { 0x1AC25FE, 0xFE98FD0 },
+ { 0x1415E50, 0xFF35F90 },
+ { 0xD65E3F, 0xFFA62F0 },
+ { 0x6B3871, 0xFFE98B0 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFF94C777, 0xFFE98B0 },
+ { 0xFF29A1AA, 0xFFA62F0 },
+ { 0xFEBEA198, 0xFF35F90 },
+ { 0xFE53D9EA, 0xFE98FD0 },
+ { 0xFDE95D58, 0xFDCF550 },
+ { 0xFD7F3E98, 0xFCD9250 },
+ { 0xFD159020, 0xFBB6980 },
+ { 0xFCAC64BC, 0xFA67E10 },
+ { 0xFC43CEC4, 0xF8ED3C0 },
+ { 0xFBDBE070, 0xF746EA0 },
+ { 0xFB74AC40, 0xF575350 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xFAA8BA20, 0xF150F40 },
+ { 0xFA441FF8, 0xEEFF210 },
+ { 0xF9E08740, 0xEC835E0 },
+ { 0xF97E01A8, 0xE9DE1D0 },
+ { 0xF91CA060, 0xE70FD40 },
+ { 0xF8BC7458, 0xE419000 },
+ { 0xF85D8ED0, 0xE0FA290 },
+ { 0x10000000, 0x0 },
+ { 0xFFA62F0, 0xD65E3B },
+ { 0xFE98FD0, 0x1AC260A },
+ { 0xFCD9250, 0x280C170 },
+ { 0xFA67E20, 0x3539B38 },
+ { 0xF746EA0, 0x4241F70 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xEEFF200, 0x5BBE008 },
+ { 0xE9DE1D0, 0x681FE48 },
+ { 0xE419010, 0x7438B90 },
+ { 0xDDB3D70, 0x8000000 },
+ { 0xD6B31D0, 0x8B6D770 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0xC6F3090, 0xA11B240 },
+ { 0xBE3EBD0, 0xAB4C250 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xAB4C240, 0xBE3EBE0 },
+ { 0xA11B240, 0xC6F30A0 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x8B6D760, 0xD6B31E0 },
+ { 0x7FFFFF8, 0xDDB3D80 },
+ { 0x7438B90, 0xE419010 },
+ { 0x681FE40, 0xE9DE1E0 },
+ { 0x5BBDFF0, 0xEEFF210 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x4241F78, 0xF746EA0 },
+ { 0x3539B2C, 0xFA67E20 },
+ { 0x280C154, 0xFCD9250 },
+ { 0x1AC25FE, 0xFE98FD0 },
+ { 0xD65E3F, 0xFFA62F0 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFF29A1AA, 0xFFA62F0 },
+ { 0xFE53D9EA, 0xFE98FD0 },
+ { 0xFD7F3E98, 0xFCD9250 },
+ { 0xFCAC64BC, 0xFA67E10 },
+ { 0xFBDBE070, 0xF746EA0 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xFA441FF8, 0xEEFF210 },
+ { 0xF97E01A8, 0xE9DE1D0 },
+ { 0xF8BC7458, 0xE419000 },
+ { 0xF7FFFFF0, 0xDDB3D70 },
+ { 0xF7492890, 0xD6B31D0 },
+ { 0xF6986E90, 0xCF1BBD0 },
+ { 0xF5EE4DA0, 0xC6F3080 },
+ { 0xF54B3DA0, 0xBE3EBD0 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF41C1410, 0xAB4C220 },
+ { 0xF390CF50, 0xA11B220 },
+ { 0xF30E4420, 0x9679170 },
+ { 0xF294CE30, 0x8B6D770 },
+ { 0xF224C290, 0x8000010 },
+ { 0xF1BE6FE0, 0x7438B68 },
+ { 0xF1621E20, 0x681FE38 },
+ { 0xF1100DF0, 0x5BBE000 },
+ { 0xF0C878E0, 0x4F1BB98 },
+ { 0xF08B9150, 0x4241F50 },
+ { 0xF05981E0, 0x3539B20 },
+ { 0xF0326DB0, 0x280C168 },
+ { 0xF0167030, 0x1AC2612 },
+ { 0xF0059D00, 0xD65E13 },
+ { 0xF0000000, 0xFFFFFFE9 },
+ { 0xF0059D10, 0xFF29A1BE },
+ { 0xF0167040, 0xFE53D9BE },
+ { 0xF0326DC0, 0xFD7F3E6C },
+ { 0xF05981F0, 0xFCAC64B0 },
+ { 0xF08B9160, 0xFBDBE088 },
+ { 0xF0C878F0, 0xFB0E4438 },
+ { 0xF1100E00, 0xFA441FD0 },
+ { 0xF1621E30, 0xF97E01A0 },
+ { 0xF1BE6FF0, 0xF8BC7468 },
+ { 0xF224C2B0, 0xF7FFFFD0 },
+ { 0xF294CE40, 0xF7492870 },
+ { 0xF30E4440, 0xF6986E60 },
+ { 0xF390CF70, 0xF5EE4DB0 },
+ { 0xF41C1430, 0xF54B3DB0 },
+ { 0xF4AFB0F0, 0xF4AFB0B0 },
+ { 0xF54B3DD0, 0xF41C1420 },
+ { 0xF5EE4DD0, 0xF390CF60 },
+ { 0xF6986EB0, 0xF30E4410 },
+ { 0xF7492880, 0xF294CE30 },
+ { 0x10000000, 0x0 },
+ { 0xFF35F90, 0x1415E54 },
+ { 0xFCD9250, 0x280C170 },
+ { 0xF8ED3C0, 0x3BC3138 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xE419010, 0x7438B90 },
+ { 0xDA46A00, 0x85C2770 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0xC2A9F70, 0xA6423B0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xA6423A0, 0xC2A9F70 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x85C2760, 0xDA46A10 },
+ { 0x7438B90, 0xE419010 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x3BC3124, 0xF8ED3C0 },
+ { 0x280C154, 0xFCD9250 },
+ { 0x1415E50, 0xFF35F90 },
+ { 0x10000000, 0x0 },
+ { 0xFCD9250, 0x280C170 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xE419010, 0x7438B90 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0xB504F30, 0xB504F30 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x7438B90, 0xE419010 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x280C154, 0xFCD9250 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFD7F3E98, 0xFCD9250 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF8BC7458, 0xE419000 },
+ { 0xF6986E90, 0xCF1BBD0 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF30E4420, 0x9679170 },
+ { 0xF1BE6FE0, 0x7438B68 },
+ { 0xF0C878E0, 0x4F1BB98 },
+ { 0xF0326DB0, 0x280C168 },
+ { 0x10000000, 0x0 },
+ { 0xF8ED3C0, 0x3BC3138 },
+ { 0xE419010, 0x7438B90 },
+ { 0xC2A9F70, 0xA6423B0 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x280C154, 0xFCD9250 },
+ { 0xFEBEA198, 0xFF35F90 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF7A3D870, 0xDA469F0 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF25B95F0, 0x85C2760 },
+ { 0xF0C878E0, 0x4F1BB98 },
+ { 0xF00CA060, 0x1415E44 },
+ { 0xF0326DC0, 0xFD7F3E6C },
+ { 0xF137CA20, 0xF9E08758 },
+ { 0xF30E4440, 0xF6986E60 },
+ { 0xF59BDC80, 0xF3D56070 },
+ { 0xF8BC74C0, 0xF1BE6FD0 },
+ { 0xFC43CEB4, 0xF0712C40 },
+ { 0x10000000, 0x0 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x10000000, 0x0 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF30E4420, 0x9679170 },
+ { 0x10000000, 0x0 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF0C878E0, 0x4F1BB98 },
+ { 0xF30E4440, 0xF6986E60 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x4F1BBF0, 0xF0C87900 }
};
-real_t cfft_tab_64[] =
+complex_t cfft_tab_64[] =
{
- 0x10000000,
- 0x0,
- 0xFEC46D1,
- 0x1917A6C,
- 0xFB14BE7,
- 0x31F1708,
- 0xF4FA0AA,
- 0x4A5018D,
- 0xEC835E6,
- 0x61F78AC,
- 0xE1C5977,
- 0x78AD751,
- 0xD4DB312,
- 0x8E39DA0,
- 0xC5E4032,
- 0xA267996,
- 0xB504F2F,
- 0xB504F37,
- 0xA26798D,
- 0xC5E4039,
- 0x8E39D96,
- 0xD4DB318,
- 0x78AD746,
- 0xE1C597C,
- 0x61F78A1,
- 0xEC835EA,
- 0x4A50182,
- 0xF4FA0AE,
- 0x31F16FD,
- 0xFB14BE9,
- 0x1917A60,
- 0xFEC46D2,
- 0x10000000,
- 0x0,
- 0xFB14BE7,
- 0x31F1708,
- 0xEC835E6,
- 0x61F78AC,
- 0xD4DB312,
- 0x8E39DA0,
- 0xB504F2F,
- 0xB504F37,
- 0x8E39D96,
- 0xD4DB318,
- 0x61F78A1,
- 0xEC835EA,
- 0x31F16FD,
- 0xFB14BE9,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFCE0E8EC,
- 0xFB14BE5,
- 0xF9E08749,
- 0xEC835E1,
- 0xF71C6256,
- 0xD4DB30B,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF2B24CE1,
- 0x8E39D8C,
- 0xF137CA11,
- 0x61F7896,
- 0xF04EB414,
- 0x31F16F1,
- 0x10000000,
- 0x0,
- 0xF4FA0AB,
- 0x4A5018B,
- 0xD4DB314,
- 0x8E39D9D,
- 0xA267992,
- 0xC5E4035,
- 0x61F78A8,
- 0xEC835E7,
- 0x1917A6A,
- 0xFEC46D2,
- 0xFCE0E8F8,
- 0xFB14BE7,
- 0xF87528B1,
- 0xE1C5978,
- 0xF4AFB0CC,
- 0xB504F32,
- 0xF1E3A687,
- 0x78AD74C,
- 0xF04EB418,
- 0x31F1705,
- 0xF013B92F,
- 0xFE6E8593,
- 0xF137CA1A,
- 0xF9E08755,
- 0xF3A1BFCD,
- 0xF5D9866C,
- 0xF71C6266,
- 0xF2B24CEA,
- 0xFB5AFE78,
- 0xF0B05F54,
- 0x10000000,
- 0x0,
- 0xEC835E6,
- 0x61F78AC,
- 0xB504F2F,
- 0xB504F37,
- 0x61F78A1,
- 0xEC835EA,
- 0x10000000,
- 0x0,
- 0xB504F2F,
- 0xB504F37,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xF4AFB0C1,
- 0xB504F26,
- 0x10000000,
- 0x0,
- 0x61F78A8,
- 0xEC835E7,
- 0xF4AFB0CC,
- 0xB504F32,
- 0xF137CA1A,
- 0xF9E08755,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x3,
- 0xF0000001,
+ { 0x10000000, 0x0 },
+ { 0xFEC46D0, 0x1917A6C },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xE1C5970, 0x78AD750 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xC5E4030, 0xA2679A0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x78AD738, 0xE1C5980 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x4A50180, 0xF4FA0B0 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0x10000000, 0x0 },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xF9E08740, 0xEC835E0 },
+ { 0xF71C6240, 0xD4DB300 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF2B24CE0, 0x8E39D90 },
+ { 0xF137CA00, 0x61F7880 },
+ { 0xF04EB410, 0x31F1704 },
+ { 0x10000000, 0x0 },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xF8752898, 0xE1C5970 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF1E3A690, 0x78AD768 },
+ { 0xF04EB410, 0x31F1704 },
+ { 0xF013B930, 0xFE6E8572 },
+ { 0xF137CA20, 0xF9E08758 },
+ { 0xF3A1BFB0, 0xF5D98680 },
+ { 0xF71C62A0, 0xF2B24CC0 },
+ { 0xFB5AFE98, 0xF0B05F50 },
+ { 0x10000000, 0x0 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x10000000, 0x0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0x10000000, 0x0 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF137CA20, 0xF9E08758 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x3, 0xF0000000 }
};
-real_t cfft_tab_60[] =
+complex_t cfft_tab_60[] =
{
- 0x10000000,
- 0x0,
- 0xFE98FCA,
- 0x1AC260A,
- 0xFA67E18,
- 0x3539B37,
- 0xF378708,
- 0x4F1BBD0,
- 0xE9DE1D6,
- 0x681FE4B,
- 0xDDB3D72,
- 0x8000003,
- 0xCF1BBCB,
- 0x9679186,
- 0xBE3EBD0,
- 0xAB4C24F,
- 0xAB4C246,
- 0xBE3EBD8,
- 0x967917C,
- 0xCF1BBD1,
- 0x7FFFFF9,
- 0xDDB3D78,
- 0x681FE40,
- 0xE9DE1DA,
- 0x4F1BBC4,
- 0xF37870C,
- 0x3539B2B,
- 0xFA67E1B,
- 0x1AC25FE,
- 0xFE98FCB,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFE53D9EA,
- 0xFE98FC9,
- 0xFCAC64BE,
- 0xFA67E16,
- 0xFB0E4425,
- 0xF378705,
- 0xF97E01AB,
- 0xE9DE1D1,
- 0x10000000,
- 0x0,
- 0xFA67E18,
- 0x3539B37,
- 0xE9DE1D6,
- 0x681FE4B,
- 0xCF1BBCB,
- 0x9679186,
- 0xAB4C246,
- 0xBE3EBD8,
- 0x7FFFFF9,
- 0xDDB3D78,
- 0x4F1BBC4,
- 0xF37870C,
- 0x1AC25FE,
- 0xFE98FCB,
- 0xFE53D9EA,
- 0xFE98FC9,
- 0xFB0E4425,
- 0xF378705,
- 0xF7FFFFF3,
- 0xDDB3D6C,
- 0xF54B3DA8,
- 0xBE3EBC8,
- 0xF30E4428,
- 0x9679173,
- 0xF1621E21,
- 0x681FE35,
- 0xF05981E3,
- 0x3539B20,
- 0xF0000001,
- 0xFFFFFFE9,
- 0xF05981EC,
- 0xFCAC64B2,
- 0xF1621E34,
- 0xF97E01A0,
- 0xF30E4443,
- 0xF6986E67,
- 0xF54B3DCB,
- 0xF41C1419,
- 0x10000000,
- 0x0,
- 0xF378708,
- 0x4F1BBD0,
- 0xCF1BBCB,
- 0x9679186,
- 0x967917C,
- 0xCF1BBD1,
- 0x4F1BBC4,
- 0xF37870C,
- 0x10000000,
- 0x0,
- 0xCF1BBCB,
- 0x9679186,
- 0x4F1BBC4,
- 0xF37870C,
- 0xFB0E4425,
- 0xF378705,
- 0xF30E4428,
- 0x9679173,
- 0x10000000,
- 0x0,
- 0x967917C,
- 0xCF1BBD1,
- 0xFB0E4425,
- 0xF378705,
- 0xF0C878F0,
- 0x4F1BBB9,
- 0xF30E4443,
- 0xF6986E67,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x4F1BBF1,
- 0xF0C87902,
+ { 0x10000000, 0x0 },
+ { 0xFE98FD0, 0x1AC260A },
+ { 0xFA67E20, 0x3539B38 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xE9DE1D0, 0x681FE48 },
+ { 0xDDB3D70, 0x8000000 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0xBE3EBD0, 0xAB4C250 },
+ { 0xAB4C240, 0xBE3EBE0 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x7FFFFF8, 0xDDB3D80 },
+ { 0x681FE40, 0xE9DE1E0 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x3539B2C, 0xFA67E20 },
+ { 0x1AC25FE, 0xFE98FD0 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFE53D9EA, 0xFE98FD0 },
+ { 0xFCAC64BC, 0xFA67E10 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF97E01A8, 0xE9DE1D0 },
+ { 0x10000000, 0x0 },
+ { 0xFA67E20, 0x3539B38 },
+ { 0xE9DE1D0, 0x681FE48 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0xAB4C240, 0xBE3EBE0 },
+ { 0x7FFFFF8, 0xDDB3D80 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x1AC25FE, 0xFE98FD0 },
+ { 0xFE53D9EA, 0xFE98FD0 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF7FFFFF0, 0xDDB3D70 },
+ { 0xF54B3DA0, 0xBE3EBD0 },
+ { 0xF30E4420, 0x9679170 },
+ { 0xF1621E20, 0x681FE38 },
+ { 0xF05981E0, 0x3539B20 },
+ { 0xF0000000, 0xFFFFFFE9 },
+ { 0xF05981F0, 0xFCAC64B0 },
+ { 0xF1621E30, 0xF97E01A0 },
+ { 0xF30E4440, 0xF6986E60 },
+ { 0xF54B3DD0, 0xF41C1420 },
+ { 0x10000000, 0x0 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x10000000, 0x0 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF30E4420, 0x9679170 },
+ { 0x10000000, 0x0 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF0C878E0, 0x4F1BB98 },
+ { 0xF30E4440, 0xF6986E60 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x4F1BBF0, 0xF0C87900 }
};
#ifdef LD_DEC
-real_t cfft_tab_256[] =
+complex_t cfft_tab_256[] =
{
- 0x10000000,
- 0x0,
- 0xFFEC430,
- 0x648558,
- 0xFFB10F1,
- 0xC8FB2F,
- 0xFF4E6D6,
- 0x12D5209,
- 0xFEC46D1,
- 0x1917A6C,
- 0xFE13238,
- 0x1F564E6,
- 0xFD3AABF,
- 0x259020E,
- 0xFC3B27D,
- 0x2BC4289,
- 0xFB14BE7,
- 0x31F1708,
- 0xF9C79D5,
- 0x381704E,
- 0xF853F7D,
- 0x3E33F31,
- 0xF6BA073,
- 0x444749A,
- 0xF4FA0AA,
- 0x4A5018D,
- 0xF314475,
- 0x504D727,
- 0xF109081,
- 0x563E69F,
- 0xEED89DA,
- 0x5C2214E,
- 0xEC835E6,
- 0x61F78AC,
- 0xEA09A67,
- 0x67BDE53,
- 0xE76BD78,
- 0x6D74405,
- 0xE4AA58F,
- 0x7319BA9,
- 0xE1C5977,
- 0x78AD751,
- 0xDEBE054,
- 0x7E2E93A,
- 0xDB941A0,
- 0x839C3D0,
- 0xD848529,
- 0x88F59AD,
- 0xD4DB312,
- 0x8E39DA0,
- 0xD14D3CD,
- 0x93682AA,
- 0xCD9F021,
- 0x987FC02,
- 0xC9D1121,
- 0x9D7FD18,
- 0xC5E4032,
- 0xA267996,
- 0xC1D8702,
- 0xA736561,
- 0xBDAEF8D,
- 0xABEB49E,
- 0xB968418,
- 0xB085BAE,
- 0xB504F2F,
- 0xB504F37,
- 0xB085BA6,
- 0xB968420,
- 0xABEB495,
- 0xBDAEF95,
- 0xA736559,
- 0xC1D870A,
- 0xA26798D,
- 0xC5E4039,
- 0x9D7FD0F,
- 0xC9D1128,
- 0x987FBF8,
- 0xCD9F028,
- 0x93682A0,
- 0xD14D3D4,
- 0x8E39D96,
- 0xD4DB318,
- 0x88F59A3,
- 0xD848530,
- 0x839C3C5,
- 0xDB941A6,
- 0x7E2E930,
- 0xDEBE05A,
- 0x78AD746,
- 0xE1C597C,
- 0x7319B9E,
- 0xE4AA594,
- 0x6D743FA,
- 0xE76BD7D,
- 0x67BDE49,
- 0xEA09A6C,
- 0x61F78A1,
- 0xEC835EA,
- 0x5C22143,
- 0xEED89DE,
- 0x563E694,
- 0xF109085,
- 0x504D71C,
- 0xF314479,
- 0x4A50182,
- 0xF4FA0AE,
- 0x444748F,
- 0xF6BA076,
- 0x3E33F25,
- 0xF853F80,
- 0x3817043,
- 0xF9C79D8,
- 0x31F16FD,
- 0xFB14BE9,
- 0x2BC427E,
- 0xFC3B27F,
- 0x2590203,
- 0xFD3AAC1,
- 0x1F564DA,
- 0xFE13239,
- 0x1917A60,
- 0xFEC46D2,
- 0x12D51FE,
- 0xFF4E6D7,
- 0xC8FB24,
- 0xFFB10F2,
- 0x64854C,
- 0xFFEC430,
- 0x10000000,
- 0x0,
- 0xFFB10F1,
- 0xC8FB2F,
- 0xFEC46D1,
- 0x1917A6C,
- 0xFD3AABF,
- 0x259020E,
- 0xFB14BE7,
- 0x31F1708,
- 0xF853F7D,
- 0x3E33F31,
- 0xF4FA0AA,
- 0x4A5018D,
- 0xF109081,
- 0x563E69F,
- 0xEC835E6,
- 0x61F78AC,
- 0xE76BD78,
- 0x6D74405,
- 0xE1C5977,
- 0x78AD751,
- 0xDB941A0,
- 0x839C3D0,
- 0xD4DB312,
- 0x8E39DA0,
- 0xCD9F021,
- 0x987FC02,
- 0xC5E4032,
- 0xA267996,
- 0xBDAEF8D,
- 0xABEB49E,
- 0xB504F2F,
- 0xB504F37,
- 0xABEB495,
- 0xBDAEF95,
- 0xA26798D,
- 0xC5E4039,
- 0x987FBF8,
- 0xCD9F028,
- 0x8E39D96,
- 0xD4DB318,
- 0x839C3C5,
- 0xDB941A6,
- 0x78AD746,
- 0xE1C597C,
- 0x6D743FA,
- 0xE76BD7D,
- 0x61F78A1,
- 0xEC835EA,
- 0x563E694,
- 0xF109085,
- 0x4A50182,
- 0xF4FA0AE,
- 0x3E33F25,
- 0xF853F80,
- 0x31F16FD,
- 0xFB14BE9,
- 0x2590203,
- 0xFD3AAC1,
- 0x1917A60,
- 0xFEC46D2,
- 0xC8FB24,
- 0xFFB10F2,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFF3704C5,
- 0xFFB10F1,
- 0xFE6E8588,
- 0xFEC46D0,
- 0xFDA6FDE6,
- 0xFD3AABD,
- 0xFCE0E8EC,
- 0xFB14BE5,
- 0xFC1CC0C4,
- 0xF853F7A,
- 0xFB5AFE67,
- 0xF4FA0A7,
- 0xFA9C1956,
- 0xF10907D,
- 0xF9E08749,
- 0xEC835E1,
- 0xF928BBF0,
- 0xE76BD73,
- 0xF87528A5,
- 0xE1C5971,
- 0xF7C63C26,
- 0xDB9419A,
- 0xF71C6256,
- 0xD4DB30B,
- 0xF67803F5,
- 0xCD9F01A,
- 0xF5D98661,
- 0xC5E402A,
- 0xF5414B59,
- 0xBDAEF85,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF4251063,
- 0xABEB48C,
- 0xF3A1BFBF,
- 0xA267984,
- 0xF3260FD1,
- 0x987FBEF,
- 0xF2B24CE1,
- 0x8E39D8C,
- 0xF246BE54,
- 0x839C3BB,
- 0xF1E3A67E,
- 0x78AD73C,
- 0xF189427E,
- 0x6D743F0,
- 0xF137CA11,
- 0x61F7896,
- 0xF0EF6F77,
- 0x563E689,
- 0xF0B05F4F,
- 0x4A50177,
- 0xF07AC07D,
- 0x3E33F1A,
- 0xF04EB414,
- 0x31F16F1,
- 0xF02C553E,
- 0x25901F7,
- 0xF013B92C,
- 0x1917A55,
- 0xF004EF0E,
- 0xC8FB18,
- 0x10000000,
- 0x0,
- 0xFF4E6D6,
- 0x12D5209,
- 0xFD3AABF,
- 0x259020D,
- 0xF9C79D6,
- 0x381704D,
- 0xF4FA0AB,
- 0x4A5018B,
- 0xEED89DB,
- 0x5C2214C,
- 0xE76BD79,
- 0x6D74402,
- 0xDEBE056,
- 0x7E2E937,
- 0xD4DB314,
- 0x8E39D9D,
- 0xC9D1124,
- 0x9D7FD14,
- 0xBDAEF90,
- 0xABEB49A,
- 0xB085BAA,
- 0xB96841C,
- 0xA267992,
- 0xC5E4035,
- 0x93682A5,
- 0xD14D3D0,
- 0x839C3CB,
- 0xDB941A2,
- 0x7319BA5,
- 0xE4AA590,
- 0x61F78A8,
- 0xEC835E7,
- 0x504D724,
- 0xF314476,
- 0x3E33F2E,
- 0xF853F7E,
- 0x2BC4287,
- 0xFC3B27D,
- 0x1917A6A,
- 0xFEC46D2,
- 0x648556,
- 0xFFEC430,
- 0xFF3704D0,
- 0xFFB10F1,
- 0xFE0A9B1A,
- 0xFE13238,
- 0xFCE0E8F8,
- 0xFB14BE7,
- 0xFBBB8B67,
- 0xF6BA073,
- 0xFA9C1962,
- 0xF109082,
- 0xF98421AE,
- 0xEA09A68,
- 0xF87528B1,
- 0xE1C5978,
- 0xF770A655,
- 0xD84852B,
- 0xF6780401,
- 0xCD9F023,
- 0xF58C9AA1,
- 0xC1D8704,
- 0xF4AFB0CC,
- 0xB504F32,
- 0xF3E278F9,
- 0xA73655C,
- 0xF3260FDC,
- 0x987FBFD,
- 0xF27B7AD4,
- 0x88F59A8,
- 0xF1E3A687,
- 0x78AD74C,
- 0xF15F6597,
- 0x67BDE4F,
- 0xF0EF6F7D,
- 0x563E69B,
- 0xF0945F8C,
- 0x4447496,
- 0xF04EB418,
- 0x31F1705,
- 0xF01ECDC8,
- 0x1F564E3,
- 0xF004EF0F,
- 0xC8FB2D,
- 0xF0013BD0,
- 0xFF9B7AA6,
- 0xF013B92F,
- 0xFE6E8593,
- 0xF03C4D84,
- 0xFD43BD76,
- 0xF07AC083,
- 0xFC1CC0CF,
- 0xF0CEBB8B,
- 0xFAFB28D9,
- 0xF137CA1A,
- 0xF9E08755,
- 0xF1B55A71,
- 0xF8CE6458,
- 0xF246BE5F,
- 0xF7C63C32,
- 0xF2EB2C32,
- 0xF6C97D58,
- 0xF3A1BFCD,
- 0xF5D9866C,
- 0xF4697BE6,
- 0xF4F7A454,
- 0xF5414B68,
- 0xF425106D,
- 0xF62802EE,
- 0xF362EEDA,
- 0xF71C6266,
- 0xF2B24CEA,
- 0xF81D16CC,
- 0xF2141FA9,
- 0xF928BC01,
- 0xF1894285,
- 0xFA3DDEB7,
- 0xF1127624,
- 0xFB5AFE78,
- 0xF0B05F54,
- 0xFC7E8FB6,
- 0xF063862A,
- 0xFDA6FDF6,
- 0xF02C5541,
- 0xFED2ADFA,
- 0xF00B192A,
- 0x10000000,
- 0x0,
- 0xFEC46D1,
- 0x1917A6C,
- 0xFB14BE7,
- 0x31F1708,
- 0xF4FA0AA,
- 0x4A5018D,
- 0xEC835E6,
- 0x61F78AC,
- 0xE1C5977,
- 0x78AD751,
- 0xD4DB312,
- 0x8E39DA0,
- 0xC5E4032,
- 0xA267996,
- 0xB504F2F,
- 0xB504F37,
- 0xA26798D,
- 0xC5E4039,
- 0x8E39D96,
- 0xD4DB318,
- 0x78AD746,
- 0xE1C597C,
- 0x61F78A1,
- 0xEC835EA,
- 0x4A50182,
- 0xF4FA0AE,
- 0x31F16FD,
- 0xFB14BE9,
- 0x1917A60,
- 0xFEC46D2,
- 0x10000000,
- 0x0,
- 0xFB14BE7,
- 0x31F1708,
- 0xEC835E6,
- 0x61F78AC,
- 0xD4DB312,
- 0x8E39DA0,
- 0xB504F2F,
- 0xB504F37,
- 0x8E39D96,
- 0xD4DB318,
- 0x61F78A1,
- 0xEC835EA,
- 0x31F16FD,
- 0xFB14BE9,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFCE0E8EC,
- 0xFB14BE5,
- 0xF9E08749,
- 0xEC835E1,
- 0xF71C6256,
- 0xD4DB30B,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF2B24CE1,
- 0x8E39D8C,
- 0xF137CA11,
- 0x61F7896,
- 0xF04EB414,
- 0x31F16F1,
- 0x10000000,
- 0x0,
- 0xF4FA0AB,
- 0x4A5018B,
- 0xD4DB314,
- 0x8E39D9D,
- 0xA267992,
- 0xC5E4035,
- 0x61F78A8,
- 0xEC835E7,
- 0x1917A6A,
- 0xFEC46D2,
- 0xFCE0E8F8,
- 0xFB14BE7,
- 0xF87528B1,
- 0xE1C5978,
- 0xF4AFB0CC,
- 0xB504F32,
- 0xF1E3A687,
- 0x78AD74C,
- 0xF04EB418,
- 0x31F1705,
- 0xF013B92F,
- 0xFE6E8593,
- 0xF137CA1A,
- 0xF9E08755,
- 0xF3A1BFCD,
- 0xF5D9866C,
- 0xF71C6266,
- 0xF2B24CEA,
- 0xFB5AFE78,
- 0xF0B05F54,
- 0x10000000,
- 0x0,
- 0xEC835E6,
- 0x61F78AC,
- 0xB504F2F,
- 0xB504F37,
- 0x61F78A1,
- 0xEC835EA,
- 0x10000000,
- 0x0,
- 0xB504F2F,
- 0xB504F37,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xF4AFB0C1,
- 0xB504F26,
- 0x10000000,
- 0x0,
- 0x61F78A8,
- 0xEC835E7,
- 0xF4AFB0CC,
- 0xB504F32,
- 0xF137CA1A,
- 0xF9E08755,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x3,
- 0xF0000001,
+ { 0x10000000, 0x0 },
+ { 0xFFEC430, 0x648558 },
+ { 0xFFB10F0, 0xC8FB30 },
+ { 0xFF4E6D0, 0x12D520A },
+ { 0xFEC46D0, 0x1917A6C },
+ { 0xFE13240, 0x1F564E6 },
+ { 0xFD3AAC0, 0x259020C },
+ { 0xFC3B280, 0x2BC428C },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xF9C79D0, 0x381704C },
+ { 0xF853F80, 0x3E33F34 },
+ { 0xF6BA070, 0x44474A0 },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xF314470, 0x504D728 },
+ { 0xF109080, 0x563E6A0 },
+ { 0xEED89E0, 0x5C22150 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xEA09A60, 0x67BDE58 },
+ { 0xE76BD80, 0x6D74400 },
+ { 0xE4AA590, 0x7319BA8 },
+ { 0xE1C5970, 0x78AD750 },
+ { 0xDEBE050, 0x7E2E940 },
+ { 0xDB941A0, 0x839C3D0 },
+ { 0xD848530, 0x88F59B0 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xD14D3D0, 0x93682B0 },
+ { 0xCD9F020, 0x987FC00 },
+ { 0xC9D1120, 0x9D7FD20 },
+ { 0xC5E4030, 0xA2679A0 },
+ { 0xC1D8700, 0xA736560 },
+ { 0xBDAEF90, 0xABEB4A0 },
+ { 0xB968420, 0xB085BB0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xB085BA0, 0xB968420 },
+ { 0xABEB490, 0xBDAEFA0 },
+ { 0xA736550, 0xC1D8710 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x9D7FD10, 0xC9D1120 },
+ { 0x987FC00, 0xCD9F020 },
+ { 0x93682A0, 0xD14D3D0 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x88F59B0, 0xD848530 },
+ { 0x839C3C0, 0xDB941B0 },
+ { 0x7E2E938, 0xDEBE050 },
+ { 0x78AD738, 0xE1C5980 },
+ { 0x7319BA0, 0xE4AA590 },
+ { 0x6D74408, 0xE76BD80 },
+ { 0x67BDE48, 0xEA09A70 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x5C22138, 0xEED89E0 },
+ { 0x563E698, 0xF109080 },
+ { 0x504D710, 0xF314480 },
+ { 0x4A50180, 0xF4FA0B0 },
+ { 0x4447498, 0xF6BA070 },
+ { 0x3E33F20, 0xF853F80 },
+ { 0x3817048, 0xF9C79D0 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0x2BC4280, 0xFC3B280 },
+ { 0x2590214, 0xFD3AAC0 },
+ { 0x1F564D8, 0xFE13240 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0x12D51F6, 0xFF4E6D0 },
+ { 0xC8FB29, 0xFFB10F0 },
+ { 0x64853F, 0xFFEC430 },
+ { 0x10000000, 0x0 },
+ { 0xFFB10F0, 0xC8FB30 },
+ { 0xFEC46D0, 0x1917A6C },
+ { 0xFD3AAC0, 0x259020C },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xF853F80, 0x3E33F34 },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xF109080, 0x563E6A0 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xE76BD80, 0x6D74400 },
+ { 0xE1C5970, 0x78AD750 },
+ { 0xDB941A0, 0x839C3D0 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xCD9F020, 0x987FC00 },
+ { 0xC5E4030, 0xA2679A0 },
+ { 0xBDAEF90, 0xABEB4A0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xABEB490, 0xBDAEFA0 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x987FC00, 0xCD9F020 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x839C3C0, 0xDB941B0 },
+ { 0x78AD738, 0xE1C5980 },
+ { 0x6D74408, 0xE76BD80 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x563E698, 0xF109080 },
+ { 0x4A50180, 0xF4FA0B0 },
+ { 0x3E33F20, 0xF853F80 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0x2590214, 0xFD3AAC0 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0xC8FB29, 0xFFB10F0 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFF3704BF, 0xFFB10F0 },
+ { 0xFE6E857E, 0xFEC46D0 },
+ { 0xFDA6FDD8, 0xFD3AAC0 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xFC1CC0CC, 0xF853F80 },
+ { 0xFB5AFE68, 0xF4FA0A0 },
+ { 0xFA9C1950, 0xF109080 },
+ { 0xF9E08740, 0xEC835E0 },
+ { 0xF928BC00, 0xE76BD80 },
+ { 0xF8752898, 0xE1C5970 },
+ { 0xF7C63C30, 0xDB941A0 },
+ { 0xF71C6240, 0xD4DB300 },
+ { 0xF67803F0, 0xCD9F020 },
+ { 0xF5D98670, 0xC5E4040 },
+ { 0xF5414B50, 0xBDAEF80 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF4251050, 0xABEB480 },
+ { 0xF3A1BFC0, 0xA267990 },
+ { 0xF3260FC0, 0x987FBD0 },
+ { 0xF2B24CE0, 0x8E39D90 },
+ { 0xF246BE60, 0x839C3D0 },
+ { 0xF1E3A670, 0x78AD730 },
+ { 0xF1894280, 0x6D743F8 },
+ { 0xF137CA00, 0x61F7880 },
+ { 0xF0EF6F70, 0x563E690 },
+ { 0xF0B05F50, 0x4A50198 },
+ { 0xF07AC080, 0x3E33F14 },
+ { 0xF04EB410, 0x31F1704 },
+ { 0xF02C5540, 0x25901E8 },
+ { 0xF013B930, 0x1917A60 },
+ { 0xF004EF10, 0xC8FAFD },
+ { 0x10000000, 0x0 },
+ { 0xFF4E6D0, 0x12D520A },
+ { 0xFD3AAC0, 0x259020C },
+ { 0xF9C79D0, 0x381704C },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xEED89E0, 0x5C22150 },
+ { 0xE76BD80, 0x6D74400 },
+ { 0xDEBE050, 0x7E2E940 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xC9D1130, 0x9D7FD10 },
+ { 0xBDAEF90, 0xABEB4A0 },
+ { 0xB085BA0, 0xB968420 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x93682B0, 0xD14D3D0 },
+ { 0x839C3C0, 0xDB941B0 },
+ { 0x7319BA0, 0xE4AA590 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x504D728, 0xF314470 },
+ { 0x3E33F40, 0xF853F80 },
+ { 0x2BC4280, 0xFC3B280 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0x64855F, 0xFFEC430 },
+ { 0xFF3704BF, 0xFFB10F0 },
+ { 0xFE0A9B12, 0xFE13230 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xFBBB8B70, 0xF6BA070 },
+ { 0xFA9C1970, 0xF109080 },
+ { 0xF98421A8, 0xEA09A60 },
+ { 0xF8752898, 0xE1C5970 },
+ { 0xF770A640, 0xD848520 },
+ { 0xF67803F0, 0xCD9F020 },
+ { 0xF58C9AA0, 0xC1D8700 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF3E27900, 0xA736560 },
+ { 0xF3260FE0, 0x987FC10 },
+ { 0xF27B7AE0, 0x88F59C0 },
+ { 0xF1E3A690, 0x78AD768 },
+ { 0xF15F6590, 0x67BDE38 },
+ { 0xF0EF6F70, 0x563E690 },
+ { 0xF0945F90, 0x4447490 },
+ { 0xF04EB410, 0x31F1704 },
+ { 0xF01ECDD0, 0x1F564EC },
+ { 0xF004EF10, 0xC8FB3D },
+ { 0xF0013BD0, 0xFF9B7ABE },
+ { 0xF013B930, 0xFE6E8572 },
+ { 0xF03C4D80, 0xFD43BD5C },
+ { 0xF07AC080, 0xFC1CC0C0 },
+ { 0xF0CEBB90, 0xFAFB28D0 },
+ { 0xF137CA20, 0xF9E08758 },
+ { 0xF1B55A70, 0xF8CE6460 },
+ { 0xF246BE50, 0xF7C63C40 },
+ { 0xF2EB2C20, 0xF6C97D70 },
+ { 0xF3A1BFB0, 0xF5D98680 },
+ { 0xF4697BF0, 0xF4F7A440 },
+ { 0xF5414B70, 0xF4251060 },
+ { 0xF62802F0, 0xF362EED0 },
+ { 0xF71C62A0, 0xF2B24CC0 },
+ { 0xF81D16C8, 0xF2141FB0 },
+ { 0xF928BC28, 0xF1894270 },
+ { 0xFA3DDEA0, 0xF1127630 },
+ { 0xFB5AFE98, 0xF0B05F50 },
+ { 0xFC7E8F90, 0xF0638630 },
+ { 0xFDA6FE04, 0xF02C5540 },
+ { 0xFED2ADC2, 0xF00B1930 },
+ { 0x10000000, 0x0 },
+ { 0xFEC46D0, 0x1917A6C },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xE1C5970, 0x78AD750 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xC5E4030, 0xA2679A0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x78AD738, 0xE1C5980 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x4A50180, 0xF4FA0B0 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0x10000000, 0x0 },
+ { 0xFB14BE0, 0x31F1708 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0x8E39D90, 0xD4DB320 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x31F16F0, 0xFB14BF0 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xF9E08740, 0xEC835E0 },
+ { 0xF71C6240, 0xD4DB300 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF2B24CE0, 0x8E39D90 },
+ { 0xF137CA00, 0x61F7880 },
+ { 0xF04EB410, 0x31F1704 },
+ { 0x10000000, 0x0 },
+ { 0xF4FA0B0, 0x4A50188 },
+ { 0xD4DB310, 0x8E39DA0 },
+ { 0xA267990, 0xC5E4030 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x1917A6A, 0xFEC46D0 },
+ { 0xFCE0E8F8, 0xFB14BE0 },
+ { 0xF8752898, 0xE1C5970 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF1E3A690, 0x78AD768 },
+ { 0xF04EB410, 0x31F1704 },
+ { 0xF013B930, 0xFE6E8572 },
+ { 0xF137CA20, 0xF9E08758 },
+ { 0xF3A1BFB0, 0xF5D98680 },
+ { 0xF71C62A0, 0xF2B24CC0 },
+ { 0xFB5AFE98, 0xF0B05F50 },
+ { 0x10000000, 0x0 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x10000000, 0x0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0x10000000, 0x0 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF137CA20, 0xF9E08758 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x3, 0xF0000000 }
};
-real_t cfft_tab_240[] =
+complex_t cfft_tab_240[] =
{
- 0x10000000,
- 0x0,
- 0xFFE98AD,
- 0x6B3885,
- 0xFFA62F6,
- 0xD65E3A,
- 0xFF35F97,
- 0x1415E53,
- 0xFE98FCA,
- 0x1AC260A,
- 0xFDCF549,
- 0x216A2A2,
- 0xFCD9249,
- 0x280C16E,
- 0xFBB697F,
- 0x2EA6FCD,
- 0xFA67E18,
- 0x3539B37,
- 0xF8ED3C2,
- 0x3BC3136,
- 0xF746EA3,
- 0x4241F72,
- 0xF57535C,
- 0x48B53AE,
- 0xF378708,
- 0x4F1BBD0,
- 0xF150F3D,
- 0x55745DE,
- 0xEEFF206,
- 0x5BBE00A,
- 0xEC835E6,
- 0x61F78AC,
- 0xE9DE1D6,
- 0x681FE4B,
- 0xE70FD42,
- 0x6E35F9D,
- 0xE41900D,
- 0x7438B8D,
- 0xE0FA286,
- 0x7A2713C,
- 0xDDB3D72,
- 0x8000003,
- 0xDA46A01,
- 0x85C2777,
- 0xD6B31D1,
- 0x8B6D76F,
- 0xD2F9EEE,
- 0x9100000,
- 0xCF1BBCB,
- 0x9679186,
- 0xCB19342,
- 0x9BD7CA3,
- 0xC6F3097,
- 0xA11B246,
- 0xC2A9F6E,
- 0xA6423A7,
- 0xBE3EBD0,
- 0xAB4C24F,
- 0xB9B2224,
- 0xB03801A,
- 0xB504F2F,
- 0xB504F37,
- 0xB038012,
- 0xB9B222C,
- 0xAB4C246,
- 0xBE3EBD8,
- 0xA64239E,
- 0xC2A9F76,
- 0xA11B23C,
- 0xC6F309E,
- 0x9BD7C9A,
- 0xCB19349,
- 0x967917C,
- 0xCF1BBD1,
- 0x90FFFF6,
- 0xD2F9EF5,
- 0x8B6D765,
- 0xD6B31D8,
- 0x85C276D,
- 0xDA46A07,
- 0x7FFFFF9,
- 0xDDB3D78,
- 0x7A27132,
- 0xE0FA28C,
- 0x7438B83,
- 0xE419012,
- 0x6E35F92,
- 0xE70FD48,
- 0x681FE40,
- 0xE9DE1DA,
- 0x61F78A1,
- 0xEC835EA,
- 0x5BBDFFF,
- 0xEEFF20A,
- 0x55745D3,
- 0xF150F41,
- 0x4F1BBC4,
- 0xF37870C,
- 0x48B53A3,
- 0xF57535F,
- 0x4241F66,
- 0xF746EA6,
- 0x3BC312A,
- 0xF8ED3C5,
- 0x3539B2B,
- 0xFA67E1B,
- 0x2EA6FC2,
- 0xFBB6981,
- 0x280C162,
- 0xFCD924B,
- 0x216A297,
- 0xFDCF54A,
- 0x1AC25FE,
- 0xFE98FCB,
- 0x1415E48,
- 0xFF35F97,
- 0xD65E2E,
- 0xFFA62F7,
- 0x6B3879,
- 0xFFE98AE,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFF94C770,
- 0xFFE98AD,
- 0xFF29A1BA,
- 0xFFA62F5,
- 0xFEBEA1A1,
- 0xFF35F96,
- 0xFE53D9EA,
- 0xFE98FC9,
- 0xFDE95D52,
- 0xFDCF547,
- 0xFD7F3E87,
- 0xFCD9248,
- 0xFD159027,
- 0xFBB697D,
- 0xFCAC64BE,
- 0xFA67E16,
- 0xFC43CEBF,
- 0xF8ED3BF,
- 0xFBDBE083,
- 0xF746EA0,
- 0xFB74AC47,
- 0xF575358,
- 0xFB0E4425,
- 0xF378705,
- 0xFAA8BA17,
- 0xF150F39,
- 0xFA441FEB,
- 0xEEFF202,
- 0xF9E08749,
- 0xEC835E1,
- 0xF97E01AB,
- 0xE9DE1D1,
- 0xF91CA058,
- 0xE70FD3D,
- 0xF8BC7468,
- 0xE419007,
- 0xF85D8EBA,
- 0xE0FA281,
- 0x10000000,
- 0x0,
- 0xFFA62F6,
- 0xD65E3A,
- 0xFE98FCA,
- 0x1AC260A,
- 0xFCD9249,
- 0x280C16E,
- 0xFA67E18,
- 0x3539B37,
- 0xF746EA3,
- 0x4241F72,
- 0xF378708,
- 0x4F1BBD0,
- 0xEEFF206,
- 0x5BBE00A,
- 0xE9DE1D6,
- 0x681FE4B,
- 0xE41900D,
- 0x7438B8D,
- 0xDDB3D72,
- 0x8000003,
- 0xD6B31D1,
- 0x8B6D76F,
- 0xCF1BBCB,
- 0x9679186,
- 0xC6F3097,
- 0xA11B246,
- 0xBE3EBD0,
- 0xAB4C24F,
- 0xB504F2F,
- 0xB504F37,
- 0xAB4C246,
- 0xBE3EBD8,
- 0xA11B23C,
- 0xC6F309E,
- 0x967917C,
- 0xCF1BBD1,
- 0x8B6D765,
- 0xD6B31D8,
- 0x7FFFFF9,
- 0xDDB3D78,
- 0x7438B83,
- 0xE419012,
- 0x681FE40,
- 0xE9DE1DA,
- 0x5BBDFFF,
- 0xEEFF20A,
- 0x4F1BBC4,
- 0xF37870C,
- 0x4241F66,
- 0xF746EA6,
- 0x3539B2B,
- 0xFA67E1B,
- 0x280C162,
- 0xFCD924B,
- 0x1AC25FE,
- 0xFE98FCB,
- 0xD65E2E,
- 0xFFA62F7,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFF29A1BA,
- 0xFFA62F5,
- 0xFE53D9EA,
- 0xFE98FC9,
- 0xFD7F3E87,
- 0xFCD9248,
- 0xFCAC64BE,
- 0xFA67E16,
- 0xFBDBE083,
- 0xF746EA0,
- 0xFB0E4425,
- 0xF378705,
- 0xFA441FEB,
- 0xEEFF202,
- 0xF97E01AB,
- 0xE9DE1D1,
- 0xF8BC7468,
- 0xE419007,
- 0xF7FFFFF3,
- 0xDDB3D6C,
- 0xF7492887,
- 0xD6B31CB,
- 0xF6986E71,
- 0xCF1BBC4,
- 0xF5EE4DB1,
- 0xC6F308F,
- 0xF54B3DA8,
- 0xBE3EBC8,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF41C1420,
- 0xAB4C23E,
- 0xF390CF5A,
- 0xA11B233,
- 0xF30E4428,
- 0x9679173,
- 0xF294CE22,
- 0x8B6D75B,
- 0xF224C283,
- 0x7FFFFEF,
- 0xF1BE6FE9,
- 0x7438B79,
- 0xF1621E21,
- 0x681FE35,
- 0xF1100DF2,
- 0x5BBDFF4,
- 0xF0C878F0,
- 0x4F1BBB9,
- 0xF08B9157,
- 0x4241F5B,
- 0xF05981E3,
- 0x3539B20,
- 0xF0326DB3,
- 0x280C156,
- 0xF0167034,
- 0x1AC25F3,
- 0xF0059D09,
- 0xD65E23,
- 0xF0000001,
- 0xFFFFFFE9,
- 0xF0059D0B,
- 0xFF29A1AE,
- 0xF0167039,
- 0xFE53D9DF,
- 0xF0326DBA,
- 0xFD7F3E7B,
- 0xF05981EC,
- 0xFCAC64B2,
- 0xF08B9163,
- 0xFBDBE078,
- 0xF0C878FF,
- 0xFB0E441A,
- 0xF1100E02,
- 0xFA441FE0,
- 0xF1621E34,
- 0xF97E01A0,
- 0xF1BE6FFE,
- 0xF8BC745E,
- 0xF224C29A,
- 0xF7FFFFE9,
- 0xF294CE3B,
- 0xF749287D,
- 0xF30E4443,
- 0xF6986E67,
- 0xF390CF78,
- 0xF5EE4DA8,
- 0xF41C1440,
- 0xF54B3DA0,
- 0xF4AFB0E2,
- 0xF4AFB0B9,
- 0xF54B3DCB,
- 0xF41C1419,
- 0xF5EE4DD6,
- 0xF390CF53,
- 0xF6986E97,
- 0xF30E4421,
- 0xF74928AF,
- 0xF294CE1B,
- 0x10000000,
- 0x0,
- 0xFF35F97,
- 0x1415E53,
- 0xFCD9249,
- 0x280C16E,
- 0xF8ED3C2,
- 0x3BC3136,
- 0xF378708,
- 0x4F1BBD0,
- 0xEC835E6,
- 0x61F78AC,
- 0xE41900D,
- 0x7438B8D,
- 0xDA46A01,
- 0x85C2777,
- 0xCF1BBCB,
- 0x9679186,
- 0xC2A9F6E,
- 0xA6423A7,
- 0xB504F2F,
- 0xB504F37,
- 0xA64239E,
- 0xC2A9F76,
- 0x967917C,
- 0xCF1BBD1,
- 0x85C276D,
- 0xDA46A07,
- 0x7438B83,
- 0xE419012,
- 0x61F78A1,
- 0xEC835EA,
- 0x4F1BBC4,
- 0xF37870C,
- 0x3BC312A,
- 0xF8ED3C5,
- 0x280C162,
- 0xFCD924B,
- 0x1415E48,
- 0xFF35F97,
- 0x10000000,
- 0x0,
- 0xFCD9249,
- 0x280C16E,
- 0xF378708,
- 0x4F1BBD0,
- 0xE41900D,
- 0x7438B8D,
- 0xCF1BBCB,
- 0x9679186,
- 0xB504F2F,
- 0xB504F37,
- 0x967917C,
- 0xCF1BBD1,
- 0x7438B83,
- 0xE419012,
- 0x4F1BBC4,
- 0xF37870C,
- 0x280C162,
- 0xFCD924B,
- 0xFFFFFFF5,
- 0xFFFFFFF,
- 0xFD7F3E87,
- 0xFCD9248,
- 0xFB0E4425,
- 0xF378705,
- 0xF8BC7468,
- 0xE419007,
- 0xF6986E71,
- 0xCF1BBC4,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF30E4428,
- 0x9679173,
- 0xF1BE6FE9,
- 0x7438B79,
- 0xF0C878F0,
- 0x4F1BBB9,
- 0xF0326DB3,
- 0x280C156,
- 0x10000000,
- 0x0,
- 0xF8ED3C2,
- 0x3BC3136,
- 0xE41900D,
- 0x7438B8D,
- 0xC2A9F6E,
- 0xA6423A7,
- 0x967917C,
- 0xCF1BBD1,
- 0x61F78A1,
- 0xEC835EA,
- 0x280C162,
- 0xFCD924B,
- 0xFEBEA1A1,
- 0xFF35F96,
- 0xFB0E4425,
- 0xF378705,
- 0xF7A3D87F,
- 0xDA469FB,
- 0xF4AFB0C1,
- 0xB504F26,
- 0xF25B95F3,
- 0x85C2763,
- 0xF0C878F0,
- 0x4F1BBB9,
- 0xF00CA068,
- 0x1415E3C,
- 0xF0326DBA,
- 0xFD7F3E7B,
- 0xF137CA23,
- 0xF9E0873E,
- 0xF30E4443,
- 0xF6986E67,
- 0xF59BDC74,
- 0xF3D5607B,
- 0xF8BC7492,
- 0xF1BE6FE3,
- 0xFC43CEEC,
- 0xF0712C36,
- 0x10000000,
- 0x0,
- 0xF378708,
- 0x4F1BBD0,
- 0xCF1BBCB,
- 0x9679186,
- 0x967917C,
- 0xCF1BBD1,
- 0x4F1BBC4,
- 0xF37870C,
- 0x10000000,
- 0x0,
- 0xCF1BBCB,
- 0x9679186,
- 0x4F1BBC4,
- 0xF37870C,
- 0xFB0E4425,
- 0xF378705,
- 0xF30E4428,
- 0x9679173,
- 0x10000000,
- 0x0,
- 0x967917C,
- 0xCF1BBD1,
- 0xFB0E4425,
- 0xF378705,
- 0xF0C878F0,
- 0x4F1BBB9,
- 0xF30E4443,
- 0xF6986E67,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x10000000,
- 0x0,
- 0x4F1BBF1,
- 0xF0C87902,
+ { 0x10000000, 0x0 },
+ { 0xFFE98B0, 0x6B3885 },
+ { 0xFFA62F0, 0xD65E3B },
+ { 0xFF35F90, 0x1415E54 },
+ { 0xFE98FD0, 0x1AC260A },
+ { 0xFDCF550, 0x216A2A4 },
+ { 0xFCD9250, 0x280C170 },
+ { 0xFBB6980, 0x2EA6FCC },
+ { 0xFA67E20, 0x3539B38 },
+ { 0xF8ED3C0, 0x3BC3138 },
+ { 0xF746EA0, 0x4241F70 },
+ { 0xF575360, 0x48B53B0 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xF150F40, 0x55745E0 },
+ { 0xEEFF200, 0x5BBE008 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xE9DE1D0, 0x681FE48 },
+ { 0xE70FD40, 0x6E35FA0 },
+ { 0xE419010, 0x7438B90 },
+ { 0xE0FA280, 0x7A27140 },
+ { 0xDDB3D70, 0x8000000 },
+ { 0xDA46A00, 0x85C2770 },
+ { 0xD6B31D0, 0x8B6D770 },
+ { 0xD2F9EF0, 0x9100000 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0xCB19340, 0x9BD7CA0 },
+ { 0xC6F3090, 0xA11B240 },
+ { 0xC2A9F70, 0xA6423B0 },
+ { 0xBE3EBD0, 0xAB4C250 },
+ { 0xB9B2230, 0xB038010 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xB038010, 0xB9B2230 },
+ { 0xAB4C240, 0xBE3EBE0 },
+ { 0xA6423A0, 0xC2A9F70 },
+ { 0xA11B240, 0xC6F30A0 },
+ { 0x9BD7C90, 0xCB19350 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x9100000, 0xD2F9EF0 },
+ { 0x8B6D760, 0xD6B31E0 },
+ { 0x85C2760, 0xDA46A10 },
+ { 0x7FFFFF8, 0xDDB3D80 },
+ { 0x7A27138, 0xE0FA290 },
+ { 0x7438B90, 0xE419010 },
+ { 0x6E35F88, 0xE70FD50 },
+ { 0x681FE40, 0xE9DE1E0 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x5BBDFF0, 0xEEFF210 },
+ { 0x55745D0, 0xF150F40 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x48B53A8, 0xF575360 },
+ { 0x4241F78, 0xF746EA0 },
+ { 0x3BC3124, 0xF8ED3C0 },
+ { 0x3539B2C, 0xFA67E20 },
+ { 0x2EA6FCC, 0xFBB6980 },
+ { 0x280C154, 0xFCD9250 },
+ { 0x216A290, 0xFDCF550 },
+ { 0x1AC25FE, 0xFE98FD0 },
+ { 0x1415E50, 0xFF35F90 },
+ { 0xD65E3F, 0xFFA62F0 },
+ { 0x6B3871, 0xFFE98B0 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFF94C777, 0xFFE98B0 },
+ { 0xFF29A1AA, 0xFFA62F0 },
+ { 0xFEBEA198, 0xFF35F90 },
+ { 0xFE53D9EA, 0xFE98FD0 },
+ { 0xFDE95D58, 0xFDCF550 },
+ { 0xFD7F3E98, 0xFCD9250 },
+ { 0xFD159020, 0xFBB6980 },
+ { 0xFCAC64BC, 0xFA67E10 },
+ { 0xFC43CEC4, 0xF8ED3C0 },
+ { 0xFBDBE070, 0xF746EA0 },
+ { 0xFB74AC40, 0xF575350 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xFAA8BA20, 0xF150F40 },
+ { 0xFA441FF8, 0xEEFF210 },
+ { 0xF9E08740, 0xEC835E0 },
+ { 0xF97E01A8, 0xE9DE1D0 },
+ { 0xF91CA060, 0xE70FD40 },
+ { 0xF8BC7458, 0xE419000 },
+ { 0xF85D8ED0, 0xE0FA290 },
+ { 0x10000000, 0x0 },
+ { 0xFFA62F0, 0xD65E3B },
+ { 0xFE98FD0, 0x1AC260A },
+ { 0xFCD9250, 0x280C170 },
+ { 0xFA67E20, 0x3539B38 },
+ { 0xF746EA0, 0x4241F70 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xEEFF200, 0x5BBE008 },
+ { 0xE9DE1D0, 0x681FE48 },
+ { 0xE419010, 0x7438B90 },
+ { 0xDDB3D70, 0x8000000 },
+ { 0xD6B31D0, 0x8B6D770 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0xC6F3090, 0xA11B240 },
+ { 0xBE3EBD0, 0xAB4C250 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xAB4C240, 0xBE3EBE0 },
+ { 0xA11B240, 0xC6F30A0 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x8B6D760, 0xD6B31E0 },
+ { 0x7FFFFF8, 0xDDB3D80 },
+ { 0x7438B90, 0xE419010 },
+ { 0x681FE40, 0xE9DE1E0 },
+ { 0x5BBDFF0, 0xEEFF210 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x4241F78, 0xF746EA0 },
+ { 0x3539B2C, 0xFA67E20 },
+ { 0x280C154, 0xFCD9250 },
+ { 0x1AC25FE, 0xFE98FD0 },
+ { 0xD65E3F, 0xFFA62F0 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFF29A1AA, 0xFFA62F0 },
+ { 0xFE53D9EA, 0xFE98FD0 },
+ { 0xFD7F3E98, 0xFCD9250 },
+ { 0xFCAC64BC, 0xFA67E10 },
+ { 0xFBDBE070, 0xF746EA0 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xFA441FF8, 0xEEFF210 },
+ { 0xF97E01A8, 0xE9DE1D0 },
+ { 0xF8BC7458, 0xE419000 },
+ { 0xF7FFFFF0, 0xDDB3D70 },
+ { 0xF7492890, 0xD6B31D0 },
+ { 0xF6986E90, 0xCF1BBD0 },
+ { 0xF5EE4DA0, 0xC6F3080 },
+ { 0xF54B3DA0, 0xBE3EBD0 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF41C1410, 0xAB4C220 },
+ { 0xF390CF50, 0xA11B220 },
+ { 0xF30E4420, 0x9679170 },
+ { 0xF294CE30, 0x8B6D770 },
+ { 0xF224C290, 0x8000010 },
+ { 0xF1BE6FE0, 0x7438B68 },
+ { 0xF1621E20, 0x681FE38 },
+ { 0xF1100DF0, 0x5BBE000 },
+ { 0xF0C878E0, 0x4F1BB98 },
+ { 0xF08B9150, 0x4241F50 },
+ { 0xF05981E0, 0x3539B20 },
+ { 0xF0326DB0, 0x280C168 },
+ { 0xF0167030, 0x1AC2612 },
+ { 0xF0059D00, 0xD65E13 },
+ { 0xF0000000, 0xFFFFFFE9 },
+ { 0xF0059D10, 0xFF29A1BE },
+ { 0xF0167040, 0xFE53D9BE },
+ { 0xF0326DC0, 0xFD7F3E6C },
+ { 0xF05981F0, 0xFCAC64B0 },
+ { 0xF08B9160, 0xFBDBE088 },
+ { 0xF0C878F0, 0xFB0E4438 },
+ { 0xF1100E00, 0xFA441FD0 },
+ { 0xF1621E30, 0xF97E01A0 },
+ { 0xF1BE6FF0, 0xF8BC7468 },
+ { 0xF224C2B0, 0xF7FFFFD0 },
+ { 0xF294CE40, 0xF7492870 },
+ { 0xF30E4440, 0xF6986E60 },
+ { 0xF390CF70, 0xF5EE4DB0 },
+ { 0xF41C1430, 0xF54B3DB0 },
+ { 0xF4AFB0F0, 0xF4AFB0B0 },
+ { 0xF54B3DD0, 0xF41C1420 },
+ { 0xF5EE4DD0, 0xF390CF60 },
+ { 0xF6986EB0, 0xF30E4410 },
+ { 0xF7492880, 0xF294CE30 },
+ { 0x10000000, 0x0 },
+ { 0xFF35F90, 0x1415E54 },
+ { 0xFCD9250, 0x280C170 },
+ { 0xF8ED3C0, 0x3BC3138 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xEC835E0, 0x61F78B0 },
+ { 0xE419010, 0x7438B90 },
+ { 0xDA46A00, 0x85C2770 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0xC2A9F70, 0xA6423B0 },
+ { 0xB504F30, 0xB504F30 },
+ { 0xA6423A0, 0xC2A9F70 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x85C2760, 0xDA46A10 },
+ { 0x7438B90, 0xE419010 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x3BC3124, 0xF8ED3C0 },
+ { 0x280C154, 0xFCD9250 },
+ { 0x1415E50, 0xFF35F90 },
+ { 0x10000000, 0x0 },
+ { 0xFCD9250, 0x280C170 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xE419010, 0x7438B90 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0xB504F30, 0xB504F30 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x7438B90, 0xE419010 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x280C154, 0xFCD9250 },
+ { 0xFFFFFFF5, 0x10000000 },
+ { 0xFD7F3E98, 0xFCD9250 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF8BC7458, 0xE419000 },
+ { 0xF6986E90, 0xCF1BBD0 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF30E4420, 0x9679170 },
+ { 0xF1BE6FE0, 0x7438B68 },
+ { 0xF0C878E0, 0x4F1BB98 },
+ { 0xF0326DB0, 0x280C168 },
+ { 0x10000000, 0x0 },
+ { 0xF8ED3C0, 0x3BC3138 },
+ { 0xE419010, 0x7438B90 },
+ { 0xC2A9F70, 0xA6423B0 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x61F78A8, 0xEC835E0 },
+ { 0x280C154, 0xFCD9250 },
+ { 0xFEBEA198, 0xFF35F90 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF7A3D870, 0xDA469F0 },
+ { 0xF4AFB0D0, 0xB504F30 },
+ { 0xF25B95F0, 0x85C2760 },
+ { 0xF0C878E0, 0x4F1BB98 },
+ { 0xF00CA060, 0x1415E44 },
+ { 0xF0326DC0, 0xFD7F3E6C },
+ { 0xF137CA20, 0xF9E08758 },
+ { 0xF30E4440, 0xF6986E60 },
+ { 0xF59BDC80, 0xF3D56070 },
+ { 0xF8BC74C0, 0xF1BE6FD0 },
+ { 0xFC43CEB4, 0xF0712C40 },
+ { 0x10000000, 0x0 },
+ { 0xF378710, 0x4F1BBD0 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0x10000000, 0x0 },
+ { 0xCF1BBD0, 0x9679180 },
+ { 0x4F1BBC8, 0xF378710 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF30E4420, 0x9679170 },
+ { 0x10000000, 0x0 },
+ { 0x9679180, 0xCF1BBD0 },
+ { 0xFB0E4428, 0xF378700 },
+ { 0xF0C878E0, 0x4F1BB98 },
+ { 0xF30E4440, 0xF6986E60 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x10000000, 0x0 },
+ { 0x4F1BBF0, 0xF0C87900 }
};
#endif
--- a/libfaad/common.h
+++ b/libfaad/common.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: common.h,v 1.21 2002/09/13 13:08:45 menno Exp $
+** $Id: common.h,v 1.22 2002/09/26 19:01:45 menno Exp $
**/
#ifndef __COMMON_H__
@@ -196,10 +196,9 @@
#endif
-typedef struct {
- real_t re;
- real_t im;
-} complex_t;
+typedef real_t complex_t[2];
+#define RE(A) A[0]
+#define IM(A) A[1]
/* common functions */
--- a/libfaad/decoder.c
+++ b/libfaad/decoder.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: decoder.c,v 1.34 2002/09/16 11:07:04 menno Exp $
+** $Id: decoder.c,v 1.35 2002/09/26 19:01:45 menno Exp $
**/
#include <stdlib.h>
@@ -684,7 +684,7 @@
} else if (syntax_elements[i]->paired_channel == ch) {
ics = &(syntax_elements[i]->ics2);
if (syntax_elements[i]->common_window)
- ltp = &(ics->ltp2);
+ ltp = &(syntax_elements[i]->ics1.ltp2);
else
ltp = &(ics->ltp);
right_channel = 1;
--- a/libfaad/huffman.h
+++ b/libfaad/huffman.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: huffman.h,v 1.10 2002/09/16 20:43:37 menno Exp $
+** $Id: huffman.h,v 1.11 2002/09/26 19:01:45 menno Exp $
**/
#ifndef __HUFFMAN_H__
@@ -73,205 +73,258 @@
static uint8_t hcbN[] = { 0, 5, 5, 0, 5, 0, 5, 0, 5, 0, 6, 5 };
+/* defines whether a huffman codebook is unsigned or not */
+/* Table 4.6.2 */
+static uint8_t unsigned_cb[] = { 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
+ /* codebook 16 to 31 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+};
+
static int hcb_2_quad_table_size[] = { 0, 114, 86, 0, 185, 0, 0, 0, 0, 0, 0, 0 };
static int hcb_2_pair_table_size[] = { 0, 0, 0, 0, 0, 0, 126, 0, 83, 0, 210, 373 };
static int hcb_bin_table_size[] = { 0, 0, 0, 161, 0, 161, 0, 127, 0, 337, 0, 0 };
-static INLINE uint8_t huffman_spectral_data(uint8_t cb, bitfile *ld, int16_t *sp)
+static INLINE void huffman_sign_bits(bitfile *ld, int16_t *sp, uint8_t len)
{
- uint32_t cw;
- uint16_t offset = 0;
- uint8_t extra_bits;
+ uint8_t i;
- switch (cb)
+ for(i = 0; i < len; i++)
{
- case 1: /* 2-step method for data quadruples */
- case 2:
- case 4:
-
- cw = faad_showbits(ld, hcbN[cb]);
- offset = hcb_table[cb][cw].offset;
- extra_bits = hcb_table[cb][cw].extra_bits;
-
- if (extra_bits)
+ if(sp[i])
{
- /* we know for sure it's more than hcbN[cb] bits long */
- faad_flushbits(ld, hcbN[cb]);
- offset += (uint16_t)faad_showbits(ld, extra_bits);
- faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits - hcbN[cb]);
- } else {
- faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits);
+ if(faad_get1bit(ld
+ DEBUGVAR(1,5,"huffman_sign_bits(): sign bit")) & 1)
+ {
+ sp[i] = -sp[i];
+ }
}
+ }
+}
- if (offset > hcb_2_quad_table_size[cb])
+static INLINE int16_t huffman_getescape(bitfile *ld, int16_t sp)
+{
+ uint8_t neg, i;
+ int16_t j;
+ int32_t off;
+
+ if (sp < 0) {
+ if(sp != -16)
+ return sp;
+ neg = 1;
+ } else {
+ if(sp != 16)
+ return sp;
+ neg = 0;
+ }
+
+ for (i = 4; ; i++)
+ {
+ if (faad_get1bit(ld
+ DEBUGVAR(1,6,"huffman_getescape(): escape size")) == 0)
{
- /* printf("ERROR: offset into hcb_2_quad_table = %d >%d!\n", offset,
- hcb_2_quad_table_size[cb]); */
- return 10;
+ break;
}
+ }
- sp[0] = hcb_2_quad_table[cb][offset].x;
- sp[1] = hcb_2_quad_table[cb][offset].y;
- sp[2] = hcb_2_quad_table[cb][offset].v;
- sp[3] = hcb_2_quad_table[cb][offset].w;
+ off = faad_getbits(ld, i
+ DEBUGVAR(1,9,"huffman_getescape(): escape"));
- return 0;
+ j = off + (1<<i);
+ if (neg)
+ j = -j;
- case 6: /* 2-step method for data pairs */
- case 8:
- case 10:
- case 11:
-#ifdef ERROR_RESILIENCE
- /* VCB11 uses codebook 11 */
- case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23:
- case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31:
+ return j;
+}
- /* TODO: If ER is used, some extra error checking should be done */
- if (cb >= 16)
- cb = 11;
-#endif
+static uint8_t huffman_2step_quad(uint8_t cb, bitfile *ld, int16_t *sp)
+{
+ uint32_t cw;
+ uint16_t offset = 0;
+ uint8_t extra_bits;
- cw = faad_showbits(ld, hcbN[cb]);
- offset = hcb_table[cb][cw].offset;
- extra_bits = hcb_table[cb][cw].extra_bits;
+ cw = faad_showbits(ld, hcbN[cb]);
+ offset = hcb_table[cb][cw].offset;
+ extra_bits = hcb_table[cb][cw].extra_bits;
- if (extra_bits)
- {
- /* we know for sure it's more than hcbN[cb] bits long */
- faad_flushbits(ld, hcbN[cb]);
- offset += (uint16_t)faad_showbits(ld, extra_bits);
- faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits - hcbN[cb]);
- } else {
- faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits);
- }
+ if (extra_bits)
+ {
+ /* we know for sure it's more than hcbN[cb] bits long */
+ faad_flushbits(ld, hcbN[cb]);
+ offset += (uint16_t)faad_showbits(ld, extra_bits);
+ faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits - hcbN[cb]);
+ } else {
+ faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits);
+ }
- if (offset > hcb_2_pair_table_size[cb])
- {
- /* printf("ERROR: offset into hcb_2_pair_table = %d >%d!\n", offset,
- hcb_2_pair_table_size[cb]); */
- return 10;
- }
+ if (offset > hcb_2_quad_table_size[cb])
+ {
+ /* printf("ERROR: offset into hcb_2_quad_table = %d >%d!\n", offset,
+ hcb_2_quad_table_size[cb]); */
+ return 10;
+ }
- sp[0] = hcb_2_pair_table[cb][offset].x;
- sp[1] = hcb_2_pair_table[cb][offset].y;
+ sp[0] = hcb_2_quad_table[cb][offset].x;
+ sp[1] = hcb_2_quad_table[cb][offset].y;
+ sp[2] = hcb_2_quad_table[cb][offset].v;
+ sp[3] = hcb_2_quad_table[cb][offset].w;
- return 0;
+ return 0;
+}
- case 3: /* binary search for data quadruples */
+static uint8_t huffman_2step_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp)
+{
+ uint8_t err = huffman_2step_quad(cb, ld, sp);
+ huffman_sign_bits(ld, sp, QUAD_LEN);
- while (!hcb3[offset].is_leaf)
- {
- uint8_t b = faad_get1bit(ld
- DEBUGVAR(1,255,"huffman_spectral_data():3"));
- offset += hcb3[offset].data[b];
- }
+ return err;
+}
- if (offset > hcb_bin_table_size[cb])
- {
- /* printf("ERROR: offset into hcb_bin_table = %d >%d!\n", offset,
- hcb_bin_table_size[cb]); */
- return 10;
- }
+static uint8_t huffman_2step_pair(uint8_t cb, bitfile *ld, int16_t *sp)
+{
+ uint32_t cw;
+ uint16_t offset = 0;
+ uint8_t extra_bits;
- sp[0] = hcb3[offset].data[0];
- sp[1] = hcb3[offset].data[1];
- sp[2] = hcb3[offset].data[2];
- sp[3] = hcb3[offset].data[3];
+ cw = faad_showbits(ld, hcbN[cb]);
+ offset = hcb_table[cb][cw].offset;
+ extra_bits = hcb_table[cb][cw].extra_bits;
- return 0;
+ if (extra_bits)
+ {
+ /* we know for sure it's more than hcbN[cb] bits long */
+ faad_flushbits(ld, hcbN[cb]);
+ offset += (uint16_t)faad_showbits(ld, extra_bits);
+ faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits - hcbN[cb]);
+ } else {
+ faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits);
+ }
- case 5: /* binary search for data pairs */
- case 7:
- case 9:
+ if (offset > hcb_2_pair_table_size[cb])
+ {
+ /* printf("ERROR: offset into hcb_2_pair_table = %d >%d!\n", offset,
+ hcb_2_pair_table_size[cb]); */
+ return 10;
+ }
- while (!hcb_bin_table[cb][offset].is_leaf)
- {
- uint8_t b = faad_get1bit(ld
- DEBUGVAR(1,255,"huffman_spectral_data():9"));
- offset += hcb_bin_table[cb][offset].data[b];
- }
+ sp[0] = hcb_2_pair_table[cb][offset].x;
+ sp[1] = hcb_2_pair_table[cb][offset].y;
- if (offset > hcb_bin_table_size[cb])
- {
- /* printf("ERROR: offset into hcb_bin_table = %d >%d!\n", offset,
- hcb_bin_table_size[cb]); */
- return 10;
- }
+ return 0;
+}
- sp[0] = hcb_bin_table[cb][offset].data[0];
- sp[1] = hcb_bin_table[cb][offset].data[1];
+static huffman_2step_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp)
+{
+ uint8_t err = huffman_2step_pair(cb, ld, sp);
+ huffman_sign_bits(ld, sp, PAIR_LEN);
- return 0;
+ return err;
+}
- default:
- /* Non existent codebook number, something went wrong */
- return 11;
+static uint8_t huffman_binary_quad(uint8_t cb, bitfile *ld, int16_t *sp)
+{
+ uint16_t offset = 0;
+
+ while (!hcb3[offset].is_leaf)
+ {
+ uint8_t b = faad_get1bit(ld
+ DEBUGVAR(1,255,"huffman_spectral_data():3"));
+ offset += hcb3[offset].data[b];
}
+ if (offset > hcb_bin_table_size[cb])
+ {
+ /* printf("ERROR: offset into hcb_bin_table = %d >%d!\n", offset,
+ hcb_bin_table_size[cb]); */
+ return 10;
+ }
+
+ sp[0] = hcb3[offset].data[0];
+ sp[1] = hcb3[offset].data[1];
+ sp[2] = hcb3[offset].data[2];
+ sp[3] = hcb3[offset].data[3];
+
return 0;
}
-static INLINE void huffman_sign_bits(bitfile *ld, int16_t *sp, uint8_t len)
+static uint8_t huffman_binary_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp)
{
- uint8_t i;
+ uint8_t err = huffman_binary_quad(cb, ld, sp);
+ huffman_sign_bits(ld, sp, QUAD_LEN);
- for(i = 0; i < len; i++)
- {
- if(sp[i])
- {
- if(faad_get1bit(ld
- DEBUGVAR(1,5,"huffman_sign_bits(): sign bit")) & 1)
- {
- sp[i] = -sp[i];
- }
- }
- }
+ return err;
}
-static INLINE int32_t huffman_getescape(bitfile *ld, int16_t sp)
+static uint8_t huffman_binary_pair(uint8_t cb, bitfile *ld, int16_t *sp)
{
- uint8_t neg, i;
- int32_t j, off;
+ uint16_t offset = 0;
- if (sp < 0) {
- if(sp != -16)
- return sp;
- neg = 1;
- } else {
- if(sp != 16)
- return sp;
- neg = 0;
+ while (!hcb_bin_table[cb][offset].is_leaf)
+ {
+ uint8_t b = faad_get1bit(ld
+ DEBUGVAR(1,255,"huffman_spectral_data():9"));
+ offset += hcb_bin_table[cb][offset].data[b];
}
- for (i = 4; ; i++)
+ if (offset > hcb_bin_table_size[cb])
{
- if (faad_get1bit(ld
- DEBUGVAR(1,6,"huffman_getescape(): escape size")) == 0)
- {
- break;
- }
+ /* printf("ERROR: offset into hcb_bin_table = %d >%d!\n", offset,
+ hcb_bin_table_size[cb]); */
+ return 10;
}
-#if 0
- if (i > 16)
+ sp[0] = hcb_bin_table[cb][offset].data[0];
+ sp[1] = hcb_bin_table[cb][offset].data[1];
+
+ return 0;
+}
+
+static uint8_t huffman_binary_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp)
+{
+ uint8_t err = huffman_binary_pair(cb, ld, sp);
+ huffman_sign_bits(ld, sp, PAIR_LEN);
+
+ return err;
+}
+
+static INLINE uint8_t huffman_spectral_data(uint8_t cb, bitfile *ld, int16_t *sp)
+{
+ switch (cb)
{
- off = faad_getbits(ld, i-16
- DEBUGVAR(1,7,"huffman_getescape(): escape, first part")) << 16;
- off |= faad_getbits(ld, 16
- DEBUGVAR(1,8,"huffman_getescape(): escape, second part"));
- } else {
+ case 1: /* 2-step method for data quadruples */
+ case 2:
+ return huffman_2step_quad(cb, ld, sp);
+ case 3: /* binary search for data quadruples */
+ return huffman_binary_quad_sign(cb, ld, sp);
+ case 4: /* 2-step method for data quadruples */
+ return huffman_2step_quad_sign(cb, ld, sp);
+ case 5: /* binary search for data pairs */
+ return huffman_binary_pair(cb, ld, sp);
+ case 6: /* 2-step method for data pairs */
+ return huffman_2step_pair(cb, ld, sp);
+ case 7: /* binary search for data pairs */
+ case 9:
+ return huffman_binary_pair_sign(cb, ld, sp);
+ case 8: /* 2-step method for data pairs */
+ case 10:
+ return huffman_2step_pair_sign(cb, ld, sp);
+ case 11:
+#ifdef ERROR_RESILIENCE
+ /* VCB11 uses codebook 11 */
+ case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23:
+ case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31:
+ {
+ /* TODO: If ER is used, some extra error checking should be done */
#endif
- off = faad_getbits(ld, i
- DEBUGVAR(1,9,"huffman_getescape(): escape"));
-#if 0
+ uint8_t err = huffman_2step_pair_sign(11, ld, sp);
+ sp[0] = huffman_getescape(ld, sp[0]);
+ sp[1] = huffman_getescape(ld, sp[1]);
+ return err;
}
-#endif
+ default:
+ /* Non existent codebook number, something went wrong */
+ return 11;
+ }
- j = off + (1<<i);
- if (neg)
- j = -j;
-
- return j;
+ return 0;
}
#ifdef __cplusplus
--- a/libfaad/libfaad.vcproj
+++ b/libfaad/libfaad.vcproj
@@ -244,6 +244,9 @@
RelativePath=".\cfft.h">
</File>
<File
+ RelativePath="cfft_tab.h">
+ </File>
+ <File
RelativePath=".\common.h">
</File>
<File
--- a/libfaad/mdct.c
+++ b/libfaad/mdct.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: mdct.c,v 1.20 2002/09/13 13:08:45 menno Exp $
+** $Id: mdct.c,v 1.21 2002/09/26 19:01:45 menno Exp $
**/
/*
@@ -101,9 +101,8 @@
assert(N % 8 == 0);
mdct->N = N;
- mdct->sincos = (faad_sincos*)malloc(N/4*sizeof(faad_sincos));
- mdct->Z1 = (real_t*)malloc(N/2*sizeof(real_t));
- mdct->Z2 = (complex_t*)malloc(N/4*sizeof(complex_t));
+ mdct->sincos = (complex_t*)malloc(N/4*sizeof(complex_t));
+ mdct->Z1 = (complex_t*)malloc(N/4*sizeof(complex_t));
N_idx = map_N_to_idx(N);
@@ -115,8 +114,8 @@
for (k = 0; k < N/4; k++)
{
- mdct->sincos[k].sin = -1*MUL_C_C(s,scale);
- mdct->sincos[k].cos = -1*MUL_C_C(c,scale);
+ RE(mdct->sincos[k]) = -1*MUL_C_C(c,scale);
+ IM(mdct->sincos[k]) = -1*MUL_C_C(s,scale);
cold = c;
c = MUL_C_C(c,cangle) - MUL_C_C(s,sangle);
@@ -133,7 +132,6 @@
{
cfftu(mdct->cfft);
- if (mdct->Z2) free(mdct->Z2);
if (mdct->Z1) free(mdct->Z1);
if (mdct->sincos) free(mdct->sincos);
@@ -144,9 +142,9 @@
{
uint16_t k;
- real_t *Z1 = mdct->Z1;
- complex_t *Z2 = mdct->Z2;
- faad_sincos *sincos = mdct->sincos;
+ complex_t x;
+ complex_t *Z1 = mdct->Z1;
+ complex_t *sincos = mdct->sincos;
uint16_t N = mdct->N;
uint16_t N2 = N >> 1;
@@ -157,10 +155,10 @@
for (k = 0; k < N4; k++)
{
uint16_t n = k << 1;
- real_t x0 = X_in[ n];
- real_t x1 = X_in[N2 - 1 - n];
- Z1[n] = MUL_R_C(x1, sincos[k].cos) - MUL_R_C(x0, sincos[k].sin);
- Z1[n+1] = MUL_R_C(x0, sincos[k].cos) + MUL_R_C(x1, sincos[k].sin);
+ RE(x) = X_in[ n];
+ IM(x) = X_in[N2 - 1 - n];
+ RE(Z1[k]) = MUL_R_C(IM(x), RE(sincos[k])) - MUL_R_C(RE(x), IM(sincos[k]));
+ IM(Z1[k]) = MUL_R_C(RE(x), RE(sincos[k])) + MUL_R_C(IM(x), IM(sincos[k]));
}
/* complex IFFT */
@@ -170,11 +168,11 @@
for (k = 0; k < N4; k++)
{
uint16_t n = k << 1;
- real_t zr = Z1[n];
- real_t zi = Z1[n+1];
+ RE(x) = RE(Z1[k]);
+ IM(x) = IM(Z1[k]);
- Z2[k].re = MUL_R_C(zr, sincos[k].cos) - MUL_R_C(zi, sincos[k].sin);
- Z2[k].im = MUL_R_C(zi, sincos[k].cos) + MUL_R_C(zr, sincos[k].sin);
+ RE(Z1[k]) = MUL_R_C(RE(x), RE(sincos[k])) - MUL_R_C(IM(x), IM(sincos[k]));
+ IM(Z1[k]) = MUL_R_C(IM(x), RE(sincos[k])) + MUL_R_C(RE(x), IM(sincos[k]));
}
/* reordering */
@@ -181,14 +179,14 @@
for (k = 0; k < N8; k++)
{
uint16_t n = k << 1;
- X_out[ n] = Z2[N8 + k].im;
- X_out[ 1 + n] = -Z2[N8 - 1 - k].re;
- X_out[N4 + n] = Z2[ k].re;
- X_out[N4 + 1 + n] = -Z2[N4 - 1 - k].im;
- X_out[N2 + n] = Z2[N8 + k].re;
- X_out[N2 + 1 + n] = -Z2[N8 - 1 - k].im;
- X_out[N2 + N4 + n] = -Z2[ k].im;
- X_out[N2 + N4 + 1 + n] = Z2[N4 - 1 - k].re;
+ X_out[ n] = IM(Z1[N8 + k]);
+ X_out[ 1 + n] = -RE(Z1[N8 - 1 - k]);
+ X_out[N4 + n] = RE(Z1[ k]);
+ X_out[N4 + 1 + n] = -IM(Z1[N4 - 1 - k]);
+ X_out[N2 + n] = RE(Z1[N8 + k]);
+ X_out[N2 + 1 + n] = -IM(Z1[N8 - 1 - k]);
+ X_out[N2 + N4 + n] = -IM(Z1[ k]);
+ X_out[N2 + N4 + 1 + n] = RE(Z1[N4 - 1 - k]);
}
}
@@ -197,8 +195,9 @@
{
uint16_t k;
- real_t *Z1 = mdct->Z1;
- faad_sincos *sincos = mdct->sincos;
+ complex_t x;
+ complex_t *Z1 = mdct->Z1;
+ complex_t *sincos = mdct->sincos;
uint16_t N = mdct->N;
uint16_t N2 = N >> 1;
@@ -211,17 +210,17 @@
for (k = 0; k < N8; k++)
{
uint16_t n = k << 1;
- real_t zr = X_in[N - N4 - 1 - n] + X_in[N - N4 + n];
- real_t zi = X_in[ N4 + n] - X_in[ N4 - 1 - n];
+ RE(x) = X_in[N - N4 - 1 - n] + X_in[N - N4 + n];
+ IM(x) = X_in[ N4 + n] - X_in[ N4 - 1 - n];
- Z1[n] = -MUL_R_C(zr, sincos[k].cos) - MUL_R_C(zi, sincos[k].sin);
- Z1[n+1] = -MUL_R_C(zi, sincos[k].cos) + MUL_R_C(zr, sincos[k].sin);
+ RE(Z1[k]) = -MUL_R_C(RE(x), RE(sincos[k])) - MUL_R_C(IM(x), IM(sincos[k]));
+ IM(Z1[k]) = -MUL_R_C(IM(x), RE(sincos[k])) + MUL_R_C(RE(x), IM(sincos[k]));
- zr = X_in[N2 - 1 - n] - X_in[ n];
- zi = X_in[N2 + n] + X_in[N - 1 - n];
+ RE(x) = X_in[N2 - 1 - n] - X_in[ n];
+ IM(x) = X_in[N2 + n] + X_in[N - 1 - n];
- Z1[n + N4] = -MUL_R_C(zr, sincos[k + N8].cos) - MUL_R_C(zi, sincos[k + N8].sin);
- Z1[n+1 + N4] = -MUL_R_C(zi, sincos[k + N8].cos) + MUL_R_C(zr, sincos[k + N8].sin);
+ RE(Z1[k + N8]) = -MUL_R_C(RE(x), RE(sincos[k + N8])) - MUL_R_C(IM(x), IM(sincos[k + N8]));
+ IM(Z1[k + N8]) = -MUL_R_C(IM(x), RE(sincos[k + N8])) + MUL_R_C(RE(x), IM(sincos[k + N8]));
}
/* complex FFT */
@@ -231,13 +230,13 @@
for (k = 0; k < N4; k++)
{
uint16_t n = k << 1;
- real_t zr = MUL(MUL_R_C(Z1[n], sincos[k].cos) + MUL_R_C(Z1[n+1], sincos[k].sin), scale);
- real_t zi = MUL(MUL_R_C(Z1[n+1], sincos[k].cos) - MUL_R_C(Z1[n], sincos[k].sin), scale);
+ RE(x) = MUL(MUL_R_C(RE(Z1[k]), RE(sincos[k])) + MUL_R_C(IM(Z1[k]), IM(sincos[k])), scale);
+ IM(x) = MUL(MUL_R_C(IM(Z1[k]), RE(sincos[k])) - MUL_R_C(RE(Z1[k]), IM(sincos[k])), scale);
- X_out[ n] = zr;
- X_out[N2 - 1 - n] = -zi;
- X_out[N2 + n] = zi;
- X_out[N - 1 - n] = -zr;
+ X_out[ n] = RE(x);
+ X_out[N2 - 1 - n] = -IM(x);
+ X_out[N2 + n] = IM(x);
+ X_out[N - 1 - n] = -RE(x);
}
}
#endif
--- a/libfaad/mdct.h
+++ b/libfaad/mdct.h
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: mdct.h,v 1.11 2002/09/08 18:14:37 menno Exp $
+** $Id: mdct.h,v 1.12 2002/09/26 19:01:45 menno Exp $
**/
#ifndef __MDCT_H__
@@ -29,16 +29,10 @@
#include "cfft.h"
typedef struct {
- real_t sin;
- real_t cos;
-} faad_sincos;
-
-typedef struct {
- faad_sincos *sincos;
- real_t *Z1;
- complex_t *Z2;
- cfft_info *cfft;
uint16_t N;
+ cfft_info *cfft;
+ complex_t *sincos;
+ complex_t *Z1;
} mdct_info;
mdct_info *faad_mdct_init(uint16_t N);
--- a/libfaad/syntax.c
+++ b/libfaad/syntax.c
@@ -16,7 +16,7 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
-** $Id: syntax.c,v 1.27 2002/09/18 11:22:36 menno Exp $
+** $Id: syntax.c,v 1.28 2002/09/26 19:01:45 menno Exp $
**/
/*
@@ -467,11 +467,11 @@
DEBUGVAR(1,60,"data_stream_element(): element_instance_tag"));
byte_aligned = faad_get1bit(ld
DEBUGVAR(1,61,"data_stream_element(): byte_aligned"));
- count = faad_getbits(ld, 8
+ count = (uint16_t)faad_getbits(ld, 8
DEBUGVAR(1,62,"data_stream_element(): count"));
if (count == 255)
{
- count += faad_getbits(ld, 8
+ count += (uint16_t)faad_getbits(ld, 8
DEBUGVAR(1,63,"data_stream_element(): extra count"));
}
if (byte_aligned)
@@ -885,7 +885,7 @@
static uint8_t decode_scale_factors(ic_stream *ics, bitfile *ld)
{
uint8_t g, sfb;
- int8_t t;
+ int16_t t;
int8_t noise_pcm_flag = 1;
int16_t scale_factor = ics->global_gain;
@@ -918,7 +918,7 @@
if (noise_pcm_flag)
{
noise_pcm_flag = 0;
- t = faad_getbits(ld, 9
+ t = (int16_t)faad_getbits(ld, 9
DEBUGVAR(1,73,"scale_factor_data(): first noise")) - 256;
} else {
t = huffman_scale_factor(ld);
@@ -1089,18 +1089,12 @@
}
#endif
-/* defines whether a huffman codebook is unsigned or not */
-/* Table 4.6.2 */
-static uint8_t unsigned_cb[] = { 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
- /* codebook 16 to 31 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
-};
-
/* Table 4.4.29 */
static uint8_t spectral_data(ic_stream *ics, bitfile *ld, int16_t *spectral_data,
uint16_t frame_len)
{
int8_t i;
- uint8_t g, inc;
+ uint8_t g;
int16_t *sp;
uint16_t k, p = 0;
uint8_t groups = 0;
@@ -1125,33 +1119,34 @@
{
sect_cb = ics->sect_cb[g][i];
- if ((sect_cb == ZERO_HCB) ||
- (sect_cb == NOISE_HCB) ||
- (sect_cb == INTENSITY_HCB) ||
- (sect_cb == INTENSITY_HCB2))
+ switch (sect_cb)
{
+ case ZERO_HCB:
+ case NOISE_HCB:
+ case INTENSITY_HCB:
+ case INTENSITY_HCB2:
p += (ics->sect_sfb_offset[g][ics->sect_end[g][i]] -
ics->sect_sfb_offset[g][ics->sect_start[g][i]]);
- } else {
+ break;
+ default:
for (k = ics->sect_sfb_offset[g][ics->sect_start[g][i]];
- k < ics->sect_sfb_offset[g][ics->sect_end[g][i]]; )
+ k < ics->sect_sfb_offset[g][ics->sect_end[g][i]]; k += 4)
{
sp = spectral_data + p;
- inc = (sect_cb < FIRST_PAIR_HCB) ? QUAD_LEN : PAIR_LEN;
-
- if ((result = huffman_spectral_data(sect_cb, ld, sp)) > 0)
- return result;
- if (unsigned_cb[sect_cb])
- huffman_sign_bits(ld, sp, inc);
- k += inc;
- p += inc;
- if ((sect_cb == ESC_HCB) || (sect_cb >= 16))
+ if (sect_cb < FIRST_PAIR_HCB)
{
- sp[0] = huffman_getescape(ld, sp[0]);
- sp[1] = huffman_getescape(ld, sp[1]);
+ if ((result = huffman_spectral_data(sect_cb, ld, sp)) > 0)
+ return result;
+ } else {
+ if ((result = huffman_spectral_data(sect_cb, ld, sp)) > 0)
+ return result;
+ if ((result = huffman_spectral_data(sect_cb, ld, sp+2)) > 0)
+ return result;
}
+ p += 4;
}
+ break;
}
}
groups += ics->window_group_length[g];
@@ -1164,7 +1159,7 @@
static uint16_t extension_payload(bitfile *ld, drc_info *drc, uint16_t count)
{
uint16_t i, n;
- uint8_t extension_type = faad_getbits(ld, 4
+ uint8_t extension_type = (uint8_t)faad_getbits(ld, 4
DEBUGVAR(1,87,"extension_payload(): extension_type"));
switch (extension_type)
@@ -1222,7 +1217,7 @@
if (faad_get1bit(ld
DEBUGVAR(1,94,"dynamic_range_info(): has bands data")) & 1)
{
- band_incr = faad_getbits(ld, 4
+ band_incr = (uint8_t)faad_getbits(ld, 4
DEBUGVAR(1,95,"dynamic_range_info(): band_incr"));
/* drc->drc_bands_reserved_bits = */ faad_getbits(ld, 4
DEBUGVAR(1,96,"dynamic_range_info(): drc_bands_reserved_bits"));