Support for full 32-bit FFT/MDCT twiddles/scaling
diff --git a/celt/_kiss_fft_guts.h b/celt/_kiss_fft_guts.h index 17392b3..bb43572 100644 --- a/celt/_kiss_fft_guts.h +++ b/celt/_kiss_fft_guts.h
@@ -54,8 +54,13 @@ #define SAMP_MIN -SAMP_MAX - +#ifdef ENABLE_QEXT +# define S_MUL(a,b) MULT32_32_Q31(b, a) +# define S_MUL2(a,b) MULT32_32_Q31(b, a) +#else # define S_MUL(a,b) MULT16_32_Q15(b, a) +# define S_MUL2(a,b) MULT16_32_Q16(b, a) +#endif # define C_MUL(m,a,b) \ do{ (m).r = SUB32_ovflw(S_MUL((a).r,(b).r) , S_MUL((a).i,(b).i)); \ @@ -104,6 +109,7 @@ #else /* not FIXED_POINT*/ # define S_MUL(a,b) ( (a)*(b) ) +# define S_MUL2(a,b) ( (a)*(b) ) #define C_MUL(m,a,b) \ do{ (m).r = (a).r*(b).r - (a).i*(b).i;\ (m).i = (a).r*(b).i + (a).i*(b).r; }while(0)
diff --git a/celt/arch.h b/celt/arch.h index e50372e..4929fb1 100644 --- a/celt/arch.h +++ b/celt/arch.h
@@ -173,6 +173,12 @@ #define INT16TOSIG(a) SHL32(EXTEND32(a), SIG_SHIFT) #define INT24TOSIG(a) SHL32(a, SIG_SHIFT-8) +#ifdef ENABLE_QEXT +typedef opus_val32 celt_coef; +#else +typedef opus_val16 celt_coef; +#endif + #define celt_isnan(x) 0 #define Q15ONE 32767 @@ -239,6 +245,7 @@ typedef float celt_glog; typedef float opus_res; +typedef float celt_coef; #ifdef FLOAT_APPROX /* This code should reliably detect NaN/inf even when -ffast-math is used.
diff --git a/celt/dump_modes/dump_modes.c b/celt/dump_modes/dump_modes.c index 9105a53..fa40d1f 100644 --- a/celt/dump_modes/dump_modes.c +++ b/celt/dump_modes/dump_modes.c
@@ -49,6 +49,11 @@ #define WORD32 FLOAT #endif +#define COEF16(x, a) ((opus_int16)SATURATE(((opus_int64)(x)+(1<<(a)>>1))>>(a), 32767)) +int opus_select_arch(void) { + return 0; +} + void dump_modes(FILE *file, CELTMode **modes, int nb_modes) { int i, j, k; @@ -148,10 +153,21 @@ /* FFT twiddles */ fprintf(file, "#ifndef FFT_TWIDDLES%d_%d\n", mode->Fs, mdctSize); fprintf(file, "#define FFT_TWIDDLES%d_%d\n", mode->Fs, mdctSize); + fprintf (file, "static const kiss_twiddle_cpx fft_twiddles%d_%d[%d] = {\n", mode->Fs, mdctSize, mode->mdct.kfft[0]->nfft); +#if defined(FIXED_POINT) && defined(ENABLE_QEXT) + fprintf(file, "#ifdef ENABLE_QEXT\n"); + for (j=0;j<mode->mdct.kfft[0]->nfft;j++) + fprintf (file, "{" WORD32 ", " WORD32 "},%c", mode->mdct.kfft[0]->twiddles[j].r, mode->mdct.kfft[0]->twiddles[j].i,(j+3)%2==0?'\n':' '); + fprintf(file, "#else\n"); + for (j=0;j<mode->mdct.kfft[0]->nfft;j++) + fprintf (file, "{" WORD16 ", " WORD16 "},%c", COEF16(mode->mdct.kfft[0]->twiddles[j].r,16), COEF16(mode->mdct.kfft[0]->twiddles[j].i,16),(j+3)%2==0?'\n':' '); + fprintf(file, "#endif\n"); +#else for (j=0;j<mode->mdct.kfft[0]->nfft;j++) fprintf (file, "{" WORD16 ", " WORD16 "},%c", mode->mdct.kfft[0]->twiddles[j].r, mode->mdct.kfft[0]->twiddles[j].i,(j+3)%2==0?'\n':' '); +#endif fprintf (file, "};\n"); #ifdef OVERRIDE_FFT @@ -180,7 +196,16 @@ fprintf (file, "static const kiss_fft_state fft_state%d_%d_%d = {\n", mode->Fs, mdctSize, k); fprintf (file, "%d, /* nfft */\n", mode->mdct.kfft[k]->nfft); + +#if defined(FIXED_POINT) && defined(ENABLE_QEXT) + fprintf(file, "#ifdef ENABLE_QEXT\n"); + fprintf (file, WORD32 ", /* scale */\n", mode->mdct.kfft[k]->scale); + fprintf(file, "#else\n"); + fprintf (file, WORD16 ", /* scale */\n", COEF16(mode->mdct.kfft[k]->scale, 15)); + fprintf(file, "#endif\n"); +#else fprintf (file, WORD16 ", /* scale */\n", mode->mdct.kfft[k]->scale); +#endif #ifdef FIXED_POINT fprintf (file, "%d, /* scale_shift */\n", mode->mdct.kfft[k]->scale_shift); #endif @@ -211,10 +236,22 @@ mdct_twiddles_size = mode->mdct.n-(mode->mdct.n/2>>mode->mdct.maxshift); fprintf(file, "#ifndef MDCT_TWIDDLES%d\n", mdctSize); fprintf(file, "#define MDCT_TWIDDLES%d\n", mdctSize); - fprintf (file, "static const opus_val16 mdct_twiddles%d[%d] = {\n", + fprintf (file, "static const celt_coef mdct_twiddles%d[%d] = {\n", mdctSize, mdct_twiddles_size); + +#if defined(FIXED_POINT) && defined(ENABLE_QEXT) + fprintf(file, "#ifdef ENABLE_QEXT\n"); + for (j=0;j<mdct_twiddles_size;j++) + fprintf (file, WORD32 ",%c", mode->mdct.trig[j],(j+6)%5==0?'\n':' '); + fprintf(file, "#else\n"); + for (j=0;j<mdct_twiddles_size;j++) + fprintf (file, WORD16 ",%c", COEF16(mode->mdct.trig[j], 16),(j+6)%5==0?'\n':' '); + fprintf(file, "#endif\n"); +#else for (j=0;j<mdct_twiddles_size;j++) fprintf (file, WORD16 ",%c", mode->mdct.trig[j],(j+6)%5==0?'\n':' '); +#endif + fprintf (file, "};\n"); fprintf(file, "#endif\n");
diff --git a/celt/fixed_debug.h b/celt/fixed_debug.h index 919b8db..89a011d 100644 --- a/celt/fixed_debug.h +++ b/celt/fixed_debug.h
@@ -50,7 +50,7 @@ #define MULT16_32_P16(a,b) MULT16_32_PX(a,b,16) #define QCONST16(x,bits) ((opus_val16)(.5+(x)*(((opus_val32)1)<<(bits)))) -#define QCONST32(x,bits) ((opus_val32)(.5+(x)*(((opus_val32)1)<<(bits)))) +#define QCONST32(x,bits) ((opus_val32)(.5+(x)*(((opus_val64)1)<<(bits)))) #define GCONST2(x,bits) ((celt_glog)(.5+(x)*(((celt_glog)1)<<(bits)))) #define GCONST(x) GCONST2((x),DB_SHIFT)
diff --git a/celt/fixed_generic.h b/celt/fixed_generic.h index deaf636..a898888 100644 --- a/celt/fixed_generic.h +++ b/celt/fixed_generic.h
@@ -75,7 +75,7 @@ #define QCONST16(x,bits) ((opus_val16)(.5+(x)*(((opus_val32)1)<<(bits)))) /** Compile-time conversion of float constant to 32-bit value */ -#define QCONST32(x,bits) ((opus_val32)(.5+(x)*(((opus_val32)1)<<(bits)))) +#define QCONST32(x,bits) ((opus_val32)(.5+(x)*(((opus_int64)1)<<(bits)))) /** Compile-time conversion of float constant to log gain value */ #define GCONST2(x,bits) ((celt_glog)(.5+(x)*(((celt_glog)1)<<(bits))))
diff --git a/celt/kiss_fft.c b/celt/kiss_fft.c index 8377516..9266d00 100644 --- a/celt/kiss_fft.c +++ b/celt/kiss_fft.c
@@ -41,6 +41,10 @@ #include "mathops.h" #include "stack_alloc.h" +#ifndef M_PI +#define M_PI 3.141592653 +#endif + /* The guts header contains all the multiplication and addition macros that are defined for complex numbers. It also delares the kf_ internal functions. */ @@ -70,8 +74,8 @@ } else #endif { - opus_val16 tw; - tw = QCONST16(0.7071067812f, 15); + celt_coef tw; + tw = QCONST32(0.7071067812f, COEF_SHIFT-1); /* We know that m==4 here because the radix-2 is just after a radix-4 */ celt_assert(m==4); for (i=0;i<N;i++) @@ -192,7 +196,7 @@ kiss_fft_cpx * Fout_beg = Fout; #ifdef FIXED_POINT /*epi3.r = -16384;*/ /* Unused */ - epi3.i = -28378; + epi3.i = -QCONST32(0.86602540f, COEF_SHIFT-1); #else epi3 = st->twiddles[fstride*m]; #endif @@ -249,10 +253,10 @@ kiss_fft_cpx * Fout_beg = Fout; #ifdef FIXED_POINT - ya.r = 10126; - ya.i = -31164; - yb.r = -26510; - yb.i = -19261; + ya.r = QCONST32(0.30901699f, COEF_SHIFT-1); + ya.i = -QCONST32(0.95105652f, COEF_SHIFT-1); + yb.r = -QCONST32(0.80901699f, COEF_SHIFT-1); + yb.i = -QCONST32(0.58778525f, COEF_SHIFT-1); #else ya = st->twiddles[fstride*m]; yb = st->twiddles[fstride*2*m]; @@ -412,7 +416,12 @@ #ifdef FIXED_POINT for (i=0;i<nfft;++i) { opus_val32 phase = -i; +#ifdef ENABLE_QEXT + twiddles[i].r = floor(.5+2147483647*cos((2*M_PI/nfft)*phase)); + twiddles[i].i = floor(.5+2147483647*sin((2*M_PI/nfft)*phase)); +#else kf_cexp2(twiddles+i, DIV32(SHL32(phase,17),nfft)); +#endif } #else for (i=0;i<nfft;++i) { @@ -454,10 +463,17 @@ st->nfft=nfft; #ifdef FIXED_POINT st->scale_shift = celt_ilog2(st->nfft); +# ifdef ENABLE_QEXT + if (st->nfft == 1<<st->scale_shift) + st->scale = QCONST32(1.0f, 30); + else + st->scale = (((opus_int64)1073741824<<st->scale_shift)+st->nfft/2)/st->nfft; +# else if (st->nfft == 1<<st->scale_shift) st->scale = Q15ONE; else st->scale = (1073741824+st->nfft/2)/st->nfft>>(15-st->scale_shift); +# endif #else st->scale = 1.f/nfft; #endif @@ -569,7 +585,7 @@ void opus_fft_c(const kiss_fft_state *st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout) { int i; - opus_val16 scale; + celt_coef scale; #ifdef FIXED_POINT /* Allows us to scale with MULT16_32_Q16(), which is faster than MULT16_32_Q15() on ARM. */ @@ -582,8 +598,8 @@ for (i=0;i<st->nfft;i++) { kiss_fft_cpx x = fin[i]; - fout[st->bitrev[i]].r = SHR32(MULT16_32_Q16(scale, x.r), scale_shift); - fout[st->bitrev[i]].i = SHR32(MULT16_32_Q16(scale, x.i), scale_shift); + fout[st->bitrev[i]].r = SHR32(S_MUL2(x.r, scale), scale_shift); + fout[st->bitrev[i]].i = SHR32(S_MUL2(x.i, scale), scale_shift); } opus_fft_impl(st, fout); }
diff --git a/celt/kiss_fft.h b/celt/kiss_fft.h index 267f72f..cf725cf 100644 --- a/celt/kiss_fft.h +++ b/celt/kiss_fft.h
@@ -50,7 +50,13 @@ #include "arch.h" # define kiss_fft_scalar opus_int32 -# define kiss_twiddle_scalar opus_int16 +# ifdef ENABLE_QEXT +# define COEF_SHIFT 32 +# else +# define COEF_SHIFT 16 +# endif + +# define kiss_twiddle_scalar celt_coef /* Some 32-bit CPUs would load/store a kiss_twiddle_cpx with a single memory * access, and could benefit from additional alignment. @@ -58,6 +64,7 @@ # define KISS_TWIDDLE_CPX_ALIGNMENT (sizeof(opus_int32)) #else + # ifndef kiss_fft_scalar /* default is float */ # define kiss_fft_scalar float @@ -95,7 +102,7 @@ typedef struct kiss_fft_state{ int nfft; - opus_val16 scale; + celt_coef scale; #ifdef FIXED_POINT int scale_shift; #endif
diff --git a/celt/mdct.c b/celt/mdct.c index 5c6dab5..eadb72b 100644 --- a/celt/mdct.c +++ b/celt/mdct.c
@@ -57,6 +57,9 @@ #include "mips/mdct_mipsr1.h" #endif +#ifndef M_PI +#define M_PI 3.141592653 +#endif #ifdef CUSTOM_MODES @@ -86,12 +89,12 @@ { /* We have enough points that sine isn't necessary */ #if defined(FIXED_POINT) -#if 1 +#ifndef ENABLE_QEXT for (i=0;i<N2;i++) trig[i] = TRIG_UPSCALE*celt_cos_norm(DIV32(ADD32(SHL32(EXTEND32(i),17),N2+16384),N)); #else for (i=0;i<N2;i++) - trig[i] = (kiss_twiddle_scalar)MAX32(-32767,MIN32(32767,floor(.5+32768*cos(2*M_PI*(i+.125)/N)))); + trig[i] = (kiss_twiddle_scalar)MAX32(-2147483647,MIN32(2147483647,floor(.5+2147483648*cos(2*M_PI*(i+.125)/N)))); #endif #else for (i=0;i<N2;i++) @@ -125,7 +128,7 @@ VARDECL(kiss_fft_cpx, f2); const kiss_fft_state *st = l->kfft[shift]; const kiss_twiddle_scalar *trig; - opus_val16 scale; + celt_coef scale; #ifdef FIXED_POINT /* Allows us to scale with MULT16_32_Q16(), which is faster than MULT16_32_Q15() on ARM. */ @@ -205,8 +208,8 @@ yi = S_MUL(im,t0) + S_MUL(re,t1); yc.r = yr; yc.i = yi; - yc.r = PSHR32(MULT16_32_Q16(scale, yc.r), scale_shift); - yc.i = PSHR32(MULT16_32_Q16(scale, yc.i), scale_shift); + yc.r = PSHR32(S_MUL2(yc.r, scale), scale_shift); + yc.i = PSHR32(S_MUL2(yc.i, scale), scale_shift); f2[st->bitrev[i]] = yc; } }
diff --git a/celt/static_modes_fixed.h b/celt/static_modes_fixed.h index 8717d62..0d885a5 100644 --- a/celt/static_modes_fixed.h +++ b/celt/static_modes_fixed.h
@@ -102,246 +102,489 @@ #ifndef FFT_TWIDDLES48000_960 #define FFT_TWIDDLES48000_960 static const kiss_twiddle_cpx fft_twiddles48000_960[480] = { -{32767, 0}, {32766, -429}, -{32757, -858}, {32743, -1287}, -{32724, -1715}, {32698, -2143}, -{32667, -2570}, {32631, -2998}, +#ifdef ENABLE_QEXT +{2147483647, 0}, {2147299667, -28109692}, +{2146747758, -56214568}, {2145828015, -84309812}, +{2144540595, -112390610}, {2142885720, -140452150}, +{2140863672, -168489625}, {2138474798, -196498230}, +{2135719507, -224473166}, {2132598272, -252409639}, +{2129111627, -280302863}, {2125260169, -308148059}, +{2121044560, -335940456}, {2116465520, -363675290}, +{2111523835, -391347811}, {2106220351, -418953276}, +{2100555977, -446486956}, {2094531684, -473944133}, +{2088148503, -501320101}, {2081407529, -528610171}, +{2074309916, -555809667}, {2066856881, -582913927}, +{2059049701, -609918308}, {2050889713, -636818183}, +{2042378316, -663608942}, {2033516968, -690285995}, +{2024307187, -716844771}, {2014750552, -743280720}, +{2004848699, -769589311}, {1994603326, -795766037}, +{1984016188, -821806413}, {1973089099, -847705976}, +{1961823931, -873460290}, {1950222615, -899064940}, +{1938287138, -924515540}, {1926019546, -949807729}, +{1913421940, -974937174}, {1900496479, -999899568}, +{1887245378, -1024690635}, {1873670907, -1049306126}, +{1859775393, -1073741823}, {1845561215, -1097993541}, +{1831030810, -1122057123}, {1816186667, -1145928447}, +{1801031330, -1169603421}, {1785567395, -1193077990}, +{1769797513, -1216348131}, {1753724385, -1239409858}, +{1737350766, -1262259217}, {1720679460, -1284892295}, +{1703713325, -1307305214}, {1686455267, -1329494132}, +{1668908244, -1351455249}, {1651075262, -1373184800}, +{1632959376, -1394679063}, {1614563692, -1415934356}, +{1595891360, -1436947035}, {1576945581, -1457713501}, +{1557729600, -1478230195}, {1538246710, -1498493602}, +{1518500249, -1518500249}, {1498493602, -1538246710}, +{1478230195, -1557729600}, {1457713501, -1576945581}, +{1436947035, -1595891360}, {1415934356, -1614563692}, +{1394679063, -1632959376}, {1373184800, -1651075262}, +{1351455249, -1668908244}, {1329494132, -1686455267}, +{1307305214, -1703713325}, {1284892295, -1720679460}, +{1262259217, -1737350766}, {1239409858, -1753724385}, +{1216348131, -1769797513}, {1193077990, -1785567395}, +{1169603421, -1801031330}, {1145928447, -1816186667}, +{1122057123, -1831030810}, {1097993541, -1845561215}, +{1073741824, -1859775393}, {1049306126, -1873670907}, +{1024690635, -1887245378}, {999899568, -1900496479}, +{974937174, -1913421940}, {949807729, -1926019546}, +{924515540, -1938287138}, {899064940, -1950222615}, +{873460290, -1961823931}, {847705976, -1973089099}, +{821806413, -1984016188}, {795766037, -1994603326}, +{769589311, -2004848699}, {743280720, -2014750552}, +{716844771, -2024307187}, {690285995, -2033516968}, +{663608942, -2042378316}, {636818183, -2050889713}, +{609918308, -2059049701}, {582913927, -2066856881}, +{555809667, -2074309916}, {528610171, -2081407529}, +{501320101, -2088148503}, {473944133, -2094531684}, +{446486956, -2100555977}, {418953276, -2106220351}, +{391347811, -2111523835}, {363675290, -2116465520}, +{335940456, -2121044560}, {308148059, -2125260169}, +{280302863, -2129111627}, {252409639, -2132598272}, +{224473166, -2135719507}, {196498230, -2138474798}, +{168489625, -2140863672}, {140452150, -2142885720}, +{112390610, -2144540595}, {84309812, -2145828015}, +{56214568, -2146747758}, {28109692, -2147299667}, +{0, -2147483647}, {-28109692, -2147299667}, +{-56214568, -2146747758}, {-84309812, -2145828015}, +{-112390610, -2144540595}, {-140452150, -2142885720}, +{-168489625, -2140863672}, {-196498230, -2138474798}, +{-224473166, -2135719507}, {-252409639, -2132598272}, +{-280302863, -2129111627}, {-308148059, -2125260169}, +{-335940456, -2121044560}, {-363675290, -2116465520}, +{-391347811, -2111523835}, {-418953276, -2106220351}, +{-446486956, -2100555977}, {-473944133, -2094531684}, +{-501320101, -2088148503}, {-528610171, -2081407529}, +{-555809667, -2074309916}, {-582913927, -2066856881}, +{-609918308, -2059049701}, {-636818183, -2050889713}, +{-663608942, -2042378316}, {-690285995, -2033516968}, +{-716844771, -2024307187}, {-743280720, -2014750552}, +{-769589311, -2004848699}, {-795766037, -1994603326}, +{-821806413, -1984016188}, {-847705976, -1973089099}, +{-873460290, -1961823931}, {-899064940, -1950222615}, +{-924515540, -1938287138}, {-949807729, -1926019546}, +{-974937174, -1913421940}, {-999899568, -1900496479}, +{-1024690635, -1887245378}, {-1049306126, -1873670907}, +{-1073741823, -1859775393}, {-1097993541, -1845561215}, +{-1122057123, -1831030810}, {-1145928447, -1816186667}, +{-1169603421, -1801031330}, {-1193077990, -1785567395}, +{-1216348131, -1769797513}, {-1239409858, -1753724385}, +{-1262259217, -1737350766}, {-1284892295, -1720679460}, +{-1307305214, -1703713325}, {-1329494132, -1686455267}, +{-1351455249, -1668908244}, {-1373184800, -1651075262}, +{-1394679063, -1632959376}, {-1415934356, -1614563692}, +{-1436947035, -1595891360}, {-1457713501, -1576945581}, +{-1478230195, -1557729600}, {-1498493602, -1538246710}, +{-1518500249, -1518500249}, {-1538246710, -1498493602}, +{-1557729600, -1478230195}, {-1576945581, -1457713501}, +{-1595891360, -1436947035}, {-1614563692, -1415934356}, +{-1632959376, -1394679063}, {-1651075262, -1373184800}, +{-1668908244, -1351455249}, {-1686455267, -1329494132}, +{-1703713325, -1307305214}, {-1720679460, -1284892295}, +{-1737350766, -1262259217}, {-1753724385, -1239409858}, +{-1769797513, -1216348131}, {-1785567395, -1193077990}, +{-1801031330, -1169603421}, {-1816186667, -1145928447}, +{-1831030810, -1122057123}, {-1845561215, -1097993541}, +{-1859775393, -1073741824}, {-1873670907, -1049306126}, +{-1887245378, -1024690635}, {-1900496479, -999899568}, +{-1913421940, -974937174}, {-1926019546, -949807729}, +{-1938287138, -924515540}, {-1950222615, -899064940}, +{-1961823931, -873460290}, {-1973089099, -847705976}, +{-1984016188, -821806413}, {-1994603326, -795766037}, +{-2004848699, -769589311}, {-2014750552, -743280720}, +{-2024307187, -716844771}, {-2033516968, -690285995}, +{-2042378316, -663608942}, {-2050889713, -636818183}, +{-2059049701, -609918308}, {-2066856881, -582913927}, +{-2074309916, -555809667}, {-2081407529, -528610171}, +{-2088148503, -501320101}, {-2094531684, -473944133}, +{-2100555977, -446486956}, {-2106220351, -418953276}, +{-2111523835, -391347811}, {-2116465520, -363675290}, +{-2121044560, -335940456}, {-2125260169, -308148059}, +{-2129111627, -280302863}, {-2132598272, -252409639}, +{-2135719507, -224473166}, {-2138474798, -196498230}, +{-2140863672, -168489625}, {-2142885720, -140452150}, +{-2144540595, -112390610}, {-2145828015, -84309812}, +{-2146747758, -56214568}, {-2147299667, -28109692}, +{-2147483647, 0}, {-2147299667, 28109692}, +{-2146747758, 56214568}, {-2145828015, 84309812}, +{-2144540595, 112390610}, {-2142885720, 140452150}, +{-2140863672, 168489625}, {-2138474798, 196498230}, +{-2135719507, 224473166}, {-2132598272, 252409639}, +{-2129111627, 280302863}, {-2125260169, 308148059}, +{-2121044560, 335940456}, {-2116465520, 363675290}, +{-2111523835, 391347811}, {-2106220351, 418953276}, +{-2100555977, 446486956}, {-2094531684, 473944133}, +{-2088148503, 501320101}, {-2081407529, 528610171}, +{-2074309916, 555809667}, {-2066856881, 582913927}, +{-2059049701, 609918308}, {-2050889713, 636818183}, +{-2042378316, 663608942}, {-2033516968, 690285995}, +{-2024307187, 716844771}, {-2014750552, 743280720}, +{-2004848699, 769589311}, {-1994603326, 795766037}, +{-1984016188, 821806413}, {-1973089099, 847705976}, +{-1961823931, 873460290}, {-1950222615, 899064940}, +{-1938287138, 924515540}, {-1926019546, 949807729}, +{-1913421940, 974937174}, {-1900496479, 999899568}, +{-1887245378, 1024690635}, {-1873670907, 1049306126}, +{-1859775393, 1073741823}, {-1845561215, 1097993541}, +{-1831030810, 1122057123}, {-1816186667, 1145928447}, +{-1801031330, 1169603421}, {-1785567395, 1193077990}, +{-1769797513, 1216348131}, {-1753724385, 1239409858}, +{-1737350766, 1262259217}, {-1720679460, 1284892295}, +{-1703713325, 1307305214}, {-1686455267, 1329494132}, +{-1668908244, 1351455249}, {-1651075262, 1373184800}, +{-1632959376, 1394679063}, {-1614563692, 1415934356}, +{-1595891360, 1436947035}, {-1576945581, 1457713501}, +{-1557729600, 1478230195}, {-1538246710, 1498493602}, +{-1518500249, 1518500249}, {-1498493602, 1538246710}, +{-1478230195, 1557729600}, {-1457713501, 1576945581}, +{-1436947035, 1595891360}, {-1415934356, 1614563692}, +{-1394679063, 1632959376}, {-1373184800, 1651075262}, +{-1351455249, 1668908244}, {-1329494132, 1686455267}, +{-1307305214, 1703713325}, {-1284892295, 1720679460}, +{-1262259217, 1737350766}, {-1239409858, 1753724385}, +{-1216348131, 1769797513}, {-1193077990, 1785567395}, +{-1169603421, 1801031330}, {-1145928447, 1816186667}, +{-1122057123, 1831030810}, {-1097993541, 1845561215}, +{-1073741824, 1859775393}, {-1049306126, 1873670907}, +{-1024690635, 1887245378}, {-999899568, 1900496479}, +{-974937174, 1913421940}, {-949807729, 1926019546}, +{-924515540, 1938287138}, {-899064940, 1950222615}, +{-873460290, 1961823931}, {-847705976, 1973089099}, +{-821806413, 1984016188}, {-795766037, 1994603326}, +{-769589311, 2004848699}, {-743280720, 2014750552}, +{-716844771, 2024307187}, {-690285995, 2033516968}, +{-663608942, 2042378316}, {-636818183, 2050889713}, +{-609918308, 2059049701}, {-582913927, 2066856881}, +{-555809667, 2074309916}, {-528610171, 2081407529}, +{-501320101, 2088148503}, {-473944133, 2094531684}, +{-446486956, 2100555977}, {-418953276, 2106220351}, +{-391347811, 2111523835}, {-363675290, 2116465520}, +{-335940456, 2121044560}, {-308148059, 2125260169}, +{-280302863, 2129111627}, {-252409639, 2132598272}, +{-224473166, 2135719507}, {-196498230, 2138474798}, +{-168489625, 2140863672}, {-140452150, 2142885720}, +{-112390610, 2144540595}, {-84309812, 2145828015}, +{-56214568, 2146747758}, {-28109692, 2147299667}, +{0, 2147483647}, {28109692, 2147299667}, +{56214568, 2146747758}, {84309812, 2145828015}, +{112390610, 2144540595}, {140452150, 2142885720}, +{168489625, 2140863672}, {196498230, 2138474798}, +{224473166, 2135719507}, {252409639, 2132598272}, +{280302863, 2129111627}, {308148059, 2125260169}, +{335940456, 2121044560}, {363675290, 2116465520}, +{391347811, 2111523835}, {418953276, 2106220351}, +{446486956, 2100555977}, {473944133, 2094531684}, +{501320101, 2088148503}, {528610171, 2081407529}, +{555809667, 2074309916}, {582913927, 2066856881}, +{609918308, 2059049701}, {636818183, 2050889713}, +{663608942, 2042378316}, {690285995, 2033516968}, +{716844771, 2024307187}, {743280720, 2014750552}, +{769589311, 2004848699}, {795766037, 1994603326}, +{821806413, 1984016188}, {847705976, 1973089099}, +{873460290, 1961823931}, {899064940, 1950222615}, +{924515540, 1938287138}, {949807729, 1926019546}, +{974937174, 1913421940}, {999899568, 1900496479}, +{1024690635, 1887245378}, {1049306126, 1873670907}, +{1073741823, 1859775393}, {1097993541, 1845561215}, +{1122057123, 1831030810}, {1145928447, 1816186667}, +{1169603421, 1801031330}, {1193077990, 1785567395}, +{1216348131, 1769797513}, {1239409858, 1753724385}, +{1262259217, 1737350766}, {1284892295, 1720679460}, +{1307305214, 1703713325}, {1329494132, 1686455267}, +{1351455249, 1668908244}, {1373184800, 1651075262}, +{1394679063, 1632959376}, {1415934356, 1614563692}, +{1436947035, 1595891360}, {1457713501, 1576945581}, +{1478230195, 1557729600}, {1498493602, 1538246710}, +{1518500249, 1518500249}, {1538246710, 1498493602}, +{1557729600, 1478230195}, {1576945581, 1457713501}, +{1595891360, 1436947035}, {1614563692, 1415934356}, +{1632959376, 1394679063}, {1651075262, 1373184800}, +{1668908244, 1351455249}, {1686455267, 1329494132}, +{1703713325, 1307305214}, {1720679460, 1284892295}, +{1737350766, 1262259217}, {1753724385, 1239409858}, +{1769797513, 1216348131}, {1785567395, 1193077990}, +{1801031330, 1169603421}, {1816186667, 1145928447}, +{1831030810, 1122057123}, {1845561215, 1097993541}, +{1859775393, 1073741824}, {1873670907, 1049306126}, +{1887245378, 1024690635}, {1900496479, 999899568}, +{1913421940, 974937174}, {1926019546, 949807729}, +{1938287138, 924515540}, {1950222615, 899064940}, +{1961823931, 873460290}, {1973089099, 847705976}, +{1984016188, 821806413}, {1994603326, 795766037}, +{2004848699, 769589311}, {2014750552, 743280720}, +{2024307187, 716844771}, {2033516968, 690285995}, +{2042378316, 663608942}, {2050889713, 636818183}, +{2059049701, 609918308}, {2066856881, 582913927}, +{2074309916, 555809667}, {2081407529, 528610171}, +{2088148503, 501320101}, {2094531684, 473944133}, +{2100555977, 446486956}, {2106220351, 418953276}, +{2111523835, 391347811}, {2116465520, 363675290}, +{2121044560, 335940456}, {2125260169, 308148059}, +{2129111627, 280302863}, {2132598272, 252409639}, +{2135719507, 224473166}, {2138474798, 196498230}, +{2140863672, 168489625}, {2142885720, 140452150}, +{2144540595, 112390610}, {2145828015, 84309812}, +{2146747758, 56214568}, {2147299667, 28109692}, +#else +{32767, 0}, {32765, -429}, +{32757, -858}, {32743, -1286}, +{32723, -1715}, {32698, -2143}, +{32667, -2571}, {32631, -2998}, {32588, -3425}, {32541, -3851}, -{32488, -4277}, {32429, -4701}, -{32364, -5125}, {32295, -5548}, +{32488, -4277}, {32429, -4702}, +{32365, -5126}, {32295, -5549}, {32219, -5971}, {32138, -6393}, -{32051, -6813}, {31960, -7231}, -{31863, -7650}, {31760, -8067}, -{31652, -8481}, {31539, -8895}, -{31419, -9306}, {31294, -9716}, -{31165, -10126}, {31030, -10532}, -{30889, -10937}, {30743, -11340}, -{30592, -11741}, {30436, -12141}, +{32052, -6813}, {31960, -7232}, +{31863, -7650}, {31760, -8066}, +{31651, -8481}, {31538, -8895}, +{31419, -9307}, {31294, -9717}, +{31164, -10126}, {31029, -10533}, +{30888, -10938}, {30743, -11342}, +{30592, -11743}, {30435, -12142}, {30274, -12540}, {30107, -12935}, -{29936, -13328}, {29758, -13718}, -{29577, -14107}, {29390, -14493}, -{29197, -14875}, {29000, -15257}, -{28797, -15635}, {28590, -16010}, -{28379, -16384}, {28162, -16753}, -{27940, -17119}, {27714, -17484}, -{27482, -17845}, {27246, -18205}, -{27006, -18560}, {26760, -18911}, -{26510, -19260}, {26257, -19606}, -{25997, -19947}, {25734, -20286}, -{25466, -20621}, {25194, -20952}, -{24918, -21281}, {24637, -21605}, -{24353, -21926}, {24063, -22242}, -{23770, -22555}, {23473, -22865}, -{23171, -23171}, {22866, -23472}, -{22557, -23769}, {22244, -24063}, -{21927, -24352}, {21606, -24636}, -{21282, -24917}, {20954, -25194}, -{20622, -25465}, {20288, -25733}, -{19949, -25997}, {19607, -26255}, -{19261, -26509}, {18914, -26760}, -{18561, -27004}, {18205, -27246}, -{17846, -27481}, {17485, -27713}, -{17122, -27940}, {16755, -28162}, -{16385, -28378}, {16012, -28590}, -{15636, -28797}, {15258, -28999}, -{14878, -29197}, {14494, -29389}, -{14108, -29576}, {13720, -29757}, -{13329, -29934}, {12937, -30107}, +{29935, -13328}, {29758, -13719}, +{29576, -14107}, {29389, -14493}, +{29197, -14876}, {28999, -15257}, +{28797, -15636}, {28590, -16011}, +{28378, -16384}, {28161, -16754}, +{27939, -17121}, {27713, -17485}, +{27482, -17847}, {27246, -18205}, +{27005, -18560}, {26760, -18912}, +{26510, -19261}, {26255, -19606}, +{25997, -19948}, {25733, -20286}, +{25466, -20622}, {25193, -20953}, +{24917, -21281}, {24636, -21605}, +{24351, -21926}, {24062, -22243}, +{23769, -22556}, {23472, -22865}, +{23170, -23170}, {22865, -23472}, +{22556, -23769}, {22243, -24062}, +{21926, -24351}, {21605, -24636}, +{21281, -24917}, {20953, -25193}, +{20622, -25466}, {20286, -25733}, +{19948, -25997}, {19606, -26255}, +{19261, -26510}, {18912, -26760}, +{18560, -27005}, {18205, -27246}, +{17847, -27482}, {17485, -27713}, +{17121, -27939}, {16754, -28161}, +{16384, -28378}, {16011, -28590}, +{15636, -28797}, {15257, -28999}, +{14876, -29197}, {14493, -29389}, +{14107, -29576}, {13719, -29758}, +{13328, -29935}, {12935, -30107}, {12540, -30274}, {12142, -30435}, -{11744, -30592}, {11342, -30743}, -{10939, -30889}, {10534, -31030}, -{10127, -31164}, {9718, -31294}, -{9307, -31418}, {8895, -31537}, -{8482, -31652}, {8067, -31759}, -{7650, -31862}, {7233, -31960}, -{6815, -32051}, {6393, -32138}, -{5973, -32219}, {5549, -32294}, -{5127, -32364}, {4703, -32429}, -{4278, -32487}, {3852, -32541}, -{3426, -32588}, {2999, -32630}, -{2572, -32667}, {2144, -32698}, -{1716, -32724}, {1287, -32742}, -{860, -32757}, {430, -32766}, -{0, -32767}, {-429, -32766}, -{-858, -32757}, {-1287, -32743}, -{-1715, -32724}, {-2143, -32698}, -{-2570, -32667}, {-2998, -32631}, +{11743, -30592}, {11342, -30743}, +{10938, -30888}, {10533, -31029}, +{10126, -31164}, {9717, -31294}, +{9307, -31419}, {8895, -31538}, +{8481, -31651}, {8066, -31760}, +{7650, -31863}, {7232, -31960}, +{6813, -32052}, {6393, -32138}, +{5971, -32219}, {5549, -32295}, +{5126, -32365}, {4702, -32429}, +{4277, -32488}, {3851, -32541}, +{3425, -32588}, {2998, -32631}, +{2571, -32667}, {2143, -32698}, +{1715, -32723}, {1286, -32743}, +{858, -32757}, {429, -32765}, +{0, -32767}, {-429, -32765}, +{-858, -32757}, {-1286, -32743}, +{-1715, -32723}, {-2143, -32698}, +{-2571, -32667}, {-2998, -32631}, {-3425, -32588}, {-3851, -32541}, -{-4277, -32488}, {-4701, -32429}, -{-5125, -32364}, {-5548, -32295}, +{-4277, -32488}, {-4702, -32429}, +{-5126, -32365}, {-5549, -32295}, {-5971, -32219}, {-6393, -32138}, -{-6813, -32051}, {-7231, -31960}, -{-7650, -31863}, {-8067, -31760}, -{-8481, -31652}, {-8895, -31539}, -{-9306, -31419}, {-9716, -31294}, -{-10126, -31165}, {-10532, -31030}, -{-10937, -30889}, {-11340, -30743}, -{-11741, -30592}, {-12141, -30436}, +{-6813, -32052}, {-7232, -31960}, +{-7650, -31863}, {-8066, -31760}, +{-8481, -31651}, {-8895, -31538}, +{-9307, -31419}, {-9717, -31294}, +{-10126, -31164}, {-10533, -31029}, +{-10938, -30888}, {-11342, -30743}, +{-11743, -30592}, {-12142, -30435}, {-12540, -30274}, {-12935, -30107}, -{-13328, -29936}, {-13718, -29758}, -{-14107, -29577}, {-14493, -29390}, -{-14875, -29197}, {-15257, -29000}, -{-15635, -28797}, {-16010, -28590}, -{-16384, -28379}, {-16753, -28162}, -{-17119, -27940}, {-17484, -27714}, -{-17845, -27482}, {-18205, -27246}, -{-18560, -27006}, {-18911, -26760}, -{-19260, -26510}, {-19606, -26257}, -{-19947, -25997}, {-20286, -25734}, -{-20621, -25466}, {-20952, -25194}, -{-21281, -24918}, {-21605, -24637}, -{-21926, -24353}, {-22242, -24063}, -{-22555, -23770}, {-22865, -23473}, -{-23171, -23171}, {-23472, -22866}, -{-23769, -22557}, {-24063, -22244}, -{-24352, -21927}, {-24636, -21606}, -{-24917, -21282}, {-25194, -20954}, -{-25465, -20622}, {-25733, -20288}, -{-25997, -19949}, {-26255, -19607}, -{-26509, -19261}, {-26760, -18914}, -{-27004, -18561}, {-27246, -18205}, -{-27481, -17846}, {-27713, -17485}, -{-27940, -17122}, {-28162, -16755}, -{-28378, -16385}, {-28590, -16012}, -{-28797, -15636}, {-28999, -15258}, -{-29197, -14878}, {-29389, -14494}, -{-29576, -14108}, {-29757, -13720}, -{-29934, -13329}, {-30107, -12937}, +{-13328, -29935}, {-13719, -29758}, +{-14107, -29576}, {-14493, -29389}, +{-14876, -29197}, {-15257, -28999}, +{-15636, -28797}, {-16011, -28590}, +{-16384, -28378}, {-16754, -28161}, +{-17121, -27939}, {-17485, -27713}, +{-17847, -27482}, {-18205, -27246}, +{-18560, -27005}, {-18912, -26760}, +{-19261, -26510}, {-19606, -26255}, +{-19948, -25997}, {-20286, -25733}, +{-20622, -25466}, {-20953, -25193}, +{-21281, -24917}, {-21605, -24636}, +{-21926, -24351}, {-22243, -24062}, +{-22556, -23769}, {-22865, -23472}, +{-23170, -23170}, {-23472, -22865}, +{-23769, -22556}, {-24062, -22243}, +{-24351, -21926}, {-24636, -21605}, +{-24917, -21281}, {-25193, -20953}, +{-25466, -20622}, {-25733, -20286}, +{-25997, -19948}, {-26255, -19606}, +{-26510, -19261}, {-26760, -18912}, +{-27005, -18560}, {-27246, -18205}, +{-27482, -17847}, {-27713, -17485}, +{-27939, -17121}, {-28161, -16754}, +{-28378, -16384}, {-28590, -16011}, +{-28797, -15636}, {-28999, -15257}, +{-29197, -14876}, {-29389, -14493}, +{-29576, -14107}, {-29758, -13719}, +{-29935, -13328}, {-30107, -12935}, {-30274, -12540}, {-30435, -12142}, -{-30592, -11744}, {-30743, -11342}, -{-30889, -10939}, {-31030, -10534}, -{-31164, -10127}, {-31294, -9718}, -{-31418, -9307}, {-31537, -8895}, -{-31652, -8482}, {-31759, -8067}, -{-31862, -7650}, {-31960, -7233}, -{-32051, -6815}, {-32138, -6393}, -{-32219, -5973}, {-32294, -5549}, -{-32364, -5127}, {-32429, -4703}, -{-32487, -4278}, {-32541, -3852}, -{-32588, -3426}, {-32630, -2999}, -{-32667, -2572}, {-32698, -2144}, -{-32724, -1716}, {-32742, -1287}, -{-32757, -860}, {-32766, -430}, -{-32767, 0}, {-32766, 429}, -{-32757, 858}, {-32743, 1287}, -{-32724, 1715}, {-32698, 2143}, -{-32667, 2570}, {-32631, 2998}, +{-30592, -11743}, {-30743, -11342}, +{-30888, -10938}, {-31029, -10533}, +{-31164, -10126}, {-31294, -9717}, +{-31419, -9307}, {-31538, -8895}, +{-31651, -8481}, {-31760, -8066}, +{-31863, -7650}, {-31960, -7232}, +{-32052, -6813}, {-32138, -6393}, +{-32219, -5971}, {-32295, -5549}, +{-32365, -5126}, {-32429, -4702}, +{-32488, -4277}, {-32541, -3851}, +{-32588, -3425}, {-32631, -2998}, +{-32667, -2571}, {-32698, -2143}, +{-32723, -1715}, {-32743, -1286}, +{-32757, -858}, {-32765, -429}, +{-32767, 0}, {-32765, 429}, +{-32757, 858}, {-32743, 1286}, +{-32723, 1715}, {-32698, 2143}, +{-32667, 2571}, {-32631, 2998}, {-32588, 3425}, {-32541, 3851}, -{-32488, 4277}, {-32429, 4701}, -{-32364, 5125}, {-32295, 5548}, +{-32488, 4277}, {-32429, 4702}, +{-32365, 5126}, {-32295, 5549}, {-32219, 5971}, {-32138, 6393}, -{-32051, 6813}, {-31960, 7231}, -{-31863, 7650}, {-31760, 8067}, -{-31652, 8481}, {-31539, 8895}, -{-31419, 9306}, {-31294, 9716}, -{-31165, 10126}, {-31030, 10532}, -{-30889, 10937}, {-30743, 11340}, -{-30592, 11741}, {-30436, 12141}, +{-32052, 6813}, {-31960, 7232}, +{-31863, 7650}, {-31760, 8066}, +{-31651, 8481}, {-31538, 8895}, +{-31419, 9307}, {-31294, 9717}, +{-31164, 10126}, {-31029, 10533}, +{-30888, 10938}, {-30743, 11342}, +{-30592, 11743}, {-30435, 12142}, {-30274, 12540}, {-30107, 12935}, -{-29936, 13328}, {-29758, 13718}, -{-29577, 14107}, {-29390, 14493}, -{-29197, 14875}, {-29000, 15257}, -{-28797, 15635}, {-28590, 16010}, -{-28379, 16384}, {-28162, 16753}, -{-27940, 17119}, {-27714, 17484}, -{-27482, 17845}, {-27246, 18205}, -{-27006, 18560}, {-26760, 18911}, -{-26510, 19260}, {-26257, 19606}, -{-25997, 19947}, {-25734, 20286}, -{-25466, 20621}, {-25194, 20952}, -{-24918, 21281}, {-24637, 21605}, -{-24353, 21926}, {-24063, 22242}, -{-23770, 22555}, {-23473, 22865}, -{-23171, 23171}, {-22866, 23472}, -{-22557, 23769}, {-22244, 24063}, -{-21927, 24352}, {-21606, 24636}, -{-21282, 24917}, {-20954, 25194}, -{-20622, 25465}, {-20288, 25733}, -{-19949, 25997}, {-19607, 26255}, -{-19261, 26509}, {-18914, 26760}, -{-18561, 27004}, {-18205, 27246}, -{-17846, 27481}, {-17485, 27713}, -{-17122, 27940}, {-16755, 28162}, -{-16385, 28378}, {-16012, 28590}, -{-15636, 28797}, {-15258, 28999}, -{-14878, 29197}, {-14494, 29389}, -{-14108, 29576}, {-13720, 29757}, -{-13329, 29934}, {-12937, 30107}, +{-29935, 13328}, {-29758, 13719}, +{-29576, 14107}, {-29389, 14493}, +{-29197, 14876}, {-28999, 15257}, +{-28797, 15636}, {-28590, 16011}, +{-28378, 16384}, {-28161, 16754}, +{-27939, 17121}, {-27713, 17485}, +{-27482, 17847}, {-27246, 18205}, +{-27005, 18560}, {-26760, 18912}, +{-26510, 19261}, {-26255, 19606}, +{-25997, 19948}, {-25733, 20286}, +{-25466, 20622}, {-25193, 20953}, +{-24917, 21281}, {-24636, 21605}, +{-24351, 21926}, {-24062, 22243}, +{-23769, 22556}, {-23472, 22865}, +{-23170, 23170}, {-22865, 23472}, +{-22556, 23769}, {-22243, 24062}, +{-21926, 24351}, {-21605, 24636}, +{-21281, 24917}, {-20953, 25193}, +{-20622, 25466}, {-20286, 25733}, +{-19948, 25997}, {-19606, 26255}, +{-19261, 26510}, {-18912, 26760}, +{-18560, 27005}, {-18205, 27246}, +{-17847, 27482}, {-17485, 27713}, +{-17121, 27939}, {-16754, 28161}, +{-16384, 28378}, {-16011, 28590}, +{-15636, 28797}, {-15257, 28999}, +{-14876, 29197}, {-14493, 29389}, +{-14107, 29576}, {-13719, 29758}, +{-13328, 29935}, {-12935, 30107}, {-12540, 30274}, {-12142, 30435}, -{-11744, 30592}, {-11342, 30743}, -{-10939, 30889}, {-10534, 31030}, -{-10127, 31164}, {-9718, 31294}, -{-9307, 31418}, {-8895, 31537}, -{-8482, 31652}, {-8067, 31759}, -{-7650, 31862}, {-7233, 31960}, -{-6815, 32051}, {-6393, 32138}, -{-5973, 32219}, {-5549, 32294}, -{-5127, 32364}, {-4703, 32429}, -{-4278, 32487}, {-3852, 32541}, -{-3426, 32588}, {-2999, 32630}, -{-2572, 32667}, {-2144, 32698}, -{-1716, 32724}, {-1287, 32742}, -{-860, 32757}, {-430, 32766}, -{0, 32767}, {429, 32766}, -{858, 32757}, {1287, 32743}, -{1715, 32724}, {2143, 32698}, -{2570, 32667}, {2998, 32631}, +{-11743, 30592}, {-11342, 30743}, +{-10938, 30888}, {-10533, 31029}, +{-10126, 31164}, {-9717, 31294}, +{-9307, 31419}, {-8895, 31538}, +{-8481, 31651}, {-8066, 31760}, +{-7650, 31863}, {-7232, 31960}, +{-6813, 32052}, {-6393, 32138}, +{-5971, 32219}, {-5549, 32295}, +{-5126, 32365}, {-4702, 32429}, +{-4277, 32488}, {-3851, 32541}, +{-3425, 32588}, {-2998, 32631}, +{-2571, 32667}, {-2143, 32698}, +{-1715, 32723}, {-1286, 32743}, +{-858, 32757}, {-429, 32765}, +{0, 32767}, {429, 32765}, +{858, 32757}, {1286, 32743}, +{1715, 32723}, {2143, 32698}, +{2571, 32667}, {2998, 32631}, {3425, 32588}, {3851, 32541}, -{4277, 32488}, {4701, 32429}, -{5125, 32364}, {5548, 32295}, +{4277, 32488}, {4702, 32429}, +{5126, 32365}, {5549, 32295}, {5971, 32219}, {6393, 32138}, -{6813, 32051}, {7231, 31960}, -{7650, 31863}, {8067, 31760}, -{8481, 31652}, {8895, 31539}, -{9306, 31419}, {9716, 31294}, -{10126, 31165}, {10532, 31030}, -{10937, 30889}, {11340, 30743}, -{11741, 30592}, {12141, 30436}, +{6813, 32052}, {7232, 31960}, +{7650, 31863}, {8066, 31760}, +{8481, 31651}, {8895, 31538}, +{9307, 31419}, {9717, 31294}, +{10126, 31164}, {10533, 31029}, +{10938, 30888}, {11342, 30743}, +{11743, 30592}, {12142, 30435}, {12540, 30274}, {12935, 30107}, -{13328, 29936}, {13718, 29758}, -{14107, 29577}, {14493, 29390}, -{14875, 29197}, {15257, 29000}, -{15635, 28797}, {16010, 28590}, -{16384, 28379}, {16753, 28162}, -{17119, 27940}, {17484, 27714}, -{17845, 27482}, {18205, 27246}, -{18560, 27006}, {18911, 26760}, -{19260, 26510}, {19606, 26257}, -{19947, 25997}, {20286, 25734}, -{20621, 25466}, {20952, 25194}, -{21281, 24918}, {21605, 24637}, -{21926, 24353}, {22242, 24063}, -{22555, 23770}, {22865, 23473}, -{23171, 23171}, {23472, 22866}, -{23769, 22557}, {24063, 22244}, -{24352, 21927}, {24636, 21606}, -{24917, 21282}, {25194, 20954}, -{25465, 20622}, {25733, 20288}, -{25997, 19949}, {26255, 19607}, -{26509, 19261}, {26760, 18914}, -{27004, 18561}, {27246, 18205}, -{27481, 17846}, {27713, 17485}, -{27940, 17122}, {28162, 16755}, -{28378, 16385}, {28590, 16012}, -{28797, 15636}, {28999, 15258}, -{29197, 14878}, {29389, 14494}, -{29576, 14108}, {29757, 13720}, -{29934, 13329}, {30107, 12937}, +{13328, 29935}, {13719, 29758}, +{14107, 29576}, {14493, 29389}, +{14876, 29197}, {15257, 28999}, +{15636, 28797}, {16011, 28590}, +{16384, 28378}, {16754, 28161}, +{17121, 27939}, {17485, 27713}, +{17847, 27482}, {18205, 27246}, +{18560, 27005}, {18912, 26760}, +{19261, 26510}, {19606, 26255}, +{19948, 25997}, {20286, 25733}, +{20622, 25466}, {20953, 25193}, +{21281, 24917}, {21605, 24636}, +{21926, 24351}, {22243, 24062}, +{22556, 23769}, {22865, 23472}, +{23170, 23170}, {23472, 22865}, +{23769, 22556}, {24062, 22243}, +{24351, 21926}, {24636, 21605}, +{24917, 21281}, {25193, 20953}, +{25466, 20622}, {25733, 20286}, +{25997, 19948}, {26255, 19606}, +{26510, 19261}, {26760, 18912}, +{27005, 18560}, {27246, 18205}, +{27482, 17847}, {27713, 17485}, +{27939, 17121}, {28161, 16754}, +{28378, 16384}, {28590, 16011}, +{28797, 15636}, {28999, 15257}, +{29197, 14876}, {29389, 14493}, +{29576, 14107}, {29758, 13719}, +{29935, 13328}, {30107, 12935}, {30274, 12540}, {30435, 12142}, -{30592, 11744}, {30743, 11342}, -{30889, 10939}, {31030, 10534}, -{31164, 10127}, {31294, 9718}, -{31418, 9307}, {31537, 8895}, -{31652, 8482}, {31759, 8067}, -{31862, 7650}, {31960, 7233}, -{32051, 6815}, {32138, 6393}, -{32219, 5973}, {32294, 5549}, -{32364, 5127}, {32429, 4703}, -{32487, 4278}, {32541, 3852}, -{32588, 3426}, {32630, 2999}, -{32667, 2572}, {32698, 2144}, -{32724, 1716}, {32742, 1287}, -{32757, 860}, {32766, 430}, +{30592, 11743}, {30743, 11342}, +{30888, 10938}, {31029, 10533}, +{31164, 10126}, {31294, 9717}, +{31419, 9307}, {31538, 8895}, +{31651, 8481}, {31760, 8066}, +{31863, 7650}, {31960, 7232}, +{32052, 6813}, {32138, 6393}, +{32219, 5971}, {32295, 5549}, +{32365, 5126}, {32429, 4702}, +{32488, 4277}, {32541, 3851}, +{32588, 3425}, {32631, 2998}, +{32667, 2571}, {32698, 2143}, +{32723, 1715}, {32743, 1286}, +{32757, 858}, {32765, 429}, +#endif }; #ifndef FFT_BITREV480 #define FFT_BITREV480 @@ -431,12 +674,16 @@ #define FFT_STATE48000_960_0 static const kiss_fft_state fft_state48000_960_0 = { 480, /* nfft */ +#ifdef ENABLE_QEXT +572662306, /* scale */ +#else 17476, /* scale */ -8, /* scale_shift */ --1, /* shift */ +#endif +8, /* scale_shift */ +-1, /* shift */ {5, 96, 3, 32, 4, 8, 2, 4, 4, 1, 0, 0, 0, 0, 0, 0, }, /* factors */ -fft_bitrev480, /* bitrev */ -fft_twiddles48000_960, /* bitrev */ +fft_bitrev480, /* bitrev */ +fft_twiddles48000_960, /* bitrev */ #ifdef OVERRIDE_FFT (arch_fft_state *)&cfg_arch_480, #else @@ -449,12 +696,16 @@ #define FFT_STATE48000_960_1 static const kiss_fft_state fft_state48000_960_1 = { 240, /* nfft */ +#ifdef ENABLE_QEXT +572662306, /* scale */ +#else 17476, /* scale */ -7, /* scale_shift */ -1, /* shift */ +#endif +7, /* scale_shift */ +1, /* shift */ {5, 48, 3, 16, 4, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, }, /* factors */ -fft_bitrev240, /* bitrev */ -fft_twiddles48000_960, /* bitrev */ +fft_bitrev240, /* bitrev */ +fft_twiddles48000_960, /* bitrev */ #ifdef OVERRIDE_FFT (arch_fft_state *)&cfg_arch_240, #else @@ -467,12 +718,16 @@ #define FFT_STATE48000_960_2 static const kiss_fft_state fft_state48000_960_2 = { 120, /* nfft */ +#ifdef ENABLE_QEXT +572662306, /* scale */ +#else 17476, /* scale */ -6, /* scale_shift */ -2, /* shift */ +#endif +6, /* scale_shift */ +2, /* shift */ {5, 24, 3, 8, 2, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, }, /* factors */ -fft_bitrev120, /* bitrev */ -fft_twiddles48000_960, /* bitrev */ +fft_bitrev120, /* bitrev */ +fft_twiddles48000_960, /* bitrev */ #ifdef OVERRIDE_FFT (arch_fft_state *)&cfg_arch_120, #else @@ -484,13 +739,17 @@ #ifndef FFT_STATE48000_960_3 #define FFT_STATE48000_960_3 static const kiss_fft_state fft_state48000_960_3 = { -60, /* nfft */ +60, /* nfft */ +#ifdef ENABLE_QEXT +572662306, /* scale */ +#else 17476, /* scale */ -5, /* scale_shift */ -3, /* shift */ +#endif +5, /* scale_shift */ +3, /* shift */ {5, 12, 3, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, /* factors */ -fft_bitrev60, /* bitrev */ -fft_twiddles48000_960, /* bitrev */ +fft_bitrev60, /* bitrev */ +fft_twiddles48000_960, /* bitrev */ #ifdef OVERRIDE_FFT (arch_fft_state *)&cfg_arch_60, #else @@ -503,7 +762,369 @@ #ifndef MDCT_TWIDDLES960 #define MDCT_TWIDDLES960 -static const opus_val16 mdct_twiddles960[1800] = { +static const celt_coef mdct_twiddles960[1800] = { +#ifdef ENABLE_QEXT +2147483468, 2147469095, 2147431723, 2147371355, 2147287990, +2147181629, 2147052273, 2146899924, 2146724584, 2146526254, +2146304937, 2146060634, 2145793349, 2145503083, 2145189842, +2144853627, 2144494442, 2144112292, 2143707180, 2143279110, +2142828088, 2142354118, 2141857204, 2141337354, 2140794571, +2140228862, 2139640233, 2139028690, 2138394240, 2137736889, +2137056645, 2136353515, 2135627506, 2134878626, 2134106884, +2133312286, 2132494843, 2131654563, 2130791454, 2129905526, +2128996788, 2128065251, 2127110924, 2126133817, 2125133941, +2124111307, 2123065925, 2121997806, 2120906963, 2119793407, +2118657149, 2117498202, 2116316578, 2115112291, 2113885352, +2112635775, 2111363574, 2110068761, 2108751352, 2107411359, +2106048798, 2104663683, 2103256028, 2101825849, 2100373162, +2098897981, 2097400322, 2095880202, 2094337637, 2092772643, +2091185237, 2089575437, 2087943258, 2086288720, 2084611839, +2082912633, 2081191122, 2079447322, 2077681253, 2075892934, +2074082383, 2072249621, 2070394667, 2068517540, 2066618262, +2064696851, 2062753329, 2060787717, 2058800036, 2056790306, +2054758550, 2052704789, 2050629045, 2048531340, 2046411698, +2044270140, 2042106689, 2039921369, 2037714204, 2035485216, +2033234429, 2030961869, 2028667558, 2026351522, 2024013785, +2021654373, 2019273310, 2016870623, 2014446336, 2012000477, +2009533071, 2007044144, 2004533723, 2002001835, 1999448508, +1996873768, 1994277643, 1991660161, 1989021350, 1986361238, +1983679853, 1980977226, 1978253383, 1975508355, 1972742171, +1969954860, 1967146453, 1964316979, 1961466469, 1958594953, +1955702462, 1952789027, 1949854680, 1946899451, 1943923372, +1940926475, 1937908793, 1934870357, 1931811201, 1928731356, +1925630856, 1922509734, 1919368023, 1916205758, 1913022972, +1909819698, 1906595972, 1903351828, 1900087301, 1896802425, +1893497236, 1890171769, 1886826060, 1883460144, 1880074058, +1876667838, 1873241521, 1869795142, 1866328740, 1862842350, +1859336011, 1855809760, 1852263635, 1848697674, 1845111914, +1841506395, 1837881155, 1834236233, 1830571667, 1826887497, +1823183763, 1819460504, 1815717761, 1811955572, 1808173978, +1804373021, 1800552740, 1796713177, 1792854372, 1788976368, +1785079205, 1781162925, 1777227570, 1773273182, 1769299805, +1765307479, 1761296249, 1757266156, 1753217244, 1749149557, +1745063138, 1740958031, 1736834279, 1732691928, 1728531020, +1724351602, 1720153717, 1715937410, 1711702727, 1707449714, +1703178415, 1698888876, 1694581143, 1690255263, 1685911282, +1681549245, 1677169201, 1672771196, 1668355276, 1663921490, +1659469885, 1655000508, 1650513407, 1646008631, 1641486227, +1636946244, 1632388731, 1627813736, 1623221309, 1618611498, +1613984353, 1609339924, 1604678260, 1599999411, 1595303428, +1590590360, 1585860258, 1581113173, 1576349155, 1571568256, +1566770527, 1561956018, 1557124783, 1552276872, 1547412337, +1542531231, 1537633606, 1532719513, 1527789007, 1522842139, +1517878963, 1512899531, 1507903898, 1502892116, 1497864239, +1492820322, 1487760417, 1482684580, 1477592864, 1472485325, +1467362016, 1462222994, 1457068312, 1451898025, 1446712191, +1441510863, 1436294098, 1431061951, 1425814478, 1420551737, +1415273782, 1409980671, 1404672460, 1399349206, 1394010966, +1388657798, 1383289758, 1377906904, 1372509294, 1367096986, +1361670037, 1356228505, 1350772450, 1345301929, 1339817000, +1334317724, 1328804158, 1323276361, 1317734393, 1312178313, +1306608181, 1301024057, 1295425999, 1289814068, 1284188325, +1278548828, 1272895640, 1267228820, 1261548429, 1255854528, +1250147177, 1244426439, 1238692373, 1232945043, 1227184508, +1221410831, 1215624074, 1209824299, 1204011567, 1198185941, +1192347484, 1186496258, 1180632325, 1174755748, 1168866591, +1162964917, 1157050787, 1151124267, 1145185419, 1139234307, +1133270995, 1127295547, 1121308026, 1115308496, 1109297023, +1103273670, 1097238502, 1091191583, 1085132978, 1079062753, +1072980972, 1066887699, 1060783002, 1054666944, 1048539592, +1042401010, 1036251266, 1030090423, 1023918550, 1017735711, +1011541973, 1005337402, 999122065, 992896028, 986659358, +980412122, 974154386, 967886217, 961607684, 955318852, +949019790, 942710564, 936391243, 930061894, 923722585, +917373383, 911014357, 904645574, 898267104, 891879014, +885481373, 879074249, 872657710, 866231826, 859796666, +853352298, 846898791, 840436214, 833964638, 827484130, +820994760, 814496598, 807989714, 801474176, 794950056, +788417422, 781876345, 775326894, 768769141, 762203154, +755629005, 749046764, 742456501, 735858287, 729252193, +722638289, 716016646, 709387335, 702750427, 696105993, +689454104, 682794832, 676128248, 669454423, 662773428, +656085336, 649390218, 642688145, 635979190, 629263424, +622540918, 615811746, 609075979, 602333690, 595584950, +588829831, 582068407, 575300749, 568526931, 561747023, +554961100, 548169234, 541371497, 534567963, 527758704, +520943793, 514123303, 507297307, 500465878, 493629090, +486787016, 479939728, 473087301, 466229807, 459367320, +452499914, 445627662, 438750638, 431868915, 424982567, +418091668, 411196291, 404296511, 397392401, 390484035, +383571488, 376654833, 369734144, 362809495, 355880961, +348948616, 342012534, 335072790, 328129457, 321182610, +314232323, 307278671, 300321729, 293361570, 286398270, +279431902, 272462542, 265490265, 258515144, 251537254, +244556671, 237573469, 230587722, 223599506, 216608896, +209615966, 202620791, 195623446, 188624006, 181622546, +174619141, 167613866, 160606796, 153598006, 146587571, +139575567, 132562067, 125547148, 118530885, 111513352, +104494625, 97474778, 90453888, 83432030, 76409277, +69385707, 62361393, 55336412, 48310838, 41284746, +34258213, 27231312, 20204120, 13176712, 6149162, +-878453, -7906059, -14933580, -21960942, -28988068, +-36014884, -43041314, -50067283, -57092716, -64117537, +-71141672, -78165045, -85187581, -92209205, -99229841, +-106249414, -113267850, -120285073, -127301007, -134315578, +-141328711, -148340330, -155350361, -162358728, -169365356, +-176370170, -183373096, -190374058, -197372981, -204369791, +-211364411, -218356769, -225346788, -232334393, -239319511, +-246302065, -253281982, -260259186, -267233603, -274205159, +-281173778, -288139385, -295101907, -302061269, -309017396, +-315970213, -322919647, -329865622, -336808065, -343746901, +-350682056, -357613455, -364541025, -371464690, -378384377, +-385300013, -392211522, -399118830, -406021865, -412920551, +-419814815, -426704583, -433589782, -440470337, -447346176, +-454217223, -461083406, -467944652, -474800886, -481652035, +-488498026, -495338786, -502174241, -509004318, -515828944, +-522648046, -529461551, -536269386, -543071478, -549867754, +-556658141, -563442567, -570220959, -576993244, -583759350, +-590519205, -597272736, -604019870, -610760536, -617494660, +-624222173, -630943000, -637657070, -644364312, -651064652, +-657758021, -664444345, -671123554, -677795576, -684460338, +-691117771, -697767803, -704410362, -711045377, -717672778, +-724292493, -730904451, -737508582, -744104815, -750693079, +-757273304, -763845419, -770409354, -776965038, -783512402, +-790051375, -796581887, -803103868, -809617249, -816121959, +-822617929, -829105090, -835583372, -842052705, -848513021, +-854964249, -861406322, -867839170, -874262724, -880676915, +-887081675, -893476935, -899862626, -906238681, -912605031, +-918961607, -925308342, -931645168, -937972016, -944288820, +-950595511, -956892022, -963178285, -969454234, -975719800, +-981974918, -988219519, -994453537, -1000676905, -1006889557, +-1013091426, -1019282445, -1025462549, -1031631671, -1037789745, +-1043936705, -1050072485, -1056197020, -1062310244, -1068412091, +-1074502497, -1080581395, -1086648722, -1092704411, -1098748398, +-1104780618, -1110801008, -1116809501, -1122806034, -1128790543, +-1134762964, -1140723232, -1146671283, -1152607055, -1158530484, +-1164441505, -1170340057, -1176226074, -1182099496, -1187960258, +-1193808298, -1199643553, -1205465961, -1211275460, -1217071986, +-1222855479, -1228625876, -1234383115, -1240127136, -1245857875, +-1251575272, -1257279266, -1262969796, -1268646800, -1274310217, +-1279959989, -1285596052, -1291218348, -1296826816, -1302421396, +-1308002029, -1313568653, -1319121210, -1324659641, -1330183885, +-1335693885, -1341189580, -1346670912, -1352137822, -1357590252, +-1363028143, -1368451438, -1373860077, -1379254004, -1384633159, +-1389997487, -1395346928, -1400681427, -1406000925, -1411305366, +-1416594694, -1421868850, -1427127780, -1432371426, -1437599733, +-1442812644, -1448010104, -1453192057, -1458358447, -1463509220, +-1468644319, -1473763690, -1478867279, -1483955030, -1489026889, +-1494082802, -1499122714, -1504146572, -1509154322, -1514145910, +-1519121283, -1524080387, -1529023170, -1533949577, -1538859558, +-1543753058, -1548630027, -1553490410, -1558334157, -1563161216, +-1567971534, -1572765060, -1577541744, -1582301533, -1587044377, +-1591770225, -1596479027, -1601170732, -1605845289, -1610502649, +-1615142762, -1619765578, -1624371047, -1628959121, -1633529750, +-1638082885, -1642618478, -1647136479, -1651636841, -1656119516, +-1660584454, -1665031609, -1669460933, -1673872378, -1678265898, +-1682641444, -1686998971, -1691338432, -1695659779, -1699962968, +-1704247951, -1708514683, -1712763118, -1716993211, -1721204917, +-1725398189, -1729572984, -1733729257, -1737866963, -1741986057, +-1746086497, -1750168237, -1754231234, -1758275445, -1762300826, +-1766307335, -1770294927, -1774263561, -1778213194, -1782143784, +-1786055289, -1789947667, -1793820875, -1797674873, -1801509620, +-1805325074, -1809121194, -1812897940, -1816655271, -1820393147, +-1824111529, -1827810376, -1831489648, -1835149306, -1838789312, +-1842409625, -1846010208, -1849591022, -1853152028, -1856693188, +-1860214464, -1863715819, -1867197215, -1870658615, -1874099982, +-1877521279, -1880922469, -1884303515, -1887664383, -1891005035, +-1894325435, -1897625550, -1900905342, -1904164776, -1907403819, +-1910622435, -1913820590, -1916998250, -1920155379, -1923291946, +-1926407915, -1929503255, -1932577931, -1935631910, -1938665161, +-1941677650, -1944669345, -1947640214, -1950590226, -1953519348, +-1956427550, -1959314800, -1962181067, -1965026321, -1967850531, +-1970653667, -1973435699, -1976196596, -1978936331, -1981654873, +-1984352192, -1987028261, -1989683050, -1992316532, -1994928677, +-1997519459, -2000088848, -2002636818, -2005163342, -2007668391, +-2010151941, -2012613963, -2015054432, -2017473321, -2019870604, +-2022246257, -2024600252, -2026932566, -2029243173, -2031532049, +-2033799168, -2036044507, -2038268042, -2040469748, -2042649603, +-2044807583, -2046943664, -2049057824, -2051150040, -2053220291, +-2055268553, -2057294804, -2059299024, -2061281190, -2063241282, +-2065179277, -2067095157, -2068988899, -2070860485, -2072709893, +-2074537104, -2076342098, -2078124857, -2079885360, -2081623590, +-2083339527, -2085033153, -2086704450, -2088353400, -2089979985, +-2091584189, -2093165993, -2094725382, -2096262337, -2097776843, +-2099268884, -2100738443, -2102185505, -2103610054, -2105012075, +-2106391553, -2107748474, -2109082822, -2110394584, -2111683744, +-2112950291, -2114194210, -2115415487, -2116614110, -2117790065, +-2118943341, -2120073924, -2121181804, -2122266967, -2123329402, +-2124369098, -2125386044, -2126380229, -2127351642, -2128300272, +-2129226111, -2130129147, -2131009371, -2131866773, -2132701345, +-2133513078, -2134301962, -2135067990, -2135811153, -2136531442, +-2137228852, -2137903373, -2138555000, -2139183723, -2139789539, +-2140372438, -2140932416, -2141469466, -2141983583, -2142474761, +-2142942995, -2143388280, -2143810610, -2144209982, -2144586392, +-2144939834, -2145270306, -2145577804, -2145862324, -2146123864, +-2146362421, -2146577992, -2146770575, -2146940167, -2147086768, +-2147210375, -2147310987, -2147388603, -2147443222, -2147474844, +2147482929, 2147425435, 2147275952, 2147034487, 2146701050, +2146275656, 2145758322, 2145149071, 2144447929, 2143654926, +2142770096, 2141793477, 2140725111, 2139565043, 2138313323, +2136970005, 2135535146, 2134008809, 2132391057, 2130681961, +2128881593, 2126990031, 2125007356, 2122933653, 2120769010, +2118513521, 2116167282, 2113730393, 2111202959, 2108585087, +2105876892, 2103078487, 2100189994, 2097211535, 2094143239, +2090985237, 2087737664, 2084400659, 2080974365, 2077458929, +2073854502, 2070161238, 2066379295, 2062508835, 2058550025, +2054503033, 2050368032, 2046145201, 2041834720, 2037436773, +2032951550, 2028379241, 2023720043, 2018974156, 2014141783, +2009223131, 2004218410, 1999127836, 1993951625, 1988690000, +1983343186, 1977911412, 1972394912, 1966793920, 1961108677, +1955339428, 1949486417, 1943549898, 1937530123, 1931427351, +1925241843, 1918973864, 1912623682, 1906191570, 1899677803, +1893082661, 1886406424, 1879649381, 1872811820, 1865894033, +1858896318, 1851818974, 1844662304, 1837426615, 1830112217, +1822719423, 1815248550, 1807699917, 1800073849, 1792370671, +1784590714, 1776734311, 1768801799, 1760793518, 1752709809, +1744551021, 1736317502, 1728009604, 1719627685, 1711172102, +1702643219, 1694041400, 1685367013, 1676620432, 1667802029, +1658912184, 1649951276, 1640919689, 1631817811, 1622646032, +1613404744, 1604094343, 1594715227, 1585267800, 1575752465, +1566169630, 1556519705, 1546803104, 1537020244, 1527171542, +1517257422, 1507278307, 1497234626, 1487126808, 1476955286, +1466720497, 1456422878, 1446062871, 1435640919, 1425157469, +1414612971, 1404007875, 1393342636, 1382617710, 1371833558, +1360990642, 1350089425, 1339130374, 1328113960, 1317040654, +1305910930, 1294725265, 1283484138, 1272188032, 1260837429, +1249432816, 1237974681, 1226463516, 1214899813, 1203284068, +1191616778, 1179898443, 1168129565, 1156310649, 1144442200, +1132524727, 1120558740, 1108544752, 1096483278, 1084374834, +1072219940, 1060019115, 1047772882, 1035481766, 1023146293, +1010766993, 998344394, 985879030, 973371434, 960822142, +948231691, 935600622, 922929474, 910218791, 897469118, +884680999, 871854984, 858991622, 846091463, 833155061, +820182969, 807175743, 794133941, 781058120, 767948841, +754806666, 741632158, 728425880, 715188400, 701920283, +688622098, 675294414, 661937804, 648552838, 635140090, +621700135, 608233549, 594740907, 581222789, 567679774, +554112440, 540521371, 526907147, 513270353, 499611571, +485931388, 472230390, 458509162, 444768294, 431008373, +417229989, 403433732, 389620194, 375789965, 361943639, +348081809, 334205068, 320314011, 306409232, 292491328, +278560894, 264618528, 250664827, 236700388, 222725809, +208741690, 194748629, 180747225, 166738079, 152721790, +138698959, 124670187, 110636075, 96597223, 82554233, +68507707, 54458246, 40406452, 26352928, 12298274, +-1756906, -15812011, -29866438, -43919586, -57970853, +-72019637, -86065335, -100107347, -114145071, -128177904, +-142205248, -156226499, -170241059, -184248325, -198247699, +-212238581, -226220372, -240192472, -254154282, -268105206, +-282044645, -295972002, -309886680, -323788084, -337675619, +-351548688, -365406698, -379249055, -393075166, -406884440, +-420676284, -434450107, -448205320, -461941333, -475657559, +-489353409, -503028296, -516681636, -530312842, -543921332, +-557506522, -571067830, -584604676, -598116479, -611602660, +-625062643, -638495850, -651901706, -665279637, -678629069, +-691949432, -705240153, -718500664, -731730397, -744928785, +-758095263, -771229267, -784330234, -797397602, -810430813, +-823429308, -836392529, -849319923, -862210934, -875065011, +-887881603, -900660162, -913400139, -926100989, -938762167, +-951383133, -963963344, -976502263, -988999351, -1001454074, +-1013865898, -1026234291, -1038558724, -1050838668, -1063073598, +-1075262990, -1087406320, -1099503070, -1111552721, -1123554757, +-1135508663, -1147413928, -1159270041, -1171076495, -1182832785, +-1194538405, -1206192856, -1217795637, -1229346252, -1240844206, +-1252289006, -1263680162, -1275017186, -1286299593, -1297526899, +-1308698624, -1319814288, -1330873416, -1341875533, -1352820169, +-1363706855, -1374535124, -1385304512, -1396014559, -1406664805, +-1417254794, -1427784073, -1438252190, -1448658697, -1459003149, +-1469285102, -1479504115, -1489659751, -1499751576, -1509779156, +-1519742062, -1529639867, -1539472148, -1549238483, -1558938453, +-1568571644, -1578137643, -1587636039, -1597066426, -1606428400, +-1615721561, -1624945509, -1634099849, -1643184191, -1652198144, +-1661141322, -1670013342, -1678813825, -1687542393, -1696198672, +-1704782292, -1713292884, -1721730085, -1730093532, -1738382868, +-1746597738, -1754737789, -1762802673, -1770792044, -1778705561, +-1786542883, -1794303676, -1801987607, -1809594347, -1817123570, +-1824574954, -1831948179, -1839242929, -1846458892, -1853595759, +-1860653224, -1867630985, -1874528743, -1881346202, -1888083070, +-1894739060, -1901313885, -1907807264, -1914218919, -1920548575, +-1926795962, -1932960811, -1939042858, -1945041843, -1950957509, +-1956789602, -1962537873, -1968202076, -1973781967, -1979277308, +-1984687864, -1990013401, -1995253694, -2000408516, -2005477648, +-2010460871, -2015357973, -2020168744, -2024892978, -2029530472, +-2034081027, -2038544449, -2042920547, -2047209133, -2051410023, +-2055523038, -2059548001, -2063484740, -2067333086, -2071092874, +-2074763944, -2078346137, -2081839301, -2085243286, -2088557947, +-2091783140, -2094918728, -2097964577, -2100920556, -2103786539, +-2106562402, -2109248028, -2111843300, -2114348108, -2116762344, +-2119085905, -2121318692, -2123460608, -2125511562, -2127471467, +-2129340237, -2131117794, -2132804061, -2134398966, -2135902440, +-2137314419, -2138634843, -2139863654, -2141000801, -2142046235, +-2142999911, -2143861787, -2144631828, -2145310000, -2145896274, +-2146390624, -2146793031, -2147103476, -2147321946, -2147448433, +2147480773, 2147250799, 2146652904, 2145687192, 2144353827, +2142653038, 2140585116, 2138150417, 2135349356, 2132182414, +2128650133, 2124753120, 2120492040, 2115867626, 2110880668, +2105532022, 2099822604, 2093753392, 2087325426, 2080539807, +2073397699, 2065900325, 2058048970, 2049844978, 2041289756, +2032384769, 2023131544, 2013531666, 2003586779, 1993298588, +1982668856, 1971699403, 1960392110, 1948748914, 1936771810, +1924462850, 1911824143, 1898857855, 1885566207, 1871951478, +1858015999, 1843762158, 1829192399, 1814309216, 1799115162, +1783612838, 1767804901, 1751694060, 1735283075, 1718574758, +1701571972, 1684277631, 1666694698, 1648826185, 1630675154, +1612244715, 1593538026, 1574558293, 1555308768, 1535792748, +1516013578, 1495974647, 1475679389, 1455131280, 1434333842, +1413290638, 1392005275, 1370481398, 1348722696, 1326732898, +1304515771, 1282075122, 1259414796, 1236538675, 1213450681, +1190154767, 1166654927, 1142955186, 1119059606, 1094972281, +1070697338, 1046238936, 1021601267, 996788551, 971805042, +946655018, 921342790, 895872694, 870249095, 844476384, +818558976, 792501312, 766307857, 739983099, 713531549, +686957739, 660266222, 633461572, 606548381, 579531262, +552414843, 525203770, 497902707, 470516330, 443049333, +415506422, 387892316, 360211746, 332469456, 304670200, +276818739, 248919847, 220978304, 192998897, 164986421, +136945676, 108881465, 80798598, 52701887, 24596146, +-3513810, -31623164, -59727099, -87820801, -115899455, +-143958250, -171992378, -199997036, -227967426, -255898755, +-283786237, -311625094, -339410555, -367137861, -394802258, +-422399009, -449923384, -477370666, -504736154, -532015158, +-559203003, -586295032, -613286603, -640173090, -666949886, +-693612404, -720156076, -746576352, -772868706, -799028633, +-825051651, -850933300, -876669146, -902254780, -927685817, +-952957899, -978066697, -1003007909, -1027777260, -1052370507, +-1076783436, -1101011863, -1125051638, -1148898640, -1172548785, +-1195998020, -1219242327, -1242277723, -1265100260, -1287706030, +-1310091157, -1332251808, -1354184184, -1375884527, -1397349119, +-1418574283, -1439556382, -1460291820, -1480777044, -1501008545, +-1520982856, -1540696555, -1560146263, -1579328647, -1598240423, +-1616878347, -1635239228, -1653319919, -1671117323, -1688628389, +-1705850117, -1722779556, -1739413807, -1755750017, -1771785389, +-1787517174, -1802942678, -1818059257, -1832864320, -1847355332, +-1861529809, -1875385322, -1888919498, -1902130017, -1915014616, +-1927571087, -1939797279, -1951691096, -1963250501, -1974473513, +-1985358210, -1995902725, -2006105253, -2015964045, -2025477412, +-2034643724, -2043461410, -2051928960, -2060044922, -2067807906, +-2075216581, -2082269679, -2088965991, -2095304370, -2101283728, +-2106903043, -2112161350, -2117057750, -2121591402, -2125761531, +-2129567422, -2133008422, -2136083942, -2138793455, -2141136497, +-2143112666, -2144721624, -2145963095, -2146836866, -2147342788, +2147472149, 2146552303, 2144161316, 2140300829, 2134973487, +2128182940, 2119933843, 2110231849, 2099083608, 2086496759, +2072479930, 2057042727, 2040195730, 2021950484, 2002319494, +1981316215, 1958955040, 1935251296, 1910221227, 1883881987, +1856251629, 1827349089, 1797194176, 1765807555, 1733210737, +1699426064, 1664476689, 1628386565, 1591180426, 1552883771, +1513522847, 1473124631, 1431716808, 1389327759, 1345986533, +1301722835, 1256567002, 1210549980, 1163703308, 1116059092, +1067649985, 1018509163, 968670307, 918167572, 867035571, +815309347, 763024350, 710216415, 656921734, 603176830, +549018540, 494483979, 439610524, 384435782, 328997567, +273333873, 217482850, 161482775, 105372028, 49189064, +-7027611, -63239471, -119407989, -175494670, -231461077, +-287268852, -342879747, -398255649, -453358607, -508150855, +-562594842, -616653255, -670289044, -723465451, -776146031, +-828294679, -879875655, -930853609, -981193602, -1030861133, +-1079822164, -1128043139, -1175491010, -1222133257, -1267937916, +-1312873593, -1356909492, -1400015434, -1442161874, -1483319929, +-1523461391, -1562558748, -1600585205, -1637514702, -1673321927, +-1707982341, -1741472190, -1773768520, -1804849198, -1834692923, +-1863279241, -1890588560, -1916602164, -1941302225, -1964671814, +-1986694916, -2007356435, -2026642214, -2044539032, -2061034626, +-2076117690, -2089777886, -2102005853, -2112793210, -2122132564, +-2130017514, -2136442657, -2141403589, -2144896910, -2146920225, +#else 32767, 32767, 32767, 32766, 32765, 32763, 32761, 32759, 32756, 32753, 32750, 32746, 32742, 32738, 32733, @@ -864,25 +1485,26 @@ -30315, -30630, -30924, -31197, -31449, -31679, -31887, -32074, -32239, -32381, -32501, -32600, -32675, -32729, -32759, +#endif }; #endif static const CELTMode mode48000_960_120 = { -48000, /* Fs */ +48000, /* Fs */ 120, /* overlap */ -21, /* nbEBands */ -21, /* effEBands */ -{27853, 0, 4096, 8192, }, /* preemph */ -eband5ms, /* eBands */ -3, /* maxLM */ -8, /* nbShortMdcts */ +21, /* nbEBands */ +21, /* effEBands */ +{27853, 0, 4096, 8192, }, /* preemph */ +eband5ms, /* eBands */ +3, /* maxLM */ +8, /* nbShortMdcts */ 120, /* shortMdctSize */ -11, /* nbAllocVectors */ -band_allocation, /* allocVectors */ -logN400, /* logN */ -window120, /* window */ +11, /* nbAllocVectors */ +band_allocation, /* allocVectors */ +logN400, /* logN */ +window120, /* window */ {1920, 3, {&fft_state48000_960_0, &fft_state48000_960_1, &fft_state48000_960_2, &fft_state48000_960_3, }, mdct_twiddles960}, /* mdct */ -{392, cache_index50, cache_bits50, cache_caps50}, /* cache */ +{392, cache_index50, cache_bits50, cache_caps50}, /* cache */ }; /* List of all the available modes */