From 46f85c4c547188d08fd90bad7734d38c654f13ea Mon Sep 17 00:00:00 2001 From: Michael Giacomelli Date: Thu, 4 Sep 2008 18:02:10 +0000 Subject: Combine the Vorbis, WMA and AAC IMDCT functions and put them into the codeclib. Combined IMDCT is now based on existing Tremor transform. Reduces CPU for 192k AAC by 21MHz on Coldfire, and 5MHz on PP5024. WMA and Vorbis should have no functional changes since they already used this code. Further optimization is possible and would benefit all 3 codecs. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18412 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/Makefile | 2 +- apps/codecs/Tremor/SOURCES | 4 - apps/codecs/Tremor/mapping0.c | 4 +- apps/codecs/Tremor/mdct.c | 522 ------ apps/codecs/Tremor/mdct.h | 54 - apps/codecs/Tremor/mdct_arm.S | 429 ----- apps/codecs/Tremor/mdct_lookup.h | 540 ------ apps/codecs/lib/Makefile | 8 +- apps/codecs/lib/SOURCES | 7 + apps/codecs/lib/codeclib.h | 4 + apps/codecs/libfaad/SOURCES | 2 - apps/codecs/libfaad/cfft.c | 1015 ----------- apps/codecs/libfaad/cfft.h | 53 - apps/codecs/libfaad/cfft_tab.h | 1820 ------------------- apps/codecs/libfaad/decoder.c | 6 +- apps/codecs/libfaad/filtbank.c | 127 +- apps/codecs/libfaad/filtbank.h | 8 +- apps/codecs/libfaad/mdct.c | 298 ---- apps/codecs/libfaad/mdct.h | 45 - apps/codecs/libfaad/mdct_tab.h | 3652 -------------------------------------- apps/codecs/libfaad/specrec.c | 9 +- apps/codecs/libfaad/structs.h | 4 +- apps/codecs/libwma/SOURCES | 4 - apps/codecs/libwma/asm_arm.h | 343 ---- apps/codecs/libwma/asm_mcf5249.h | 327 ---- apps/codecs/libwma/fft.c | 153 -- apps/codecs/libwma/fft.h | 43 - apps/codecs/libwma/mdct.c | 167 -- apps/codecs/libwma/mdct.h | 37 - apps/codecs/libwma/mdct2.c | 522 ------ apps/codecs/libwma/mdct2.h | 81 - apps/codecs/libwma/mdct_arm.S | 429 ----- apps/codecs/libwma/mdct_lookup.h | 544 ------ apps/codecs/libwma/misc.h | 291 --- apps/codecs/libwma/wmadeci.c | 5 +- 35 files changed, 52 insertions(+), 11507 deletions(-) delete mode 100644 apps/codecs/Tremor/mdct.c delete mode 100644 apps/codecs/Tremor/mdct.h delete mode 100644 apps/codecs/Tremor/mdct_arm.S delete mode 100644 apps/codecs/Tremor/mdct_lookup.h delete mode 100644 apps/codecs/libfaad/cfft.c delete mode 100644 apps/codecs/libfaad/cfft.h delete mode 100644 apps/codecs/libfaad/cfft_tab.h delete mode 100644 apps/codecs/libfaad/mdct.c delete mode 100644 apps/codecs/libfaad/mdct.h delete mode 100644 apps/codecs/libfaad/mdct_tab.h delete mode 100644 apps/codecs/libwma/asm_arm.h delete mode 100644 apps/codecs/libwma/asm_mcf5249.h delete mode 100644 apps/codecs/libwma/fft.c delete mode 100644 apps/codecs/libwma/fft.h delete mode 100644 apps/codecs/libwma/mdct.c delete mode 100644 apps/codecs/libwma/mdct.h delete mode 100644 apps/codecs/libwma/mdct2.c delete mode 100644 apps/codecs/libwma/mdct2.h delete mode 100644 apps/codecs/libwma/mdct_arm.S delete mode 100644 apps/codecs/libwma/mdct_lookup.h delete mode 100644 apps/codecs/libwma/misc.h diff --git a/apps/codecs/Makefile b/apps/codecs/Makefile index 9dd88e5e7d..7662b37e80 100644 --- a/apps/codecs/Makefile +++ b/apps/codecs/Makefile @@ -74,7 +74,7 @@ $(OBJDIR)/asap.elf : $(OBJDIR)/asap.o $(BUILDDIR)/libasap.a $(OBJDIR)/codec_crt0 $(OBJDIR)/%.elf: $(OBJDIR)/codec_crt0.o $(call PRINTS,LD $(@F))$(CC) $(CFLAGS) -o $@ $^ -L$(BUILDDIR) -lcodec -lgcc \ - -T$(LINKCODEC) -Wl,-Map,$(OBJDIR)/$*.map + -T$(LINKCODEC) -Wl,--gc-sections,-Map,$(OBJDIR)/$*.map $(OBJDIR)/%.codec : $(OBJDIR)/%.elf $(call PRINTS,OBJCOPY $(@F))$(OC) -O binary $< $@ diff --git a/apps/codecs/Tremor/SOURCES b/apps/codecs/Tremor/SOURCES index 9b8c05e340..c622699599 100644 --- a/apps/codecs/Tremor/SOURCES +++ b/apps/codecs/Tremor/SOURCES @@ -6,10 +6,6 @@ floor1.c framing.c info.c mapping0.c -mdct.c -#ifdef CPU_ARM -mdct_arm.S -#endif registry.c res012.c sharedbook.c diff --git a/apps/codecs/Tremor/mapping0.c b/apps/codecs/Tremor/mapping0.c index dde3088f29..6bcc717d86 100644 --- a/apps/codecs/Tremor/mapping0.c +++ b/apps/codecs/Tremor/mapping0.c @@ -21,7 +21,7 @@ #include #include "ogg.h" #include "ivorbiscodec.h" -#include "mdct.h" +#include #include "codec_internal.h" #include "codebook.h" #include "window.h" @@ -303,7 +303,7 @@ static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l){ if(nonzero[i]) { look->floor_func[submap]-> inverse2(vb,look->floor_look[submap],floormemo[i],pcm); - mdct_backward(n, pcm, pcm); + mdct_backward(n, (int32_t*) pcm, (int32_t*) pcm); /* window the data */ _vorbis_apply_window(pcm,b->window,ci->blocksizes,vb->lW,vb->W,vb->nW); } diff --git a/apps/codecs/Tremor/mdct.c b/apps/codecs/Tremor/mdct.c deleted file mode 100644 index dce2a9d196..0000000000 --- a/apps/codecs/Tremor/mdct.c +++ /dev/null @@ -1,522 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * - * * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: normalized modified discrete cosine transform - power of two length transform only [64 <= n ] - last mod: $Id$ - - Original algorithm adapted long ago from _The use of multirate filter - banks for coding of high quality digital audio_, by T. Sporer, - K. Brandenburg and B. Edler, collection of the European Signal - Processing Conference (EUSIPCO), Amsterdam, June 1992, Vol.1, pp - 211-214 - - The below code implements an algorithm that no longer looks much like - that presented in the paper, but the basic structure remains if you - dig deep enough to see it. - - This module DOES NOT INCLUDE code to generate/apply the window - function. Everybody has their own weird favorite including me... I - happen to like the properties of y=sin(.5PI*sin^2(x)), but others may - vehemently disagree. - - ********************************************************************/ - -#include "ivorbiscodec.h" -#include "os.h" -#include "misc.h" -#include "mdct.h" -#include "mdct_lookup.h" - -#if defined(CPU_ARM) && CONFIG_CPU != S3C2440 -/* C code is faster on S3C2440 */ - -extern void mdct_butterfly_32(DATA_TYPE *x); -extern void mdct_butterfly_generic_loop(DATA_TYPE *x1, DATA_TYPE *x2, - LOOKUP_T *T0, int step, - LOOKUP_T *Ttop); - -STIN void mdct_butterfly_generic(DATA_TYPE *x,int points, int step){ - mdct_butterfly_generic_loop(x + points, x + (points>>1), - sincos_lookup0, step, sincos_lookup0+1024); -} - -#else - -/* 8 point butterfly (in place) */ -STIN void mdct_butterfly_8(DATA_TYPE *x){ - REG_TYPE r0 = x[4] + x[0]; - REG_TYPE r1 = x[4] - x[0]; - REG_TYPE r2 = x[5] + x[1]; - REG_TYPE r3 = x[5] - x[1]; - REG_TYPE r4 = x[6] + x[2]; - REG_TYPE r5 = x[6] - x[2]; - REG_TYPE r6 = x[7] + x[3]; - REG_TYPE r7 = x[7] - x[3]; - - x[0] = r5 + r3; - x[1] = r7 - r1; - x[2] = r5 - r3; - x[3] = r7 + r1; - x[4] = r4 - r0; - x[5] = r6 - r2; - x[6] = r4 + r0; - x[7] = r6 + r2; - MB(); -} - -/* 16 point butterfly (in place, 4 register) */ -STIN void mdct_butterfly_16(DATA_TYPE *x){ - - REG_TYPE r0, r1; - - r0 = x[ 0] - x[ 8]; x[ 8] += x[ 0]; - r1 = x[ 1] - x[ 9]; x[ 9] += x[ 1]; - x[ 0] = MULT31((r0 + r1) , cPI2_8); - x[ 1] = MULT31((r1 - r0) , cPI2_8); - MB(); - - r0 = x[10] - x[ 2]; x[10] += x[ 2]; - r1 = x[ 3] - x[11]; x[11] += x[ 3]; - x[ 2] = r1; x[ 3] = r0; - MB(); - - r0 = x[12] - x[ 4]; x[12] += x[ 4]; - r1 = x[13] - x[ 5]; x[13] += x[ 5]; - x[ 4] = MULT31((r0 - r1) , cPI2_8); - x[ 5] = MULT31((r0 + r1) , cPI2_8); - MB(); - - r0 = x[14] - x[ 6]; x[14] += x[ 6]; - r1 = x[15] - x[ 7]; x[15] += x[ 7]; - x[ 6] = r0; x[ 7] = r1; - MB(); - - mdct_butterfly_8(x); - mdct_butterfly_8(x+8); -} - -/* 32 point butterfly (in place, 4 register) */ -STIN void mdct_butterfly_32(DATA_TYPE *x){ - - REG_TYPE r0, r1; - - r0 = x[30] - x[14]; x[30] += x[14]; - r1 = x[31] - x[15]; x[31] += x[15]; - x[14] = r0; x[15] = r1; - MB(); - - r0 = x[28] - x[12]; x[28] += x[12]; - r1 = x[29] - x[13]; x[29] += x[13]; - XNPROD31( r0, r1, cPI1_8, cPI3_8, &x[12], &x[13] ); - MB(); - - r0 = x[26] - x[10]; x[26] += x[10]; - r1 = x[27] - x[11]; x[27] += x[11]; - x[10] = MULT31((r0 - r1) , cPI2_8); - x[11] = MULT31((r0 + r1) , cPI2_8); - MB(); - - r0 = x[24] - x[ 8]; x[24] += x[ 8]; - r1 = x[25] - x[ 9]; x[25] += x[ 9]; - XNPROD31( r0, r1, cPI3_8, cPI1_8, &x[ 8], &x[ 9] ); - MB(); - - r0 = x[22] - x[ 6]; x[22] += x[ 6]; - r1 = x[ 7] - x[23]; x[23] += x[ 7]; - x[ 6] = r1; x[ 7] = r0; - MB(); - - r0 = x[ 4] - x[20]; x[20] += x[ 4]; - r1 = x[ 5] - x[21]; x[21] += x[ 5]; - XPROD31 ( r0, r1, cPI3_8, cPI1_8, &x[ 4], &x[ 5] ); - MB(); - - r0 = x[ 2] - x[18]; x[18] += x[ 2]; - r1 = x[ 3] - x[19]; x[19] += x[ 3]; - x[ 2] = MULT31((r1 + r0) , cPI2_8); - x[ 3] = MULT31((r1 - r0) , cPI2_8); - MB(); - - r0 = x[ 0] - x[16]; x[16] += x[ 0]; - r1 = x[ 1] - x[17]; x[17] += x[ 1]; - XPROD31 ( r0, r1, cPI1_8, cPI3_8, &x[ 0], &x[ 1] ); - MB(); - - mdct_butterfly_16(x); - mdct_butterfly_16(x+16); -} - -/* N/stage point generic N stage butterfly (in place, 4 register) */ -void mdct_butterfly_generic(DATA_TYPE *x,int points, int step) - ICODE_ATTR_TREMOR_MDCT; -void mdct_butterfly_generic(DATA_TYPE *x,int points, int step){ - LOOKUP_T *T = sincos_lookup0; - DATA_TYPE *x1 = x + points - 8; - DATA_TYPE *x2 = x + (points>>1) - 8; - REG_TYPE r0; - REG_TYPE r1; - REG_TYPE r2; - REG_TYPE r3; - - do{ - r0 = x1[6] - x2[6]; x1[6] += x2[6]; - r1 = x2[7] - x1[7]; x1[7] += x2[7]; - r2 = x1[4] - x2[4]; x1[4] += x2[4]; - r3 = x2[5] - x1[5]; x1[5] += x2[5]; - XPROD31( r1, r0, T[0], T[1], &x2[6], &x2[7] ); T+=step; - XPROD31( r3, r2, T[0], T[1], &x2[4], &x2[5] ); T+=step; - - r0 = x1[2] - x2[2]; x1[2] += x2[2]; - r1 = x2[3] - x1[3]; x1[3] += x2[3]; - r2 = x1[0] - x2[0]; x1[0] += x2[0]; - r3 = x2[1] - x1[1]; x1[1] += x2[1]; - XPROD31( r1, r0, T[0], T[1], &x2[2], &x2[3] ); T+=step; - XPROD31( r3, r2, T[0], T[1], &x2[0], &x2[1] ); T+=step; - - x1-=8; x2-=8; - }while(Tsincos_lookup0); - do{ - r0 = x2[6] - x1[6]; x1[6] += x2[6]; - r1 = x2[7] - x1[7]; x1[7] += x2[7]; - r2 = x2[4] - x1[4]; x1[4] += x2[4]; - r3 = x2[5] - x1[5]; x1[5] += x2[5]; - XPROD31( r0, r1, T[0], T[1], &x2[6], &x2[7] ); T+=step; - XPROD31( r2, r3, T[0], T[1], &x2[4], &x2[5] ); T+=step; - - r0 = x2[2] - x1[2]; x1[2] += x2[2]; - r1 = x2[3] - x1[3]; x1[3] += x2[3]; - r2 = x2[0] - x1[0]; x1[0] += x2[0]; - r3 = x2[1] - x1[1]; x1[1] += x2[1]; - XPROD31( r0, r1, T[0], T[1], &x2[2], &x2[3] ); T+=step; - XPROD31( r2, r3, T[0], T[1], &x2[0], &x2[1] ); T+=step; - - x1-=8; x2-=8; - }while(Tsincos_lookup0); -} - -#endif /* CPU_ARM */ - -STIN void mdct_butterflies(DATA_TYPE *x,int points,int shift) { - - int stages=8-shift; - int i,j; - - for(i=0;--stages>0;i++){ - for(j=0;j<(1<>i)*j,points>>i,4<<(i+shift)); - } - - for(j=0;j>8]|(bitrev[(x&0x0f0)>>4]<<4)|(((int)bitrev[x&0x00f])<<8); -} - -STIN void mdct_bitreverse(DATA_TYPE *x,int n,int step,int shift) { - - int bit = 0; - DATA_TYPE *w0 = x; - DATA_TYPE *w1 = x = w0+(n>>1); - LOOKUP_T *T = (step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1; - LOOKUP_T *Ttop = T+1024; - REG_TYPE r2; - - do{ - REG_TYPE r3 = bitrev12(bit++); - DATA_TYPE *x0 = x + ((r3 ^ 0xfff)>>shift) -1; - DATA_TYPE *x1 = x + (r3>>shift); - - REG_TYPE r0 = x0[0] + x1[0]; - REG_TYPE r1 = x1[1] - x0[1]; - - XPROD32( r0, r1, T[1], T[0], r2, r3 ); T+=step; - - w1 -= 4; - - r0 = (x0[1] + x1[1])>>1; - r1 = (x0[0] - x1[0])>>1; - w0[0] = r0 + r2; - w0[1] = r1 + r3; - w1[2] = r0 - r2; - w1[3] = r3 - r1; - - r3 = bitrev12(bit++); - x0 = x + ((r3 ^ 0xfff)>>shift) -1; - x1 = x + (r3>>shift); - - r0 = x0[0] + x1[0]; - r1 = x1[1] - x0[1]; - - XPROD32( r0, r1, T[1], T[0], r2, r3 ); T+=step; - - r0 = (x0[1] + x1[1])>>1; - r1 = (x0[0] - x1[0])>>1; - w0[2] = r0 + r2; - w0[3] = r1 + r3; - w1[0] = r0 - r2; - w1[1] = r3 - r1; - - w0 += 4; - }while(T>shift) -1; - DATA_TYPE *x1 = x + (r3>>shift); - - REG_TYPE r0 = x0[0] + x1[0]; - REG_TYPE r1 = x1[1] - x0[1]; - - T-=step; XPROD32( r0, r1, T[0], T[1], r2, r3 ); - - w1 -= 4; - - r0 = (x0[1] + x1[1])>>1; - r1 = (x0[0] - x1[0])>>1; - w0[0] = r0 + r2; - w0[1] = r1 + r3; - w1[2] = r0 - r2; - w1[3] = r3 - r1; - - r3 = bitrev12(bit++); - x0 = x + ((r3 ^ 0xfff)>>shift) -1; - x1 = x + (r3>>shift); - - r0 = x0[0] + x1[0]; - r1 = x1[1] - x0[1]; - - T-=step; XPROD32( r0, r1, T[0], T[1], r2, r3 ); - - r0 = (x0[1] + x1[1])>>1; - r1 = (x0[0] - x1[0])>>1; - w0[2] = r0 + r2; - w0[3] = r1 + r3; - w1[0] = r0 - r2; - w1[1] = r3 - r1; - - w0 += 4; - }while(w0>1; - int n4=n>>2; - DATA_TYPE *iX; - DATA_TYPE *oX; - LOOKUP_T *T; - LOOKUP_T *V; - int shift; - int step; - - for (shift=6;!(n&(1<=in+n4); - do{ - oX-=4; - XPROD31( iX[4], iX[6], T[1], T[0], &oX[2], &oX[3] ); T-=step; - XPROD31( iX[0], iX[2], T[1], T[0], &oX[0], &oX[1] ); T-=step; - iX-=8; - }while(iX>=in); - - iX = in+n2-8; - oX = out+n2+n4; - T = sincos_lookup0; - - do{ - T+=step; XNPROD31( iX[6], iX[4], T[0], T[1], &oX[0], &oX[1] ); - T+=step; XNPROD31( iX[2], iX[0], T[0], T[1], &oX[2], &oX[3] ); - iX-=8; - oX+=4; - }while(iX>=in+n4); - do{ - T-=step; XNPROD31( iX[6], iX[4], T[1], T[0], &oX[0], &oX[1] ); - T-=step; XNPROD31( iX[2], iX[0], T[1], T[0], &oX[2], &oX[3] ); - iX-=8; - oX+=4; - }while(iX>=in); - - mdct_butterflies(out+n2,n2,shift); - mdct_bitreverse(out,n,step,shift); - /* rotate + window */ - - step>>=2; - { - DATA_TYPE *oX1=out+n2+n4; - DATA_TYPE *oX2=out+n2+n4; - DATA_TYPE *iX =out; - - switch(step) { - default: { - T=(step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1; - do{ - oX1-=4; - XPROD31( iX[0], -iX[1], T[0], T[1], &oX1[3], &oX2[0] ); T+=step; - XPROD31( iX[2], -iX[3], T[0], T[1], &oX1[2], &oX2[1] ); T+=step; - XPROD31( iX[4], -iX[5], T[0], T[1], &oX1[1], &oX2[2] ); T+=step; - XPROD31( iX[6], -iX[7], T[0], T[1], &oX1[0], &oX2[3] ); T+=step; - oX2+=4; - iX+=8; - }while(iX>1; - t1 = (*T++)>>1; - do{ - oX1-=4; - - t0 += (v0 = (*V++)>>1); - t1 += (v1 = (*V++)>>1); - XPROD31( iX[0], -iX[1], t0, t1, &oX1[3], &oX2[0] ); - v0 += (t0 = (*T++)>>1); - v1 += (t1 = (*T++)>>1); - XPROD31( iX[2], -iX[3], v0, v1, &oX1[2], &oX2[1] ); - t0 += (v0 = (*V++)>>1); - t1 += (v1 = (*V++)>>1); - XPROD31( iX[4], -iX[5], t0, t1, &oX1[1], &oX2[2] ); - v0 += (t0 = (*T++)>>1); - v1 += (t1 = (*T++)>>1); - XPROD31( iX[6], -iX[7], v0, v1, &oX1[0], &oX2[3] ); - - oX2+=4; - iX+=8; - }while(iX>2); - t1 += (q1 = (v1-t1)>>2); - XPROD31( iX[0], -iX[1], t0, t1, &oX1[3], &oX2[0] ); - t0 = v0-q0; - t1 = v1-q1; - XPROD31( iX[2], -iX[3], t0, t1, &oX1[2], &oX2[1] ); - - t0 = *T++; - t1 = *T++; - v0 += (q0 = (t0-v0)>>2); - v1 += (q1 = (t1-v1)>>2); - XPROD31( iX[4], -iX[5], v0, v1, &oX1[1], &oX2[2] ); - v0 = t0-q0; - v1 = t1-q1; - XPROD31( iX[6], -iX[7], v0, v1, &oX1[0], &oX2[3] ); - - oX2+=4; - iX+=8; - }while(iXoX2); - } -} diff --git a/apps/codecs/Tremor/mdct.h b/apps/codecs/Tremor/mdct.h deleted file mode 100644 index bdfe0e7304..0000000000 --- a/apps/codecs/Tremor/mdct.h +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * - * * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: modified discrete cosine transform prototypes - - ********************************************************************/ - -#ifndef _OGG_mdct_H_ -#define _OGG_mdct_H_ - -#include "ivorbiscodec.h" -#include "misc.h" - -#define DATA_TYPE ogg_int32_t -#define REG_TYPE register ogg_int32_t - -#ifdef _LOW_ACCURACY_ -#define cPI3_8 (0x0062) -#define cPI2_8 (0x00b5) -#define cPI1_8 (0x00ed) -#else -#define cPI3_8 (0x30fbc54d) -#define cPI2_8 (0x5a82799a) -#define cPI1_8 (0x7641af3d) -#endif - -//extern void mdct_forward(int n, DATA_TYPE *in, DATA_TYPE *out); -extern void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out); -//extern void mdct_bitreverse(DATA_TYPE *x,int n,int step,int shift); -//extern void mdct_butterflies(DATA_TYPE *x,int points,int shift); - -#endif - - - - - - - - - - - - diff --git a/apps/codecs/Tremor/mdct_arm.S b/apps/codecs/Tremor/mdct_arm.S deleted file mode 100644 index f7858f2e4d..0000000000 --- a/apps/codecs/Tremor/mdct_arm.S +++ /dev/null @@ -1,429 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id: $ - * - * Copyright (C) 2007 by Tomasz Malesinski - * - * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include "config.h" -/* Codecs should not normally do this, but we need to check a macro, and - * codecs.h would confuse the assembler. */ - -#define cPI3_8 (0x30fbc54d) -#define cPI2_8 (0x5a82799a) -#define cPI1_8 (0x7641af3d) - -#ifdef USE_IRAM - .section .icode,"ax",%progbits -#else - .text -#endif - .align - - .global mdct_butterfly_32 - .global mdct_butterfly_generic_loop - -mdct_butterfly_8: - add r9, r5, r1 @ x4 + x0 - sub r5, r5, r1 @ x4 - x0 - add r7, r6, r2 @ x5 + x1 - sub r6, r6, r2 @ x5 - x1 - add r8, r10, r3 @ x6 + x2 - sub r10, r10, r3 @ x6 - x2 - add r12, r11, r4 @ x7 + x3 - sub r11, r11, r4 @ x7 - x3 - - add r1, r10, r6 @ y0 = (x6 - x2) + (x5 - x1) - sub r2, r11, r5 @ y1 = (x7 - x3) - (x4 - x0) - sub r3, r10, r6 @ y2 = (x6 - x2) - (x5 - x1) - add r4, r11, r5 @ y3 = (x7 - x3) + (x4 - x0) - sub r5, r8, r9 @ y4 = (x6 + x2) - (x4 + x0) - sub r6, r12, r7 @ y5 = (x7 + x3) - (x5 + x1) - add r10, r8, r9 @ y6 = (x6 + x2) + (x4 + x0) - add r11, r12, r7 @ y7 = (x7 + x3) + (x5 + x1) - stmia r0, {r1, r2, r3, r4, r5, r6, r10, r11} - - mov pc, lr - -mdct_butterfly_16: - str lr, [sp, #-4]! - add r1, r0, #8*4 - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y8 = x8 + x0 - rsb r2, r6, r2, asl #1 @ x0 - x8 - add r7, r7, r3 @ y9 = x9 + x1 - rsb r3, r7, r3, asl #1 @ x1 - x9 - add r8, r8, r4 @ y10 = x10 + x2 - sub r11, r8, r4, asl #1 @ x10 - x2 - add r9, r9, r5 @ y11 = x11 + x3 - rsb r10, r9, r5, asl #1 @ x3 - x11 - - stmia r1!, {r6, r7, r8, r9} - - add r2, r2, r3 @ (x0 - x8) + (x1 - x9) - rsb r3, r2, r3, asl #1 @ (x1 - x9) - (x0 - x8) - - ldr r12, =cPI2_8 - smull r8, r5, r2, r12 - mov r5, r5, asl #1 - smull r8, r6, r3, r12 - mov r6, r6, asl #1 - - stmia r0!, {r5, r6, r10, r11} - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y12 = x12 + x4 - sub r2, r6, r2, asl #1 @ x12 - x4 - add r7, r7, r3 @ y13 = x13 + x5 - sub r3, r7, r3, asl #1 @ x13 - x5 - add r8, r8, r4 @ y10 = x14 + x6 - sub r10, r8, r4, asl #1 @ x14 - x6 - add r9, r9, r5 @ y11 = x15 + x7 - sub r11, r9, r5, asl #1 @ x15 - x7 - - stmia r1, {r6, r7, r8, r9} - - sub r2, r2, r3 @ (x12 - x4) - (x13 - x5) - add r3, r2, r3, asl #1 @ (x12 - x4) + (x13 - x5) - - smull r8, r5, r2, r12 - mov r5, r5, asl #1 - smull r8, r6, r3, r12 - mov r6, r6, asl #1 - @ no stmia here, r5, r6, r10, r11 are passed to mdct_butterfly_8 - - sub r0, r0, #4*4 - ldmia r0, {r1, r2, r3, r4} - bl mdct_butterfly_8 - add r0, r0, #8*4 - ldmia r0, {r1, r2, r3, r4, r5, r6, r10, r11} - bl mdct_butterfly_8 - - ldr pc, [sp], #4 - -mdct_butterfly_32: - stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} - - add r1, r0, #16*4 - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y16 = x16 + x0 - rsb r2, r6, r2, asl #1 @ x0 - x16 - add r7, r7, r3 @ y17 = x17 + x1 - rsb r3, r7, r3, asl #1 @ x1 - x17 - add r8, r8, r4 @ y18 = x18 + x2 - rsb r4, r8, r4, asl #1 @ x2 - x18 - add r9, r9, r5 @ y19 = x19 + x3 - rsb r5, r9, r5, asl #1 @ x3 - x19 - - stmia r1!, {r6, r7, r8, r9} - - ldr r12, =cPI1_8 - ldr lr, =cPI3_8 - smull r10, r6, r2, r12 - smlal r10, r6, r3, lr - rsb r2, r2, #0 - smull r10, r7, r3, r12 - smlal r10, r7, r2, lr - mov r6, r6, asl #1 - mov r7, r7, asl #1 - - add r4, r4, r5 @ (x3 - x19) + (x2 - x18) - rsb r5, r4, r5, asl #1 @ (x3 - x19) - (x2 - x18) - - ldr r11, =cPI2_8 - smull r10, r8, r4, r11 - mov r8, r8, asl #1 - smull r10, r9, r5, r11 - mov r9, r9, asl #1 - - stmia r0!, {r6, r7, r8, r9} - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y20 = x20 + x4 - rsb r2, r6, r2, asl #1 @ x4 - x20 - add r7, r7, r3 @ y21 = x21 + x5 - rsb r3, r7, r3, asl #1 @ x5 - x21 - add r8, r8, r4 @ y22 = x22 + x6 - sub r4, r8, r4, asl #1 @ x22 - x6 - add r9, r9, r5 @ y23 = x23 + x7 - rsb r5, r9, r5, asl #1 @ x7 - x23 - - stmia r1!, {r6, r7, r8, r9} - - smull r10, r6, r2, lr - smlal r10, r6, r3, r12 - rsb r2, r2, #0 - smull r10, r7, r3, lr - smlal r10, r7, r2, r12 - mov r6, r6, asl #1 - mov r7, r7, asl #1 - - mov r8, r5 - mov r9, r4 - stmia r0!, {r6, r7, r8, r9} - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y24 = x24 + x8 - sub r2, r6, r2, asl #1 @ x24 - x8 - add r7, r7, r3 @ y25 = x25 + x9 - sub r3, r7, r3, asl #1 @ x25 - x9 - add r8, r8, r4 @ y26 = x26 + x10 - sub r4, r8, r4, asl #1 @ x26 - x10 - add r9, r9, r5 @ y27 = x27 + x11 - sub r5, r9, r5, asl #1 @ x27 - x11 - - stmia r1!, {r6, r7, r8, r9} - - smull r10, r7, r2, r12 - smlal r10, r7, r3, lr - rsb r3, r3, #0 - smull r10, r6, r3, r12 - smlal r10, r6, r2, lr - mov r6, r6, asl #1 - mov r7, r7, asl #1 - - sub r4, r4, r5 @ (x26 - x10) - (x27 - x11) - add r5, r4, r5, asl #1 @ (x26 - x10) + (x27 - x11) - - ldr r11, =cPI2_8 - smull r10, r8, r4, r11 - mov r8, r8, asl #1 - smull r10, r9, r5, r11 - mov r9, r9, asl #1 - - stmia r0!, {r6, r7, r8, r9} - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y28 = x28 + x12 - sub r2, r6, r2, asl #1 @ x28 - x12 - add r7, r7, r3 @ y29 = x29 + x13 - sub r3, r7, r3, asl #1 @ x29 - x13 - add r8, r8, r4 @ y30 = x30 + x14 - sub r4, r8, r4, asl #1 @ x30 - x14 - add r9, r9, r5 @ y31 = x31 + x15 - sub r5, r9, r5, asl #1 @ x31 - x15 - - stmia r1, {r6, r7, r8, r9} - - smull r10, r7, r2, lr - smlal r10, r7, r3, r12 - rsb r3, r3, #0 - smull r10, r6, r3, lr - smlal r10, r6, r2, r12 - mov r6, r6, asl #1 - mov r7, r7, asl #1 - - mov r8, r4 - mov r9, r5 - stmia r0, {r6, r7, r8, r9} - - sub r0, r0, #12*4 - str r0, [sp, #-4]! - bl mdct_butterfly_16 - - ldr r0, [sp], #4 - add r0, r0, #16*4 - bl mdct_butterfly_16 - - ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, pc} - - @ mdct_butterfly_generic_loop(x1, x2, T0, step, Ttop) -mdct_butterfly_generic_loop: - stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} - str r2, [sp, #-4] - ldr r4, [sp, #40] -1: - ldmdb r0, {r6, r7, r8, r9} - ldmdb r1, {r10, r11, r12, r14} - - add r6, r6, r10 - sub r10, r6, r10, asl #1 - add r7, r7, r11 - rsb r11, r7, r11, asl #1 - add r8, r8, r12 - sub r12, r8, r12, asl #1 - add r9, r9, r14 - rsb r14, r9, r14, asl #1 - - stmdb r0!, {r6, r7, r8, r9} - - ldmia r2, {r6, r7} - smull r5, r8, r14, r6 - smlal r5, r8, r12, r7 - rsb r14, r14, #0 - smull r5, r9, r12, r6 - smlal r5, r9, r14, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - add r2, r2, r3, asl #2 - - ldmia r2, {r6, r7} - smull r5, r8, r11, r6 - smlal r5, r8, r10, r7 - rsb r11, r11, #0 - smull r5, r9, r10, r6 - smlal r5, r9, r11, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - add r2, r2, r3, asl #2 - - cmp r2, r4 - blo 1b - - ldr r4, [sp, #-4] -1: - ldmdb r0, {r6, r7, r8, r9} - ldmdb r1, {r10, r11, r12, r14} - - add r6, r6, r10 - sub r10, r6, r10, asl #1 - add r7, r7, r11 - sub r11, r7, r11, asl #1 - add r8, r8, r12 - sub r12, r8, r12, asl #1 - add r9, r9, r14 - sub r14, r9, r14, asl #1 - - stmdb r0!, {r6, r7, r8, r9} - - ldmia r2, {r6, r7} - smull r5, r9, r14, r6 - smlal r5, r9, r12, r7 - rsb r14, r14, #0 - smull r5, r8, r12, r6 - smlal r5, r8, r14, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - sub r2, r2, r3, asl #2 - - ldmia r2, {r6, r7} - smull r5, r9, r11, r6 - smlal r5, r9, r10, r7 - rsb r11, r11, #0 - smull r5, r8, r10, r6 - smlal r5, r8, r11, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - sub r2, r2, r3, asl #2 - - cmp r2, r4 - bhi 1b - - ldr r4, [sp, #40] -1: - ldmdb r0, {r6, r7, r8, r9} - ldmdb r1, {r10, r11, r12, r14} - - add r6, r6, r10 - rsb r10, r6, r10, asl #1 - add r7, r7, r11 - rsb r11, r7, r11, asl #1 - add r8, r8, r12 - rsb r12, r8, r12, asl #1 - add r9, r9, r14 - rsb r14, r9, r14, asl #1 - - stmdb r0!, {r6, r7, r8, r9} - - ldmia r2, {r6, r7} - smull r5, r8, r12, r6 - smlal r5, r8, r14, r7 - rsb r12, r12, #0 - smull r5, r9, r14, r6 - smlal r5, r9, r12, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - add r2, r2, r3, asl #2 - - ldmia r2, {r6, r7} - smull r5, r8, r10, r6 - smlal r5, r8, r11, r7 - rsb r10, r10, #0 - smull r5, r9, r11, r6 - smlal r5, r9, r10, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - add r2, r2, r3, asl #2 - - cmp r2, r4 - blo 1b - - ldr r4, [sp, #-4] -1: - ldmdb r0, {r6, r7, r8, r9} - ldmdb r1, {r10, r11, r12, r14} - - add r6, r6, r10 - sub r10, r6, r10, asl #1 - add r7, r7, r11 - rsb r11, r7, r11, asl #1 - add r8, r8, r12 - sub r12, r8, r12, asl #1 - add r9, r9, r14 - rsb r14, r9, r14, asl #1 - - stmdb r0!, {r6, r7, r8, r9} - - ldmia r2, {r6, r7} - smull r5, r9, r12, r6 - smlal r5, r9, r14, r7 - rsb r12, r12, #0 - smull r5, r8, r14, r6 - smlal r5, r8, r12, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - sub r2, r2, r3, asl #2 - - ldmia r2, {r6, r7} - smull r5, r9, r10, r6 - smlal r5, r9, r11, r7 - rsb r10, r10, #0 - smull r5, r8, r11, r6 - smlal r5, r8, r10, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - sub r2, r2, r3, asl #2 - - cmp r2, r4 - bhi 1b - - ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, pc} - diff --git a/apps/codecs/Tremor/mdct_lookup.h b/apps/codecs/Tremor/mdct_lookup.h deleted file mode 100644 index 8aade1e6a3..0000000000 --- a/apps/codecs/Tremor/mdct_lookup.h +++ /dev/null @@ -1,540 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * - * * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: sin,cos lookup tables - - ********************************************************************/ - -#include "os_types.h" - -/* {sin(2*i*PI/4096), cos(2*i*PI/4096)}, with i = 0 to 512 */ -static LOOKUP_T sincos_lookup0[1026] ICONST_ATTR = { - X(0x00000000), X(0x7fffffff), X(0x003243f5), X(0x7ffff621), - X(0x006487e3), X(0x7fffd886), X(0x0096cbc1), X(0x7fffa72c), - X(0x00c90f88), X(0x7fff6216), X(0x00fb5330), X(0x7fff0943), - X(0x012d96b1), X(0x7ffe9cb2), X(0x015fda03), X(0x7ffe1c65), - X(0x01921d20), X(0x7ffd885a), X(0x01c45ffe), X(0x7ffce093), - X(0x01f6a297), X(0x7ffc250f), X(0x0228e4e2), X(0x7ffb55ce), - X(0x025b26d7), X(0x7ffa72d1), X(0x028d6870), X(0x7ff97c18), - X(0x02bfa9a4), X(0x7ff871a2), X(0x02f1ea6c), X(0x7ff75370), - X(0x03242abf), X(0x7ff62182), X(0x03566a96), X(0x7ff4dbd9), - X(0x0388a9ea), X(0x7ff38274), X(0x03bae8b2), X(0x7ff21553), - X(0x03ed26e6), X(0x7ff09478), X(0x041f6480), X(0x7feeffe1), - X(0x0451a177), X(0x7fed5791), X(0x0483ddc3), X(0x7feb9b85), - X(0x04b6195d), X(0x7fe9cbc0), X(0x04e8543e), X(0x7fe7e841), - X(0x051a8e5c), X(0x7fe5f108), X(0x054cc7b1), X(0x7fe3e616), - X(0x057f0035), X(0x7fe1c76b), X(0x05b137df), X(0x7fdf9508), - X(0x05e36ea9), X(0x7fdd4eec), X(0x0615a48b), X(0x7fdaf519), - X(0x0647d97c), X(0x7fd8878e), X(0x067a0d76), X(0x7fd6064c), - X(0x06ac406f), X(0x7fd37153), X(0x06de7262), X(0x7fd0c8a3), - X(0x0710a345), X(0x7fce0c3e), X(0x0742d311), X(0x7fcb3c23), - X(0x077501be), X(0x7fc85854), X(0x07a72f45), X(0x7fc560cf), - X(0x07d95b9e), X(0x7fc25596), X(0x080b86c2), X(0x7fbf36aa), - X(0x083db0a7), X(0x7fbc040a), X(0x086fd947), X(0x7fb8bdb8), - X(0x08a2009a), X(0x7fb563b3), X(0x08d42699), X(0x7fb1f5fc), - X(0x09064b3a), X(0x7fae7495), X(0x09386e78), X(0x7faadf7c), - X(0x096a9049), X(0x7fa736b4), X(0x099cb0a7), X(0x7fa37a3c), - X(0x09cecf89), X(0x7f9faa15), X(0x0a00ece8), X(0x7f9bc640), - X(0x0a3308bd), X(0x7f97cebd), X(0x0a6522fe), X(0x7f93c38c), - X(0x0a973ba5), X(0x7f8fa4b0), X(0x0ac952aa), X(0x7f8b7227), - X(0x0afb6805), X(0x7f872bf3), X(0x0b2d7baf), X(0x7f82d214), - X(0x0b5f8d9f), X(0x7f7e648c), X(0x0b919dcf), X(0x7f79e35a), - X(0x0bc3ac35), X(0x7f754e80), X(0x0bf5b8cb), X(0x7f70a5fe), - X(0x0c27c389), X(0x7f6be9d4), X(0x0c59cc68), X(0x7f671a05), - X(0x0c8bd35e), X(0x7f62368f), X(0x0cbdd865), X(0x7f5d3f75), - X(0x0cefdb76), X(0x7f5834b7), X(0x0d21dc87), X(0x7f531655), - X(0x0d53db92), X(0x7f4de451), X(0x0d85d88f), X(0x7f489eaa), - X(0x0db7d376), X(0x7f434563), X(0x0de9cc40), X(0x7f3dd87c), - X(0x0e1bc2e4), X(0x7f3857f6), X(0x0e4db75b), X(0x7f32c3d1), - X(0x0e7fa99e), X(0x7f2d1c0e), X(0x0eb199a4), X(0x7f2760af), - X(0x0ee38766), X(0x7f2191b4), X(0x0f1572dc), X(0x7f1baf1e), - X(0x0f475bff), X(0x7f15b8ee), X(0x0f7942c7), X(0x7f0faf25), - X(0x0fab272b), X(0x7f0991c4), X(0x0fdd0926), X(0x7f0360cb), - X(0x100ee8ad), X(0x7efd1c3c), X(0x1040c5bb), X(0x7ef6c418), - X(0x1072a048), X(0x7ef05860), X(0x10a4784b), X(0x7ee9d914), - X(0x10d64dbd), X(0x7ee34636), X(0x11082096), X(0x7edc9fc6), - X(0x1139f0cf), X(0x7ed5e5c6), X(0x116bbe60), X(0x7ecf1837), - X(0x119d8941), X(0x7ec8371a), X(0x11cf516a), X(0x7ec14270), - X(0x120116d5), X(0x7eba3a39), X(0x1232d979), X(0x7eb31e78), - X(0x1264994e), X(0x7eabef2c), X(0x1296564d), X(0x7ea4ac58), - X(0x12c8106f), X(0x7e9d55fc), X(0x12f9c7aa), X(0x7e95ec1a), - X(0x132b7bf9), X(0x7e8e6eb2), X(0x135d2d53), X(0x7e86ddc6), - X(0x138edbb1), X(0x7e7f3957), X(0x13c0870a), X(0x7e778166), - X(0x13f22f58), X(0x7e6fb5f4), X(0x1423d492), X(0x7e67d703), - X(0x145576b1), X(0x7e5fe493), X(0x148715ae), X(0x7e57dea7), - X(0x14b8b17f), X(0x7e4fc53e), X(0x14ea4a1f), X(0x7e47985b), - X(0x151bdf86), X(0x7e3f57ff), X(0x154d71aa), X(0x7e37042a), - X(0x157f0086), X(0x7e2e9cdf), X(0x15b08c12), X(0x7e26221f), - X(0x15e21445), X(0x7e1d93ea), X(0x16139918), X(0x7e14f242), - X(0x16451a83), X(0x7e0c3d29), X(0x1676987f), X(0x7e0374a0), - X(0x16a81305), X(0x7dfa98a8), X(0x16d98a0c), X(0x7df1a942), - X(0x170afd8d), X(0x7de8a670), X(0x173c6d80), X(0x7ddf9034), - X(0x176dd9de), X(0x7dd6668f), X(0x179f429f), X(0x7dcd2981), - X(0x17d0a7bc), X(0x7dc3d90d), X(0x1802092c), X(0x7dba7534), - X(0x183366e9), X(0x7db0fdf8), X(0x1864c0ea), X(0x7da77359), - X(0x18961728), X(0x7d9dd55a), X(0x18c7699b), X(0x7d9423fc), - X(0x18f8b83c), X(0x7d8a5f40), X(0x192a0304), X(0x7d808728), - X(0x195b49ea), X(0x7d769bb5), X(0x198c8ce7), X(0x7d6c9ce9), - X(0x19bdcbf3), X(0x7d628ac6), X(0x19ef0707), X(0x7d58654d), - X(0x1a203e1b), X(0x7d4e2c7f), X(0x1a517128), X(0x7d43e05e), - X(0x1a82a026), X(0x7d3980ec), X(0x1ab3cb0d), X(0x7d2f0e2b), - X(0x1ae4f1d6), X(0x7d24881b), X(0x1b161479), X(0x7d19eebf), - X(0x1b4732ef), X(0x7d0f4218), X(0x1b784d30), X(0x7d048228), - X(0x1ba96335), X(0x7cf9aef0), X(0x1bda74f6), X(0x7ceec873), - X(0x1c0b826a), X(0x7ce3ceb2), X(0x1c3c8b8c), X(0x7cd8c1ae), - X(0x1c6d9053), X(0x7ccda169), X(0x1c9e90b8), X(0x7cc26de5), - X(0x1ccf8cb3), X(0x7cb72724), X(0x1d00843d), X(0x7cabcd28), - X(0x1d31774d), X(0x7ca05ff1), X(0x1d6265dd), X(0x7c94df83), - X(0x1d934fe5), X(0x7c894bde), X(0x1dc4355e), X(0x7c7da505), - X(0x1df5163f), X(0x7c71eaf9), X(0x1e25f282), X(0x7c661dbc), - X(0x1e56ca1e), X(0x7c5a3d50), X(0x1e879d0d), X(0x7c4e49b7), - X(0x1eb86b46), X(0x7c4242f2), X(0x1ee934c3), X(0x7c362904), - X(0x1f19f97b), X(0x7c29fbee), X(0x1f4ab968), X(0x7c1dbbb3), - X(0x1f7b7481), X(0x7c116853), X(0x1fac2abf), X(0x7c0501d2), - X(0x1fdcdc1b), X(0x7bf88830), X(0x200d888d), X(0x7bebfb70), - X(0x203e300d), X(0x7bdf5b94), X(0x206ed295), X(0x7bd2a89e), - X(0x209f701c), X(0x7bc5e290), X(0x20d0089c), X(0x7bb9096b), - X(0x21009c0c), X(0x7bac1d31), X(0x21312a65), X(0x7b9f1de6), - X(0x2161b3a0), X(0x7b920b89), X(0x219237b5), X(0x7b84e61f), - X(0x21c2b69c), X(0x7b77ada8), X(0x21f3304f), X(0x7b6a6227), - X(0x2223a4c5), X(0x7b5d039e), X(0x225413f8), X(0x7b4f920e), - X(0x22847de0), X(0x7b420d7a), X(0x22b4e274), X(0x7b3475e5), - X(0x22e541af), X(0x7b26cb4f), X(0x23159b88), X(0x7b190dbc), - X(0x2345eff8), X(0x7b0b3d2c), X(0x23763ef7), X(0x7afd59a4), - X(0x23a6887f), X(0x7aef6323), X(0x23d6cc87), X(0x7ae159ae), - X(0x24070b08), X(0x7ad33d45), X(0x243743fa), X(0x7ac50dec), - X(0x24677758), X(0x7ab6cba4), X(0x2497a517), X(0x7aa8766f), - X(0x24c7cd33), X(0x7a9a0e50), X(0x24f7efa2), X(0x7a8b9348), - X(0x25280c5e), X(0x7a7d055b), X(0x2558235f), X(0x7a6e648a), - X(0x2588349d), X(0x7a5fb0d8), X(0x25b84012), X(0x7a50ea47), - X(0x25e845b6), X(0x7a4210d8), X(0x26184581), X(0x7a332490), - X(0x26483f6c), X(0x7a24256f), X(0x26783370), X(0x7a151378), - X(0x26a82186), X(0x7a05eead), X(0x26d809a5), X(0x79f6b711), - X(0x2707ebc7), X(0x79e76ca7), X(0x2737c7e3), X(0x79d80f6f), - X(0x27679df4), X(0x79c89f6e), X(0x27976df1), X(0x79b91ca4), - X(0x27c737d3), X(0x79a98715), X(0x27f6fb92), X(0x7999dec4), - X(0x2826b928), X(0x798a23b1), X(0x2856708d), X(0x797a55e0), - X(0x288621b9), X(0x796a7554), X(0x28b5cca5), X(0x795a820e), - X(0x28e5714b), X(0x794a7c12), X(0x29150fa1), X(0x793a6361), - X(0x2944a7a2), X(0x792a37fe), X(0x29743946), X(0x7919f9ec), - X(0x29a3c485), X(0x7909a92d), X(0x29d34958), X(0x78f945c3), - X(0x2a02c7b8), X(0x78e8cfb2), X(0x2a323f9e), X(0x78d846fb), - X(0x2a61b101), X(0x78c7aba2), X(0x2a911bdc), X(0x78b6fda8), - X(0x2ac08026), X(0x78a63d11), X(0x2aefddd8), X(0x789569df), - X(0x2b1f34eb), X(0x78848414), X(0x2b4e8558), X(0x78738bb3), - X(0x2b7dcf17), X(0x786280bf), X(0x2bad1221), X(0x7851633b), - X(0x2bdc4e6f), X(0x78403329), X(0x2c0b83fa), X(0x782ef08b), - X(0x2c3ab2b9), X(0x781d9b65), X(0x2c69daa6), X(0x780c33b8), - X(0x2c98fbba), X(0x77fab989), X(0x2cc815ee), X(0x77e92cd9), - X(0x2cf72939), X(0x77d78daa), X(0x2d263596), X(0x77c5dc01), - X(0x2d553afc), X(0x77b417df), X(0x2d843964), X(0x77a24148), - X(0x2db330c7), X(0x7790583e), X(0x2de2211e), X(0x777e5cc3), - X(0x2e110a62), X(0x776c4edb), X(0x2e3fec8b), X(0x775a2e89), - X(0x2e6ec792), X(0x7747fbce), X(0x2e9d9b70), X(0x7735b6af), - X(0x2ecc681e), X(0x77235f2d), X(0x2efb2d95), X(0x7710f54c), - X(0x2f29ebcc), X(0x76fe790e), X(0x2f58a2be), X(0x76ebea77), - X(0x2f875262), X(0x76d94989), X(0x2fb5fab2), X(0x76c69647), - X(0x2fe49ba7), X(0x76b3d0b4), X(0x30133539), X(0x76a0f8d2), - X(0x3041c761), X(0x768e0ea6), X(0x30705217), X(0x767b1231), - X(0x309ed556), X(0x76680376), X(0x30cd5115), X(0x7654e279), - X(0x30fbc54d), X(0x7641af3d), X(0x312a31f8), X(0x762e69c4), - X(0x3158970e), X(0x761b1211), X(0x3186f487), X(0x7607a828), - X(0x31b54a5e), X(0x75f42c0b), X(0x31e39889), X(0x75e09dbd), - X(0x3211df04), X(0x75ccfd42), X(0x32401dc6), X(0x75b94a9c), - X(0x326e54c7), X(0x75a585cf), X(0x329c8402), X(0x7591aedd), - X(0x32caab6f), X(0x757dc5ca), X(0x32f8cb07), X(0x7569ca99), - X(0x3326e2c3), X(0x7555bd4c), X(0x3354f29b), X(0x75419de7), - X(0x3382fa88), X(0x752d6c6c), X(0x33b0fa84), X(0x751928e0), - X(0x33def287), X(0x7504d345), X(0x340ce28b), X(0x74f06b9e), - X(0x343aca87), X(0x74dbf1ef), X(0x3468aa76), X(0x74c7663a), - X(0x34968250), X(0x74b2c884), X(0x34c4520d), X(0x749e18cd), - X(0x34f219a8), X(0x7489571c), X(0x351fd918), X(0x74748371), - X(0x354d9057), X(0x745f9dd1), X(0x357b3f5d), X(0x744aa63f), - X(0x35a8e625), X(0x74359cbd), X(0x35d684a6), X(0x74208150), - X(0x36041ad9), X(0x740b53fb), X(0x3631a8b8), X(0x73f614c0), - X(0x365f2e3b), X(0x73e0c3a3), X(0x368cab5c), X(0x73cb60a8), - X(0x36ba2014), X(0x73b5ebd1), X(0x36e78c5b), X(0x73a06522), - X(0x3714f02a), X(0x738acc9e), X(0x37424b7b), X(0x73752249), - X(0x376f9e46), X(0x735f6626), X(0x379ce885), X(0x73499838), - X(0x37ca2a30), X(0x7333b883), X(0x37f76341), X(0x731dc70a), - X(0x382493b0), X(0x7307c3d0), X(0x3851bb77), X(0x72f1aed9), - X(0x387eda8e), X(0x72db8828), X(0x38abf0ef), X(0x72c54fc1), - X(0x38d8fe93), X(0x72af05a7), X(0x39060373), X(0x7298a9dd), - X(0x3932ff87), X(0x72823c67), X(0x395ff2c9), X(0x726bbd48), - X(0x398cdd32), X(0x72552c85), X(0x39b9bebc), X(0x723e8a20), - X(0x39e6975e), X(0x7227d61c), X(0x3a136712), X(0x7211107e), - X(0x3a402dd2), X(0x71fa3949), X(0x3a6ceb96), X(0x71e35080), - X(0x3a99a057), X(0x71cc5626), X(0x3ac64c0f), X(0x71b54a41), - X(0x3af2eeb7), X(0x719e2cd2), X(0x3b1f8848), X(0x7186fdde), - X(0x3b4c18ba), X(0x716fbd68), X(0x3b78a007), X(0x71586b74), - X(0x3ba51e29), X(0x71410805), X(0x3bd19318), X(0x7129931f), - X(0x3bfdfecd), X(0x71120cc5), X(0x3c2a6142), X(0x70fa74fc), - X(0x3c56ba70), X(0x70e2cbc6), X(0x3c830a50), X(0x70cb1128), - X(0x3caf50da), X(0x70b34525), X(0x3cdb8e09), X(0x709b67c0), - X(0x3d07c1d6), X(0x708378ff), X(0x3d33ec39), X(0x706b78e3), - X(0x3d600d2c), X(0x70536771), X(0x3d8c24a8), X(0x703b44ad), - X(0x3db832a6), X(0x7023109a), X(0x3de4371f), X(0x700acb3c), - X(0x3e10320d), X(0x6ff27497), X(0x3e3c2369), X(0x6fda0cae), - X(0x3e680b2c), X(0x6fc19385), X(0x3e93e950), X(0x6fa90921), - X(0x3ebfbdcd), X(0x6f906d84), X(0x3eeb889c), X(0x6f77c0b3), - X(0x3f1749b8), X(0x6f5f02b2), X(0x3f430119), X(0x6f463383), - X(0x3f6eaeb8), X(0x6f2d532c), X(0x3f9a5290), X(0x6f1461b0), - X(0x3fc5ec98), X(0x6efb5f12), X(0x3ff17cca), X(0x6ee24b57), - X(0x401d0321), X(0x6ec92683), X(0x40487f94), X(0x6eaff099), - X(0x4073f21d), X(0x6e96a99d), X(0x409f5ab6), X(0x6e7d5193), - X(0x40cab958), X(0x6e63e87f), X(0x40f60dfb), X(0x6e4a6e66), - X(0x4121589b), X(0x6e30e34a), X(0x414c992f), X(0x6e174730), - X(0x4177cfb1), X(0x6dfd9a1c), X(0x41a2fc1a), X(0x6de3dc11), - X(0x41ce1e65), X(0x6dca0d14), X(0x41f93689), X(0x6db02d29), - X(0x42244481), X(0x6d963c54), X(0x424f4845), X(0x6d7c3a98), - X(0x427a41d0), X(0x6d6227fa), X(0x42a5311b), X(0x6d48047e), - X(0x42d0161e), X(0x6d2dd027), X(0x42faf0d4), X(0x6d138afb), - X(0x4325c135), X(0x6cf934fc), X(0x4350873c), X(0x6cdece2f), - X(0x437b42e1), X(0x6cc45698), X(0x43a5f41e), X(0x6ca9ce3b), - X(0x43d09aed), X(0x6c8f351c), X(0x43fb3746), X(0x6c748b3f), - X(0x4425c923), X(0x6c59d0a9), X(0x4450507e), X(0x6c3f055d), - X(0x447acd50), X(0x6c242960), X(0x44a53f93), X(0x6c093cb6), - X(0x44cfa740), X(0x6bee3f62), X(0x44fa0450), X(0x6bd3316a), - X(0x452456bd), X(0x6bb812d1), X(0x454e9e80), X(0x6b9ce39b), - X(0x4578db93), X(0x6b81a3cd), X(0x45a30df0), X(0x6b66536b), - X(0x45cd358f), X(0x6b4af279), X(0x45f7526b), X(0x6b2f80fb), - X(0x4621647d), X(0x6b13fef5), X(0x464b6bbe), X(0x6af86c6c), - X(0x46756828), X(0x6adcc964), X(0x469f59b4), X(0x6ac115e2), - X(0x46c9405c), X(0x6aa551e9), X(0x46f31c1a), X(0x6a897d7d), - X(0x471cece7), X(0x6a6d98a4), X(0x4746b2bc), X(0x6a51a361), - X(0x47706d93), X(0x6a359db9), X(0x479a1d67), X(0x6a1987b0), - X(0x47c3c22f), X(0x69fd614a), X(0x47ed5be6), X(0x69e12a8c), - X(0x4816ea86), X(0x69c4e37a), X(0x48406e08), X(0x69a88c19), - X(0x4869e665), X(0x698c246c), X(0x48935397), X(0x696fac78), - X(0x48bcb599), X(0x69532442), X(0x48e60c62), X(0x69368bce), - X(0x490f57ee), X(0x6919e320), X(0x49389836), X(0x68fd2a3d), - X(0x4961cd33), X(0x68e06129), X(0x498af6df), X(0x68c387e9), - X(0x49b41533), X(0x68a69e81), X(0x49dd282a), X(0x6889a4f6), - X(0x4a062fbd), X(0x686c9b4b), X(0x4a2f2be6), X(0x684f8186), - X(0x4a581c9e), X(0x683257ab), X(0x4a8101de), X(0x68151dbe), - X(0x4aa9dba2), X(0x67f7d3c5), X(0x4ad2a9e2), X(0x67da79c3), - X(0x4afb6c98), X(0x67bd0fbd), X(0x4b2423be), X(0x679f95b7), - X(0x4b4ccf4d), X(0x67820bb7), X(0x4b756f40), X(0x676471c0), - X(0x4b9e0390), X(0x6746c7d8), X(0x4bc68c36), X(0x67290e02), - X(0x4bef092d), X(0x670b4444), X(0x4c177a6e), X(0x66ed6aa1), - X(0x4c3fdff4), X(0x66cf8120), X(0x4c6839b7), X(0x66b187c3), - X(0x4c9087b1), X(0x66937e91), X(0x4cb8c9dd), X(0x6675658c), - X(0x4ce10034), X(0x66573cbb), X(0x4d092ab0), X(0x66390422), - X(0x4d31494b), X(0x661abbc5), X(0x4d595bfe), X(0x65fc63a9), - X(0x4d8162c4), X(0x65ddfbd3), X(0x4da95d96), X(0x65bf8447), - X(0x4dd14c6e), X(0x65a0fd0b), X(0x4df92f46), X(0x65826622), - X(0x4e210617), X(0x6563bf92), X(0x4e48d0dd), X(0x6545095f), - X(0x4e708f8f), X(0x6526438f), X(0x4e984229), X(0x65076e25), - X(0x4ebfe8a5), X(0x64e88926), X(0x4ee782fb), X(0x64c99498), - X(0x4f0f1126), X(0x64aa907f), X(0x4f369320), X(0x648b7ce0), - X(0x4f5e08e3), X(0x646c59bf), X(0x4f857269), X(0x644d2722), - X(0x4faccfab), X(0x642de50d), X(0x4fd420a4), X(0x640e9386), - X(0x4ffb654d), X(0x63ef3290), X(0x50229da1), X(0x63cfc231), - X(0x5049c999), X(0x63b0426d), X(0x5070e92f), X(0x6390b34a), - X(0x5097fc5e), X(0x637114cc), X(0x50bf031f), X(0x635166f9), - X(0x50e5fd6d), X(0x6331a9d4), X(0x510ceb40), X(0x6311dd64), - X(0x5133cc94), X(0x62f201ac), X(0x515aa162), X(0x62d216b3), - X(0x518169a5), X(0x62b21c7b), X(0x51a82555), X(0x6292130c), - X(0x51ced46e), X(0x6271fa69), X(0x51f576ea), X(0x6251d298), - X(0x521c0cc2), X(0x62319b9d), X(0x524295f0), X(0x6211557e), - X(0x5269126e), X(0x61f1003f), X(0x528f8238), X(0x61d09be5), - X(0x52b5e546), X(0x61b02876), X(0x52dc3b92), X(0x618fa5f7), - X(0x53028518), X(0x616f146c), X(0x5328c1d0), X(0x614e73da), - X(0x534ef1b5), X(0x612dc447), X(0x537514c2), X(0x610d05b7), - X(0x539b2af0), X(0x60ec3830), X(0x53c13439), X(0x60cb5bb7), - X(0x53e73097), X(0x60aa7050), X(0x540d2005), X(0x60897601), - X(0x5433027d), X(0x60686ccf), X(0x5458d7f9), X(0x604754bf), - X(0x547ea073), X(0x60262dd6), X(0x54a45be6), X(0x6004f819), - X(0x54ca0a4b), X(0x5fe3b38d), X(0x54efab9c), X(0x5fc26038), - X(0x55153fd4), X(0x5fa0fe1f), X(0x553ac6ee), X(0x5f7f8d46), - X(0x556040e2), X(0x5f5e0db3), X(0x5585adad), X(0x5f3c7f6b), - X(0x55ab0d46), X(0x5f1ae274), X(0x55d05faa), X(0x5ef936d1), - X(0x55f5a4d2), X(0x5ed77c8a), X(0x561adcb9), X(0x5eb5b3a2), - X(0x56400758), X(0x5e93dc1f), X(0x566524aa), X(0x5e71f606), - X(0x568a34a9), X(0x5e50015d), X(0x56af3750), X(0x5e2dfe29), - X(0x56d42c99), X(0x5e0bec6e), X(0x56f9147e), X(0x5de9cc33), - X(0x571deefa), X(0x5dc79d7c), X(0x5742bc06), X(0x5da5604f), - X(0x57677b9d), X(0x5d8314b1), X(0x578c2dba), X(0x5d60baa7), - X(0x57b0d256), X(0x5d3e5237), X(0x57d5696d), X(0x5d1bdb65), - X(0x57f9f2f8), X(0x5cf95638), X(0x581e6ef1), X(0x5cd6c2b5), - X(0x5842dd54), X(0x5cb420e0), X(0x58673e1b), X(0x5c9170bf), - X(0x588b9140), X(0x5c6eb258), X(0x58afd6bd), X(0x5c4be5b0), - X(0x58d40e8c), X(0x5c290acc), X(0x58f838a9), X(0x5c0621b2), - X(0x591c550e), X(0x5be32a67), X(0x594063b5), X(0x5bc024f0), - X(0x59646498), X(0x5b9d1154), X(0x598857b2), X(0x5b79ef96), - X(0x59ac3cfd), X(0x5b56bfbd), X(0x59d01475), X(0x5b3381ce), - X(0x59f3de12), X(0x5b1035cf), X(0x5a1799d1), X(0x5aecdbc5), - X(0x5a3b47ab), X(0x5ac973b5), X(0x5a5ee79a), X(0x5aa5fda5), - X(0x5a82799a), X(0x5a82799a) - }; - - /* {sin((2*i+1)*PI/4096), cos((2*i+1)*PI/4096)}, with i = 0 to 511 */ -static LOOKUP_T sincos_lookup1[1024] ICONST_ATTR = { - X(0x001921fb), X(0x7ffffd88), X(0x004b65ee), X(0x7fffe9cb), - X(0x007da9d4), X(0x7fffc251), X(0x00afeda8), X(0x7fff8719), - X(0x00e23160), X(0x7fff3824), X(0x011474f6), X(0x7ffed572), - X(0x0146b860), X(0x7ffe5f03), X(0x0178fb99), X(0x7ffdd4d7), - X(0x01ab3e97), X(0x7ffd36ee), X(0x01dd8154), X(0x7ffc8549), - X(0x020fc3c6), X(0x7ffbbfe6), X(0x024205e8), X(0x7ffae6c7), - X(0x027447b0), X(0x7ff9f9ec), X(0x02a68917), X(0x7ff8f954), - X(0x02d8ca16), X(0x7ff7e500), X(0x030b0aa4), X(0x7ff6bcf0), - X(0x033d4abb), X(0x7ff58125), X(0x036f8a51), X(0x7ff4319d), - X(0x03a1c960), X(0x7ff2ce5b), X(0x03d407df), X(0x7ff1575d), - X(0x040645c7), X(0x7fefcca4), X(0x04388310), X(0x7fee2e30), - X(0x046abfb3), X(0x7fec7c02), X(0x049cfba7), X(0x7feab61a), - X(0x04cf36e5), X(0x7fe8dc78), X(0x05017165), X(0x7fe6ef1c), - X(0x0533ab20), X(0x7fe4ee06), X(0x0565e40d), X(0x7fe2d938), - X(0x05981c26), X(0x7fe0b0b1), X(0x05ca5361), X(0x7fde7471), - X(0x05fc89b8), X(0x7fdc247a), X(0x062ebf22), X(0x7fd9c0ca), - X(0x0660f398), X(0x7fd74964), X(0x06932713), X(0x7fd4be46), - X(0x06c5598a), X(0x7fd21f72), X(0x06f78af6), X(0x7fcf6ce8), - X(0x0729bb4e), X(0x7fcca6a7), X(0x075bea8c), X(0x7fc9ccb2), - X(0x078e18a7), X(0x7fc6df08), X(0x07c04598), X(0x7fc3dda9), - X(0x07f27157), X(0x7fc0c896), X(0x08249bdd), X(0x7fbd9fd0), - X(0x0856c520), X(0x7fba6357), X(0x0888ed1b), X(0x7fb7132b), - X(0x08bb13c5), X(0x7fb3af4e), X(0x08ed3916), X(0x7fb037bf), - X(0x091f5d06), X(0x7facac7f), X(0x09517f8f), X(0x7fa90d8e), - X(0x0983a0a7), X(0x7fa55aee), X(0x09b5c048), X(0x7fa1949e), - X(0x09e7de6a), X(0x7f9dbaa0), X(0x0a19fb04), X(0x7f99ccf4), - X(0x0a4c1610), X(0x7f95cb9a), X(0x0a7e2f85), X(0x7f91b694), - X(0x0ab0475c), X(0x7f8d8de1), X(0x0ae25d8d), X(0x7f895182), - X(0x0b147211), X(0x7f850179), X(0x0b4684df), X(0x7f809dc5), - X(0x0b7895f0), X(0x7f7c2668), X(0x0baaa53b), X(0x7f779b62), - X(0x0bdcb2bb), X(0x7f72fcb4), X(0x0c0ebe66), X(0x7f6e4a5e), - X(0x0c40c835), X(0x7f698461), X(0x0c72d020), X(0x7f64aabf), - X(0x0ca4d620), X(0x7f5fbd77), X(0x0cd6da2d), X(0x7f5abc8a), - X(0x0d08dc3f), X(0x7f55a7fa), X(0x0d3adc4e), X(0x7f507fc7), - X(0x0d6cda53), X(0x7f4b43f2), X(0x0d9ed646), X(0x7f45f47b), - X(0x0dd0d01f), X(0x7f409164), X(0x0e02c7d7), X(0x7f3b1aad), - X(0x0e34bd66), X(0x7f359057), X(0x0e66b0c3), X(0x7f2ff263), - X(0x0e98a1e9), X(0x7f2a40d2), X(0x0eca90ce), X(0x7f247ba5), - X(0x0efc7d6b), X(0x7f1ea2dc), X(0x0f2e67b8), X(0x7f18b679), - X(0x0f604faf), X(0x7f12b67c), X(0x0f923546), X(0x7f0ca2e7), - X(0x0fc41876), X(0x7f067bba), X(0x0ff5f938), X(0x7f0040f6), - X(0x1027d784), X(0x7ef9f29d), X(0x1059b352), X(0x7ef390ae), - X(0x108b8c9b), X(0x7eed1b2c), X(0x10bd6356), X(0x7ee69217), - X(0x10ef377d), X(0x7edff570), X(0x11210907), X(0x7ed94538), - X(0x1152d7ed), X(0x7ed28171), X(0x1184a427), X(0x7ecbaa1a), - X(0x11b66dad), X(0x7ec4bf36), X(0x11e83478), X(0x7ebdc0c6), - X(0x1219f880), X(0x7eb6aeca), X(0x124bb9be), X(0x7eaf8943), - X(0x127d7829), X(0x7ea85033), X(0x12af33ba), X(0x7ea1039b), - X(0x12e0ec6a), X(0x7e99a37c), X(0x1312a230), X(0x7e922fd6), - X(0x13445505), X(0x7e8aa8ac), X(0x137604e2), X(0x7e830dff), - X(0x13a7b1bf), X(0x7e7b5fce), X(0x13d95b93), X(0x7e739e1d), - X(0x140b0258), X(0x7e6bc8eb), X(0x143ca605), X(0x7e63e03b), - X(0x146e4694), X(0x7e5be40c), X(0x149fe3fc), X(0x7e53d462), - X(0x14d17e36), X(0x7e4bb13c), X(0x1503153a), X(0x7e437a9c), - X(0x1534a901), X(0x7e3b3083), X(0x15663982), X(0x7e32d2f4), - X(0x1597c6b7), X(0x7e2a61ed), X(0x15c95097), X(0x7e21dd73), - X(0x15fad71b), X(0x7e194584), X(0x162c5a3b), X(0x7e109a24), - X(0x165dd9f0), X(0x7e07db52), X(0x168f5632), X(0x7dff0911), - X(0x16c0cef9), X(0x7df62362), X(0x16f2443e), X(0x7ded2a47), - X(0x1723b5f9), X(0x7de41dc0), X(0x17552422), X(0x7ddafdce), - X(0x17868eb3), X(0x7dd1ca75), X(0x17b7f5a3), X(0x7dc883b4), - X(0x17e958ea), X(0x7dbf298d), X(0x181ab881), X(0x7db5bc02), - X(0x184c1461), X(0x7dac3b15), X(0x187d6c82), X(0x7da2a6c6), - X(0x18aec0db), X(0x7d98ff17), X(0x18e01167), X(0x7d8f4409), - X(0x19115e1c), X(0x7d85759f), X(0x1942a6f3), X(0x7d7b93da), - X(0x1973ebe6), X(0x7d719eba), X(0x19a52ceb), X(0x7d679642), - X(0x19d669fc), X(0x7d5d7a74), X(0x1a07a311), X(0x7d534b50), - X(0x1a38d823), X(0x7d4908d9), X(0x1a6a0929), X(0x7d3eb30f), - X(0x1a9b361d), X(0x7d3449f5), X(0x1acc5ef6), X(0x7d29cd8c), - X(0x1afd83ad), X(0x7d1f3dd6), X(0x1b2ea43a), X(0x7d149ad5), - X(0x1b5fc097), X(0x7d09e489), X(0x1b90d8bb), X(0x7cff1af5), - X(0x1bc1ec9e), X(0x7cf43e1a), X(0x1bf2fc3a), X(0x7ce94dfb), - X(0x1c240786), X(0x7cde4a98), X(0x1c550e7c), X(0x7cd333f3), - X(0x1c861113), X(0x7cc80a0f), X(0x1cb70f43), X(0x7cbcccec), - X(0x1ce80906), X(0x7cb17c8d), X(0x1d18fe54), X(0x7ca618f3), - X(0x1d49ef26), X(0x7c9aa221), X(0x1d7adb73), X(0x7c8f1817), - X(0x1dabc334), X(0x7c837ad8), X(0x1ddca662), X(0x7c77ca65), - X(0x1e0d84f5), X(0x7c6c06c0), X(0x1e3e5ee5), X(0x7c602fec), - X(0x1e6f342c), X(0x7c5445e9), X(0x1ea004c1), X(0x7c4848ba), - X(0x1ed0d09d), X(0x7c3c3860), X(0x1f0197b8), X(0x7c3014de), - X(0x1f325a0b), X(0x7c23de35), X(0x1f63178f), X(0x7c179467), - X(0x1f93d03c), X(0x7c0b3777), X(0x1fc4840a), X(0x7bfec765), - X(0x1ff532f2), X(0x7bf24434), X(0x2025dcec), X(0x7be5ade6), - X(0x205681f1), X(0x7bd9047c), X(0x208721f9), X(0x7bcc47fa), - X(0x20b7bcfe), X(0x7bbf7860), X(0x20e852f6), X(0x7bb295b0), - X(0x2118e3dc), X(0x7ba59fee), X(0x21496fa7), X(0x7b989719), - X(0x2179f64f), X(0x7b8b7b36), X(0x21aa77cf), X(0x7b7e4c45), - X(0x21daf41d), X(0x7b710a49), X(0x220b6b32), X(0x7b63b543), - X(0x223bdd08), X(0x7b564d36), X(0x226c4996), X(0x7b48d225), - X(0x229cb0d5), X(0x7b3b4410), X(0x22cd12bd), X(0x7b2da2fa), - X(0x22fd6f48), X(0x7b1feee5), X(0x232dc66d), X(0x7b1227d3), - X(0x235e1826), X(0x7b044dc7), X(0x238e646a), X(0x7af660c2), - X(0x23beab33), X(0x7ae860c7), X(0x23eeec78), X(0x7ada4dd8), - X(0x241f2833), X(0x7acc27f7), X(0x244f5e5c), X(0x7abdef25), - X(0x247f8eec), X(0x7aafa367), X(0x24afb9da), X(0x7aa144bc), - X(0x24dfdf20), X(0x7a92d329), X(0x250ffeb7), X(0x7a844eae), - X(0x25401896), X(0x7a75b74f), X(0x25702cb7), X(0x7a670d0d), - X(0x25a03b11), X(0x7a584feb), X(0x25d0439f), X(0x7a497feb), - X(0x26004657), X(0x7a3a9d0f), X(0x26304333), X(0x7a2ba75a), - X(0x26603a2c), X(0x7a1c9ece), X(0x26902b39), X(0x7a0d836d), - X(0x26c01655), X(0x79fe5539), X(0x26effb76), X(0x79ef1436), - X(0x271fda96), X(0x79dfc064), X(0x274fb3ae), X(0x79d059c8), - X(0x277f86b5), X(0x79c0e062), X(0x27af53a6), X(0x79b15435), - X(0x27df1a77), X(0x79a1b545), X(0x280edb23), X(0x79920392), - X(0x283e95a1), X(0x79823f20), X(0x286e49ea), X(0x797267f2), - X(0x289df7f8), X(0x79627e08), X(0x28cd9fc1), X(0x79528167), - X(0x28fd4140), X(0x79427210), X(0x292cdc6d), X(0x79325006), - X(0x295c7140), X(0x79221b4b), X(0x298bffb2), X(0x7911d3e2), - X(0x29bb87bc), X(0x790179cd), X(0x29eb0957), X(0x78f10d0f), - X(0x2a1a847b), X(0x78e08dab), X(0x2a49f920), X(0x78cffba3), - X(0x2a796740), X(0x78bf56f9), X(0x2aa8ced3), X(0x78ae9fb0), - X(0x2ad82fd2), X(0x789dd5cb), X(0x2b078a36), X(0x788cf94c), - X(0x2b36ddf7), X(0x787c0a36), X(0x2b662b0e), X(0x786b088c), - X(0x2b957173), X(0x7859f44f), X(0x2bc4b120), X(0x7848cd83), - X(0x2bf3ea0d), X(0x7837942b), X(0x2c231c33), X(0x78264849), - X(0x2c52478a), X(0x7814e9df), X(0x2c816c0c), X(0x780378f1), - X(0x2cb089b1), X(0x77f1f581), X(0x2cdfa071), X(0x77e05f91), - X(0x2d0eb046), X(0x77ceb725), X(0x2d3db928), X(0x77bcfc3f), - X(0x2d6cbb10), X(0x77ab2ee2), X(0x2d9bb5f6), X(0x77994f11), - X(0x2dcaa9d5), X(0x77875cce), X(0x2df996a3), X(0x7775581d), - X(0x2e287c5a), X(0x776340ff), X(0x2e575af3), X(0x77511778), - X(0x2e863267), X(0x773edb8b), X(0x2eb502ae), X(0x772c8d3a), - X(0x2ee3cbc1), X(0x771a2c88), X(0x2f128d99), X(0x7707b979), - X(0x2f41482e), X(0x76f5340e), X(0x2f6ffb7a), X(0x76e29c4b), - X(0x2f9ea775), X(0x76cff232), X(0x2fcd4c19), X(0x76bd35c7), - X(0x2ffbe95d), X(0x76aa670d), X(0x302a7f3a), X(0x76978605), - X(0x30590dab), X(0x768492b4), X(0x308794a6), X(0x76718d1c), - X(0x30b61426), X(0x765e7540), X(0x30e48c22), X(0x764b4b23), - X(0x3112fc95), X(0x76380ec8), X(0x31416576), X(0x7624c031), - X(0x316fc6be), X(0x76115f63), X(0x319e2067), X(0x75fdec60), - X(0x31cc7269), X(0x75ea672a), X(0x31fabcbd), X(0x75d6cfc5), - X(0x3228ff5c), X(0x75c32634), X(0x32573a3f), X(0x75af6a7b), - X(0x32856d5e), X(0x759b9c9b), X(0x32b398b3), X(0x7587bc98), - X(0x32e1bc36), X(0x7573ca75), X(0x330fd7e1), X(0x755fc635), - X(0x333debab), X(0x754bafdc), X(0x336bf78f), X(0x7537876c), - X(0x3399fb85), X(0x75234ce8), X(0x33c7f785), X(0x750f0054), - X(0x33f5eb89), X(0x74faa1b3), X(0x3423d78a), X(0x74e63108), - X(0x3451bb81), X(0x74d1ae55), X(0x347f9766), X(0x74bd199f), - X(0x34ad6b32), X(0x74a872e8), X(0x34db36df), X(0x7493ba34), - X(0x3508fa66), X(0x747eef85), X(0x3536b5be), X(0x746a12df), - X(0x356468e2), X(0x74552446), X(0x359213c9), X(0x744023bc), - X(0x35bfb66e), X(0x742b1144), X(0x35ed50c9), X(0x7415ece2), - X(0x361ae2d3), X(0x7400b69a), X(0x36486c86), X(0x73eb6e6e), - X(0x3675edd9), X(0x73d61461), X(0x36a366c6), X(0x73c0a878), - X(0x36d0d746), X(0x73ab2ab4), X(0x36fe3f52), X(0x73959b1b), - X(0x372b9ee3), X(0x737ff9ae), X(0x3758f5f2), X(0x736a4671), - X(0x37864477), X(0x73548168), X(0x37b38a6d), X(0x733eaa96), - X(0x37e0c7cc), X(0x7328c1ff), X(0x380dfc8d), X(0x7312c7a5), - X(0x383b28a9), X(0x72fcbb8c), X(0x38684c19), X(0x72e69db7), - X(0x389566d6), X(0x72d06e2b), X(0x38c278d9), X(0x72ba2cea), - X(0x38ef821c), X(0x72a3d9f7), X(0x391c8297), X(0x728d7557), - X(0x39497a43), X(0x7276ff0d), X(0x39766919), X(0x7260771b), - X(0x39a34f13), X(0x7249dd86), X(0x39d02c2a), X(0x72333251), - X(0x39fd0056), X(0x721c7580), X(0x3a29cb91), X(0x7205a716), - X(0x3a568dd4), X(0x71eec716), X(0x3a834717), X(0x71d7d585), - X(0x3aaff755), X(0x71c0d265), X(0x3adc9e86), X(0x71a9bdba), - X(0x3b093ca3), X(0x71929789), X(0x3b35d1a5), X(0x717b5fd3), - X(0x3b625d86), X(0x7164169d), X(0x3b8ee03e), X(0x714cbbeb), - X(0x3bbb59c7), X(0x71354fc0), X(0x3be7ca1a), X(0x711dd220), - X(0x3c143130), X(0x7106430e), X(0x3c408f03), X(0x70eea28e), - X(0x3c6ce38a), X(0x70d6f0a4), X(0x3c992ec0), X(0x70bf2d53), - X(0x3cc5709e), X(0x70a7589f), X(0x3cf1a91c), X(0x708f728b), - X(0x3d1dd835), X(0x70777b1c), X(0x3d49fde1), X(0x705f7255), - X(0x3d761a19), X(0x70475839), X(0x3da22cd7), X(0x702f2ccd), - X(0x3dce3614), X(0x7016f014), X(0x3dfa35c8), X(0x6ffea212), - X(0x3e262bee), X(0x6fe642ca), X(0x3e52187f), X(0x6fcdd241), - X(0x3e7dfb73), X(0x6fb5507a), X(0x3ea9d4c3), X(0x6f9cbd79), - X(0x3ed5a46b), X(0x6f841942), X(0x3f016a61), X(0x6f6b63d8), - X(0x3f2d26a0), X(0x6f529d40), X(0x3f58d921), X(0x6f39c57d), - X(0x3f8481dd), X(0x6f20dc92), X(0x3fb020ce), X(0x6f07e285), - X(0x3fdbb5ec), X(0x6eeed758), X(0x40074132), X(0x6ed5bb10), - X(0x4032c297), X(0x6ebc8db0), X(0x405e3a16), X(0x6ea34f3d), - X(0x4089a7a8), X(0x6e89ffb9), X(0x40b50b46), X(0x6e709f2a), - X(0x40e064ea), X(0x6e572d93), X(0x410bb48c), X(0x6e3daaf8), - X(0x4136fa27), X(0x6e24175c), X(0x416235b2), X(0x6e0a72c5), - X(0x418d6729), X(0x6df0bd35), X(0x41b88e84), X(0x6dd6f6b1), - X(0x41e3abbc), X(0x6dbd1f3c), X(0x420ebecb), X(0x6da336dc), - X(0x4239c7aa), X(0x6d893d93), X(0x4264c653), X(0x6d6f3365), - X(0x428fbabe), X(0x6d551858), X(0x42baa4e6), X(0x6d3aec6e), - X(0x42e584c3), X(0x6d20afac), X(0x43105a50), X(0x6d066215), - X(0x433b2585), X(0x6cec03af), X(0x4365e65b), X(0x6cd1947c), - X(0x43909ccd), X(0x6cb71482), X(0x43bb48d4), X(0x6c9c83c3), - X(0x43e5ea68), X(0x6c81e245), X(0x44108184), X(0x6c67300b), - X(0x443b0e21), X(0x6c4c6d1a), X(0x44659039), X(0x6c319975), - X(0x449007c4), X(0x6c16b521), X(0x44ba74bd), X(0x6bfbc021), - X(0x44e4d71c), X(0x6be0ba7b), X(0x450f2edb), X(0x6bc5a431), - X(0x45397bf4), X(0x6baa7d49), X(0x4563be60), X(0x6b8f45c7), - X(0x458df619), X(0x6b73fdae), X(0x45b82318), X(0x6b58a503), - X(0x45e24556), X(0x6b3d3bcb), X(0x460c5cce), X(0x6b21c208), - X(0x46366978), X(0x6b0637c1), X(0x46606b4e), X(0x6aea9cf8), - X(0x468a624a), X(0x6acef1b2), X(0x46b44e65), X(0x6ab335f4), - X(0x46de2f99), X(0x6a9769c1), X(0x470805df), X(0x6a7b8d1e), - X(0x4731d131), X(0x6a5fa010), X(0x475b9188), X(0x6a43a29a), - X(0x478546de), X(0x6a2794c1), X(0x47aef12c), X(0x6a0b7689), - X(0x47d8906d), X(0x69ef47f6), X(0x48022499), X(0x69d3090e), - X(0x482badab), X(0x69b6b9d3), X(0x48552b9b), X(0x699a5a4c), - X(0x487e9e64), X(0x697dea7b), X(0x48a805ff), X(0x69616a65), - X(0x48d16265), X(0x6944da10), X(0x48fab391), X(0x6928397e), - X(0x4923f97b), X(0x690b88b5), X(0x494d341e), X(0x68eec7b9), - X(0x49766373), X(0x68d1f68f), X(0x499f8774), X(0x68b5153a), - X(0x49c8a01b), X(0x689823bf), X(0x49f1ad61), X(0x687b2224), - X(0x4a1aaf3f), X(0x685e106c), X(0x4a43a5b0), X(0x6840ee9b), - X(0x4a6c90ad), X(0x6823bcb7), X(0x4a957030), X(0x68067ac3), - X(0x4abe4433), X(0x67e928c5), X(0x4ae70caf), X(0x67cbc6c0), - X(0x4b0fc99d), X(0x67ae54ba), X(0x4b387af9), X(0x6790d2b6), - X(0x4b6120bb), X(0x677340ba), X(0x4b89badd), X(0x67559eca), - X(0x4bb24958), X(0x6737ecea), X(0x4bdacc28), X(0x671a2b20), - X(0x4c034345), X(0x66fc596f), X(0x4c2baea9), X(0x66de77dc), - X(0x4c540e4e), X(0x66c0866d), X(0x4c7c622d), X(0x66a28524), - X(0x4ca4aa41), X(0x66847408), X(0x4ccce684), X(0x6666531d), - X(0x4cf516ee), X(0x66482267), X(0x4d1d3b7a), X(0x6629e1ec), - X(0x4d455422), X(0x660b91af), X(0x4d6d60df), X(0x65ed31b5), - X(0x4d9561ac), X(0x65cec204), X(0x4dbd5682), X(0x65b0429f), - X(0x4de53f5a), X(0x6591b38c), X(0x4e0d1c30), X(0x657314cf), - X(0x4e34ecfc), X(0x6554666d), X(0x4e5cb1b9), X(0x6535a86b), - X(0x4e846a60), X(0x6516dacd), X(0x4eac16eb), X(0x64f7fd98), - X(0x4ed3b755), X(0x64d910d1), X(0x4efb4b96), X(0x64ba147d), - X(0x4f22d3aa), X(0x649b08a0), X(0x4f4a4f89), X(0x647bed3f), - X(0x4f71bf2e), X(0x645cc260), X(0x4f992293), X(0x643d8806), - X(0x4fc079b1), X(0x641e3e38), X(0x4fe7c483), X(0x63fee4f8), - X(0x500f0302), X(0x63df7c4d), X(0x50363529), X(0x63c0043b), - X(0x505d5af1), X(0x63a07cc7), X(0x50847454), X(0x6380e5f6), - X(0x50ab814d), X(0x63613fcd), X(0x50d281d5), X(0x63418a50), - X(0x50f975e6), X(0x6321c585), X(0x51205d7b), X(0x6301f171), - X(0x5147388c), X(0x62e20e17), X(0x516e0715), X(0x62c21b7e), - X(0x5194c910), X(0x62a219aa), X(0x51bb7e75), X(0x628208a1), - X(0x51e22740), X(0x6261e866), X(0x5208c36a), X(0x6241b8ff), - X(0x522f52ee), X(0x62217a72), X(0x5255d5c5), X(0x62012cc2), - X(0x527c4bea), X(0x61e0cff5), X(0x52a2b556), X(0x61c06410), - X(0x52c91204), X(0x619fe918), X(0x52ef61ee), X(0x617f5f12), - X(0x5315a50e), X(0x615ec603), X(0x533bdb5d), X(0x613e1df0), - X(0x536204d7), X(0x611d66de), X(0x53882175), X(0x60fca0d2), - X(0x53ae3131), X(0x60dbcbd1), X(0x53d43406), X(0x60bae7e1), - X(0x53fa29ed), X(0x6099f505), X(0x542012e1), X(0x6078f344), - X(0x5445eedb), X(0x6057e2a2), X(0x546bbdd7), X(0x6036c325), - X(0x54917fce), X(0x601594d1), X(0x54b734ba), X(0x5ff457ad), - X(0x54dcdc96), X(0x5fd30bbc), X(0x5502775c), X(0x5fb1b104), - X(0x55280505), X(0x5f90478a), X(0x554d858d), X(0x5f6ecf53), - X(0x5572f8ed), X(0x5f4d4865), X(0x55985f20), X(0x5f2bb2c5), - X(0x55bdb81f), X(0x5f0a0e77), X(0x55e303e6), X(0x5ee85b82), - X(0x5608426e), X(0x5ec699e9), X(0x562d73b2), X(0x5ea4c9b3), - X(0x565297ab), X(0x5e82eae5), X(0x5677ae54), X(0x5e60fd84), - X(0x569cb7a8), X(0x5e3f0194), X(0x56c1b3a1), X(0x5e1cf71c), - X(0x56e6a239), X(0x5dfade20), X(0x570b8369), X(0x5dd8b6a7), - X(0x5730572e), X(0x5db680b4), X(0x57551d80), X(0x5d943c4e), - X(0x5779d65b), X(0x5d71e979), X(0x579e81b8), X(0x5d4f883b), - X(0x57c31f92), X(0x5d2d189a), X(0x57e7afe4), X(0x5d0a9a9a), - X(0x580c32a7), X(0x5ce80e41), X(0x5830a7d6), X(0x5cc57394), - X(0x58550f6c), X(0x5ca2ca99), X(0x58796962), X(0x5c801354), - X(0x589db5b3), X(0x5c5d4dcc), X(0x58c1f45b), X(0x5c3a7a05), - X(0x58e62552), X(0x5c179806), X(0x590a4893), X(0x5bf4a7d2), - X(0x592e5e19), X(0x5bd1a971), X(0x595265df), X(0x5bae9ce7), - X(0x59765fde), X(0x5b8b8239), X(0x599a4c12), X(0x5b68596d), - X(0x59be2a74), X(0x5b452288), X(0x59e1faff), X(0x5b21dd90), - X(0x5a05bdae), X(0x5afe8a8b), X(0x5a29727b), X(0x5adb297d), - X(0x5a4d1960), X(0x5ab7ba6c), X(0x5a70b258), X(0x5a943d5e), -}; - diff --git a/apps/codecs/lib/Makefile b/apps/codecs/lib/Makefile index 9f831d5f92..4a33a58f27 100644 --- a/apps/codecs/lib/Makefile +++ b/apps/codecs/lib/Makefile @@ -20,11 +20,17 @@ endif CFLAGS = $(INCLUDES) $(GCCOPTS) \ $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE} -DCODEC +# Sectioned compilation for target +ifndef SIMVER + CFLAGS += -ffunction-sections -fdata-sections +endif + # This sets up 'SRC' based on the files mentioned in SOURCES include $(TOOLSDIR)/makesrc.inc SOURCES = $(SRC) -OBJS := $(SRC:%.c=$(OBJDIR)/%.o) +OBJS2 := $(SRC:%.c=$(OBJDIR)/%.o) +OBJS = $(patsubst %.S, $(OBJDIR)/%.o, $(OBJS2)) DEPFILE = $(OBJDIR)/dep-codeclib DIRS = . diff --git a/apps/codecs/lib/SOURCES b/apps/codecs/lib/SOURCES index 65a656526a..9c6d4e7ff6 100644 --- a/apps/codecs/lib/SOURCES +++ b/apps/codecs/lib/SOURCES @@ -1,5 +1,12 @@ #if CONFIG_CODEC == SWCODEC /* software codec platforms */ codeclib.c + + +mdct2.c +#ifdef CPU_ARM +mdct_arm.S +#endif + #elif defined(SIMULATOR) && defined(__APPLE__) osx.dummy.c #endif diff --git a/apps/codecs/lib/codeclib.h b/apps/codecs/lib/codeclib.h index 1d95486c78..87cc926c6b 100644 --- a/apps/codecs/lib/codeclib.h +++ b/apps/codecs/lib/codeclib.h @@ -55,6 +55,10 @@ void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, con #define abs(x) ((x)>0?(x):-(x)) #define labs(x) abs(x) +/*MDCT library functions*/ + +extern void mdct_backward(int n, int32_t *in, int32_t *out); + /* Various codec helper functions */ int codec_init(void); diff --git a/apps/codecs/libfaad/SOURCES b/apps/codecs/libfaad/SOURCES index 4c7a34d210..67fd6ad2d5 100644 --- a/apps/codecs/libfaad/SOURCES +++ b/apps/codecs/libfaad/SOURCES @@ -1,5 +1,4 @@ bits.c -cfft.c common.c decoder.c drc.c @@ -11,7 +10,6 @@ huffman.c ic_predict.c is.c lt_predict.c -mdct.c mp4.c ms.c output.c diff --git a/apps/codecs/libfaad/cfft.c b/apps/codecs/libfaad/cfft.c deleted file mode 100644 index 806dc8f895..0000000000 --- a/apps/codecs/libfaad/cfft.c +++ /dev/null @@ -1,1015 +0,0 @@ -/* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** -** 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 -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -** -** Any non-GPL usage of this software or parts of this software is strictly -** forbidden. -** -** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. -** -** $Id$ -**/ - -/* - * 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 "structs.h" - -#include - -#include "cfft.h" -#include "cfft_tab.h" - - -/* static function declarations */ -static void passf2pos(const uint16_t ido, const uint16_t l1, const complex_t *cc, - complex_t *ch, const complex_t *wa); -static void passf2neg(const uint16_t ido, const uint16_t l1, const complex_t *cc, - complex_t *ch, const complex_t *wa); -static void passf3(const uint16_t ido, const uint16_t l1, const complex_t *cc, - complex_t *ch, const complex_t *wa1, const complex_t *wa2, const int8_t isign); -static void passf4pos(const uint16_t ido, const uint16_t l1, const complex_t *cc, complex_t *ch, - const complex_t *wa1, const complex_t *wa2, const complex_t *wa3); -static void passf4neg(const uint16_t ido, const uint16_t l1, const complex_t *cc, complex_t *ch, - const complex_t *wa1, const complex_t *wa2, const complex_t *wa3); -static void passf5(const uint16_t ido, const uint16_t l1, const complex_t *cc, complex_t *ch, - const complex_t *wa1, const complex_t *wa2, const complex_t *wa3, - const complex_t *wa4, const int8_t isign); -INLINE void cfftf1(uint16_t n, complex_t *c, complex_t *ch, - const uint16_t *ifac, const complex_t *wa, const int8_t isign); -static void cffti1(uint16_t n, complex_t *wa, uint16_t *ifac); - - -/*---------------------------------------------------------------------- - passf2, passf3, passf4, passf5. Complex FFT passes fwd and bwd. - ----------------------------------------------------------------------*/ - -static void passf2pos(const uint16_t ido, const uint16_t l1, const complex_t *cc, - complex_t *ch, const complex_t *wa) -{ - uint16_t i, k, ah, ac; - - if (ido == 1) - { - for (k = 0; k < l1; k++) - { - ah = 2*k; - ac = 4*k; - - RE(ch[ah]) = RE(cc[ac]) + RE(cc[ac+1]); - RE(ch[ah+l1]) = RE(cc[ac]) - RE(cc[ac+1]); - IM(ch[ah]) = IM(cc[ac]) + IM(cc[ac+1]); - IM(ch[ah+l1]) = IM(cc[ac]) - IM(cc[ac+1]); - } - } else { - for (k = 0; k < l1; k++) - { - ah = k*ido; - ac = 2*k*ido; - - for (i = 0; i < ido; i++) - { - complex_t t2; - - RE(ch[ah+i]) = RE(cc[ac+i]) + RE(cc[ac+i+ido]); - RE(t2) = RE(cc[ac+i]) - RE(cc[ac+i+ido]); - - IM(ch[ah+i]) = IM(cc[ac+i]) + IM(cc[ac+i+ido]); - IM(t2) = IM(cc[ac+i]) - IM(cc[ac+i+ido]); - -#if 1 - ComplexMult(&IM(ch[ah+i+l1*ido]), &RE(ch[ah+i+l1*ido]), - IM(t2), RE(t2), RE(wa[i]), IM(wa[i])); -#else - ComplexMult(&RE(ch[ah+i+l1*ido]), &IM(ch[ah+i+l1*ido]), - RE(t2), IM(t2), RE(wa[i]), IM(wa[i])); -#endif - } - } - } -} - -static void passf2neg(const uint16_t ido, const uint16_t l1, const complex_t *cc, - complex_t *ch, const complex_t *wa) -{ - uint16_t i, k, ah, ac; - - if (ido == 1) - { - for (k = 0; k < l1; k++) - { - ah = 2*k; - ac = 4*k; - - RE(ch[ah]) = RE(cc[ac]) + RE(cc[ac+1]); - RE(ch[ah+l1]) = RE(cc[ac]) - RE(cc[ac+1]); - IM(ch[ah]) = IM(cc[ac]) + IM(cc[ac+1]); - IM(ch[ah+l1]) = IM(cc[ac]) - IM(cc[ac+1]); - } - } else { - for (k = 0; k < l1; k++) - { - ah = k*ido; - ac = 2*k*ido; - - for (i = 0; i < ido; i++) - { - complex_t t2; - - RE(ch[ah+i]) = RE(cc[ac+i]) + RE(cc[ac+i+ido]); - RE(t2) = RE(cc[ac+i]) - RE(cc[ac+i+ido]); - - IM(ch[ah+i]) = IM(cc[ac+i]) + IM(cc[ac+i+ido]); - IM(t2) = IM(cc[ac+i]) - IM(cc[ac+i+ido]); - -#if 1 - ComplexMult(&RE(ch[ah+i+l1*ido]), &IM(ch[ah+i+l1*ido]), - RE(t2), IM(t2), RE(wa[i]), IM(wa[i])); -#else - ComplexMult(&IM(ch[ah+i+l1*ido]), &RE(ch[ah+i+l1*ido]), - IM(t2), RE(t2), RE(wa[i]), IM(wa[i])); -#endif - } - } - } -} - - -static void passf3(const uint16_t ido, const uint16_t l1, const complex_t *cc, - complex_t *ch, const complex_t *wa1, const complex_t *wa2, - const int8_t isign) -{ - static real_t taur = FRAC_CONST(-0.5); - static real_t taui = FRAC_CONST(0.866025403784439); - uint16_t i, k, ac, ah; - complex_t c2, c3, d2, d3, t2; - - if (ido == 1) - { - if (isign == 1) - { - for (k = 0; k < l1; k++) - { - ac = 3*k+1; - ah = k; - - 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_F(RE(t2),taur); - IM(c2) = IM(cc[ac-1]) + MUL_F(IM(t2),taur); - - RE(ch[ah]) = RE(cc[ac-1]) + RE(t2); - IM(ch[ah]) = IM(cc[ac-1]) + IM(t2); - - RE(c3) = MUL_F((RE(cc[ac]) - RE(cc[ac+1])), taui); - IM(c3) = MUL_F((IM(cc[ac]) - IM(cc[ac+1])), taui); - - 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 = 0; k < l1; k++) - { - ac = 3*k+1; - ah = k; - - 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_F(RE(t2),taur); - IM(c2) = IM(cc[ac-1]) + MUL_F(IM(t2),taur); - - RE(ch[ah]) = RE(cc[ac-1]) + RE(t2); - IM(ch[ah]) = IM(cc[ac-1]) + IM(t2); - - RE(c3) = MUL_F((RE(cc[ac]) - RE(cc[ac+1])), taui); - IM(c3) = MUL_F((IM(cc[ac]) - IM(cc[ac+1])), taui); - - 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 { - if (isign == 1) - { - for (k = 0; k < l1; k++) - { - for (i = 0; i < ido; i++) - { - 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_F(RE(t2),taur); - IM(t2) = IM(cc[ac]) + IM(cc[ac+ido]); - IM(c2) = IM(cc[ac-ido]) + MUL_F(IM(t2),taur); - - RE(ch[ah]) = RE(cc[ac-ido]) + RE(t2); - IM(ch[ah]) = IM(cc[ac-ido]) + IM(t2); - - RE(c3) = MUL_F((RE(cc[ac]) - RE(cc[ac+ido])), taui); - IM(c3) = MUL_F((IM(cc[ac]) - IM(cc[ac+ido])), taui); - - RE(d2) = RE(c2) - IM(c3); - IM(d3) = IM(c2) - RE(c3); - RE(d3) = RE(c2) + IM(c3); - IM(d2) = IM(c2) + RE(c3); - -#if 1 - ComplexMult(&IM(ch[ah+l1*ido]), &RE(ch[ah+l1*ido]), - IM(d2), RE(d2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&IM(ch[ah+2*l1*ido]), &RE(ch[ah+2*l1*ido]), - IM(d3), RE(d3), RE(wa2[i]), IM(wa2[i])); -#else - ComplexMult(&RE(ch[ah+l1*ido]), &IM(ch[ah+l1*ido]), - RE(d2), IM(d2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&RE(ch[ah+2*l1*ido]), &IM(ch[ah+2*l1*ido]), - RE(d3), IM(d3), RE(wa2[i]), IM(wa2[i])); -#endif - } - } - } else { - for (k = 0; k < l1; k++) - { - for (i = 0; i < ido; i++) - { - 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_F(RE(t2),taur); - IM(t2) = IM(cc[ac]) + IM(cc[ac+ido]); - IM(c2) = IM(cc[ac-ido]) + MUL_F(IM(t2),taur); - - RE(ch[ah]) = RE(cc[ac-ido]) + RE(t2); - IM(ch[ah]) = IM(cc[ac-ido]) + IM(t2); - - RE(c3) = MUL_F((RE(cc[ac]) - RE(cc[ac+ido])), taui); - IM(c3) = MUL_F((IM(cc[ac]) - IM(cc[ac+ido])), taui); - - RE(d2) = RE(c2) + IM(c3); - IM(d3) = IM(c2) + RE(c3); - RE(d3) = RE(c2) - IM(c3); - IM(d2) = IM(c2) - RE(c3); - -#if 1 - ComplexMult(&RE(ch[ah+l1*ido]), &IM(ch[ah+l1*ido]), - RE(d2), IM(d2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&RE(ch[ah+2*l1*ido]), &IM(ch[ah+2*l1*ido]), - RE(d3), IM(d3), RE(wa2[i]), IM(wa2[i])); -#else - ComplexMult(&IM(ch[ah+l1*ido]), &RE(ch[ah+l1*ido]), - IM(d2), RE(d2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&IM(ch[ah+2*l1*ido]), &RE(ch[ah+2*l1*ido]), - IM(d3), RE(d3), RE(wa2[i]), IM(wa2[i])); -#endif - } - } - } - } -} - - -static void passf4pos(const uint16_t ido, const uint16_t l1, const complex_t *cc, - complex_t *ch, const complex_t *wa1, const complex_t *wa2, - const complex_t *wa3) -{ - uint16_t i, k, ac, ah; - - if (ido == 1) - { - for (k = 0; k < l1; k++) - { - complex_t t1, t2, t3, t4; - - ac = 4*k; - ah = k; - - RE(t2) = RE(cc[ac]) + RE(cc[ac+2]); - RE(t1) = RE(cc[ac]) - RE(cc[ac+2]); - IM(t2) = IM(cc[ac]) + IM(cc[ac+2]); - IM(t1) = IM(cc[ac]) - IM(cc[ac+2]); - RE(t3) = RE(cc[ac+1]) + RE(cc[ac+3]); - IM(t4) = RE(cc[ac+1]) - RE(cc[ac+3]); - IM(t3) = IM(cc[ac+3]) + IM(cc[ac+1]); - RE(t4) = IM(cc[ac+3]) - IM(cc[ac+1]); - - RE(ch[ah]) = RE(t2) + RE(t3); - RE(ch[ah+2*l1]) = RE(t2) - RE(t3); - - IM(ch[ah]) = IM(t2) + IM(t3); - IM(ch[ah+2*l1]) = IM(t2) - IM(t3); - - RE(ch[ah+l1]) = RE(t1) + RE(t4); - RE(ch[ah+3*l1]) = RE(t1) - RE(t4); - - IM(ch[ah+l1]) = IM(t1) + IM(t4); - IM(ch[ah+3*l1]) = IM(t1) - IM(t4); - } - } else { - for (k = 0; k < l1; k++) - { - ac = 4*k*ido; - ah = k*ido; - - for (i = 0; i < ido; i++) - { - complex_t c2, c3, c4, t1, t2, t3, t4; - - RE(t2) = RE(cc[ac+i]) + RE(cc[ac+i+2*ido]); - RE(t1) = RE(cc[ac+i]) - RE(cc[ac+i+2*ido]); - IM(t2) = IM(cc[ac+i]) + IM(cc[ac+i+2*ido]); - IM(t1) = IM(cc[ac+i]) - IM(cc[ac+i+2*ido]); - RE(t3) = RE(cc[ac+i+ido]) + RE(cc[ac+i+3*ido]); - IM(t4) = RE(cc[ac+i+ido]) - RE(cc[ac+i+3*ido]); - IM(t3) = IM(cc[ac+i+3*ido]) + IM(cc[ac+i+ido]); - RE(t4) = IM(cc[ac+i+3*ido]) - IM(cc[ac+i+ido]); - - RE(c2) = RE(t1) + RE(t4); - RE(c4) = RE(t1) - RE(t4); - - IM(c2) = IM(t1) + IM(t4); - IM(c4) = IM(t1) - IM(t4); - - RE(ch[ah+i]) = RE(t2) + RE(t3); - RE(c3) = RE(t2) - RE(t3); - - IM(ch[ah+i]) = IM(t2) + IM(t3); - IM(c3) = IM(t2) - IM(t3); - -#if 1 - ComplexMult(&IM(ch[ah+i+l1*ido]), &RE(ch[ah+i+l1*ido]), - IM(c2), RE(c2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&IM(ch[ah+i+2*l1*ido]), &RE(ch[ah+i+2*l1*ido]), - IM(c3), RE(c3), RE(wa2[i]), IM(wa2[i])); - ComplexMult(&IM(ch[ah+i+3*l1*ido]), &RE(ch[ah+i+3*l1*ido]), - IM(c4), RE(c4), RE(wa3[i]), IM(wa3[i])); -#else - ComplexMult(&RE(ch[ah+i+l1*ido]), &IM(ch[ah+i+l1*ido]), - RE(c2), IM(c2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&RE(ch[ah+i+2*l1*ido]), &IM(ch[ah+i+2*l1*ido]), - RE(c3), IM(c3), RE(wa2[i]), IM(wa2[i])); - ComplexMult(&RE(ch[ah+i+3*l1*ido]), &IM(ch[ah+i+3*l1*ido]), - RE(c4), IM(c4), RE(wa3[i]), IM(wa3[i])); -#endif - } - } - } -} - -static void passf4neg(const uint16_t ido, const uint16_t l1, const complex_t *cc, - complex_t *ch, const complex_t *wa1, const complex_t *wa2, - const complex_t *wa3) -{ - uint16_t i, k, ac, ah; - - if (ido == 1) - { - for (k = 0; k < l1; k++) - { - complex_t t1, t2, t3, t4; - - ac = 4*k; - ah = k; - - RE(t2) = RE(cc[ac]) + RE(cc[ac+2]); - RE(t1) = RE(cc[ac]) - RE(cc[ac+2]); - IM(t2) = IM(cc[ac]) + IM(cc[ac+2]); - IM(t1) = IM(cc[ac]) - IM(cc[ac+2]); - RE(t3) = RE(cc[ac+1]) + RE(cc[ac+3]); - IM(t4) = RE(cc[ac+1]) - RE(cc[ac+3]); - IM(t3) = IM(cc[ac+3]) + IM(cc[ac+1]); - RE(t4) = IM(cc[ac+3]) - IM(cc[ac+1]); - - RE(ch[ah]) = RE(t2) + RE(t3); - RE(ch[ah+2*l1]) = RE(t2) - RE(t3); - - IM(ch[ah]) = IM(t2) + IM(t3); - IM(ch[ah+2*l1]) = IM(t2) - IM(t3); - - RE(ch[ah+l1]) = RE(t1) - RE(t4); - RE(ch[ah+3*l1]) = RE(t1) + RE(t4); - - IM(ch[ah+l1]) = IM(t1) - IM(t4); - IM(ch[ah+3*l1]) = IM(t1) + IM(t4); - } - } else { - for (k = 0; k < l1; k++) - { - ac = 4*k*ido; - ah = k*ido; - - for (i = 0; i < ido; i++) - { - complex_t c2, c3, c4, t1, t2, t3, t4; - - RE(t2) = RE(cc[ac+i]) + RE(cc[ac+i+2*ido]); - RE(t1) = RE(cc[ac+i]) - RE(cc[ac+i+2*ido]); - IM(t2) = IM(cc[ac+i]) + IM(cc[ac+i+2*ido]); - IM(t1) = IM(cc[ac+i]) - IM(cc[ac+i+2*ido]); - RE(t3) = RE(cc[ac+i+ido]) + RE(cc[ac+i+3*ido]); - IM(t4) = RE(cc[ac+i+ido]) - RE(cc[ac+i+3*ido]); - IM(t3) = IM(cc[ac+i+3*ido]) + IM(cc[ac+i+ido]); - RE(t4) = IM(cc[ac+i+3*ido]) - IM(cc[ac+i+ido]); - - RE(c2) = RE(t1) - RE(t4); - RE(c4) = RE(t1) + RE(t4); - - IM(c2) = IM(t1) - IM(t4); - IM(c4) = IM(t1) + IM(t4); - - RE(ch[ah+i]) = RE(t2) + RE(t3); - RE(c3) = RE(t2) - RE(t3); - - IM(ch[ah+i]) = IM(t2) + IM(t3); - IM(c3) = IM(t2) - IM(t3); - -#if 1 - ComplexMult(&RE(ch[ah+i+l1*ido]), &IM(ch[ah+i+l1*ido]), - RE(c2), IM(c2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&RE(ch[ah+i+2*l1*ido]), &IM(ch[ah+i+2*l1*ido]), - RE(c3), IM(c3), RE(wa2[i]), IM(wa2[i])); - ComplexMult(&RE(ch[ah+i+3*l1*ido]), &IM(ch[ah+i+3*l1*ido]), - RE(c4), IM(c4), RE(wa3[i]), IM(wa3[i])); -#else - ComplexMult(&IM(ch[ah+i+l1*ido]), &RE(ch[ah+i+l1*ido]), - IM(c2), RE(c2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&IM(ch[ah+i+2*l1*ido]), &RE(ch[ah+i+2*l1*ido]), - IM(c3), RE(c3), RE(wa2[i]), IM(wa2[i])); - ComplexMult(&IM(ch[ah+i+3*l1*ido]), &RE(ch[ah+i+3*l1*ido]), - IM(c4), RE(c4), RE(wa3[i]), IM(wa3[i])); -#endif - } - } - } -} - -static void passf5(const uint16_t ido, const uint16_t l1, const complex_t *cc, - complex_t *ch, const complex_t *wa1, const complex_t *wa2, const complex_t *wa3, - const complex_t *wa4, const int8_t isign) -{ - static real_t tr11 = FRAC_CONST(0.309016994374947); - static real_t ti11 = FRAC_CONST(0.951056516295154); - static real_t tr12 = FRAC_CONST(-0.809016994374947); - static real_t ti12 = FRAC_CONST(0.587785252292473); - uint16_t i, k, ac, ah; - complex_t c2, c3, c4, c5, d3, d4, d5, d2, t2, t3, t4, t5; - - if (ido == 1) - { - if (isign == 1) - { - for (k = 0; k < l1; k++) - { - 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]); - - RE(ch[ah]) = RE(cc[ac-1]) + RE(t2) + RE(t3); - IM(ch[ah]) = IM(cc[ac-1]) + IM(t2) + IM(t3); - - RE(c2) = RE(cc[ac-1]) + MUL_F(RE(t2),tr11) + MUL_F(RE(t3),tr12); - IM(c2) = IM(cc[ac-1]) + MUL_F(IM(t2),tr11) + MUL_F(IM(t3),tr12); - RE(c3) = RE(cc[ac-1]) + MUL_F(RE(t2),tr12) + MUL_F(RE(t3),tr11); - IM(c3) = IM(cc[ac-1]) + MUL_F(IM(t2),tr12) + MUL_F(IM(t3),tr11); - - ComplexMult(&RE(c5), &RE(c4), - ti11, ti12, RE(t5), RE(t4)); - ComplexMult(&IM(c5), &IM(c4), - ti11, ti12, IM(t5), IM(t4)); - - 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++) - { - 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]); - - RE(ch[ah]) = RE(cc[ac-1]) + RE(t2) + RE(t3); - IM(ch[ah]) = IM(cc[ac-1]) + IM(t2) + IM(t3); - - RE(c2) = RE(cc[ac-1]) + MUL_F(RE(t2),tr11) + MUL_F(RE(t3),tr12); - IM(c2) = IM(cc[ac-1]) + MUL_F(IM(t2),tr11) + MUL_F(IM(t3),tr12); - RE(c3) = RE(cc[ac-1]) + MUL_F(RE(t2),tr12) + MUL_F(RE(t3),tr11); - IM(c3) = IM(cc[ac-1]) + MUL_F(IM(t2),tr12) + MUL_F(IM(t3),tr11); - - ComplexMult(&RE(c4), &RE(c5), - ti12, ti11, RE(t5), RE(t4)); - ComplexMult(&IM(c4), &IM(c5), - ti12, ti12, IM(t5), IM(t4)); - - 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 { - if (isign == 1) - { - for (k = 0; k < l1; k++) - { - for (i = 0; i < ido; i++) - { - ac = i + (k*5 + 1) * ido; - ah = i + k * 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]); - - RE(ch[ah]) = RE(cc[ac-ido]) + RE(t2) + RE(t3); - IM(ch[ah]) = IM(cc[ac-ido]) + IM(t2) + IM(t3); - - RE(c2) = RE(cc[ac-ido]) + MUL_F(RE(t2),tr11) + MUL_F(RE(t3),tr12); - IM(c2) = IM(cc[ac-ido]) + MUL_F(IM(t2),tr11) + MUL_F(IM(t3),tr12); - RE(c3) = RE(cc[ac-ido]) + MUL_F(RE(t2),tr12) + MUL_F(RE(t3),tr11); - IM(c3) = IM(cc[ac-ido]) + MUL_F(IM(t2),tr12) + MUL_F(IM(t3),tr11); - - ComplexMult(&RE(c5), &RE(c4), - ti11, ti12, RE(t5), RE(t4)); - ComplexMult(&IM(c5), &IM(c4), - ti11, ti12, IM(t5), IM(t4)); - - 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); - -#if 1 - ComplexMult(&IM(ch[ah+l1*ido]), &RE(ch[ah+l1*ido]), - IM(d2), RE(d2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&IM(ch[ah+2*l1*ido]), &RE(ch[ah+2*l1*ido]), - IM(d3), RE(d3), RE(wa2[i]), IM(wa2[i])); - ComplexMult(&IM(ch[ah+3*l1*ido]), &RE(ch[ah+3*l1*ido]), - IM(d4), RE(d4), RE(wa3[i]), IM(wa3[i])); - ComplexMult(&IM(ch[ah+4*l1*ido]), &RE(ch[ah+4*l1*ido]), - IM(d5), RE(d5), RE(wa4[i]), IM(wa4[i])); -#else - ComplexMult(&RE(ch[ah+l1*ido]), &IM(ch[ah+l1*ido]), - RE(d2), IM(d2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&RE(ch[ah+2*l1*ido]), &IM(ch[ah+2*l1*ido]), - RE(d3), IM(d3), RE(wa2[i]), IM(wa2[i])); - ComplexMult(&RE(ch[ah+3*l1*ido]), &IM(ch[ah+3*l1*ido]), - RE(d4), IM(d4), RE(wa3[i]), IM(wa3[i])); - ComplexMult(&RE(ch[ah+4*l1*ido]), &IM(ch[ah+4*l1*ido]), - RE(d5), IM(d5), RE(wa4[i]), IM(wa4[i])); -#endif - } - } - } else { - for (k = 0; k < l1; k++) - { - for (i = 0; i < ido; i++) - { - ac = i + (k*5 + 1) * ido; - ah = i + k * 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]); - - RE(ch[ah]) = RE(cc[ac-ido]) + RE(t2) + RE(t3); - IM(ch[ah]) = IM(cc[ac-ido]) + IM(t2) + IM(t3); - - RE(c2) = RE(cc[ac-ido]) + MUL_F(RE(t2),tr11) + MUL_F(RE(t3),tr12); - IM(c2) = IM(cc[ac-ido]) + MUL_F(IM(t2),tr11) + MUL_F(IM(t3),tr12); - RE(c3) = RE(cc[ac-ido]) + MUL_F(RE(t2),tr12) + MUL_F(RE(t3),tr11); - IM(c3) = IM(cc[ac-ido]) + MUL_F(IM(t2),tr12) + MUL_F(IM(t3),tr11); - - ComplexMult(&RE(c4), &RE(c5), - ti12, ti11, RE(t5), RE(t4)); - ComplexMult(&IM(c4), &IM(c5), - ti12, ti12, IM(t5), IM(t4)); - - 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); - -#if 1 - ComplexMult(&RE(ch[ah+l1*ido]), &IM(ch[ah+l1*ido]), - RE(d2), IM(d2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&RE(ch[ah+2*l1*ido]), &IM(ch[ah+2*l1*ido]), - RE(d3), IM(d3), RE(wa2[i]), IM(wa2[i])); - ComplexMult(&RE(ch[ah+3*l1*ido]), &IM(ch[ah+3*l1*ido]), - RE(d4), IM(d4), RE(wa3[i]), IM(wa3[i])); - ComplexMult(&RE(ch[ah+4*l1*ido]), &IM(ch[ah+4*l1*ido]), - RE(d5), IM(d5), RE(wa4[i]), IM(wa4[i])); -#else - ComplexMult(&IM(ch[ah+l1*ido]), &RE(ch[ah+l1*ido]), - IM(d2), RE(d2), RE(wa1[i]), IM(wa1[i])); - ComplexMult(&IM(ch[ah+2*l1*ido]), &RE(ch[ah+2*l1*ido]), - IM(d3), RE(d3), RE(wa2[i]), IM(wa2[i])); - ComplexMult(&IM(ch[ah+3*l1*ido]), &RE(ch[ah+3*l1*ido]), - IM(d4), RE(d4), RE(wa3[i]), IM(wa3[i])); - ComplexMult(&IM(ch[ah+4*l1*ido]), &RE(ch[ah+4*l1*ido]), - IM(d5), RE(d5), RE(wa4[i]), IM(wa4[i])); -#endif - } - } - } - } -} - - -/*---------------------------------------------------------------------- - cfftf1, cfftf, cfftb, cffti1, cffti. Complex FFTs. - ----------------------------------------------------------------------*/ - -static INLINE void cfftf1pos(uint16_t n, complex_t *c, complex_t *ch, - const uint16_t *ifac, const complex_t *wa, - const int8_t isign) -{ - uint16_t i; - uint16_t k1, l1, l2; - uint16_t na, nf, ip, iw, ix2, ix3, ix4, ido, idl1; - - nf = ifac[1]; - na = 0; - l1 = 1; - iw = 0; - - for (k1 = 2; k1 <= nf+1; k1++) - { - ip = ifac[k1]; - l2 = ip*l1; - ido = n / l2; - idl1 = ido*l1; - - switch (ip) - { - case 4: - ix2 = iw + ido; - ix3 = ix2 + ido; - - if (na == 0) - passf4pos((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)c, ch, &wa[iw], &wa[ix2], &wa[ix3]); - else - passf4pos((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)ch, c, &wa[iw], &wa[ix2], &wa[ix3]); - - na = 1 - na; - break; - case 2: - if (na == 0) - passf2pos((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)c, ch, &wa[iw]); - else - passf2pos((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)ch, c, &wa[iw]); - - na = 1 - na; - break; - case 3: - ix2 = iw + ido; - - if (na == 0) - passf3((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)c, ch, &wa[iw], &wa[ix2], isign); - else - passf3((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)ch, c, &wa[iw], &wa[ix2], isign); - - na = 1 - na; - break; - case 5: - ix2 = iw + ido; - ix3 = ix2 + ido; - ix4 = ix3 + ido; - - if (na == 0) - passf5((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)c, ch, &wa[iw], &wa[ix2], &wa[ix3], &wa[ix4], isign); - else - passf5((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)ch, c, &wa[iw], &wa[ix2], &wa[ix3], &wa[ix4], isign); - - na = 1 - na; - break; - } - - l1 = l2; - iw += (ip-1) * ido; - } - - if (na == 0) - return; - - for (i = 0; i < n; i++) - { - RE(c[i]) = RE(ch[i]); - IM(c[i]) = IM(ch[i]); - } -} - -static INLINE void cfftf1neg(uint16_t n, complex_t *c, complex_t *ch, - const uint16_t *ifac, const complex_t *wa, - const int8_t isign) -{ - uint16_t i; - uint16_t k1, l1, l2; - uint16_t na, nf, ip, iw, ix2, ix3, ix4, ido, idl1; - - nf = ifac[1]; - na = 0; - l1 = 1; - iw = 0; - - for (k1 = 2; k1 <= nf+1; k1++) - { - ip = ifac[k1]; - l2 = ip*l1; - ido = n / l2; - idl1 = ido*l1; - - switch (ip) - { - case 4: - ix2 = iw + ido; - ix3 = ix2 + ido; - - if (na == 0) - passf4neg((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)c, ch, &wa[iw], &wa[ix2], &wa[ix3]); - else - passf4neg((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)ch, c, &wa[iw], &wa[ix2], &wa[ix3]); - - na = 1 - na; - break; - case 2: - if (na == 0) - passf2neg((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)c, ch, &wa[iw]); - else - passf2neg((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)ch, c, &wa[iw]); - - na = 1 - na; - break; - case 3: - ix2 = iw + ido; - - if (na == 0) - passf3((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)c, ch, &wa[iw], &wa[ix2], isign); - else - passf3((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)ch, c, &wa[iw], &wa[ix2], isign); - - na = 1 - na; - break; - case 5: - ix2 = iw + ido; - ix3 = ix2 + ido; - ix4 = ix3 + ido; - - if (na == 0) - passf5((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)c, ch, &wa[iw], &wa[ix2], &wa[ix3], &wa[ix4], isign); - else - passf5((const uint16_t)ido, (const uint16_t)l1, (const complex_t*)ch, c, &wa[iw], &wa[ix2], &wa[ix3], &wa[ix4], isign); - - na = 1 - na; - break; - } - - l1 = l2; - iw += (ip-1) * ido; - } - - if (na == 0) - return; - - for (i = 0; i < n; i++) - { - RE(c[i]) = RE(ch[i]); - IM(c[i]) = IM(ch[i]); - } -} - -void cfftf(cfft_info *cfft, complex_t *c) -{ - const complex_t *ct = (const complex_t*)cfft->tab; - cfftf1neg(cfft->n, c, cfft->work, (const uint16_t*)cfft->ifac, ct, -1); -} - -void cfftb(cfft_info *cfft, complex_t *c) -{ - const complex_t *ct = (const complex_t*)cfft->tab; - cfftf1pos(cfft->n, c, cfft->work, (const uint16_t*)cfft->ifac, ct, +1); -} - -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 ido, ipm; - uint16_t i1, k1, l1, l2; - uint16_t ld, ii, ip; -#endif - uint16_t ntry = 0, i, j; - uint16_t ib; - uint16_t nf, nl, nq, nr; - - (void)wa; - nl = n; - nf = 0; - j = 0; - -startloop: - j++; - - if (j <= 4) - ntry = ntryh[j-1]; - else - ntry += 2; - - do - { - nq = nl / ntry; - nr = nl - ntry*nq; - - if (nr != 0) - goto startloop; - - nf++; - ifac[nf+1] = ntry; - nl = nq; - - if (ntry == 2 && nf != 1) - { - for (i = 2; i <= nf; i++) - { - ib = nf - i + 2; - ifac[ib+1] = ifac[ib]; - } - ifac[2] = 2; - } - } while (nl != 1); - - ifac[0] = n; - ifac[1] = nf; - -#ifndef FIXED_POINT - argh = (real_t)2.0*(real_t)M_PI / (real_t)n; - i = 0; - l1 = 1; - - for (k1 = 1; k1 <= nf; k1++) - { - ip = ifac[k1+1]; - ld = 0; - l2 = l1*ip; - ido = n / l2; - ipm = ip - 1; - - for (j = 0; j < ipm; j++) - { - i1 = i; - RE(wa[i]) = 1.0; - IM(wa[i]) = 0.0; - ld += l1; - fi = 0; - argld = ld*argh; - - for (ii = 0; ii < ido; ii++) - { - i++; - fi++; - arg = fi * argld; - RE(wa[i]) = (real_t)cos(arg); -#if 1 - IM(wa[i]) = (real_t)sin(arg); -#else - IM(wa[i]) = (real_t)-sin(arg); -#endif - } - - if (ip > 5) - { - RE(wa[i1]) = RE(wa[i]); - IM(wa[i1]) = IM(wa[i]); - } - } - l1 = l2; - } -#endif -} - -cfft_info *cffti(uint16_t n) -{ - cfft_info *cfft = (cfft_info*)faad_malloc(sizeof(cfft_info)); - - cfft->n = n; - - if (n <= 512) - { - static complex_t work_buf[512] IBSS_ATTR; - - cfft->work = work_buf; - } - else - { - cfft->work = (complex_t*)faad_malloc(n*sizeof(complex_t)); - } - -#ifndef FIXED_POINT - cfft->tab = (complex_t*)faad_malloc(n*sizeof(complex_t)); - - cffti1(n, cfft->tab, cfft->ifac); -#else - cffti1(n, NULL, cfft->ifac); - - switch (n) - { - case 64: cfft->tab = (complex_t*)cfft_tab_64; break; - case 512: cfft->tab = (complex_t*)cfft_tab_512; break; -#ifdef LD_DEC - case 256: cfft->tab = (complex_t*)cfft_tab_256; break; -#endif - -#ifdef ALLOW_SMALL_FRAMELENGTH - case 60: cfft->tab = (complex_t*)cfft_tab_60; break; - case 480: cfft->tab = (complex_t*)cfft_tab_480; break; -#ifdef LD_DEC - case 240: cfft->tab = (complex_t*)cfft_tab_240; break; -#endif -#endif - case 128: cfft->tab = (complex_t*)cfft_tab_128; break; - } -#endif - - return cfft; -} - -void cfftu(cfft_info *cfft) -{ - if (cfft->work) faad_free(cfft->work); -#ifndef FIXED_POINT - if (cfft->tab) faad_free(cfft->tab); -#endif - - if (cfft) faad_free(cfft); -} - diff --git a/apps/codecs/libfaad/cfft.h b/apps/codecs/libfaad/cfft.h deleted file mode 100644 index 04d410e5a9..0000000000 --- a/apps/codecs/libfaad/cfft.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** -** 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 -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -** -** Any non-GPL usage of this software or parts of this software is strictly -** forbidden. -** -** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. -** -** $Id$ -**/ - -#ifndef __CFFT_H__ -#define __CFFT_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct -{ - uint16_t n; - uint16_t ifac[15]; - complex_t *work; - complex_t *tab; -} cfft_info; - - -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); - - -#ifdef __cplusplus -} -#endif -#endif diff --git a/apps/codecs/libfaad/cfft_tab.h b/apps/codecs/libfaad/cfft_tab.h deleted file mode 100644 index b26653bd38..0000000000 --- a/apps/codecs/libfaad/cfft_tab.h +++ /dev/null @@ -1,1820 +0,0 @@ -/* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** -** 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 -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -** -** Any non-GPL usage of this software or parts of this software is strictly -** forbidden. -** -** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. -** -** $Id$ -**/ - -#ifndef __CFFT_TAB_H__ -#define __CFFT_TAB_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef FIXED_POINT - -ALIGN static const complex_t cfft_tab_512[] ICONST_ATTR = -{ - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.999924719333649), FRAC_CONST(0.012271538376808) }, - { FRAC_CONST(0.999698817729950), FRAC_CONST(0.024541229009628) }, - { FRAC_CONST(0.999322354793549), FRAC_CONST(0.036807224154472) }, - { FRAC_CONST(0.998795449733734), FRAC_CONST(0.049067676067352) }, - { FRAC_CONST(0.998118102550507), FRAC_CONST(0.061320740729570) }, - { FRAC_CONST(0.997290432453156), FRAC_CONST(0.073564566671848) }, - { FRAC_CONST(0.996312618255615), FRAC_CONST(0.085797317326069) }, - { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) }, - { FRAC_CONST(0.993906974792480), FRAC_CONST(0.110222205519676) }, - { FRAC_CONST(0.992479562759399), FRAC_CONST(0.122410677373409) }, - { FRAC_CONST(0.990902662277222), FRAC_CONST(0.134580716490746) }, - { FRAC_CONST(0.989176511764526), FRAC_CONST(0.146730467677116) }, - { FRAC_CONST(0.987301409244537), FRAC_CONST(0.158858150243759) }, - { FRAC_CONST(0.985277652740479), FRAC_CONST(0.170961901545525) }, - { FRAC_CONST(0.983105480670929), FRAC_CONST(0.183039888739586) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.978317379951477), FRAC_CONST(0.207111388444901) }, - { FRAC_CONST(0.975702106952667), FRAC_CONST(0.219101235270500) }, - { FRAC_CONST(0.972939968109131), FRAC_CONST(0.231058120727539) }, - { FRAC_CONST(0.970031261444092), FRAC_CONST(0.242980197072029) }, - { FRAC_CONST(0.966976463794708), FRAC_CONST(0.254865676164627) }, - { FRAC_CONST(0.963776051998138), FRAC_CONST(0.266712784767151) }, - { FRAC_CONST(0.960430502891541), FRAC_CONST(0.278519690036774) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.953306019306183), FRAC_CONST(0.302005946636200) }, - { FRAC_CONST(0.949528157711029), FRAC_CONST(0.313681751489639) }, - { FRAC_CONST(0.945607304573059), FRAC_CONST(0.325310319662094) }, - { FRAC_CONST(0.941544055938721), FRAC_CONST(0.336889863014221) }, - { FRAC_CONST(0.937339007854462), FRAC_CONST(0.348418682813644) }, - { FRAC_CONST(0.932992815971375), FRAC_CONST(0.359895050525665) }, - { FRAC_CONST(0.928506076335907), FRAC_CONST(0.371317207813263) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.919113874435425), FRAC_CONST(0.393992066383362) }, - { FRAC_CONST(0.914209723472595), FRAC_CONST(0.405241340398788) }, - { FRAC_CONST(0.909167945384979), FRAC_CONST(0.416429579257965) }, - { FRAC_CONST(0.903989315032959), FRAC_CONST(0.427555084228516) }, - { FRAC_CONST(0.898674488067627), FRAC_CONST(0.438616245985031) }, - { FRAC_CONST(0.893224298954010), FRAC_CONST(0.449611335992813) }, - { FRAC_CONST(0.887639641761780), FRAC_CONST(0.460538715124130) }, - { FRAC_CONST(0.881921231746674), FRAC_CONST(0.471396744251251) }, - { FRAC_CONST(0.876070082187653), FRAC_CONST(0.482183754444122) }, - { FRAC_CONST(0.870086967945099), FRAC_CONST(0.492898225784302) }, - { FRAC_CONST(0.863972842693329), FRAC_CONST(0.503538370132446) }, - { FRAC_CONST(0.857728600502014), FRAC_CONST(0.514102756977081) }, - { FRAC_CONST(0.851355195045471), FRAC_CONST(0.524589717388153) }, - { FRAC_CONST(0.844853579998016), FRAC_CONST(0.534997642040253) }, - { FRAC_CONST(0.838224709033966), FRAC_CONST(0.545324981212616) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.824589252471924), FRAC_CONST(0.565731823444366) }, - { FRAC_CONST(0.817584812641144), FRAC_CONST(0.575808227062225) }, - { FRAC_CONST(0.810457170009613), FRAC_CONST(0.585797905921936) }, - { FRAC_CONST(0.803207516670227), FRAC_CONST(0.595699310302734) }, - { FRAC_CONST(0.795836925506592), FRAC_CONST(0.605511009693146) }, - { FRAC_CONST(0.788346409797668), FRAC_CONST(0.615231633186340) }, - { FRAC_CONST(0.780737221240997), FRAC_CONST(0.624859511852264) }, - { FRAC_CONST(0.773010432720184), FRAC_CONST(0.634393334388733) }, - { FRAC_CONST(0.765167236328125), FRAC_CONST(0.643831551074982) }, - { FRAC_CONST(0.757208824157715), FRAC_CONST(0.653172850608826) }, - { FRAC_CONST(0.749136388301849), FRAC_CONST(0.662415802478790) }, - { FRAC_CONST(0.740951120853424), FRAC_CONST(0.671558976173401) }, - { FRAC_CONST(0.732654273509979), FRAC_CONST(0.680601000785828) }, - { FRAC_CONST(0.724247097969055), FRAC_CONST(0.689540565013886) }, - { FRAC_CONST(0.715730786323547), FRAC_CONST(0.698376297950745) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.698376238346100), FRAC_CONST(0.715730845928192) }, - { FRAC_CONST(0.689540505409241), FRAC_CONST(0.724247097969055) }, - { FRAC_CONST(0.680601000785828), FRAC_CONST(0.732654273509979) }, - { FRAC_CONST(0.671558916568756), FRAC_CONST(0.740951180458069) }, - { FRAC_CONST(0.662415742874146), FRAC_CONST(0.749136388301849) }, - { FRAC_CONST(0.653172791004181), FRAC_CONST(0.757208883762360) }, - { FRAC_CONST(0.643831551074982), FRAC_CONST(0.765167295932770) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.624859452247620), FRAC_CONST(0.780737280845642) }, - { FRAC_CONST(0.615231573581696), FRAC_CONST(0.788346409797668) }, - { FRAC_CONST(0.605511009693146), FRAC_CONST(0.795836925506592) }, - { FRAC_CONST(0.595699310302734), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(0.585797846317291), FRAC_CONST(0.810457170009613) }, - { FRAC_CONST(0.575808167457581), FRAC_CONST(0.817584812641144) }, - { FRAC_CONST(0.565731823444366), FRAC_CONST(0.824589312076569) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.545324981212616), FRAC_CONST(0.838224709033966) }, - { FRAC_CONST(0.534997642040253), FRAC_CONST(0.844853579998016) }, - { FRAC_CONST(0.524589657783508), FRAC_CONST(0.851355195045471) }, - { FRAC_CONST(0.514102697372437), FRAC_CONST(0.857728660106659) }, - { FRAC_CONST(0.503538429737091), FRAC_CONST(0.863972842693329) }, - { FRAC_CONST(0.492898195981979), FRAC_CONST(0.870086967945099) }, - { FRAC_CONST(0.482183724641800), FRAC_CONST(0.876070141792297) }, - { FRAC_CONST(0.471396654844284), FRAC_CONST(0.881921291351318) }, - { FRAC_CONST(0.460538715124130), FRAC_CONST(0.887639641761780) }, - { FRAC_CONST(0.449611306190491), FRAC_CONST(0.893224298954010) }, - { FRAC_CONST(0.438616186380386), FRAC_CONST(0.898674488067627) }, - { FRAC_CONST(0.427555114030838), FRAC_CONST(0.903989315032959) }, - { FRAC_CONST(0.416429549455643), FRAC_CONST(0.909168004989624) }, - { FRAC_CONST(0.405241280794144), FRAC_CONST(0.914209783077240) }, - { FRAC_CONST(0.393991947174072), FRAC_CONST(0.919113874435425) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.371317148208618), FRAC_CONST(0.928506076335907) }, - { FRAC_CONST(0.359894961118698), FRAC_CONST(0.932992815971375) }, - { FRAC_CONST(0.348418682813644), FRAC_CONST(0.937339007854462) }, - { FRAC_CONST(0.336889833211899), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(0.325310230255127), FRAC_CONST(0.945607364177704) }, - { FRAC_CONST(0.313681662082672), FRAC_CONST(0.949528217315674) }, - { FRAC_CONST(0.302005946636200), FRAC_CONST(0.953306019306183) }, - { FRAC_CONST(0.290284633636475), FRAC_CONST(0.956940352916718) }, - { FRAC_CONST(0.278519600629807), FRAC_CONST(0.960430562496185) }, - { FRAC_CONST(0.266712754964828), FRAC_CONST(0.963776051998138) }, - { FRAC_CONST(0.254865646362305), FRAC_CONST(0.966976463794708) }, - { FRAC_CONST(0.242980122566223), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(0.231058135628700), FRAC_CONST(0.972939968109131) }, - { FRAC_CONST(0.219101220369339), FRAC_CONST(0.975702106952667) }, - { FRAC_CONST(0.207111328840256), FRAC_CONST(0.978317379951477) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(0.183039888739586), FRAC_CONST(0.983105480670929) }, - { FRAC_CONST(0.170961856842041), FRAC_CONST(0.985277652740479) }, - { FRAC_CONST(0.158858075737953), FRAC_CONST(0.987301409244537) }, - { FRAC_CONST(0.146730497479439), FRAC_CONST(0.989176511764526) }, - { FRAC_CONST(0.134580686688423), FRAC_CONST(0.990902662277222) }, - { FRAC_CONST(0.122410625219345), FRAC_CONST(0.992479562759399) }, - { FRAC_CONST(0.110222116112709), FRAC_CONST(0.993906974792480) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(0.085797272622585), FRAC_CONST(0.996312618255615) }, - { FRAC_CONST(0.073564492166042), FRAC_CONST(0.997290432453156) }, - { FRAC_CONST(0.061320748180151), FRAC_CONST(0.998118102550507) }, - { FRAC_CONST(0.049067649990320), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(0.036807164549828), FRAC_CONST(0.999322414398193) }, - { FRAC_CONST(0.024541135877371), FRAC_CONST(0.999698817729950) }, - { FRAC_CONST(0.012271529063582), FRAC_CONST(0.999924719333649) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.012271616607904), FRAC_CONST(0.999924719333649) }, - { FRAC_CONST(-0.024541223421693), FRAC_CONST(0.999698817729950) }, - { FRAC_CONST(-0.036807250231504), FRAC_CONST(0.999322354793549) }, - { FRAC_CONST(-0.049067739397287), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(-0.061320833861828), FRAC_CONST(0.998118102550507) }, - { FRAC_CONST(-0.073564574122429), FRAC_CONST(0.997290432453156) }, - { FRAC_CONST(-0.085797362029552), FRAC_CONST(0.996312618255615) }, - { FRAC_CONST(-0.098017223179340), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(-0.110222205519676), FRAC_CONST(0.993906974792480) }, - { FRAC_CONST(-0.122410707175732), FRAC_CONST(0.992479503154755) }, - { FRAC_CONST(-0.134580776095390), FRAC_CONST(0.990902602672577) }, - { FRAC_CONST(-0.146730571985245), FRAC_CONST(0.989176511764526) }, - { FRAC_CONST(-0.158858165144920), FRAC_CONST(0.987301409244537) }, - { FRAC_CONST(-0.170961946249008), FRAC_CONST(0.985277652740479) }, - { FRAC_CONST(-0.183039978146553), FRAC_CONST(0.983105480670929) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.207111418247223), FRAC_CONST(0.978317379951477) }, - { FRAC_CONST(-0.219101309776306), FRAC_CONST(0.975702106952667) }, - { FRAC_CONST(-0.231058210134506), FRAC_CONST(0.972939908504486) }, - { FRAC_CONST(-0.242980197072029), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(-0.254865705966949), FRAC_CONST(0.966976463794708) }, - { FRAC_CONST(-0.266712844371796), FRAC_CONST(0.963776051998138) }, - { FRAC_CONST(-0.278519690036774), FRAC_CONST(0.960430502891541) }, - { FRAC_CONST(-0.290284723043442), FRAC_CONST(0.956940293312073) }, - { FRAC_CONST(-0.302006036043167), FRAC_CONST(0.953306019306183) }, - { FRAC_CONST(-0.313681721687317), FRAC_CONST(0.949528157711029) }, - { FRAC_CONST(-0.325310319662094), FRAC_CONST(0.945607304573059) }, - { FRAC_CONST(-0.336889922618866), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(-0.348418772220612), FRAC_CONST(0.937338948249817) }, - { FRAC_CONST(-0.359895050525665), FRAC_CONST(0.932992815971375) }, - { FRAC_CONST(-0.371317237615585), FRAC_CONST(0.928506076335907) }, - { FRAC_CONST(-0.382683515548706), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.393992036581039), FRAC_CONST(0.919113874435425) }, - { FRAC_CONST(-0.405241340398788), FRAC_CONST(0.914209723472595) }, - { FRAC_CONST(-0.416429519653320), FRAC_CONST(0.909168004989624) }, - { FRAC_CONST(-0.427555084228516), FRAC_CONST(0.903989315032959) }, - { FRAC_CONST(-0.438616245985031), FRAC_CONST(0.898674428462982) }, - { FRAC_CONST(-0.449611365795136), FRAC_CONST(0.893224298954010) }, - { FRAC_CONST(-0.460538804531097), FRAC_CONST(0.887639582157135) }, - { FRAC_CONST(-0.471396833658218), FRAC_CONST(0.881921231746674) }, - { FRAC_CONST(-0.482183903455734), FRAC_CONST(0.876070022583008) }, - { FRAC_CONST(-0.492898166179657), FRAC_CONST(0.870087027549744) }, - { FRAC_CONST(-0.503538370132446), FRAC_CONST(0.863972842693329) }, - { FRAC_CONST(-0.514102756977081), FRAC_CONST(0.857728600502014) }, - { FRAC_CONST(-0.524589717388153), FRAC_CONST(0.851355135440826) }, - { FRAC_CONST(-0.534997701644897), FRAC_CONST(0.844853520393372) }, - { FRAC_CONST(-0.545325100421906), FRAC_CONST(0.838224649429321) }, - { FRAC_CONST(-0.555570363998413), FRAC_CONST(0.831469535827637) }, - { FRAC_CONST(-0.565731763839722), FRAC_CONST(0.824589312076569) }, - { FRAC_CONST(-0.575808167457581), FRAC_CONST(0.817584812641144) }, - { FRAC_CONST(-0.585797905921936), FRAC_CONST(0.810457170009613) }, - { FRAC_CONST(-0.595699369907379), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(-0.605511128902435), FRAC_CONST(0.795836865901947) }, - { FRAC_CONST(-0.615231692790985), FRAC_CONST(0.788346350193024) }, - { FRAC_CONST(-0.624859631061554), FRAC_CONST(0.780737102031708) }, - { FRAC_CONST(-0.634393274784088), FRAC_CONST(0.773010492324829) }, - { FRAC_CONST(-0.643831551074982), FRAC_CONST(0.765167236328125) }, - { FRAC_CONST(-0.653172850608826), FRAC_CONST(0.757208824157715) }, - { FRAC_CONST(-0.662415802478790), FRAC_CONST(0.749136328697205) }, - { FRAC_CONST(-0.671559035778046), FRAC_CONST(0.740951061248779) }, - { FRAC_CONST(-0.680601119995117), FRAC_CONST(0.732654154300690) }, - { FRAC_CONST(-0.689540684223175), FRAC_CONST(0.724246978759766) }, - { FRAC_CONST(-0.698376238346100), FRAC_CONST(0.715730845928192) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.715730845928192), FRAC_CONST(0.698376238346100) }, - { FRAC_CONST(-0.724247157573700), FRAC_CONST(0.689540505409241) }, - { FRAC_CONST(-0.732654333114624), FRAC_CONST(0.680600941181183) }, - { FRAC_CONST(-0.740951240062714), FRAC_CONST(0.671558856964111) }, - { FRAC_CONST(-0.749136507511139), FRAC_CONST(0.662415623664856) }, - { FRAC_CONST(-0.757208824157715), FRAC_CONST(0.653172850608826) }, - { FRAC_CONST(-0.765167295932770), FRAC_CONST(0.643831551074982) }, - { FRAC_CONST(-0.773010492324829), FRAC_CONST(0.634393274784088) }, - { FRAC_CONST(-0.780737280845642), FRAC_CONST(0.624859452247620) }, - { FRAC_CONST(-0.788346469402313), FRAC_CONST(0.615231513977051) }, - { FRAC_CONST(-0.795836985111237), FRAC_CONST(0.605510950088501) }, - { FRAC_CONST(-0.803207635879517), FRAC_CONST(0.595699131488800) }, - { FRAC_CONST(-0.810457170009613), FRAC_CONST(0.585797846317291) }, - { FRAC_CONST(-0.817584812641144), FRAC_CONST(0.575808167457581) }, - { FRAC_CONST(-0.824589312076569), FRAC_CONST(0.565731763839722) }, - { FRAC_CONST(-0.831469655036926), FRAC_CONST(0.555570185184479) }, - { FRAC_CONST(-0.838224768638611), FRAC_CONST(0.545324862003326) }, - { FRAC_CONST(-0.844853639602661), FRAC_CONST(0.534997463226318) }, - { FRAC_CONST(-0.851355314254761), FRAC_CONST(0.524589538574219) }, - { FRAC_CONST(-0.857728600502014), FRAC_CONST(0.514102756977081) }, - { FRAC_CONST(-0.863972842693329), FRAC_CONST(0.503538370132446) }, - { FRAC_CONST(-0.870087027549744), FRAC_CONST(0.492898136377335) }, - { FRAC_CONST(-0.876070141792297), FRAC_CONST(0.482183694839478) }, - { FRAC_CONST(-0.881921350955963), FRAC_CONST(0.471396625041962) }, - { FRAC_CONST(-0.887639701366425), FRAC_CONST(0.460538566112518) }, - { FRAC_CONST(-0.893224298954010), FRAC_CONST(0.449611365795136) }, - { FRAC_CONST(-0.898674488067627), FRAC_CONST(0.438616245985031) }, - { FRAC_CONST(-0.903989315032959), FRAC_CONST(0.427555054426193) }, - { FRAC_CONST(-0.909168004989624), FRAC_CONST(0.416429489850998) }, - { FRAC_CONST(-0.914209783077240), FRAC_CONST(0.405241221189499) }, - { FRAC_CONST(-0.919113874435425), FRAC_CONST(0.393991917371750) }, - { FRAC_CONST(-0.923879623413086), FRAC_CONST(0.382683277130127) }, - { FRAC_CONST(-0.928506076335907), FRAC_CONST(0.371317237615585) }, - { FRAC_CONST(-0.932992815971375), FRAC_CONST(0.359895050525665) }, - { FRAC_CONST(-0.937339007854462), FRAC_CONST(0.348418653011322) }, - { FRAC_CONST(-0.941544115543365), FRAC_CONST(0.336889803409576) }, - { FRAC_CONST(-0.945607364177704), FRAC_CONST(0.325310200452805) }, - { FRAC_CONST(-0.949528217315674), FRAC_CONST(0.313681602478027) }, - { FRAC_CONST(-0.953306078910828), FRAC_CONST(0.302005797624588) }, - { FRAC_CONST(-0.956940352916718), FRAC_CONST(0.290284723043442) }, - { FRAC_CONST(-0.960430502891541), FRAC_CONST(0.278519690036774) }, - { FRAC_CONST(-0.963776051998138), FRAC_CONST(0.266712725162506) }, - { FRAC_CONST(-0.966976463794708), FRAC_CONST(0.254865586757660) }, - { FRAC_CONST(-0.970031261444092), FRAC_CONST(0.242980077862740) }, - { FRAC_CONST(-0.972939968109131), FRAC_CONST(0.231057971715927) }, - { FRAC_CONST(-0.975702166557312), FRAC_CONST(0.219101071357727) }, - { FRAC_CONST(-0.978317379951477), FRAC_CONST(0.207111403346062) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(-0.983105480670929), FRAC_CONST(0.183039844036102) }, - { FRAC_CONST(-0.985277652740479), FRAC_CONST(0.170961812138557) }, - { FRAC_CONST(-0.987301409244537), FRAC_CONST(0.158858031034470) }, - { FRAC_CONST(-0.989176511764526), FRAC_CONST(0.146730333566666) }, - { FRAC_CONST(-0.990902662277222), FRAC_CONST(0.134580522775650) }, - { FRAC_CONST(-0.992479503154755), FRAC_CONST(0.122410699725151) }, - { FRAC_CONST(-0.993906974792480), FRAC_CONST(0.110222198069096) }, - { FRAC_CONST(-0.995184719562531), FRAC_CONST(0.098017096519470) }, - { FRAC_CONST(-0.996312618255615), FRAC_CONST(0.085797227919102) }, - { FRAC_CONST(-0.997290492057800), FRAC_CONST(0.073564447462559) }, - { FRAC_CONST(-0.998118102550507), FRAC_CONST(0.061320584267378) }, - { FRAC_CONST(-0.998795449733734), FRAC_CONST(0.049067486077547) }, - { FRAC_CONST(-0.999322354793549), FRAC_CONST(0.036807239055634) }, - { FRAC_CONST(-0.999698817729950), FRAC_CONST(0.024541210383177) }, - { FRAC_CONST(-0.999924719333649), FRAC_CONST(0.012271485291421) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.999698817729950), FRAC_CONST(0.024541229009628) }, - { FRAC_CONST(0.998795449733734), FRAC_CONST(0.049067676067352) }, - { FRAC_CONST(0.997290432453156), FRAC_CONST(0.073564566671848) }, - { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) }, - { FRAC_CONST(0.992479562759399), FRAC_CONST(0.122410677373409) }, - { FRAC_CONST(0.989176511764526), FRAC_CONST(0.146730467677116) }, - { FRAC_CONST(0.985277652740479), FRAC_CONST(0.170961901545525) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.975702106952667), FRAC_CONST(0.219101235270500) }, - { FRAC_CONST(0.970031261444092), FRAC_CONST(0.242980197072029) }, - { FRAC_CONST(0.963776051998138), FRAC_CONST(0.266712784767151) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.949528157711029), FRAC_CONST(0.313681751489639) }, - { FRAC_CONST(0.941544055938721), FRAC_CONST(0.336889863014221) }, - { FRAC_CONST(0.932992815971375), FRAC_CONST(0.359895050525665) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.914209723472595), FRAC_CONST(0.405241340398788) }, - { FRAC_CONST(0.903989315032959), FRAC_CONST(0.427555084228516) }, - { FRAC_CONST(0.893224298954010), FRAC_CONST(0.449611335992813) }, - { FRAC_CONST(0.881921231746674), FRAC_CONST(0.471396744251251) }, - { FRAC_CONST(0.870086967945099), FRAC_CONST(0.492898225784302) }, - { FRAC_CONST(0.857728600502014), FRAC_CONST(0.514102756977081) }, - { FRAC_CONST(0.844853579998016), FRAC_CONST(0.534997642040253) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.817584812641144), FRAC_CONST(0.575808227062225) }, - { FRAC_CONST(0.803207516670227), FRAC_CONST(0.595699310302734) }, - { FRAC_CONST(0.788346409797668), FRAC_CONST(0.615231633186340) }, - { FRAC_CONST(0.773010432720184), FRAC_CONST(0.634393334388733) }, - { FRAC_CONST(0.757208824157715), FRAC_CONST(0.653172850608826) }, - { FRAC_CONST(0.740951120853424), FRAC_CONST(0.671558976173401) }, - { FRAC_CONST(0.724247097969055), FRAC_CONST(0.689540565013886) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.689540505409241), FRAC_CONST(0.724247097969055) }, - { FRAC_CONST(0.671558916568756), FRAC_CONST(0.740951180458069) }, - { FRAC_CONST(0.653172791004181), FRAC_CONST(0.757208883762360) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.615231573581696), FRAC_CONST(0.788346409797668) }, - { FRAC_CONST(0.595699310302734), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(0.575808167457581), FRAC_CONST(0.817584812641144) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.534997642040253), FRAC_CONST(0.844853579998016) }, - { FRAC_CONST(0.514102697372437), FRAC_CONST(0.857728660106659) }, - { FRAC_CONST(0.492898195981979), FRAC_CONST(0.870086967945099) }, - { FRAC_CONST(0.471396654844284), FRAC_CONST(0.881921291351318) }, - { FRAC_CONST(0.449611306190491), FRAC_CONST(0.893224298954010) }, - { FRAC_CONST(0.427555114030838), FRAC_CONST(0.903989315032959) }, - { FRAC_CONST(0.405241280794144), FRAC_CONST(0.914209783077240) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.359894961118698), FRAC_CONST(0.932992815971375) }, - { FRAC_CONST(0.336889833211899), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(0.313681662082672), FRAC_CONST(0.949528217315674) }, - { FRAC_CONST(0.290284633636475), FRAC_CONST(0.956940352916718) }, - { FRAC_CONST(0.266712754964828), FRAC_CONST(0.963776051998138) }, - { FRAC_CONST(0.242980122566223), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(0.219101220369339), FRAC_CONST(0.975702106952667) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(0.170961856842041), FRAC_CONST(0.985277652740479) }, - { FRAC_CONST(0.146730497479439), FRAC_CONST(0.989176511764526) }, - { FRAC_CONST(0.122410625219345), FRAC_CONST(0.992479562759399) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(0.073564492166042), FRAC_CONST(0.997290432453156) }, - { FRAC_CONST(0.049067649990320), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(0.024541135877371), FRAC_CONST(0.999698817729950) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.998795449733734), FRAC_CONST(0.049067676067352) }, - { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) }, - { FRAC_CONST(0.989176511764526), FRAC_CONST(0.146730467677116) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.970031261444092), FRAC_CONST(0.242980197072029) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.941544055938721), FRAC_CONST(0.336889863014221) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.903989315032959), FRAC_CONST(0.427555084228516) }, - { FRAC_CONST(0.881921231746674), FRAC_CONST(0.471396744251251) }, - { FRAC_CONST(0.857728600502014), FRAC_CONST(0.514102756977081) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.803207516670227), FRAC_CONST(0.595699310302734) }, - { FRAC_CONST(0.773010432720184), FRAC_CONST(0.634393334388733) }, - { FRAC_CONST(0.740951120853424), FRAC_CONST(0.671558976173401) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.671558916568756), FRAC_CONST(0.740951180458069) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.595699310302734), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.514102697372437), FRAC_CONST(0.857728660106659) }, - { FRAC_CONST(0.471396654844284), FRAC_CONST(0.881921291351318) }, - { FRAC_CONST(0.427555114030838), FRAC_CONST(0.903989315032959) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.336889833211899), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(0.290284633636475), FRAC_CONST(0.956940352916718) }, - { FRAC_CONST(0.242980122566223), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(0.146730497479439), FRAC_CONST(0.989176511764526) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(0.049067649990320), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.049067739397287), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(-0.098017223179340), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(-0.146730571985245), FRAC_CONST(0.989176511764526) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.242980197072029), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(-0.290284723043442), FRAC_CONST(0.956940293312073) }, - { FRAC_CONST(-0.336889922618866), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(-0.382683515548706), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.427555084228516), FRAC_CONST(0.903989315032959) }, - { FRAC_CONST(-0.471396833658218), FRAC_CONST(0.881921231746674) }, - { FRAC_CONST(-0.514102756977081), FRAC_CONST(0.857728600502014) }, - { FRAC_CONST(-0.555570363998413), FRAC_CONST(0.831469535827637) }, - { FRAC_CONST(-0.595699369907379), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(-0.634393274784088), FRAC_CONST(0.773010492324829) }, - { FRAC_CONST(-0.671559035778046), FRAC_CONST(0.740951061248779) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.740951240062714), FRAC_CONST(0.671558856964111) }, - { FRAC_CONST(-0.773010492324829), FRAC_CONST(0.634393274784088) }, - { FRAC_CONST(-0.803207635879517), FRAC_CONST(0.595699131488800) }, - { FRAC_CONST(-0.831469655036926), FRAC_CONST(0.555570185184479) }, - { FRAC_CONST(-0.857728600502014), FRAC_CONST(0.514102756977081) }, - { FRAC_CONST(-0.881921350955963), FRAC_CONST(0.471396625041962) }, - { FRAC_CONST(-0.903989315032959), FRAC_CONST(0.427555054426193) }, - { FRAC_CONST(-0.923879623413086), FRAC_CONST(0.382683277130127) }, - { FRAC_CONST(-0.941544115543365), FRAC_CONST(0.336889803409576) }, - { FRAC_CONST(-0.956940352916718), FRAC_CONST(0.290284723043442) }, - { FRAC_CONST(-0.970031261444092), FRAC_CONST(0.242980077862740) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(-0.989176511764526), FRAC_CONST(0.146730333566666) }, - { FRAC_CONST(-0.995184719562531), FRAC_CONST(0.098017096519470) }, - { FRAC_CONST(-0.998795449733734), FRAC_CONST(0.049067486077547) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.997290432453156), FRAC_CONST(0.073564566671848) }, - { FRAC_CONST(0.989176511764526), FRAC_CONST(0.146730467677116) }, - { FRAC_CONST(0.975702106952667), FRAC_CONST(0.219101235270500) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.932992815971375), FRAC_CONST(0.359895050525665) }, - { FRAC_CONST(0.903989315032959), FRAC_CONST(0.427555084228516) }, - { FRAC_CONST(0.870086967945099), FRAC_CONST(0.492898225784302) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.788346469402313), FRAC_CONST(0.615231573581696) }, - { FRAC_CONST(0.740951120853424), FRAC_CONST(0.671558976173401) }, - { FRAC_CONST(0.689540505409241), FRAC_CONST(0.724247097969055) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.575808227062225), FRAC_CONST(0.817584812641144) }, - { FRAC_CONST(0.514102697372437), FRAC_CONST(0.857728660106659) }, - { FRAC_CONST(0.449611306190491), FRAC_CONST(0.893224298954010) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.313681751489639), FRAC_CONST(0.949528157711029) }, - { FRAC_CONST(0.242980241775513), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(0.170961856842041), FRAC_CONST(0.985277652740479) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(0.024541255086660), FRAC_CONST(0.999698817729950) }, - { FRAC_CONST(-0.049067739397287), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(-0.122410707175732), FRAC_CONST(0.992479503154755) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.266712725162506), FRAC_CONST(0.963776051998138) }, - { FRAC_CONST(-0.336889803409576), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(-0.405241340398788), FRAC_CONST(0.914209723472595) }, - { FRAC_CONST(-0.471396833658218), FRAC_CONST(0.881921231746674) }, - { FRAC_CONST(-0.534997701644897), FRAC_CONST(0.844853520393372) }, - { FRAC_CONST(-0.595699369907379), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(-0.653172850608826), FRAC_CONST(0.757208824157715) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.757208824157715), FRAC_CONST(0.653172850608826) }, - { FRAC_CONST(-0.803207516670227), FRAC_CONST(0.595699369907379) }, - { FRAC_CONST(-0.844853520393372), FRAC_CONST(0.534997701644897) }, - { FRAC_CONST(-0.881921231746674), FRAC_CONST(0.471396833658218) }, - { FRAC_CONST(-0.914209783077240), FRAC_CONST(0.405241221189499) }, - { FRAC_CONST(-0.941544115543365), FRAC_CONST(0.336889803409576) }, - { FRAC_CONST(-0.963776051998138), FRAC_CONST(0.266712725162506) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(-0.992479503154755), FRAC_CONST(0.122410699725151) }, - { FRAC_CONST(-0.998795449733734), FRAC_CONST(0.049067724496126) }, - { FRAC_CONST(-0.999698817729950), FRAC_CONST(-0.024541147053242) }, - { FRAC_CONST(-0.995184719562531), FRAC_CONST(-0.098017267882824) }, - { FRAC_CONST(-0.985277652740479), FRAC_CONST(-0.170961990952492) }, - { FRAC_CONST(-0.970031261444092), FRAC_CONST(-0.242980241775513) }, - { FRAC_CONST(-0.949528157711029), FRAC_CONST(-0.313681781291962) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(-0.893224298954010), FRAC_CONST(-0.449611306190491) }, - { FRAC_CONST(-0.857728660106659), FRAC_CONST(-0.514102697372437) }, - { FRAC_CONST(-0.817584872245789), FRAC_CONST(-0.575808107852936) }, - { FRAC_CONST(-0.773010551929474), FRAC_CONST(-0.634393215179443) }, - { FRAC_CONST(-0.724247038364410), FRAC_CONST(-0.689540624618530) }, - { FRAC_CONST(-0.671558916568756), FRAC_CONST(-0.740951180458069) }, - { FRAC_CONST(-0.615231573581696), FRAC_CONST(-0.788346469402313) }, - { FRAC_CONST(-0.555570006370544), FRAC_CONST(-0.831469774246216) }, - { FRAC_CONST(-0.492898195981979), FRAC_CONST(-0.870086967945099) }, - { FRAC_CONST(-0.427554935216904), FRAC_CONST(-0.903989374637604) }, - { FRAC_CONST(-0.359895110130310), FRAC_CONST(-0.932992756366730) }, - { FRAC_CONST(-0.290284544229507), FRAC_CONST(-0.956940352916718) }, - { FRAC_CONST(-0.219101369380951), FRAC_CONST(-0.975702106952667) }, - { FRAC_CONST(-0.146730408072472), FRAC_CONST(-0.989176511764526) }, - { FRAC_CONST(-0.073564760386944), FRAC_CONST(-0.997290432453156) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.881921231746674), FRAC_CONST(0.471396744251251) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.773010432720184), FRAC_CONST(0.634393334388733) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.471396654844284), FRAC_CONST(0.881921291351318) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.290284633636475), FRAC_CONST(0.956940352916718) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.382683515548706), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.555570363998413), FRAC_CONST(0.831469535827637) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.831469655036926), FRAC_CONST(0.555570185184479) }, - { FRAC_CONST(-0.923879623413086), FRAC_CONST(0.382683277130127) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.471396833658218), FRAC_CONST(0.881921231746674) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.881921231746674), FRAC_CONST(0.471396833658218) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(-0.995184719562531), FRAC_CONST(-0.098017267882824) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(-0.773010551929474), FRAC_CONST(-0.634393215179443) }, - { FRAC_CONST(-0.555570006370544), FRAC_CONST(-0.831469774246216) }, - { FRAC_CONST(-0.290284544229507), FRAC_CONST(-0.956940352916718) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.000000011924881), FRAC_CONST(-1.000000000000000) } -}; - -#ifdef ALLOW_SMALL_FRAMELENGTH -ALIGN static const complex_t cfft_tab_480[] = -{ - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.999914348125458), FRAC_CONST(0.013089596293867) }, - { FRAC_CONST(0.999657332897186), FRAC_CONST(0.026176949962974) }, - { FRAC_CONST(0.999229013919830), FRAC_CONST(0.039259817451239) }, - { FRAC_CONST(0.998629510402679), FRAC_CONST(0.052335958927870) }, - { FRAC_CONST(0.997858941555023), FRAC_CONST(0.065403133630753) }, - { FRAC_CONST(0.996917307376862), FRAC_CONST(0.078459098935127) }, - { FRAC_CONST(0.995804905891418), FRAC_CONST(0.091501623392105) }, - { FRAC_CONST(0.994521915912628), FRAC_CONST(0.104528464376926) }, - { FRAC_CONST(0.993068456649780), FRAC_CONST(0.117537401616573) }, - { FRAC_CONST(0.991444885730743), FRAC_CONST(0.130526199936867) }, - { FRAC_CONST(0.989651381969452), FRAC_CONST(0.143492624163628) }, - { FRAC_CONST(0.987688362598419), FRAC_CONST(0.156434476375580) }, - { FRAC_CONST(0.985556066036224), FRAC_CONST(0.169349506497383) }, - { FRAC_CONST(0.983254909515381), FRAC_CONST(0.182235524058342) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.978147625923157), FRAC_CONST(0.207911700010300) }, - { FRAC_CONST(0.975342333316803), FRAC_CONST(0.220697447657585) }, - { FRAC_CONST(0.972369909286499), FRAC_CONST(0.233445376157761) }, - { FRAC_CONST(0.969230890274048), FRAC_CONST(0.246153295040131) }, - { FRAC_CONST(0.965925812721252), FRAC_CONST(0.258819043636322) }, - { FRAC_CONST(0.962455213069916), FRAC_CONST(0.271440446376801) }, - { FRAC_CONST(0.958819746971130), FRAC_CONST(0.284015357494354) }, - { FRAC_CONST(0.955019950866699), FRAC_CONST(0.296541601419449) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.946930110454559), FRAC_CONST(0.321439445018768) }, - { FRAC_CONST(0.942641496658325), FRAC_CONST(0.333806872367859) }, - { FRAC_CONST(0.938191354274750), FRAC_CONST(0.346117079257965) }, - { FRAC_CONST(0.933580398559570), FRAC_CONST(0.358367949724197) }, - { FRAC_CONST(0.928809583187103), FRAC_CONST(0.370557427406311) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.918791174888611), FRAC_CONST(0.394743889570236) }, - { FRAC_CONST(0.913545429706573), FRAC_CONST(0.406736642122269) }, - { FRAC_CONST(0.908143162727356), FRAC_CONST(0.418659746646881) }, - { FRAC_CONST(0.902585268020630), FRAC_CONST(0.430511116981506) }, - { FRAC_CONST(0.896872758865356), FRAC_CONST(0.442288726568222) }, - { FRAC_CONST(0.891006529331207), FRAC_CONST(0.453990519046783) }, - { FRAC_CONST(0.884987652301788), FRAC_CONST(0.465614527463913) }, - { FRAC_CONST(0.878817081451416), FRAC_CONST(0.477158784866333) }, - { FRAC_CONST(0.872496008872986), FRAC_CONST(0.488621264696121) }, - { FRAC_CONST(0.866025388240814), FRAC_CONST(0.500000000000000) }, - { FRAC_CONST(0.859406411647797), FRAC_CONST(0.511293113231659) }, - { FRAC_CONST(0.852640151977539), FRAC_CONST(0.522498548030853) }, - { FRAC_CONST(0.845727801322937), FRAC_CONST(0.533614516258240) }, - { FRAC_CONST(0.838670551776886), FRAC_CONST(0.544639050960541) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.824126183986664), FRAC_CONST(0.566406250000000) }, - { FRAC_CONST(0.816641509532928), FRAC_CONST(0.577145218849182) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.801253795623779), FRAC_CONST(0.598324596881866) }, - { FRAC_CONST(0.793353319168091), FRAC_CONST(0.608761429786682) }, - { FRAC_CONST(0.785316884517670), FRAC_CONST(0.619093954563141) }, - { FRAC_CONST(0.777145922183990), FRAC_CONST(0.629320383071899) }, - { FRAC_CONST(0.768841803073883), FRAC_CONST(0.639438986778259) }, - { FRAC_CONST(0.760405957698822), FRAC_CONST(0.649448096752167) }, - { FRAC_CONST(0.751839756965637), FRAC_CONST(0.659345865249634) }, - { FRAC_CONST(0.743144810199738), FRAC_CONST(0.669130623340607) }, - { FRAC_CONST(0.734322488307953), FRAC_CONST(0.678800761699677) }, - { FRAC_CONST(0.725374400615692), FRAC_CONST(0.688354551792145) }, - { FRAC_CONST(0.716301918029785), FRAC_CONST(0.697790503501892) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.697790443897247), FRAC_CONST(0.716301977634430) }, - { FRAC_CONST(0.688354551792145), FRAC_CONST(0.725374400615692) }, - { FRAC_CONST(0.678800702095032), FRAC_CONST(0.734322547912598) }, - { FRAC_CONST(0.669130563735962), FRAC_CONST(0.743144869804382) }, - { FRAC_CONST(0.659345805644989), FRAC_CONST(0.751839816570282) }, - { FRAC_CONST(0.649448037147522), FRAC_CONST(0.760405957698822) }, - { FRAC_CONST(0.639438986778259), FRAC_CONST(0.768841862678528) }, - { FRAC_CONST(0.629320383071899), FRAC_CONST(0.777145981788635) }, - { FRAC_CONST(0.619093954563141), FRAC_CONST(0.785316944122314) }, - { FRAC_CONST(0.608761370182037), FRAC_CONST(0.793353378772736) }, - { FRAC_CONST(0.598324596881866), FRAC_CONST(0.801253855228424) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.577145159244537), FRAC_CONST(0.816641569137573) }, - { FRAC_CONST(0.566406250000000), FRAC_CONST(0.824126183986664) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.544638991355896), FRAC_CONST(0.838670611381531) }, - { FRAC_CONST(0.533614516258240), FRAC_CONST(0.845727801322937) }, - { FRAC_CONST(0.522498488426209), FRAC_CONST(0.852640211582184) }, - { FRAC_CONST(0.511293113231659), FRAC_CONST(0.859406411647797) }, - { FRAC_CONST(0.499999970197678), FRAC_CONST(0.866025447845459) }, - { FRAC_CONST(0.488621175289154), FRAC_CONST(0.872496068477631) }, - { FRAC_CONST(0.477158755064011), FRAC_CONST(0.878817141056061) }, - { FRAC_CONST(0.465614467859268), FRAC_CONST(0.884987652301788) }, - { FRAC_CONST(0.453990519046783), FRAC_CONST(0.891006529331207) }, - { FRAC_CONST(0.442288666963577), FRAC_CONST(0.896872758865356) }, - { FRAC_CONST(0.430511027574539), FRAC_CONST(0.902585327625275) }, - { FRAC_CONST(0.418659746646881), FRAC_CONST(0.908143162727356) }, - { FRAC_CONST(0.406736612319946), FRAC_CONST(0.913545489311218) }, - { FRAC_CONST(0.394743800163269), FRAC_CONST(0.918791234493256) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.370557397603989), FRAC_CONST(0.928809583187103) }, - { FRAC_CONST(0.358367860317230), FRAC_CONST(0.933580458164215) }, - { FRAC_CONST(0.346117049455643), FRAC_CONST(0.938191354274750) }, - { FRAC_CONST(0.333806812763214), FRAC_CONST(0.942641496658325) }, - { FRAC_CONST(0.321439474821091), FRAC_CONST(0.946930110454559) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(0.296541512012482), FRAC_CONST(0.955019950866699) }, - { FRAC_CONST(0.284015327692032), FRAC_CONST(0.958819746971130) }, - { FRAC_CONST(0.271440386772156), FRAC_CONST(0.962455272674561) }, - { FRAC_CONST(0.258819073438644), FRAC_CONST(0.965925812721252) }, - { FRAC_CONST(0.246153265237808), FRAC_CONST(0.969230890274048) }, - { FRAC_CONST(0.233445301651955), FRAC_CONST(0.972369909286499) }, - { FRAC_CONST(0.220697447657585), FRAC_CONST(0.975342333316803) }, - { FRAC_CONST(0.207911655306816), FRAC_CONST(0.978147625923157) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(0.182235524058342), FRAC_CONST(0.983254909515381) }, - { FRAC_CONST(0.169349446892738), FRAC_CONST(0.985556066036224) }, - { FRAC_CONST(0.156434372067451), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(0.143492594361305), FRAC_CONST(0.989651381969452) }, - { FRAC_CONST(0.130526125431061), FRAC_CONST(0.991444885730743) }, - { FRAC_CONST(0.117537401616573), FRAC_CONST(0.993068456649780) }, - { FRAC_CONST(0.104528419673443), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(0.091501533985138), FRAC_CONST(0.995804905891418) }, - { FRAC_CONST(0.078459084033966), FRAC_CONST(0.996917307376862) }, - { FRAC_CONST(0.065403074026108), FRAC_CONST(0.997858941555023) }, - { FRAC_CONST(0.052335973829031), FRAC_CONST(0.998629510402679) }, - { FRAC_CONST(0.039259787648916), FRAC_CONST(0.999229013919830) }, - { FRAC_CONST(0.026176875457168), FRAC_CONST(0.999657332897186) }, - { FRAC_CONST(0.013089597225189), FRAC_CONST(0.999914348125458) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.013089684769511), FRAC_CONST(0.999914348125458) }, - { FRAC_CONST(-0.026176963001490), FRAC_CONST(0.999657332897186) }, - { FRAC_CONST(-0.039259877055883), FRAC_CONST(0.999229013919830) }, - { FRAC_CONST(-0.052336059510708), FRAC_CONST(0.998629510402679) }, - { FRAC_CONST(-0.065403163433075), FRAC_CONST(0.997858941555023) }, - { FRAC_CONST(-0.078459173440933), FRAC_CONST(0.996917307376862) }, - { FRAC_CONST(-0.091501623392105), FRAC_CONST(0.995804905891418) }, - { FRAC_CONST(-0.104528509080410), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(-0.117537491023541), FRAC_CONST(0.993068456649780) }, - { FRAC_CONST(-0.130526214838028), FRAC_CONST(0.991444885730743) }, - { FRAC_CONST(-0.143492683768272), FRAC_CONST(0.989651381969452) }, - { FRAC_CONST(-0.156434446573257), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(-0.169349536299706), FRAC_CONST(0.985556066036224) }, - { FRAC_CONST(-0.182235598564148), FRAC_CONST(0.983254909515381) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.207911744713783), FRAC_CONST(0.978147566318512) }, - { FRAC_CONST(-0.220697522163391), FRAC_CONST(0.975342273712158) }, - { FRAC_CONST(-0.233445391058922), FRAC_CONST(0.972369909286499) }, - { FRAC_CONST(-0.246153354644775), FRAC_CONST(0.969230890274048) }, - { FRAC_CONST(-0.258819162845612), FRAC_CONST(0.965925812721252) }, - { FRAC_CONST(-0.271440476179123), FRAC_CONST(0.962455213069916) }, - { FRAC_CONST(-0.284015417098999), FRAC_CONST(0.958819687366486) }, - { FRAC_CONST(-0.296541571617126), FRAC_CONST(0.955019950866699) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.321439564228058), FRAC_CONST(0.946930110454559) }, - { FRAC_CONST(-0.333806872367859), FRAC_CONST(0.942641496658325) }, - { FRAC_CONST(-0.346117109060287), FRAC_CONST(0.938191294670105) }, - { FRAC_CONST(-0.358367949724197), FRAC_CONST(0.933580458164215) }, - { FRAC_CONST(-0.370557487010956), FRAC_CONST(0.928809523582459) }, - { FRAC_CONST(-0.382683515548706), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.394743859767914), FRAC_CONST(0.918791234493256) }, - { FRAC_CONST(-0.406736701726913), FRAC_CONST(0.913545429706573) }, - { FRAC_CONST(-0.418659836053848), FRAC_CONST(0.908143103122711) }, - { FRAC_CONST(-0.430511116981506), FRAC_CONST(0.902585268020630) }, - { FRAC_CONST(-0.442288637161255), FRAC_CONST(0.896872758865356) }, - { FRAC_CONST(-0.453990608453751), FRAC_CONST(0.891006469726563) }, - { FRAC_CONST(-0.465614557266235), FRAC_CONST(0.884987592697144) }, - { FRAC_CONST(-0.477158725261688), FRAC_CONST(0.878817141056061) }, - { FRAC_CONST(-0.488621354103088), FRAC_CONST(0.872495949268341) }, - { FRAC_CONST(-0.500000059604645), FRAC_CONST(0.866025388240814) }, - { FRAC_CONST(-0.511293053627014), FRAC_CONST(0.859406411647797) }, - { FRAC_CONST(-0.522498667240143), FRAC_CONST(0.852640092372894) }, - { FRAC_CONST(-0.533614575862885), FRAC_CONST(0.845727801322937) }, - { FRAC_CONST(-0.544639050960541), FRAC_CONST(0.838670551776886) }, - { FRAC_CONST(-0.555570363998413), FRAC_CONST(0.831469535827637) }, - { FRAC_CONST(-0.566406309604645), FRAC_CONST(0.824126124382019) }, - { FRAC_CONST(-0.577145218849182), FRAC_CONST(0.816641569137573) }, - { FRAC_CONST(-0.587785184383392), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(-0.598324656486511), FRAC_CONST(0.801253736019135) }, - { FRAC_CONST(-0.608761429786682), FRAC_CONST(0.793353319168091) }, - { FRAC_CONST(-0.619093894958496), FRAC_CONST(0.785316944122314) }, - { FRAC_CONST(-0.629320502281189), FRAC_CONST(0.777145862579346) }, - { FRAC_CONST(-0.639439046382904), FRAC_CONST(0.768841803073883) }, - { FRAC_CONST(-0.649448037147522), FRAC_CONST(0.760405957698822) }, - { FRAC_CONST(-0.659345924854279), FRAC_CONST(0.751839697360992) }, - { FRAC_CONST(-0.669130682945251), FRAC_CONST(0.743144810199738) }, - { FRAC_CONST(-0.678800761699677), FRAC_CONST(0.734322488307953) }, - { FRAC_CONST(-0.688354671001434), FRAC_CONST(0.725374281406403) }, - { FRAC_CONST(-0.697790503501892), FRAC_CONST(0.716301858425140) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.716302037239075), FRAC_CONST(0.697790324687958) }, - { FRAC_CONST(-0.725374460220337), FRAC_CONST(0.688354492187500) }, - { FRAC_CONST(-0.734322547912598), FRAC_CONST(0.678800702095032) }, - { FRAC_CONST(-0.743144929409027), FRAC_CONST(0.669130444526672) }, - { FRAC_CONST(-0.751839876174927), FRAC_CONST(0.659345746040344) }, - { FRAC_CONST(-0.760406017303467), FRAC_CONST(0.649448037147522) }, - { FRAC_CONST(-0.768841803073883), FRAC_CONST(0.639439046382904) }, - { FRAC_CONST(-0.777146041393280), FRAC_CONST(0.629320263862610) }, - { FRAC_CONST(-0.785316944122314), FRAC_CONST(0.619093894958496) }, - { FRAC_CONST(-0.793353319168091), FRAC_CONST(0.608761429786682) }, - { FRAC_CONST(-0.801253914833069), FRAC_CONST(0.598324477672577) }, - { FRAC_CONST(-0.809017062187195), FRAC_CONST(0.587785184383392) }, - { FRAC_CONST(-0.816641569137573), FRAC_CONST(0.577145218849182) }, - { FRAC_CONST(-0.824126303195953), FRAC_CONST(0.566406130790710) }, - { FRAC_CONST(-0.831469655036926), FRAC_CONST(0.555570185184479) }, - { FRAC_CONST(-0.838670551776886), FRAC_CONST(0.544639050960541) }, - { FRAC_CONST(-0.845727920532227), FRAC_CONST(0.533614337444305) }, - { FRAC_CONST(-0.852640211582184), FRAC_CONST(0.522498488426209) }, - { FRAC_CONST(-0.859406411647797), FRAC_CONST(0.511293053627014) }, - { FRAC_CONST(-0.866025388240814), FRAC_CONST(0.500000059604645) }, - { FRAC_CONST(-0.872496068477631), FRAC_CONST(0.488621145486832) }, - { FRAC_CONST(-0.878817141056061), FRAC_CONST(0.477158725261688) }, - { FRAC_CONST(-0.884987652301788), FRAC_CONST(0.465614557266235) }, - { FRAC_CONST(-0.891006588935852), FRAC_CONST(0.453990370035172) }, - { FRAC_CONST(-0.896872758865356), FRAC_CONST(0.442288637161255) }, - { FRAC_CONST(-0.902585268020630), FRAC_CONST(0.430511116981506) }, - { FRAC_CONST(-0.908143222332001), FRAC_CONST(0.418659597635269) }, - { FRAC_CONST(-0.913545489311218), FRAC_CONST(0.406736582517624) }, - { FRAC_CONST(-0.918791234493256), FRAC_CONST(0.394743859767914) }, - { FRAC_CONST(-0.923879623413086), FRAC_CONST(0.382683277130127) }, - { FRAC_CONST(-0.928809583187103), FRAC_CONST(0.370557337999344) }, - { FRAC_CONST(-0.933580458164215), FRAC_CONST(0.358367919921875) }, - { FRAC_CONST(-0.938191413879395), FRAC_CONST(0.346116900444031) }, - { FRAC_CONST(-0.942641556262970), FRAC_CONST(0.333806753158569) }, - { FRAC_CONST(-0.946930170059204), FRAC_CONST(0.321439445018768) }, - { FRAC_CONST(-0.951056599617004), FRAC_CONST(0.309016793966293) }, - { FRAC_CONST(-0.955020010471344), FRAC_CONST(0.296541452407837) }, - { FRAC_CONST(-0.958819746971130), FRAC_CONST(0.284015297889709) }, - { FRAC_CONST(-0.962455213069916), FRAC_CONST(0.271440476179123) }, - { FRAC_CONST(-0.965925872325897), FRAC_CONST(0.258818924427032) }, - { FRAC_CONST(-0.969230949878693), FRAC_CONST(0.246153235435486) }, - { FRAC_CONST(-0.972369909286499), FRAC_CONST(0.233445376157761) }, - { FRAC_CONST(-0.975342333316803), FRAC_CONST(0.220697283744812) }, - { FRAC_CONST(-0.978147625923157), FRAC_CONST(0.207911610603333) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(-0.983254909515381), FRAC_CONST(0.182235360145569) }, - { FRAC_CONST(-0.985556066036224), FRAC_CONST(0.169349402189255) }, - { FRAC_CONST(-0.987688362598419), FRAC_CONST(0.156434446573257) }, - { FRAC_CONST(-0.989651441574097), FRAC_CONST(0.143492430448532) }, - { FRAC_CONST(-0.991444885730743), FRAC_CONST(0.130526080727577) }, - { FRAC_CONST(-0.993068456649780), FRAC_CONST(0.117537356913090) }, - { FRAC_CONST(-0.994521915912628), FRAC_CONST(0.104528494179249) }, - { FRAC_CONST(-0.995804965496063), FRAC_CONST(0.091501489281654) }, - { FRAC_CONST(-0.996917366981506), FRAC_CONST(0.078459039330482) }, - { FRAC_CONST(-0.997858941555023), FRAC_CONST(0.065403148531914) }, - { FRAC_CONST(-0.998629570007324), FRAC_CONST(0.052335809916258) }, - { FRAC_CONST(-0.999229013919830), FRAC_CONST(0.039259742945433) }, - { FRAC_CONST(-0.999657332897186), FRAC_CONST(0.026176951825619) }, - { FRAC_CONST(-0.999914348125458), FRAC_CONST(0.013089434243739) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.999657332897186), FRAC_CONST(0.026176949962974) }, - { FRAC_CONST(0.998629510402679), FRAC_CONST(0.052335958927870) }, - { FRAC_CONST(0.996917307376862), FRAC_CONST(0.078459098935127) }, - { FRAC_CONST(0.994521915912628), FRAC_CONST(0.104528464376926) }, - { FRAC_CONST(0.991444885730743), FRAC_CONST(0.130526199936867) }, - { FRAC_CONST(0.987688362598419), FRAC_CONST(0.156434476375580) }, - { FRAC_CONST(0.983254909515381), FRAC_CONST(0.182235524058342) }, - { FRAC_CONST(0.978147625923157), FRAC_CONST(0.207911700010300) }, - { FRAC_CONST(0.972369909286499), FRAC_CONST(0.233445376157761) }, - { FRAC_CONST(0.965925812721252), FRAC_CONST(0.258819043636322) }, - { FRAC_CONST(0.958819746971130), FRAC_CONST(0.284015357494354) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.942641496658325), FRAC_CONST(0.333806872367859) }, - { FRAC_CONST(0.933580398559570), FRAC_CONST(0.358367949724197) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.913545429706573), FRAC_CONST(0.406736642122269) }, - { FRAC_CONST(0.902585268020630), FRAC_CONST(0.430511116981506) }, - { FRAC_CONST(0.891006529331207), FRAC_CONST(0.453990519046783) }, - { FRAC_CONST(0.878817081451416), FRAC_CONST(0.477158784866333) }, - { FRAC_CONST(0.866025388240814), FRAC_CONST(0.500000000000000) }, - { FRAC_CONST(0.852640151977539), FRAC_CONST(0.522498548030853) }, - { FRAC_CONST(0.838670551776886), FRAC_CONST(0.544639050960541) }, - { FRAC_CONST(0.824126183986664), FRAC_CONST(0.566406250000000) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.793353319168091), FRAC_CONST(0.608761429786682) }, - { FRAC_CONST(0.777145922183990), FRAC_CONST(0.629320383071899) }, - { FRAC_CONST(0.760405957698822), FRAC_CONST(0.649448096752167) }, - { FRAC_CONST(0.743144810199738), FRAC_CONST(0.669130623340607) }, - { FRAC_CONST(0.725374400615692), FRAC_CONST(0.688354551792145) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.688354551792145), FRAC_CONST(0.725374400615692) }, - { FRAC_CONST(0.669130563735962), FRAC_CONST(0.743144869804382) }, - { FRAC_CONST(0.649448037147522), FRAC_CONST(0.760405957698822) }, - { FRAC_CONST(0.629320383071899), FRAC_CONST(0.777145981788635) }, - { FRAC_CONST(0.608761370182037), FRAC_CONST(0.793353378772736) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.566406250000000), FRAC_CONST(0.824126183986664) }, - { FRAC_CONST(0.544638991355896), FRAC_CONST(0.838670611381531) }, - { FRAC_CONST(0.522498488426209), FRAC_CONST(0.852640211582184) }, - { FRAC_CONST(0.499999970197678), FRAC_CONST(0.866025447845459) }, - { FRAC_CONST(0.477158755064011), FRAC_CONST(0.878817141056061) }, - { FRAC_CONST(0.453990519046783), FRAC_CONST(0.891006529331207) }, - { FRAC_CONST(0.430511027574539), FRAC_CONST(0.902585327625275) }, - { FRAC_CONST(0.406736612319946), FRAC_CONST(0.913545489311218) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.358367860317230), FRAC_CONST(0.933580458164215) }, - { FRAC_CONST(0.333806812763214), FRAC_CONST(0.942641496658325) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(0.284015327692032), FRAC_CONST(0.958819746971130) }, - { FRAC_CONST(0.258819073438644), FRAC_CONST(0.965925812721252) }, - { FRAC_CONST(0.233445301651955), FRAC_CONST(0.972369909286499) }, - { FRAC_CONST(0.207911655306816), FRAC_CONST(0.978147625923157) }, - { FRAC_CONST(0.182235524058342), FRAC_CONST(0.983254909515381) }, - { FRAC_CONST(0.156434372067451), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(0.130526125431061), FRAC_CONST(0.991444885730743) }, - { FRAC_CONST(0.104528419673443), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(0.078459084033966), FRAC_CONST(0.996917307376862) }, - { FRAC_CONST(0.052335973829031), FRAC_CONST(0.998629510402679) }, - { FRAC_CONST(0.026176875457168), FRAC_CONST(0.999657332897186) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.026176963001490), FRAC_CONST(0.999657332897186) }, - { FRAC_CONST(-0.052336059510708), FRAC_CONST(0.998629510402679) }, - { FRAC_CONST(-0.078459173440933), FRAC_CONST(0.996917307376862) }, - { FRAC_CONST(-0.104528509080410), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(-0.130526214838028), FRAC_CONST(0.991444885730743) }, - { FRAC_CONST(-0.156434446573257), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(-0.182235598564148), FRAC_CONST(0.983254909515381) }, - { FRAC_CONST(-0.207911744713783), FRAC_CONST(0.978147566318512) }, - { FRAC_CONST(-0.233445391058922), FRAC_CONST(0.972369909286499) }, - { FRAC_CONST(-0.258819162845612), FRAC_CONST(0.965925812721252) }, - { FRAC_CONST(-0.284015417098999), FRAC_CONST(0.958819687366486) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.333806872367859), FRAC_CONST(0.942641496658325) }, - { FRAC_CONST(-0.358367949724197), FRAC_CONST(0.933580458164215) }, - { FRAC_CONST(-0.382683515548706), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.406736701726913), FRAC_CONST(0.913545429706573) }, - { FRAC_CONST(-0.430511116981506), FRAC_CONST(0.902585268020630) }, - { FRAC_CONST(-0.453990608453751), FRAC_CONST(0.891006469726563) }, - { FRAC_CONST(-0.477158725261688), FRAC_CONST(0.878817141056061) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.998629510402679), FRAC_CONST(0.052335958927870) }, - { FRAC_CONST(0.994521915912628), FRAC_CONST(0.104528464376926) }, - { FRAC_CONST(0.987688362598419), FRAC_CONST(0.156434476375580) }, - { FRAC_CONST(0.978147625923157), FRAC_CONST(0.207911700010300) }, - { FRAC_CONST(0.965925812721252), FRAC_CONST(0.258819043636322) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.933580398559570), FRAC_CONST(0.358367949724197) }, - { FRAC_CONST(0.913545429706573), FRAC_CONST(0.406736642122269) }, - { FRAC_CONST(0.891006529331207), FRAC_CONST(0.453990519046783) }, - { FRAC_CONST(0.866025388240814), FRAC_CONST(0.500000000000000) }, - { FRAC_CONST(0.838670551776886), FRAC_CONST(0.544639050960541) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.777145922183990), FRAC_CONST(0.629320383071899) }, - { FRAC_CONST(0.743144810199738), FRAC_CONST(0.669130623340607) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.669130563735962), FRAC_CONST(0.743144869804382) }, - { FRAC_CONST(0.629320383071899), FRAC_CONST(0.777145981788635) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.544638991355896), FRAC_CONST(0.838670611381531) }, - { FRAC_CONST(0.499999970197678), FRAC_CONST(0.866025447845459) }, - { FRAC_CONST(0.453990519046783), FRAC_CONST(0.891006529331207) }, - { FRAC_CONST(0.406736612319946), FRAC_CONST(0.913545489311218) }, - { FRAC_CONST(0.358367860317230), FRAC_CONST(0.933580458164215) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(0.258819073438644), FRAC_CONST(0.965925812721252) }, - { FRAC_CONST(0.207911655306816), FRAC_CONST(0.978147625923157) }, - { FRAC_CONST(0.156434372067451), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(0.104528419673443), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(0.052335973829031), FRAC_CONST(0.998629510402679) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.052336059510708), FRAC_CONST(0.998629510402679) }, - { FRAC_CONST(-0.104528509080410), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(-0.156434446573257), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(-0.207911744713783), FRAC_CONST(0.978147566318512) }, - { FRAC_CONST(-0.258819162845612), FRAC_CONST(0.965925812721252) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.358367949724197), FRAC_CONST(0.933580458164215) }, - { FRAC_CONST(-0.406736701726913), FRAC_CONST(0.913545429706573) }, - { FRAC_CONST(-0.453990608453751), FRAC_CONST(0.891006469726563) }, - { FRAC_CONST(-0.500000059604645), FRAC_CONST(0.866025388240814) }, - { FRAC_CONST(-0.544639050960541), FRAC_CONST(0.838670551776886) }, - { FRAC_CONST(-0.587785184383392), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(-0.629320502281189), FRAC_CONST(0.777145862579346) }, - { FRAC_CONST(-0.669130682945251), FRAC_CONST(0.743144810199738) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.743144929409027), FRAC_CONST(0.669130444526672) }, - { FRAC_CONST(-0.777146041393280), FRAC_CONST(0.629320263862610) }, - { FRAC_CONST(-0.809017062187195), FRAC_CONST(0.587785184383392) }, - { FRAC_CONST(-0.838670551776886), FRAC_CONST(0.544639050960541) }, - { FRAC_CONST(-0.866025388240814), FRAC_CONST(0.500000059604645) }, - { FRAC_CONST(-0.891006588935852), FRAC_CONST(0.453990370035172) }, - { FRAC_CONST(-0.913545489311218), FRAC_CONST(0.406736582517624) }, - { FRAC_CONST(-0.933580458164215), FRAC_CONST(0.358367919921875) }, - { FRAC_CONST(-0.951056599617004), FRAC_CONST(0.309016793966293) }, - { FRAC_CONST(-0.965925872325897), FRAC_CONST(0.258818924427032) }, - { FRAC_CONST(-0.978147625923157), FRAC_CONST(0.207911610603333) }, - { FRAC_CONST(-0.987688362598419), FRAC_CONST(0.156434446573257) }, - { FRAC_CONST(-0.994521915912628), FRAC_CONST(0.104528494179249) }, - { FRAC_CONST(-0.998629570007324), FRAC_CONST(0.052335809916258) }, - { FRAC_CONST(-1.000000000000000), FRAC_CONST(-0.000000087422777) }, - { FRAC_CONST(-0.998629510402679), FRAC_CONST(-0.052335985004902) }, - { FRAC_CONST(-0.994521856307983), FRAC_CONST(-0.104528672993183) }, - { FRAC_CONST(-0.987688302993774), FRAC_CONST(-0.156434610486031) }, - { FRAC_CONST(-0.978147566318512), FRAC_CONST(-0.207911789417267) }, - { FRAC_CONST(-0.965925812721252), FRAC_CONST(-0.258819073438644) }, - { FRAC_CONST(-0.951056540012360), FRAC_CONST(-0.309016972780228) }, - { FRAC_CONST(-0.933580398559570), FRAC_CONST(-0.358368098735809) }, - { FRAC_CONST(-0.913545429706573), FRAC_CONST(-0.406736731529236) }, - { FRAC_CONST(-0.891006529331207), FRAC_CONST(-0.453990548849106) }, - { FRAC_CONST(-0.866025269031525), FRAC_CONST(-0.500000178813934) }, - { FRAC_CONST(-0.838670492172241), FRAC_CONST(-0.544639170169830) }, - { FRAC_CONST(-0.809016942977905), FRAC_CONST(-0.587785363197327) }, - { FRAC_CONST(-0.777145922183990), FRAC_CONST(-0.629320442676544) }, - { FRAC_CONST(-0.743144810199738), FRAC_CONST(-0.669130623340607) }, - { FRAC_CONST(-0.707106649875641), FRAC_CONST(-0.707106888294220) }, - { FRAC_CONST(-0.669130504131317), FRAC_CONST(-0.743144869804382) }, - { FRAC_CONST(-0.629320323467255), FRAC_CONST(-0.777145981788635) }, - { FRAC_CONST(-0.587785065174103), FRAC_CONST(-0.809017121791840) }, - { FRAC_CONST(-0.544639110565186), FRAC_CONST(-0.838670551776886) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.996917307376862), FRAC_CONST(0.078459098935127) }, - { FRAC_CONST(0.987688362598419), FRAC_CONST(0.156434476375580) }, - { FRAC_CONST(0.972369909286499), FRAC_CONST(0.233445376157761) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.891006529331207), FRAC_CONST(0.453990519046783) }, - { FRAC_CONST(0.852640151977539), FRAC_CONST(0.522498548030853) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.760405957698822), FRAC_CONST(0.649448096752167) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.649448037147522), FRAC_CONST(0.760405957698822) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.522498488426209), FRAC_CONST(0.852640211582184) }, - { FRAC_CONST(0.453990519046783), FRAC_CONST(0.891006529331207) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(0.233445301651955), FRAC_CONST(0.972369909286499) }, - { FRAC_CONST(0.156434372067451), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(0.078459084033966), FRAC_CONST(0.996917307376862) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.987688362598419), FRAC_CONST(0.156434476375580) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.891006529331207), FRAC_CONST(0.453990519046783) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.453990519046783), FRAC_CONST(0.891006529331207) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(0.156434372067451), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.156434446573257), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.453990608453751), FRAC_CONST(0.891006469726563) }, - { FRAC_CONST(-0.587785184383392), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.809017062187195), FRAC_CONST(0.587785184383392) }, - { FRAC_CONST(-0.891006588935852), FRAC_CONST(0.453990370035172) }, - { FRAC_CONST(-0.951056599617004), FRAC_CONST(0.309016793966293) }, - { FRAC_CONST(-0.987688362598419), FRAC_CONST(0.156434446573257) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.972369909286499), FRAC_CONST(0.233445376157761) }, - { FRAC_CONST(0.891006529331207), FRAC_CONST(0.453990519046783) }, - { FRAC_CONST(0.760405957698822), FRAC_CONST(0.649448096752167) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.156434372067451), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(-0.078459173440933), FRAC_CONST(0.996917307376862) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.522498667240143), FRAC_CONST(0.852640092372894) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.852640211582184), FRAC_CONST(0.522498488426209) }, - { FRAC_CONST(-0.951056599617004), FRAC_CONST(0.309016793966293) }, - { FRAC_CONST(-0.996917366981506), FRAC_CONST(0.078459039330482) }, - { FRAC_CONST(-0.987688302993774), FRAC_CONST(-0.156434610486031) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(-0.809016942977905), FRAC_CONST(-0.587785363197327) }, - { FRAC_CONST(-0.649447917938232), FRAC_CONST(-0.760406076908112) }, - { FRAC_CONST(-0.453990221023560), FRAC_CONST(-0.891006648540497) }, - { FRAC_CONST(-0.233445450663567), FRAC_CONST(-0.972369909286499) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.809017062187195), FRAC_CONST(0.587785184383392) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.951056599617004), FRAC_CONST(0.309016793966293) }, - { FRAC_CONST(-0.809016942977905), FRAC_CONST(-0.587785363197327) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.309017121791840), FRAC_CONST(-0.951056480407715) } -}; -#endif - -ALIGN static const complex_t cfft_tab_64[] ICONST_ATTR = -{ - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.881921231746674), FRAC_CONST(0.471396744251251) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.773010432720184), FRAC_CONST(0.634393334388733) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.471396654844284), FRAC_CONST(0.881921291351318) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.290284633636475), FRAC_CONST(0.956940352916718) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.382683515548706), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.555570363998413), FRAC_CONST(0.831469535827637) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.831469655036926), FRAC_CONST(0.555570185184479) }, - { FRAC_CONST(-0.923879623413086), FRAC_CONST(0.382683277130127) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.471396833658218), FRAC_CONST(0.881921231746674) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.881921231746674), FRAC_CONST(0.471396833658218) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(-0.995184719562531), FRAC_CONST(-0.098017267882824) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(-0.773010551929474), FRAC_CONST(-0.634393215179443) }, - { FRAC_CONST(-0.555570006370544), FRAC_CONST(-0.831469774246216) }, - { FRAC_CONST(-0.290284544229507), FRAC_CONST(-0.956940352916718) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.000000011924881), FRAC_CONST(-1.000000000000000) } -}; - -#ifdef ALLOW_SMALL_FRAMELENGTH -ALIGN static const complex_t cfft_tab_60[] = -{ - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.994521915912628), FRAC_CONST(0.104528464376926) }, - { FRAC_CONST(0.978147625923157), FRAC_CONST(0.207911700010300) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.913545429706573), FRAC_CONST(0.406736642122269) }, - { FRAC_CONST(0.866025388240814), FRAC_CONST(0.500000000000000) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.743144810199738), FRAC_CONST(0.669130623340607) }, - { FRAC_CONST(0.669130563735962), FRAC_CONST(0.743144869804382) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.499999970197678), FRAC_CONST(0.866025447845459) }, - { FRAC_CONST(0.406736612319946), FRAC_CONST(0.913545489311218) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(0.207911655306816), FRAC_CONST(0.978147625923157) }, - { FRAC_CONST(0.104528419673443), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.104528509080410), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(-0.207911744713783), FRAC_CONST(0.978147566318512) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.406736701726913), FRAC_CONST(0.913545429706573) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.978147625923157), FRAC_CONST(0.207911700010300) }, - { FRAC_CONST(0.913545429706573), FRAC_CONST(0.406736642122269) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.669130563735962), FRAC_CONST(0.743144869804382) }, - { FRAC_CONST(0.499999970197678), FRAC_CONST(0.866025447845459) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(0.104528419673443), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(-0.104528509080410), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.500000059604645), FRAC_CONST(0.866025388240814) }, - { FRAC_CONST(-0.669130682945251), FRAC_CONST(0.743144810199738) }, - { FRAC_CONST(-0.809017062187195), FRAC_CONST(0.587785184383392) }, - { FRAC_CONST(-0.913545489311218), FRAC_CONST(0.406736582517624) }, - { FRAC_CONST(-0.978147625923157), FRAC_CONST(0.207911610603333) }, - { FRAC_CONST(-1.000000000000000), FRAC_CONST(-0.000000087422777) }, - { FRAC_CONST(-0.978147566318512), FRAC_CONST(-0.207911789417267) }, - { FRAC_CONST(-0.913545429706573), FRAC_CONST(-0.406736731529236) }, - { FRAC_CONST(-0.809016942977905), FRAC_CONST(-0.587785363197327) }, - { FRAC_CONST(-0.669130504131317), FRAC_CONST(-0.743144869804382) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.809017062187195), FRAC_CONST(0.587785184383392) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.951056599617004), FRAC_CONST(0.309016793966293) }, - { FRAC_CONST(-0.809016942977905), FRAC_CONST(-0.587785363197327) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.309017121791840), FRAC_CONST(-0.951056480407715) } -}; -#endif - -#ifdef LD_DEC - -ALIGN static const complex_t cfft_tab_256[] = -{ - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.999698817729950), FRAC_CONST(0.024541229009628) }, - { FRAC_CONST(0.998795449733734), FRAC_CONST(0.049067676067352) }, - { FRAC_CONST(0.997290432453156), FRAC_CONST(0.073564566671848) }, - { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) }, - { FRAC_CONST(0.992479562759399), FRAC_CONST(0.122410677373409) }, - { FRAC_CONST(0.989176511764526), FRAC_CONST(0.146730467677116) }, - { FRAC_CONST(0.985277652740479), FRAC_CONST(0.170961901545525) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.975702106952667), FRAC_CONST(0.219101235270500) }, - { FRAC_CONST(0.970031261444092), FRAC_CONST(0.242980197072029) }, - { FRAC_CONST(0.963776051998138), FRAC_CONST(0.266712784767151) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.949528157711029), FRAC_CONST(0.313681751489639) }, - { FRAC_CONST(0.941544055938721), FRAC_CONST(0.336889863014221) }, - { FRAC_CONST(0.932992815971375), FRAC_CONST(0.359895050525665) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.914209723472595), FRAC_CONST(0.405241340398788) }, - { FRAC_CONST(0.903989315032959), FRAC_CONST(0.427555084228516) }, - { FRAC_CONST(0.893224298954010), FRAC_CONST(0.449611335992813) }, - { FRAC_CONST(0.881921231746674), FRAC_CONST(0.471396744251251) }, - { FRAC_CONST(0.870086967945099), FRAC_CONST(0.492898225784302) }, - { FRAC_CONST(0.857728600502014), FRAC_CONST(0.514102756977081) }, - { FRAC_CONST(0.844853579998016), FRAC_CONST(0.534997642040253) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.817584812641144), FRAC_CONST(0.575808227062225) }, - { FRAC_CONST(0.803207516670227), FRAC_CONST(0.595699310302734) }, - { FRAC_CONST(0.788346409797668), FRAC_CONST(0.615231633186340) }, - { FRAC_CONST(0.773010432720184), FRAC_CONST(0.634393334388733) }, - { FRAC_CONST(0.757208824157715), FRAC_CONST(0.653172850608826) }, - { FRAC_CONST(0.740951120853424), FRAC_CONST(0.671558976173401) }, - { FRAC_CONST(0.724247097969055), FRAC_CONST(0.689540565013886) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.689540505409241), FRAC_CONST(0.724247097969055) }, - { FRAC_CONST(0.671558916568756), FRAC_CONST(0.740951180458069) }, - { FRAC_CONST(0.653172791004181), FRAC_CONST(0.757208883762360) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.615231573581696), FRAC_CONST(0.788346409797668) }, - { FRAC_CONST(0.595699310302734), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(0.575808167457581), FRAC_CONST(0.817584812641144) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.534997642040253), FRAC_CONST(0.844853579998016) }, - { FRAC_CONST(0.514102697372437), FRAC_CONST(0.857728660106659) }, - { FRAC_CONST(0.492898195981979), FRAC_CONST(0.870086967945099) }, - { FRAC_CONST(0.471396654844284), FRAC_CONST(0.881921291351318) }, - { FRAC_CONST(0.449611306190491), FRAC_CONST(0.893224298954010) }, - { FRAC_CONST(0.427555114030838), FRAC_CONST(0.903989315032959) }, - { FRAC_CONST(0.405241280794144), FRAC_CONST(0.914209783077240) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.359894961118698), FRAC_CONST(0.932992815971375) }, - { FRAC_CONST(0.336889833211899), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(0.313681662082672), FRAC_CONST(0.949528217315674) }, - { FRAC_CONST(0.290284633636475), FRAC_CONST(0.956940352916718) }, - { FRAC_CONST(0.266712754964828), FRAC_CONST(0.963776051998138) }, - { FRAC_CONST(0.242980122566223), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(0.219101220369339), FRAC_CONST(0.975702106952667) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(0.170961856842041), FRAC_CONST(0.985277652740479) }, - { FRAC_CONST(0.146730497479439), FRAC_CONST(0.989176511764526) }, - { FRAC_CONST(0.122410625219345), FRAC_CONST(0.992479562759399) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(0.073564492166042), FRAC_CONST(0.997290432453156) }, - { FRAC_CONST(0.049067649990320), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(0.024541135877371), FRAC_CONST(0.999698817729950) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.998795449733734), FRAC_CONST(0.049067676067352) }, - { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) }, - { FRAC_CONST(0.989176511764526), FRAC_CONST(0.146730467677116) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.970031261444092), FRAC_CONST(0.242980197072029) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.941544055938721), FRAC_CONST(0.336889863014221) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.903989315032959), FRAC_CONST(0.427555084228516) }, - { FRAC_CONST(0.881921231746674), FRAC_CONST(0.471396744251251) }, - { FRAC_CONST(0.857728600502014), FRAC_CONST(0.514102756977081) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.803207516670227), FRAC_CONST(0.595699310302734) }, - { FRAC_CONST(0.773010432720184), FRAC_CONST(0.634393334388733) }, - { FRAC_CONST(0.740951120853424), FRAC_CONST(0.671558976173401) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.671558916568756), FRAC_CONST(0.740951180458069) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.595699310302734), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.514102697372437), FRAC_CONST(0.857728660106659) }, - { FRAC_CONST(0.471396654844284), FRAC_CONST(0.881921291351318) }, - { FRAC_CONST(0.427555114030838), FRAC_CONST(0.903989315032959) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.336889833211899), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(0.290284633636475), FRAC_CONST(0.956940352916718) }, - { FRAC_CONST(0.242980122566223), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(0.146730497479439), FRAC_CONST(0.989176511764526) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(0.049067649990320), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.049067739397287), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(-0.098017223179340), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(-0.146730571985245), FRAC_CONST(0.989176511764526) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.242980197072029), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(-0.290284723043442), FRAC_CONST(0.956940293312073) }, - { FRAC_CONST(-0.336889922618866), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(-0.382683515548706), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.427555084228516), FRAC_CONST(0.903989315032959) }, - { FRAC_CONST(-0.471396833658218), FRAC_CONST(0.881921231746674) }, - { FRAC_CONST(-0.514102756977081), FRAC_CONST(0.857728600502014) }, - { FRAC_CONST(-0.555570363998413), FRAC_CONST(0.831469535827637) }, - { FRAC_CONST(-0.595699369907379), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(-0.634393274784088), FRAC_CONST(0.773010492324829) }, - { FRAC_CONST(-0.671559035778046), FRAC_CONST(0.740951061248779) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.740951240062714), FRAC_CONST(0.671558856964111) }, - { FRAC_CONST(-0.773010492324829), FRAC_CONST(0.634393274784088) }, - { FRAC_CONST(-0.803207635879517), FRAC_CONST(0.595699131488800) }, - { FRAC_CONST(-0.831469655036926), FRAC_CONST(0.555570185184479) }, - { FRAC_CONST(-0.857728600502014), FRAC_CONST(0.514102756977081) }, - { FRAC_CONST(-0.881921350955963), FRAC_CONST(0.471396625041962) }, - { FRAC_CONST(-0.903989315032959), FRAC_CONST(0.427555054426193) }, - { FRAC_CONST(-0.923879623413086), FRAC_CONST(0.382683277130127) }, - { FRAC_CONST(-0.941544115543365), FRAC_CONST(0.336889803409576) }, - { FRAC_CONST(-0.956940352916718), FRAC_CONST(0.290284723043442) }, - { FRAC_CONST(-0.970031261444092), FRAC_CONST(0.242980077862740) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(-0.989176511764526), FRAC_CONST(0.146730333566666) }, - { FRAC_CONST(-0.995184719562531), FRAC_CONST(0.098017096519470) }, - { FRAC_CONST(-0.998795449733734), FRAC_CONST(0.049067486077547) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.997290432453156), FRAC_CONST(0.073564566671848) }, - { FRAC_CONST(0.989176511764526), FRAC_CONST(0.146730467677116) }, - { FRAC_CONST(0.975702106952667), FRAC_CONST(0.219101235270500) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.932992815971375), FRAC_CONST(0.359895050525665) }, - { FRAC_CONST(0.903989315032959), FRAC_CONST(0.427555084228516) }, - { FRAC_CONST(0.870086967945099), FRAC_CONST(0.492898225784302) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.788346469402313), FRAC_CONST(0.615231573581696) }, - { FRAC_CONST(0.740951120853424), FRAC_CONST(0.671558976173401) }, - { FRAC_CONST(0.689540505409241), FRAC_CONST(0.724247097969055) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.575808227062225), FRAC_CONST(0.817584812641144) }, - { FRAC_CONST(0.514102697372437), FRAC_CONST(0.857728660106659) }, - { FRAC_CONST(0.449611306190491), FRAC_CONST(0.893224298954010) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.313681751489639), FRAC_CONST(0.949528157711029) }, - { FRAC_CONST(0.242980241775513), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(0.170961856842041), FRAC_CONST(0.985277652740479) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(0.024541255086660), FRAC_CONST(0.999698817729950) }, - { FRAC_CONST(-0.049067739397287), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(-0.122410707175732), FRAC_CONST(0.992479503154755) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.266712725162506), FRAC_CONST(0.963776051998138) }, - { FRAC_CONST(-0.336889803409576), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(-0.405241340398788), FRAC_CONST(0.914209723472595) }, - { FRAC_CONST(-0.471396833658218), FRAC_CONST(0.881921231746674) }, - { FRAC_CONST(-0.534997701644897), FRAC_CONST(0.844853520393372) }, - { FRAC_CONST(-0.595699369907379), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(-0.653172850608826), FRAC_CONST(0.757208824157715) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.757208824157715), FRAC_CONST(0.653172850608826) }, - { FRAC_CONST(-0.803207516670227), FRAC_CONST(0.595699369907379) }, - { FRAC_CONST(-0.844853520393372), FRAC_CONST(0.534997701644897) }, - { FRAC_CONST(-0.881921231746674), FRAC_CONST(0.471396833658218) }, - { FRAC_CONST(-0.914209783077240), FRAC_CONST(0.405241221189499) }, - { FRAC_CONST(-0.941544115543365), FRAC_CONST(0.336889803409576) }, - { FRAC_CONST(-0.963776051998138), FRAC_CONST(0.266712725162506) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(-0.992479503154755), FRAC_CONST(0.122410699725151) }, - { FRAC_CONST(-0.998795449733734), FRAC_CONST(0.049067724496126) }, - { FRAC_CONST(-0.999698817729950), FRAC_CONST(-0.024541147053242) }, - { FRAC_CONST(-0.995184719562531), FRAC_CONST(-0.098017267882824) }, - { FRAC_CONST(-0.985277652740479), FRAC_CONST(-0.170961990952492) }, - { FRAC_CONST(-0.970031261444092), FRAC_CONST(-0.242980241775513) }, - { FRAC_CONST(-0.949528157711029), FRAC_CONST(-0.313681781291962) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(-0.893224298954010), FRAC_CONST(-0.449611306190491) }, - { FRAC_CONST(-0.857728660106659), FRAC_CONST(-0.514102697372437) }, - { FRAC_CONST(-0.817584872245789), FRAC_CONST(-0.575808107852936) }, - { FRAC_CONST(-0.773010551929474), FRAC_CONST(-0.634393215179443) }, - { FRAC_CONST(-0.724247038364410), FRAC_CONST(-0.689540624618530) }, - { FRAC_CONST(-0.671558916568756), FRAC_CONST(-0.740951180458069) }, - { FRAC_CONST(-0.615231573581696), FRAC_CONST(-0.788346469402313) }, - { FRAC_CONST(-0.555570006370544), FRAC_CONST(-0.831469774246216) }, - { FRAC_CONST(-0.492898195981979), FRAC_CONST(-0.870086967945099) }, - { FRAC_CONST(-0.427554935216904), FRAC_CONST(-0.903989374637604) }, - { FRAC_CONST(-0.359895110130310), FRAC_CONST(-0.932992756366730) }, - { FRAC_CONST(-0.290284544229507), FRAC_CONST(-0.956940352916718) }, - { FRAC_CONST(-0.219101369380951), FRAC_CONST(-0.975702106952667) }, - { FRAC_CONST(-0.146730408072472), FRAC_CONST(-0.989176511764526) }, - { FRAC_CONST(-0.073564760386944), FRAC_CONST(-0.997290432453156) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.881921231746674), FRAC_CONST(0.471396744251251) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.773010432720184), FRAC_CONST(0.634393334388733) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.471396654844284), FRAC_CONST(0.881921291351318) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.290284633636475), FRAC_CONST(0.956940352916718) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.382683515548706), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.555570363998413), FRAC_CONST(0.831469535827637) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.831469655036926), FRAC_CONST(0.555570185184479) }, - { FRAC_CONST(-0.923879623413086), FRAC_CONST(0.382683277130127) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.471396833658218), FRAC_CONST(0.881921231746674) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.881921231746674), FRAC_CONST(0.471396833658218) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(-0.995184719562531), FRAC_CONST(-0.098017267882824) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(-0.773010551929474), FRAC_CONST(-0.634393215179443) }, - { FRAC_CONST(-0.555570006370544), FRAC_CONST(-0.831469774246216) }, - { FRAC_CONST(-0.290284544229507), FRAC_CONST(-0.956940352916718) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.000000011924881), FRAC_CONST(-1.000000000000000) } -}; - -#ifdef ALLOW_SMALL_FRAMELENGTH -ALIGN static const complex_t cfft_tab_240[] = -{ - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.999657332897186), FRAC_CONST(0.026176949962974) }, - { FRAC_CONST(0.998629510402679), FRAC_CONST(0.052335958927870) }, - { FRAC_CONST(0.996917307376862), FRAC_CONST(0.078459098935127) }, - { FRAC_CONST(0.994521915912628), FRAC_CONST(0.104528464376926) }, - { FRAC_CONST(0.991444885730743), FRAC_CONST(0.130526199936867) }, - { FRAC_CONST(0.987688362598419), FRAC_CONST(0.156434476375580) }, - { FRAC_CONST(0.983254909515381), FRAC_CONST(0.182235524058342) }, - { FRAC_CONST(0.978147625923157), FRAC_CONST(0.207911700010300) }, - { FRAC_CONST(0.972369909286499), FRAC_CONST(0.233445376157761) }, - { FRAC_CONST(0.965925812721252), FRAC_CONST(0.258819043636322) }, - { FRAC_CONST(0.958819746971130), FRAC_CONST(0.284015357494354) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.942641496658325), FRAC_CONST(0.333806872367859) }, - { FRAC_CONST(0.933580398559570), FRAC_CONST(0.358367949724197) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.913545429706573), FRAC_CONST(0.406736642122269) }, - { FRAC_CONST(0.902585268020630), FRAC_CONST(0.430511116981506) }, - { FRAC_CONST(0.891006529331207), FRAC_CONST(0.453990519046783) }, - { FRAC_CONST(0.878817081451416), FRAC_CONST(0.477158784866333) }, - { FRAC_CONST(0.866025388240814), FRAC_CONST(0.500000000000000) }, - { FRAC_CONST(0.852640151977539), FRAC_CONST(0.522498548030853) }, - { FRAC_CONST(0.838670551776886), FRAC_CONST(0.544639050960541) }, - { FRAC_CONST(0.824126183986664), FRAC_CONST(0.566406250000000) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.793353319168091), FRAC_CONST(0.608761429786682) }, - { FRAC_CONST(0.777145922183990), FRAC_CONST(0.629320383071899) }, - { FRAC_CONST(0.760405957698822), FRAC_CONST(0.649448096752167) }, - { FRAC_CONST(0.743144810199738), FRAC_CONST(0.669130623340607) }, - { FRAC_CONST(0.725374400615692), FRAC_CONST(0.688354551792145) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.688354551792145), FRAC_CONST(0.725374400615692) }, - { FRAC_CONST(0.669130563735962), FRAC_CONST(0.743144869804382) }, - { FRAC_CONST(0.649448037147522), FRAC_CONST(0.760405957698822) }, - { FRAC_CONST(0.629320383071899), FRAC_CONST(0.777145981788635) }, - { FRAC_CONST(0.608761370182037), FRAC_CONST(0.793353378772736) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.566406250000000), FRAC_CONST(0.824126183986664) }, - { FRAC_CONST(0.544638991355896), FRAC_CONST(0.838670611381531) }, - { FRAC_CONST(0.522498488426209), FRAC_CONST(0.852640211582184) }, - { FRAC_CONST(0.499999970197678), FRAC_CONST(0.866025447845459) }, - { FRAC_CONST(0.477158755064011), FRAC_CONST(0.878817141056061) }, - { FRAC_CONST(0.453990519046783), FRAC_CONST(0.891006529331207) }, - { FRAC_CONST(0.430511027574539), FRAC_CONST(0.902585327625275) }, - { FRAC_CONST(0.406736612319946), FRAC_CONST(0.913545489311218) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.358367860317230), FRAC_CONST(0.933580458164215) }, - { FRAC_CONST(0.333806812763214), FRAC_CONST(0.942641496658325) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(0.284015327692032), FRAC_CONST(0.958819746971130) }, - { FRAC_CONST(0.258819073438644), FRAC_CONST(0.965925812721252) }, - { FRAC_CONST(0.233445301651955), FRAC_CONST(0.972369909286499) }, - { FRAC_CONST(0.207911655306816), FRAC_CONST(0.978147625923157) }, - { FRAC_CONST(0.182235524058342), FRAC_CONST(0.983254909515381) }, - { FRAC_CONST(0.156434372067451), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(0.130526125431061), FRAC_CONST(0.991444885730743) }, - { FRAC_CONST(0.104528419673443), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(0.078459084033966), FRAC_CONST(0.996917307376862) }, - { FRAC_CONST(0.052335973829031), FRAC_CONST(0.998629510402679) }, - { FRAC_CONST(0.026176875457168), FRAC_CONST(0.999657332897186) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.026176963001490), FRAC_CONST(0.999657332897186) }, - { FRAC_CONST(-0.052336059510708), FRAC_CONST(0.998629510402679) }, - { FRAC_CONST(-0.078459173440933), FRAC_CONST(0.996917307376862) }, - { FRAC_CONST(-0.104528509080410), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(-0.130526214838028), FRAC_CONST(0.991444885730743) }, - { FRAC_CONST(-0.156434446573257), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(-0.182235598564148), FRAC_CONST(0.983254909515381) }, - { FRAC_CONST(-0.207911744713783), FRAC_CONST(0.978147566318512) }, - { FRAC_CONST(-0.233445391058922), FRAC_CONST(0.972369909286499) }, - { FRAC_CONST(-0.258819162845612), FRAC_CONST(0.965925812721252) }, - { FRAC_CONST(-0.284015417098999), FRAC_CONST(0.958819687366486) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.333806872367859), FRAC_CONST(0.942641496658325) }, - { FRAC_CONST(-0.358367949724197), FRAC_CONST(0.933580458164215) }, - { FRAC_CONST(-0.382683515548706), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.406736701726913), FRAC_CONST(0.913545429706573) }, - { FRAC_CONST(-0.430511116981506), FRAC_CONST(0.902585268020630) }, - { FRAC_CONST(-0.453990608453751), FRAC_CONST(0.891006469726563) }, - { FRAC_CONST(-0.477158725261688), FRAC_CONST(0.878817141056061) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.998629510402679), FRAC_CONST(0.052335958927870) }, - { FRAC_CONST(0.994521915912628), FRAC_CONST(0.104528464376926) }, - { FRAC_CONST(0.987688362598419), FRAC_CONST(0.156434476375580) }, - { FRAC_CONST(0.978147625923157), FRAC_CONST(0.207911700010300) }, - { FRAC_CONST(0.965925812721252), FRAC_CONST(0.258819043636322) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.933580398559570), FRAC_CONST(0.358367949724197) }, - { FRAC_CONST(0.913545429706573), FRAC_CONST(0.406736642122269) }, - { FRAC_CONST(0.891006529331207), FRAC_CONST(0.453990519046783) }, - { FRAC_CONST(0.866025388240814), FRAC_CONST(0.500000000000000) }, - { FRAC_CONST(0.838670551776886), FRAC_CONST(0.544639050960541) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.777145922183990), FRAC_CONST(0.629320383071899) }, - { FRAC_CONST(0.743144810199738), FRAC_CONST(0.669130623340607) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.669130563735962), FRAC_CONST(0.743144869804382) }, - { FRAC_CONST(0.629320383071899), FRAC_CONST(0.777145981788635) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.544638991355896), FRAC_CONST(0.838670611381531) }, - { FRAC_CONST(0.499999970197678), FRAC_CONST(0.866025447845459) }, - { FRAC_CONST(0.453990519046783), FRAC_CONST(0.891006529331207) }, - { FRAC_CONST(0.406736612319946), FRAC_CONST(0.913545489311218) }, - { FRAC_CONST(0.358367860317230), FRAC_CONST(0.933580458164215) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(0.258819073438644), FRAC_CONST(0.965925812721252) }, - { FRAC_CONST(0.207911655306816), FRAC_CONST(0.978147625923157) }, - { FRAC_CONST(0.156434372067451), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(0.104528419673443), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(0.052335973829031), FRAC_CONST(0.998629510402679) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.052336059510708), FRAC_CONST(0.998629510402679) }, - { FRAC_CONST(-0.104528509080410), FRAC_CONST(0.994521915912628) }, - { FRAC_CONST(-0.156434446573257), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(-0.207911744713783), FRAC_CONST(0.978147566318512) }, - { FRAC_CONST(-0.258819162845612), FRAC_CONST(0.965925812721252) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.358367949724197), FRAC_CONST(0.933580458164215) }, - { FRAC_CONST(-0.406736701726913), FRAC_CONST(0.913545429706573) }, - { FRAC_CONST(-0.453990608453751), FRAC_CONST(0.891006469726563) }, - { FRAC_CONST(-0.500000059604645), FRAC_CONST(0.866025388240814) }, - { FRAC_CONST(-0.544639050960541), FRAC_CONST(0.838670551776886) }, - { FRAC_CONST(-0.587785184383392), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(-0.629320502281189), FRAC_CONST(0.777145862579346) }, - { FRAC_CONST(-0.669130682945251), FRAC_CONST(0.743144810199738) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.743144929409027), FRAC_CONST(0.669130444526672) }, - { FRAC_CONST(-0.777146041393280), FRAC_CONST(0.629320263862610) }, - { FRAC_CONST(-0.809017062187195), FRAC_CONST(0.587785184383392) }, - { FRAC_CONST(-0.838670551776886), FRAC_CONST(0.544639050960541) }, - { FRAC_CONST(-0.866025388240814), FRAC_CONST(0.500000059604645) }, - { FRAC_CONST(-0.891006588935852), FRAC_CONST(0.453990370035172) }, - { FRAC_CONST(-0.913545489311218), FRAC_CONST(0.406736582517624) }, - { FRAC_CONST(-0.933580458164215), FRAC_CONST(0.358367919921875) }, - { FRAC_CONST(-0.951056599617004), FRAC_CONST(0.309016793966293) }, - { FRAC_CONST(-0.965925872325897), FRAC_CONST(0.258818924427032) }, - { FRAC_CONST(-0.978147625923157), FRAC_CONST(0.207911610603333) }, - { FRAC_CONST(-0.987688362598419), FRAC_CONST(0.156434446573257) }, - { FRAC_CONST(-0.994521915912628), FRAC_CONST(0.104528494179249) }, - { FRAC_CONST(-0.998629570007324), FRAC_CONST(0.052335809916258) }, - { FRAC_CONST(-1.000000000000000), FRAC_CONST(-0.000000087422777) }, - { FRAC_CONST(-0.998629510402679), FRAC_CONST(-0.052335985004902) }, - { FRAC_CONST(-0.994521856307983), FRAC_CONST(-0.104528672993183) }, - { FRAC_CONST(-0.987688302993774), FRAC_CONST(-0.156434610486031) }, - { FRAC_CONST(-0.978147566318512), FRAC_CONST(-0.207911789417267) }, - { FRAC_CONST(-0.965925812721252), FRAC_CONST(-0.258819073438644) }, - { FRAC_CONST(-0.951056540012360), FRAC_CONST(-0.309016972780228) }, - { FRAC_CONST(-0.933580398559570), FRAC_CONST(-0.358368098735809) }, - { FRAC_CONST(-0.913545429706573), FRAC_CONST(-0.406736731529236) }, - { FRAC_CONST(-0.891006529331207), FRAC_CONST(-0.453990548849106) }, - { FRAC_CONST(-0.866025269031525), FRAC_CONST(-0.500000178813934) }, - { FRAC_CONST(-0.838670492172241), FRAC_CONST(-0.544639170169830) }, - { FRAC_CONST(-0.809016942977905), FRAC_CONST(-0.587785363197327) }, - { FRAC_CONST(-0.777145922183990), FRAC_CONST(-0.629320442676544) }, - { FRAC_CONST(-0.743144810199738), FRAC_CONST(-0.669130623340607) }, - { FRAC_CONST(-0.707106649875641), FRAC_CONST(-0.707106888294220) }, - { FRAC_CONST(-0.669130504131317), FRAC_CONST(-0.743144869804382) }, - { FRAC_CONST(-0.629320323467255), FRAC_CONST(-0.777145981788635) }, - { FRAC_CONST(-0.587785065174103), FRAC_CONST(-0.809017121791840) }, - { FRAC_CONST(-0.544639110565186), FRAC_CONST(-0.838670551776886) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.996917307376862), FRAC_CONST(0.078459098935127) }, - { FRAC_CONST(0.987688362598419), FRAC_CONST(0.156434476375580) }, - { FRAC_CONST(0.972369909286499), FRAC_CONST(0.233445376157761) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.891006529331207), FRAC_CONST(0.453990519046783) }, - { FRAC_CONST(0.852640151977539), FRAC_CONST(0.522498548030853) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.760405957698822), FRAC_CONST(0.649448096752167) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.649448037147522), FRAC_CONST(0.760405957698822) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.522498488426209), FRAC_CONST(0.852640211582184) }, - { FRAC_CONST(0.453990519046783), FRAC_CONST(0.891006529331207) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(0.233445301651955), FRAC_CONST(0.972369909286499) }, - { FRAC_CONST(0.156434372067451), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(0.078459084033966), FRAC_CONST(0.996917307376862) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.987688362598419), FRAC_CONST(0.156434476375580) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.891006529331207), FRAC_CONST(0.453990519046783) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.453990519046783), FRAC_CONST(0.891006529331207) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(0.156434372067451), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.156434446573257), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.453990608453751), FRAC_CONST(0.891006469726563) }, - { FRAC_CONST(-0.587785184383392), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.809017062187195), FRAC_CONST(0.587785184383392) }, - { FRAC_CONST(-0.891006588935852), FRAC_CONST(0.453990370035172) }, - { FRAC_CONST(-0.951056599617004), FRAC_CONST(0.309016793966293) }, - { FRAC_CONST(-0.987688362598419), FRAC_CONST(0.156434446573257) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.972369909286499), FRAC_CONST(0.233445376157761) }, - { FRAC_CONST(0.891006529331207), FRAC_CONST(0.453990519046783) }, - { FRAC_CONST(0.760405957698822), FRAC_CONST(0.649448096752167) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.156434372067451), FRAC_CONST(0.987688362598419) }, - { FRAC_CONST(-0.078459173440933), FRAC_CONST(0.996917307376862) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.522498667240143), FRAC_CONST(0.852640092372894) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.852640211582184), FRAC_CONST(0.522498488426209) }, - { FRAC_CONST(-0.951056599617004), FRAC_CONST(0.309016793966293) }, - { FRAC_CONST(-0.996917366981506), FRAC_CONST(0.078459039330482) }, - { FRAC_CONST(-0.987688302993774), FRAC_CONST(-0.156434610486031) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(-0.809016942977905), FRAC_CONST(-0.587785363197327) }, - { FRAC_CONST(-0.649447917938232), FRAC_CONST(-0.760406076908112) }, - { FRAC_CONST(-0.453990221023560), FRAC_CONST(-0.891006648540497) }, - { FRAC_CONST(-0.233445450663567), FRAC_CONST(-0.972369909286499) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.951056540012360), FRAC_CONST(0.309017002582550) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.809017002582550), FRAC_CONST(0.587785243988037) }, - { FRAC_CONST(0.309016972780228), FRAC_CONST(0.951056540012360) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.809017062187195), FRAC_CONST(0.587785184383392) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.587785243988037), FRAC_CONST(0.809017002582550) }, - { FRAC_CONST(-0.309017032384872), FRAC_CONST(0.951056480407715) }, - { FRAC_CONST(-0.951056599617004), FRAC_CONST(0.309016793966293) }, - { FRAC_CONST(-0.809016942977905), FRAC_CONST(-0.587785363197327) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.309017121791840), FRAC_CONST(-0.951056480407715) } -}; -#endif - -#endif - -ALIGN static const complex_t cfft_tab_128[] ICONST_ATTR = -{ - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.998795449733734), FRAC_CONST(0.049067676067352) }, - { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) }, - { FRAC_CONST(0.989176511764526), FRAC_CONST(0.146730467677116) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.970031261444092), FRAC_CONST(0.242980197072029) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.941544055938721), FRAC_CONST(0.336889863014221) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.903989315032959), FRAC_CONST(0.427555084228516) }, - { FRAC_CONST(0.881921231746674), FRAC_CONST(0.471396744251251) }, - { FRAC_CONST(0.857728600502014), FRAC_CONST(0.514102756977081) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.803207516670227), FRAC_CONST(0.595699310302734) }, - { FRAC_CONST(0.773010432720184), FRAC_CONST(0.634393334388733) }, - { FRAC_CONST(0.740951120853424), FRAC_CONST(0.671558976173401) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.671558916568756), FRAC_CONST(0.740951180458069) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.595699310302734), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.514102697372437), FRAC_CONST(0.857728660106659) }, - { FRAC_CONST(0.471396654844284), FRAC_CONST(0.881921291351318) }, - { FRAC_CONST(0.427555114030838), FRAC_CONST(0.903989315032959) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.336889833211899), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(0.290284633636475), FRAC_CONST(0.956940352916718) }, - { FRAC_CONST(0.242980122566223), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(0.146730497479439), FRAC_CONST(0.989176511764526) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(0.049067649990320), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.049067739397287), FRAC_CONST(0.998795449733734) }, - { FRAC_CONST(-0.098017223179340), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(-0.146730571985245), FRAC_CONST(0.989176511764526) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.242980197072029), FRAC_CONST(0.970031261444092) }, - { FRAC_CONST(-0.290284723043442), FRAC_CONST(0.956940293312073) }, - { FRAC_CONST(-0.336889922618866), FRAC_CONST(0.941544055938721) }, - { FRAC_CONST(-0.382683515548706), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.427555084228516), FRAC_CONST(0.903989315032959) }, - { FRAC_CONST(-0.471396833658218), FRAC_CONST(0.881921231746674) }, - { FRAC_CONST(-0.514102756977081), FRAC_CONST(0.857728600502014) }, - { FRAC_CONST(-0.555570363998413), FRAC_CONST(0.831469535827637) }, - { FRAC_CONST(-0.595699369907379), FRAC_CONST(0.803207516670227) }, - { FRAC_CONST(-0.634393274784088), FRAC_CONST(0.773010492324829) }, - { FRAC_CONST(-0.671559035778046), FRAC_CONST(0.740951061248779) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.740951240062714), FRAC_CONST(0.671558856964111) }, - { FRAC_CONST(-0.773010492324829), FRAC_CONST(0.634393274784088) }, - { FRAC_CONST(-0.803207635879517), FRAC_CONST(0.595699131488800) }, - { FRAC_CONST(-0.831469655036926), FRAC_CONST(0.555570185184479) }, - { FRAC_CONST(-0.857728600502014), FRAC_CONST(0.514102756977081) }, - { FRAC_CONST(-0.881921350955963), FRAC_CONST(0.471396625041962) }, - { FRAC_CONST(-0.903989315032959), FRAC_CONST(0.427555054426193) }, - { FRAC_CONST(-0.923879623413086), FRAC_CONST(0.382683277130127) }, - { FRAC_CONST(-0.941544115543365), FRAC_CONST(0.336889803409576) }, - { FRAC_CONST(-0.956940352916718), FRAC_CONST(0.290284723043442) }, - { FRAC_CONST(-0.970031261444092), FRAC_CONST(0.242980077862740) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(-0.989176511764526), FRAC_CONST(0.146730333566666) }, - { FRAC_CONST(-0.995184719562531), FRAC_CONST(0.098017096519470) }, - { FRAC_CONST(-0.998795449733734), FRAC_CONST(0.049067486077547) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.995184719562531), FRAC_CONST(0.098017141222954) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.881921231746674), FRAC_CONST(0.471396744251251) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.773010432720184), FRAC_CONST(0.634393334388733) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.471396654844284), FRAC_CONST(0.881921291351318) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.290284633636475), FRAC_CONST(0.956940352916718) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.980785250663757), FRAC_CONST(0.195090323686600) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.555570185184479), FRAC_CONST(0.831469655036926) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.195090234279633), FRAC_CONST(0.980785310268402) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.382683515548706), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.555570363998413), FRAC_CONST(0.831469535827637) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.831469655036926), FRAC_CONST(0.555570185184479) }, - { FRAC_CONST(-0.923879623413086), FRAC_CONST(0.382683277130127) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.956940352916718), FRAC_CONST(0.290284663438797) }, - { FRAC_CONST(0.831469595432281), FRAC_CONST(0.555570244789124) }, - { FRAC_CONST(0.634393274784088), FRAC_CONST(0.773010432720184) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(0.098017133772373), FRAC_CONST(0.995184719562531) }, - { FRAC_CONST(-0.195090323686600), FRAC_CONST(0.980785250663757) }, - { FRAC_CONST(-0.471396833658218), FRAC_CONST(0.881921231746674) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.881921231746674), FRAC_CONST(0.471396833658218) }, - { FRAC_CONST(-0.980785310268402), FRAC_CONST(0.195090308785439) }, - { FRAC_CONST(-0.995184719562531), FRAC_CONST(-0.098017267882824) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(-0.773010551929474), FRAC_CONST(-0.634393215179443) }, - { FRAC_CONST(-0.555570006370544), FRAC_CONST(-0.831469774246216) }, - { FRAC_CONST(-0.290284544229507), FRAC_CONST(-0.956940352916718) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.923879504203796), FRAC_CONST(0.382683455944061) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.000000043711388), FRAC_CONST(1.000000000000000) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.382683426141739), FRAC_CONST(0.923879504203796) }, - { FRAC_CONST(-0.707106769084930), FRAC_CONST(0.707106769084930) }, - { FRAC_CONST(-0.923879504203796), FRAC_CONST(-0.382683426141739) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(1.000000000000000), FRAC_CONST(0.000000000000000) }, - { FRAC_CONST(0.000000011924881), FRAC_CONST(-1.000000000000000) } -}; - -#endif - -#ifdef __cplusplus -} -#endif -#endif diff --git a/apps/codecs/libfaad/decoder.c b/apps/codecs/libfaad/decoder.c index 2285168253..db51d2ab6d 100644 --- a/apps/codecs/libfaad/decoder.c +++ b/apps/codecs/libfaad/decoder.c @@ -289,7 +289,7 @@ int32_t NEAACDECAPI NeAACDecInit(NeAACDecHandle hDecoder, uint8_t *buffer, hDecoder->fb = ssr_filter_bank_init(hDecoder->frameLength/SSR_BANDS); else #endif - hDecoder->fb = filter_bank_init(hDecoder->frameLength); + #ifdef LD_DEC if (hDecoder->object_type == LD) @@ -383,7 +383,6 @@ int8_t NEAACDECAPI NeAACDecInit2(NeAACDecHandle hDecoder, uint8_t *pBuffer, hDecoder->fb = ssr_filter_bank_init(hDecoder->frameLength/SSR_BANDS); else #endif - hDecoder->fb = filter_bank_init(hDecoder->frameLength); #ifdef LD_DEC if (hDecoder->object_type == LD) @@ -429,7 +428,6 @@ int8_t NEAACDECAPI NeAACDecInitDRM(NeAACDecHandle *hDecoder, uint32_t samplerate (*hDecoder)->sbr_present_flag = 1; #endif - (*hDecoder)->fb = filter_bank_init((*hDecoder)->frameLength); return 0; } @@ -471,7 +469,7 @@ void NEAACDECAPI NeAACDecClose(NeAACDecHandle hDecoder) ssr_filter_bank_end(hDecoder->fb); else #endif - filter_bank_end(hDecoder->fb); + drc_end(hDecoder->drc); diff --git a/apps/codecs/libfaad/filtbank.c b/apps/codecs/libfaad/filtbank.c index 333bad6c70..e5c1bd3870 100644 --- a/apps/codecs/libfaad/filtbank.c +++ b/apps/codecs/libfaad/filtbank.c @@ -41,7 +41,7 @@ #include "syntax.h" #include "kbd_win.h" #include "sine_win.h" -#include "mdct.h" + /*Windowing functions borrowed from libwmai*/ @@ -169,95 +169,6 @@ static inline void vector_fmul_reverse(real_t *dst, const real_t *src0, const re } #endif -fb_info *filter_bank_init(uint16_t frame_len) -{ - uint16_t nshort = frame_len/8; -#ifdef LD_DEC - uint16_t frame_len_ld = frame_len/2; -#endif - - fb_info *fb = (fb_info*)faad_malloc(sizeof(fb_info)); - memset(fb, 0, sizeof(fb_info)); - - /* normal */ - fb->mdct256 = faad_mdct_init(2*nshort); - fb->mdct2048 = faad_mdct_init(2*frame_len); -#ifdef LD_DEC - /* LD */ - fb->mdct1024 = faad_mdct_init(2*frame_len_ld); -#endif - -#ifdef ALLOW_SMALL_FRAMELENGTH - if (frame_len == 1024) - { -#endif - fb->long_window[0] = sine_long_1024; - fb->short_window[0] = sine_short_128; - fb->long_window[1] = kbd_long_1024; - fb->short_window[1] = kbd_short_128; -#ifdef LD_DEC - fb->ld_window[0] = sine_mid_512; - fb->ld_window[1] = ld_mid_512; -#endif -#ifdef ALLOW_SMALL_FRAMELENGTH - } else /* (frame_len == 960) */ { - fb->long_window[0] = sine_long_960; - fb->short_window[0] = sine_short_120; - fb->long_window[1] = kbd_long_960; - fb->short_window[1] = kbd_short_120; -#ifdef LD_DEC - fb->ld_window[0] = sine_mid_480; - fb->ld_window[1] = ld_mid_480; -#endif - } -#endif - - return fb; -} - -void filter_bank_end(fb_info *fb) -{ - if (fb != NULL) - { -#ifdef PROFILE - printf("FB: %I64d cycles\n", fb->cycles); -#endif - - faad_mdct_end(fb->mdct256); - faad_mdct_end(fb->mdct2048); -#ifdef LD_DEC - faad_mdct_end(fb->mdct1024); -#endif - - faad_free(fb); - } -} - -static INLINE void imdct_long(fb_info *fb, real_t *in_data, real_t *out_data, uint16_t len) -{ -#ifdef LD_DEC - mdct_info *mdct = NULL; - - switch (len) - { - case 2048: - case 1920: - mdct = fb->mdct2048; - break; - case 1024: - case 960: - mdct = fb->mdct1024; - break; - } - - faad_imdct(mdct, in_data, out_data); -#else - (void) len; - faad_imdct(fb->mdct2048, in_data, out_data); -#endif -} - - #ifdef LTP_DEC static INLINE void mdct(fb_info *fb, real_t *in_data, real_t *out_data, uint16_t len) { @@ -287,8 +198,8 @@ static INLINE void mdct(fb_info *fb, real_t *in_data, real_t *out_data, uint16_t ALIGN real_t transf_buf[2*1024] IBSS_ATTR; -void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape, - uint8_t window_shape_prev, real_t *freq_in, +void ifilter_bank(uint8_t window_sequence, + real_t *freq_in, real_t *time_out, real_t *overlap, uint8_t object_type, uint16_t frame_len) { @@ -320,10 +231,12 @@ void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape, #else (void) object_type; #endif - window_long = fb->long_window[window_shape]; - window_long_prev = fb->long_window[window_shape_prev]; - window_short = fb->short_window[window_shape]; - window_short_prev = fb->short_window[window_shape_prev]; + + window_long = sine_long_1024; + window_long_prev = kbd_long_1024; + window_short = sine_short_128; + window_short_prev = kbd_short_128; + #ifdef LD_DEC } #endif @@ -342,7 +255,7 @@ void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape, { case ONLY_LONG_SEQUENCE: /* perform iMDCT */ - imdct_long(fb, freq_in, transf_buf, 2*nlong); + mdct_backward(2048, freq_in, transf_buf); /* add second half output of previous frame to windowed output of current frame */ vector_fmul_add_add(time_out, transf_buf, window_long_prev, overlap, nlong); @@ -354,7 +267,7 @@ void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape, case LONG_START_SEQUENCE: /* perform iMDCT */ - imdct_long(fb, freq_in, transf_buf, 2*nlong); + mdct_backward(2048, freq_in, transf_buf); /* add second half output of previous frame to windowed output of current frame */ vector_fmul_add_add(time_out, transf_buf, window_long_prev, overlap, nlong); @@ -373,14 +286,14 @@ void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape, /*this could be assemblerized too, but this case is extremely uncommon*/ /* perform iMDCT for each short block */ - faad_imdct(fb->mdct256, freq_in+0*nshort, transf_buf+2*nshort*0); - faad_imdct(fb->mdct256, freq_in+1*nshort, transf_buf+2*nshort*1); - faad_imdct(fb->mdct256, freq_in+2*nshort, transf_buf+2*nshort*2); - faad_imdct(fb->mdct256, freq_in+3*nshort, transf_buf+2*nshort*3); - faad_imdct(fb->mdct256, freq_in+4*nshort, transf_buf+2*nshort*4); - faad_imdct(fb->mdct256, freq_in+5*nshort, transf_buf+2*nshort*5); - faad_imdct(fb->mdct256, freq_in+6*nshort, transf_buf+2*nshort*6); - faad_imdct(fb->mdct256, freq_in+7*nshort, transf_buf+2*nshort*7); + mdct_backward(256, freq_in+0*nshort, transf_buf+2*nshort*0); + mdct_backward(256, freq_in+1*nshort, transf_buf+2*nshort*1); + mdct_backward(256, freq_in+2*nshort, transf_buf+2*nshort*2); + mdct_backward(256, freq_in+3*nshort, transf_buf+2*nshort*3); + mdct_backward(256, freq_in+4*nshort, transf_buf+2*nshort*4); + mdct_backward(256, freq_in+5*nshort, transf_buf+2*nshort*5); + mdct_backward(256, freq_in+6*nshort, transf_buf+2*nshort*6); + mdct_backward(256, freq_in+7*nshort, transf_buf+2*nshort*7); /* add second half output of previous frame to windowed output of current frame */ for (i = 0; i < nflat_ls; i++) @@ -411,7 +324,7 @@ void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape, case LONG_STOP_SEQUENCE: /* perform iMDCT */ - imdct_long(fb, freq_in, transf_buf, 2*nlong); + mdct_backward(2048, freq_in, transf_buf); /* add second half output of previous frame to windowed output of current frame */ /* construct first half window using padding with 1's and 0's */ diff --git a/apps/codecs/libfaad/filtbank.h b/apps/codecs/libfaad/filtbank.h index 5227566078..24c6017a35 100644 --- a/apps/codecs/libfaad/filtbank.h +++ b/apps/codecs/libfaad/filtbank.h @@ -32,10 +32,6 @@ extern "C" { #endif - -fb_info *filter_bank_init(uint16_t frame_len); -void filter_bank_end(fb_info *fb); - #ifdef LTP_DEC void filter_bank_ltp(fb_info *fb, uint8_t window_sequence, @@ -47,8 +43,8 @@ void filter_bank_ltp(fb_info *fb, uint16_t frame_len); #endif -void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape, - uint8_t window_shape_prev, real_t *freq_in, +void ifilter_bank(uint8_t window_sequence, + real_t *freq_in, real_t *time_out, real_t *overlap, uint8_t object_type, uint16_t frame_len); diff --git a/apps/codecs/libfaad/mdct.c b/apps/codecs/libfaad/mdct.c deleted file mode 100644 index 902c3f303d..0000000000 --- a/apps/codecs/libfaad/mdct.c +++ /dev/null @@ -1,298 +0,0 @@ -/* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** -** 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 -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -** -** Any non-GPL usage of this software or parts of this software is strictly -** forbidden. -** -** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. -** -** $Id$ -**/ - -/* - * Fast (I)MDCT Implementation using (I)FFT ((Inverse) Fast Fourier Transform) - * and consists of three steps: pre-(I)FFT complex multiplication, complex - * (I)FFT, post-(I)FFT complex multiplication, - * - * As described in: - * P. Duhamel, Y. Mahieux, and J.P. Petit, "A Fast Algorithm for the - * Implementation of Filter Banks Based on 'Time Domain Aliasing - * Cancellation’," IEEE Proc. on ICASSP‘91, 1991, pp. 2209-2212. - * - * - * As of April 6th 2002 completely rewritten. - * This (I)MDCT can now be used for any data size n, where n is divisible by 8. - * - */ - -#include "common.h" -#include "structs.h" - -#include -#ifdef _WIN32_WCE -#define assert(x) -#else -#include -#endif - -#include "cfft.h" -#include "mdct.h" -#include "mdct_tab.h" - - -mdct_info *faad_mdct_init(uint16_t N) -{ - mdct_info *mdct = (mdct_info*)faad_malloc(sizeof(mdct_info)); - - //assert(N % 8 == 0); - - mdct->N = N; - - /* NOTE: For "small framelengths" in FIXED_POINT the coefficients need to be - * scaled by sqrt("(nearest power of 2) > N" / N) */ - - /* RE(mdct->sincos[k]) = scale*(real_t)(cos(2.0*M_PI*(k+1./8.) / (real_t)N)); - * IM(mdct->sincos[k]) = scale*(real_t)(sin(2.0*M_PI*(k+1./8.) / (real_t)N)); */ - /* scale is 1 for fixed point, sqrt(N) for floating point */ - switch (N) - { - case 2048: mdct->sincos = (complex_t*)mdct_tab_2048; break; - case 256: mdct->sincos = (complex_t*)mdct_tab_256; break; -#ifdef LD_DEC - case 1024: mdct->sincos = (complex_t*)mdct_tab_1024; break; -#endif -#ifdef ALLOW_SMALL_FRAMELENGTH - case 1920: mdct->sincos = (complex_t*)mdct_tab_1920; break; - case 240: mdct->sincos = (complex_t*)mdct_tab_240; break; -#ifdef LD_DEC - case 960: mdct->sincos = (complex_t*)mdct_tab_960; break; -#endif -#endif -#ifdef SSR_DEC - case 512: mdct->sincos = (complex_t*)mdct_tab_512; break; - case 64: mdct->sincos = (complex_t*)mdct_tab_64; break; -#endif - } - - /* initialise fft */ - mdct->cfft = cffti(N/4); - -#ifdef PROFILE - mdct->cycles = 0; - mdct->fft_cycles = 0; -#endif - - return mdct; -} - -void faad_mdct_end(mdct_info *mdct) -{ - if (mdct != NULL) - { -#ifdef PROFILE - printf("MDCT[%.4d]: %I64d cycles\n", mdct->N, mdct->cycles); - printf("CFFT[%.4d]: %I64d cycles\n", mdct->N/4, mdct->fft_cycles); -#endif - - cfftu(mdct->cfft); - - faad_free(mdct); - } -} - -void faad_imdct(mdct_info *mdct, real_t *X_in, real_t *X_out) -{ - uint16_t k; - - complex_t x; -#ifdef ALLOW_SMALL_FRAMELENGTH -#ifdef FIXED_POINT - real_t scale = 0, b_scale = 0; -#endif -#endif - ALIGN static complex_t Z1[512] IBSS_ATTR; - complex_t *sincos = mdct->sincos; - - uint16_t N = mdct->N; - uint16_t N2 = N >> 1; - uint16_t N4 = N >> 2; - uint16_t N8 = N >> 3; - -#ifdef PROFILE - int64_t count1, count2 = faad_get_ts(); -#endif - -#ifdef ALLOW_SMALL_FRAMELENGTH -#ifdef FIXED_POINT - /* detect non-power of 2 */ - if (N & (N-1)) - { - /* adjust scale for non-power of 2 MDCT */ - /* 2048/1920 */ - b_scale = 1; - scale = COEF_CONST(1.0666666666666667); - } -#endif -#endif - - /* pre-IFFT complex multiplication */ - for (k = 0; k < N4; k++) - { - ComplexMult(&IM(Z1[k]), &RE(Z1[k]), - X_in[2*k], X_in[N2 - 1 - 2*k], RE(sincos[k]), IM(sincos[k])); - } - -#ifdef PROFILE - count1 = faad_get_ts(); -#endif - - /* complex IFFT, any non-scaling FFT can be used here */ - cfftb(mdct->cfft, Z1); - -#ifdef PROFILE - count1 = faad_get_ts() - count1; -#endif - - /* post-IFFT complex multiplication */ - for (k = 0; k < N4; k++) - { - RE(x) = RE(Z1[k]); - IM(x) = IM(Z1[k]); - ComplexMult(&IM(Z1[k]), &RE(Z1[k]), - IM(x), RE(x), RE(sincos[k]), IM(sincos[k])); - -#ifdef ALLOW_SMALL_FRAMELENGTH -#ifdef FIXED_POINT - /* non-power of 2 MDCT scaling */ - if (b_scale) - { - RE(Z1[k]) = MUL_C(RE(Z1[k]), scale); - IM(Z1[k]) = MUL_C(IM(Z1[k]), scale); - } -#endif -#endif - } - - /* reordering */ - for (k = 0; k < N8; k+=2) - { - X_out[ 2*k] = IM(Z1[N8 + k]); - X_out[ 2 + 2*k] = IM(Z1[N8 + 1 + k]); - - X_out[ 1 + 2*k] = -RE(Z1[N8 - 1 - k]); - X_out[ 3 + 2*k] = -RE(Z1[N8 - 2 - k]); - - X_out[N4 + 2*k] = RE(Z1[ k]); - X_out[N4 + + 2 + 2*k] = RE(Z1[ 1 + k]); - - X_out[N4 + 1 + 2*k] = -IM(Z1[N4 - 1 - k]); - X_out[N4 + 3 + 2*k] = -IM(Z1[N4 - 2 - k]); - - X_out[N2 + 2*k] = RE(Z1[N8 + k]); - X_out[N2 + + 2 + 2*k] = RE(Z1[N8 + 1 + k]); - - X_out[N2 + 1 + 2*k] = -IM(Z1[N8 - 1 - k]); - X_out[N2 + 3 + 2*k] = -IM(Z1[N8 - 2 - k]); - - X_out[N2 + N4 + 2*k] = -IM(Z1[ k]); - X_out[N2 + N4 + 2 + 2*k] = -IM(Z1[ 1 + k]); - - X_out[N2 + N4 + 1 + 2*k] = RE(Z1[N4 - 1 - k]); - X_out[N2 + N4 + 3 + 2*k] = RE(Z1[N4 - 2 - k]); - } - -#ifdef PROFILE - count2 = faad_get_ts() - count2; - mdct->fft_cycles += count1; - mdct->cycles += (count2 - count1); -#endif -} - -#ifdef LTP_DEC -void faad_mdct(mdct_info *mdct, real_t *X_in, real_t *X_out) -{ - uint16_t k; - - complex_t x; - ALIGN static complex_t Z1[512]; - complex_t *sincos = mdct->sincos; - - uint16_t N = mdct->N; - uint16_t N2 = N >> 1; - uint16_t N4 = N >> 2; - uint16_t N8 = N >> 3; - -#ifndef FIXED_POINT - real_t scale = REAL_CONST(N); -#else - real_t scale = REAL_CONST(4.0/N); -#endif - -#ifdef ALLOW_SMALL_FRAMELENGTH -#ifdef FIXED_POINT - /* detect non-power of 2 */ - if (N & (N-1)) - { - /* adjust scale for non-power of 2 MDCT */ - /* *= sqrt(2048/1920) */ - scale = MUL_C(scale, COEF_CONST(1.0327955589886444)); - } -#endif -#endif - - /* pre-FFT complex multiplication */ - for (k = 0; k < N8; k++) - { - uint16_t n = k << 1; - RE(x) = X_in[N - N4 - 1 - n] + X_in[N - N4 + n]; - IM(x) = X_in[ N4 + n] - X_in[ N4 - 1 - n]; - - ComplexMult(&RE(Z1[k]), &IM(Z1[k]), - RE(x), IM(x), RE(sincos[k]), IM(sincos[k])); - - RE(Z1[k]) = MUL_R(RE(Z1[k]), scale); - IM(Z1[k]) = MUL_R(IM(Z1[k]), scale); - - RE(x) = X_in[N2 - 1 - n] - X_in[ n]; - IM(x) = X_in[N2 + n] + X_in[N - 1 - n]; - - ComplexMult(&RE(Z1[k + N8]), &IM(Z1[k + N8]), - RE(x), IM(x), RE(sincos[k + N8]), IM(sincos[k + N8])); - - RE(Z1[k + N8]) = MUL_R(RE(Z1[k + N8]), scale); - IM(Z1[k + N8]) = MUL_R(IM(Z1[k + N8]), scale); - } - - /* complex FFT, any non-scaling FFT can be used here */ - cfftf(mdct->cfft, Z1); - - /* post-FFT complex multiplication */ - for (k = 0; k < N4; k++) - { - uint16_t n = k << 1; - ComplexMult(&RE(x), &IM(x), - RE(Z1[k]), IM(Z1[k]), RE(sincos[k]), IM(sincos[k])); - - 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 diff --git a/apps/codecs/libfaad/mdct.h b/apps/codecs/libfaad/mdct.h deleted file mode 100644 index 308be816f9..0000000000 --- a/apps/codecs/libfaad/mdct.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** -** 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 -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -** -** Any non-GPL usage of this software or parts of this software is strictly -** forbidden. -** -** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. -** -** $Id$ -**/ - -#ifndef __MDCT_H__ -#define __MDCT_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -mdct_info *faad_mdct_init(uint16_t N); -void faad_mdct_end(mdct_info *mdct); -void faad_imdct(mdct_info *mdct, real_t *X_in, real_t *X_out); -void faad_mdct(mdct_info *mdct, real_t *X_in, real_t *X_out); - - -#ifdef __cplusplus -} -#endif -#endif diff --git a/apps/codecs/libfaad/mdct_tab.h b/apps/codecs/libfaad/mdct_tab.h deleted file mode 100644 index 2442a4e9c3..0000000000 --- a/apps/codecs/libfaad/mdct_tab.h +++ /dev/null @@ -1,3652 +0,0 @@ -/* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** -** 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 -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -** -** Any non-GPL usage of this software or parts of this software is strictly -** forbidden. -** -** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. -** -** $Id$ -**/ - -#ifndef __MDCT_TAB_H__ -#define __MDCT_TAB_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef FIXED_POINT - -/* 256 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_2048[] ICONST_ATTR = -{ - { FRAC_CONST(0.999999926465718), FRAC_CONST(0.000383495187571) }, - { FRAC_CONST(0.999994043728986), FRAC_CONST(0.003451449920136) }, - { FRAC_CONST(0.999978748667469), FRAC_CONST(0.006519372166339) }, - { FRAC_CONST(0.999954041425130), FRAC_CONST(0.009587233049729) }, - { FRAC_CONST(0.999919922234523), FRAC_CONST(0.012655003694430) }, - { FRAC_CONST(0.999876391416790), FRAC_CONST(0.015722655225417) }, - { FRAC_CONST(0.999823449381662), FRAC_CONST(0.018790158768785) }, - { FRAC_CONST(0.999761096627447), FRAC_CONST(0.021857485452022) }, - { FRAC_CONST(0.999689333741034), FRAC_CONST(0.024924606404281) }, - { FRAC_CONST(0.999608161397882), FRAC_CONST(0.027991492756653) }, - { FRAC_CONST(0.999517580362017), FRAC_CONST(0.031058115642435) }, - { FRAC_CONST(0.999417591486022), FRAC_CONST(0.034124446197403) }, - { FRAC_CONST(0.999308195711029), FRAC_CONST(0.037190455560088) }, - { FRAC_CONST(0.999189394066715), FRAC_CONST(0.040256114872041) }, - { FRAC_CONST(0.999061187671285), FRAC_CONST(0.043321395278110) }, - { FRAC_CONST(0.998923577731466), FRAC_CONST(0.046386267926707) }, - { FRAC_CONST(0.998776565542496), FRAC_CONST(0.049450703970085) }, - { FRAC_CONST(0.998620152488109), FRAC_CONST(0.052514674564603) }, - { FRAC_CONST(0.998454340040525), FRAC_CONST(0.055578150871005) }, - { FRAC_CONST(0.998279129760433), FRAC_CONST(0.058641104054683) }, - { FRAC_CONST(0.998094523296980), FRAC_CONST(0.061703505285957) }, - { FRAC_CONST(0.997900522387752), FRAC_CONST(0.064765325740340) }, - { FRAC_CONST(0.997697128858759), FRAC_CONST(0.067826536598811) }, - { FRAC_CONST(0.997484344624418), FRAC_CONST(0.070887109048088) }, - { FRAC_CONST(0.997262171687536), FRAC_CONST(0.073947014280897) }, - { FRAC_CONST(0.997030612139289), FRAC_CONST(0.077006223496246) }, - { FRAC_CONST(0.996789668159205), FRAC_CONST(0.080064707899691) }, - { FRAC_CONST(0.996539342015138), FRAC_CONST(0.083122438703613) }, - { FRAC_CONST(0.996279636063255), FRAC_CONST(0.086179387127485) }, - { FRAC_CONST(0.996010552748006), FRAC_CONST(0.089235524398144) }, - { FRAC_CONST(0.995732094602106), FRAC_CONST(0.092290821750062) }, - { FRAC_CONST(0.995444264246510), FRAC_CONST(0.095345250425618) }, - { FRAC_CONST(0.995147064390386), FRAC_CONST(0.098398781675364) }, - { FRAC_CONST(0.994840497831093), FRAC_CONST(0.101451386758302) }, - { FRAC_CONST(0.994524567454152), FRAC_CONST(0.104503036942151) }, - { FRAC_CONST(0.994199276233219), FRAC_CONST(0.107553703503616) }, - { FRAC_CONST(0.993864627230060), FRAC_CONST(0.110603357728662) }, - { FRAC_CONST(0.993520623594518), FRAC_CONST(0.113651970912782) }, - { FRAC_CONST(0.993167268564487), FRAC_CONST(0.116699514361268) }, - { FRAC_CONST(0.992804565465879), FRAC_CONST(0.119745959389480) }, - { FRAC_CONST(0.992432517712594), FRAC_CONST(0.122791277323117) }, - { FRAC_CONST(0.992051128806486), FRAC_CONST(0.125835439498487) }, - { FRAC_CONST(0.991660402337333), FRAC_CONST(0.128878417262777) }, - { FRAC_CONST(0.991260341982802), FRAC_CONST(0.131920181974320) }, - { FRAC_CONST(0.990850951508414), FRAC_CONST(0.134960705002869) }, - { FRAC_CONST(0.990432234767506), FRAC_CONST(0.137999957729863) }, - { FRAC_CONST(0.990004195701201), FRAC_CONST(0.141037911548698) }, - { FRAC_CONST(0.989566838338365), FRAC_CONST(0.144074537864995) }, - { FRAC_CONST(0.989120166795573), FRAC_CONST(0.147109808096872) }, - { FRAC_CONST(0.988664185277066), FRAC_CONST(0.150143693675208) }, - { FRAC_CONST(0.988198898074718), FRAC_CONST(0.153176166043918) }, - { FRAC_CONST(0.987724309567987), FRAC_CONST(0.156207196660216) }, - { FRAC_CONST(0.987240424223882), FRAC_CONST(0.159236756994888) }, - { FRAC_CONST(0.986747246596917), FRAC_CONST(0.162264818532558) }, - { FRAC_CONST(0.986244781329065), FRAC_CONST(0.165291352771958) }, - { FRAC_CONST(0.985733033149723), FRAC_CONST(0.168316331226195) }, - { FRAC_CONST(0.985212006875659), FRAC_CONST(0.171339725423019) }, - { FRAC_CONST(0.984681707410971), FRAC_CONST(0.174361506905094) }, - { FRAC_CONST(0.984142139747039), FRAC_CONST(0.177381647230260) }, - { FRAC_CONST(0.983593308962479), FRAC_CONST(0.180400117971807) }, - { FRAC_CONST(0.983035220223096), FRAC_CONST(0.183416890718739) }, - { FRAC_CONST(0.982467878781833), FRAC_CONST(0.186431937076042) }, - { FRAC_CONST(0.981891289978725), FRAC_CONST(0.189445228664950) }, - { FRAC_CONST(0.981305459240845), FRAC_CONST(0.192456737123217) }, - { FRAC_CONST(0.980710392082254), FRAC_CONST(0.195466434105377) }, - { FRAC_CONST(0.980106094103952), FRAC_CONST(0.198474291283016) }, - { FRAC_CONST(0.979492570993821), FRAC_CONST(0.201480280345038) }, - { FRAC_CONST(0.978869828526574), FRAC_CONST(0.204484372997927) }, - { FRAC_CONST(0.978237872563701), FRAC_CONST(0.207486540966021) }, - { FRAC_CONST(0.977596709053412), FRAC_CONST(0.210486755991770) }, - { FRAC_CONST(0.976946344030582), FRAC_CONST(0.213484989836008) }, - { FRAC_CONST(0.976286783616694), FRAC_CONST(0.216481214278217) }, - { FRAC_CONST(0.975618034019782), FRAC_CONST(0.219475401116790) }, - { FRAC_CONST(0.974940101534372), FRAC_CONST(0.222467522169302) }, - { FRAC_CONST(0.974252992541423), FRAC_CONST(0.225457549272769) }, - { FRAC_CONST(0.973556713508266), FRAC_CONST(0.228445454283916) }, - { FRAC_CONST(0.972851270988544), FRAC_CONST(0.231431209079446) }, - { FRAC_CONST(0.972136671622152), FRAC_CONST(0.234414785556295) }, - { FRAC_CONST(0.971412922135171), FRAC_CONST(0.237396155631907) }, - { FRAC_CONST(0.970680029339806), FRAC_CONST(0.240375291244489) }, - { FRAC_CONST(0.969938000134324), FRAC_CONST(0.243352164353285) }, - { FRAC_CONST(0.969186841502986), FRAC_CONST(0.246326746938829) }, - { FRAC_CONST(0.968426560515983), FRAC_CONST(0.249299011003218) }, - { FRAC_CONST(0.967657164329370), FRAC_CONST(0.252268928570371) }, - { FRAC_CONST(0.966878660184996), FRAC_CONST(0.255236471686292) }, - { FRAC_CONST(0.966091055410439), FRAC_CONST(0.258201612419335) }, - { FRAC_CONST(0.965294357418935), FRAC_CONST(0.261164322860466) }, - { FRAC_CONST(0.964488573709308), FRAC_CONST(0.264124575123528) }, - { FRAC_CONST(0.963673711865903), FRAC_CONST(0.267082341345496) }, - { FRAC_CONST(0.962849779558509), FRAC_CONST(0.270037593686751) }, - { FRAC_CONST(0.962016784542291), FRAC_CONST(0.272990304331330) }, - { FRAC_CONST(0.961174734657714), FRAC_CONST(0.275940445487197) }, - { FRAC_CONST(0.960323637830474), FRAC_CONST(0.278887989386500) }, - { FRAC_CONST(0.959463502071418), FRAC_CONST(0.281832908285833) }, - { FRAC_CONST(0.958594335476470), FRAC_CONST(0.284775174466498) }, - { FRAC_CONST(0.957716146226559), FRAC_CONST(0.287714760234765) }, - { FRAC_CONST(0.956828942587535), FRAC_CONST(0.290651637922133) }, - { FRAC_CONST(0.955932732910098), FRAC_CONST(0.293585779885591) }, - { FRAC_CONST(0.955027525629714), FRAC_CONST(0.296517158507877) }, - { FRAC_CONST(0.954113329266539), FRAC_CONST(0.299445746197740) }, - { FRAC_CONST(0.953190152425337), FRAC_CONST(0.302371515390196) }, - { FRAC_CONST(0.952258003795400), FRAC_CONST(0.305294438546792) }, - { FRAC_CONST(0.951316892150466), FRAC_CONST(0.308214488155861) }, - { FRAC_CONST(0.950366826348636), FRAC_CONST(0.311131636732785) }, - { FRAC_CONST(0.949407815332292), FRAC_CONST(0.314045856820251) }, - { FRAC_CONST(0.948439868128010), FRAC_CONST(0.316957120988508) }, - { FRAC_CONST(0.947462993846478), FRAC_CONST(0.319865401835631) }, - { FRAC_CONST(0.946477201682409), FRAC_CONST(0.322770671987771) }, - { FRAC_CONST(0.945482500914454), FRAC_CONST(0.325672904099420) }, - { FRAC_CONST(0.944478900905116), FRAC_CONST(0.328572070853664) }, - { FRAC_CONST(0.943466411100659), FRAC_CONST(0.331468144962441) }, - { FRAC_CONST(0.942445041031025), FRAC_CONST(0.334361099166799) }, - { FRAC_CONST(0.941414800309736), FRAC_CONST(0.337250906237151) }, - { FRAC_CONST(0.940375698633812), FRAC_CONST(0.340137538973532) }, - { FRAC_CONST(0.939327745783671), FRAC_CONST(0.343020970205856) }, - { FRAC_CONST(0.938270951623047), FRAC_CONST(0.345901172794169) }, - { FRAC_CONST(0.937205326098888), FRAC_CONST(0.348778119628908) }, - { FRAC_CONST(0.936130879241267), FRAC_CONST(0.351651783631155) }, - { FRAC_CONST(0.935047621163287), FRAC_CONST(0.354522137752887) }, - { FRAC_CONST(0.933955562060987), FRAC_CONST(0.357389154977241) }, - { FRAC_CONST(0.932854712213241), FRAC_CONST(0.360252808318757) }, - { FRAC_CONST(0.931745081981669), FRAC_CONST(0.363113070823639) }, - { FRAC_CONST(0.930626681810532), FRAC_CONST(0.365969915570009) }, - { FRAC_CONST(0.929499522226639), FRAC_CONST(0.368823315668154) }, - { FRAC_CONST(0.928363613839244), FRAC_CONST(0.371673244260787) }, - { FRAC_CONST(0.927218967339952), FRAC_CONST(0.374519674523293) }, - { FRAC_CONST(0.926065593502609), FRAC_CONST(0.377362579663988) }, - { FRAC_CONST(0.924903503183211), FRAC_CONST(0.380201932924366) }, - { FRAC_CONST(0.923732707319793), FRAC_CONST(0.383037707579352) }, - { FRAC_CONST(0.922553216932333), FRAC_CONST(0.385869876937555) }, - { FRAC_CONST(0.921365043122642), FRAC_CONST(0.388698414341519) }, - { FRAC_CONST(0.920168197074266), FRAC_CONST(0.391523293167972) }, - { FRAC_CONST(0.918962690052376), FRAC_CONST(0.394344486828080) }, - { FRAC_CONST(0.917748533403661), FRAC_CONST(0.397161968767692) }, - { FRAC_CONST(0.916525738556228), FRAC_CONST(0.399975712467595) }, - { FRAC_CONST(0.915294317019487), FRAC_CONST(0.402785691443764) }, - { FRAC_CONST(0.914054280384047), FRAC_CONST(0.405591879247604) }, - { FRAC_CONST(0.912805640321604), FRAC_CONST(0.408394249466208) }, - { FRAC_CONST(0.911548408584834), FRAC_CONST(0.411192775722600) }, - { FRAC_CONST(0.910282597007282), FRAC_CONST(0.413987431675985) }, - { FRAC_CONST(0.909008217503247), FRAC_CONST(0.416778191021998) }, - { FRAC_CONST(0.907725282067676), FRAC_CONST(0.419565027492947) }, - { FRAC_CONST(0.906433802776045), FRAC_CONST(0.422347914858067) }, - { FRAC_CONST(0.905133791784250), FRAC_CONST(0.425126826923762) }, - { FRAC_CONST(0.903825261328488), FRAC_CONST(0.427901737533854) }, - { FRAC_CONST(0.902508223725146), FRAC_CONST(0.430672620569827) }, - { FRAC_CONST(0.901182691370685), FRAC_CONST(0.433439449951074) }, - { FRAC_CONST(0.899848676741519), FRAC_CONST(0.436202199635144) }, - { FRAC_CONST(0.898506192393902), FRAC_CONST(0.438960843617984) }, - { FRAC_CONST(0.897155250963809), FRAC_CONST(0.441715355934187) }, - { FRAC_CONST(0.895795865166814), FRAC_CONST(0.444465710657234) }, - { FRAC_CONST(0.894428047797974), FRAC_CONST(0.447211881899738) }, - { FRAC_CONST(0.893051811731707), FRAC_CONST(0.449953843813691) }, - { FRAC_CONST(0.891667169921672), FRAC_CONST(0.452691570590701) }, - { FRAC_CONST(0.890274135400645), FRAC_CONST(0.455425036462242) }, - { FRAC_CONST(0.888872721280396), FRAC_CONST(0.458154215699893) }, - { FRAC_CONST(0.887462940751569), FRAC_CONST(0.460879082615579) }, - { FRAC_CONST(0.886044807083556), FRAC_CONST(0.463599611561814) }, - { FRAC_CONST(0.884618333624370), FRAC_CONST(0.466315776931944) }, - { FRAC_CONST(0.883183533800523), FRAC_CONST(0.469027553160387) }, - { FRAC_CONST(0.881740421116898), FRAC_CONST(0.471734914722871) }, - { FRAC_CONST(0.880289009156621), FRAC_CONST(0.474437836136679) }, - { FRAC_CONST(0.878829311580933), FRAC_CONST(0.477136291960885) }, - { FRAC_CONST(0.877361342129065), FRAC_CONST(0.479830256796594) }, - { FRAC_CONST(0.875885114618104), FRAC_CONST(0.482519705287184) }, - { FRAC_CONST(0.874400642942865), FRAC_CONST(0.485204612118542) }, - { FRAC_CONST(0.872907941075761), FRAC_CONST(0.487884952019301) }, - { FRAC_CONST(0.871407023066671), FRAC_CONST(0.490560699761082) }, - { FRAC_CONST(0.869897903042806), FRAC_CONST(0.493231830158728) }, - { FRAC_CONST(0.868380595208580), FRAC_CONST(0.495898318070542) }, - { FRAC_CONST(0.866855113845470), FRAC_CONST(0.498560138398525) }, - { FRAC_CONST(0.865321473311890), FRAC_CONST(0.501217266088610) }, - { FRAC_CONST(0.863779688043047), FRAC_CONST(0.503869676130899) }, - { FRAC_CONST(0.862229772550811), FRAC_CONST(0.506517343559899) }, - { FRAC_CONST(0.860671741423578), FRAC_CONST(0.509160243454755) }, - { FRAC_CONST(0.859105609326130), FRAC_CONST(0.511798350939487) }, - { FRAC_CONST(0.857531390999499), FRAC_CONST(0.514431641183223) }, - { FRAC_CONST(0.855949101260827), FRAC_CONST(0.517060089400432) }, - { FRAC_CONST(0.854358755003227), FRAC_CONST(0.519683670851158) }, - { FRAC_CONST(0.852760367195645), FRAC_CONST(0.522302360841255) }, - { FRAC_CONST(0.851153952882715), FRAC_CONST(0.524916134722613) }, - { FRAC_CONST(0.849539527184621), FRAC_CONST(0.527524967893398) }, - { FRAC_CONST(0.847917105296951), FRAC_CONST(0.530128835798279) }, - { FRAC_CONST(0.846286702490560), FRAC_CONST(0.532727713928659) }, - { FRAC_CONST(0.844648334111418), FRAC_CONST(0.535321577822907) }, - { FRAC_CONST(0.843002015580473), FRAC_CONST(0.537910403066589) }, - { FRAC_CONST(0.841347762393502), FRAC_CONST(0.540494165292695) }, - { FRAC_CONST(0.839685590120966), FRAC_CONST(0.543072840181872) }, - { FRAC_CONST(0.838015514407864), FRAC_CONST(0.545646403462649) }, - { FRAC_CONST(0.836337550973584), FRAC_CONST(0.548214830911668) }, - { FRAC_CONST(0.834651715611756), FRAC_CONST(0.550778098353912) }, - { FRAC_CONST(0.832958024190107), FRAC_CONST(0.553336181662932) }, - { FRAC_CONST(0.831256492650303), FRAC_CONST(0.555889056761074) }, - { FRAC_CONST(0.829547137007809), FRAC_CONST(0.558436699619704) }, - { FRAC_CONST(0.827829973351730), FRAC_CONST(0.560979086259438) }, - { FRAC_CONST(0.826105017844665), FRAC_CONST(0.563516192750365) }, - { FRAC_CONST(0.824372286722551), FRAC_CONST(0.566047995212271) }, - { FRAC_CONST(0.822631796294515), FRAC_CONST(0.568574469814869) }, - { FRAC_CONST(0.820883562942715), FRAC_CONST(0.571095592778017) }, - { FRAC_CONST(0.819127603122188), FRAC_CONST(0.573611340371945) }, - { FRAC_CONST(0.817363933360698), FRAC_CONST(0.576121688917478) }, - { FRAC_CONST(0.815592570258577), FRAC_CONST(0.578626614786261) }, - { FRAC_CONST(0.813813530488567), FRAC_CONST(0.581126094400978) }, - { FRAC_CONST(0.812026830795670), FRAC_CONST(0.583620104235573) }, - { FRAC_CONST(0.810232487996982), FRAC_CONST(0.586108620815476) }, - { FRAC_CONST(0.808430518981543), FRAC_CONST(0.588591620717823) }, - { FRAC_CONST(0.806620940710170), FRAC_CONST(0.591069080571671) }, - { FRAC_CONST(0.804803770215303), FRAC_CONST(0.593540977058226) }, - { FRAC_CONST(0.802979024600843), FRAC_CONST(0.596007286911057) }, - { FRAC_CONST(0.801146721041991), FRAC_CONST(0.598467986916314) }, - { FRAC_CONST(0.799306876785086), FRAC_CONST(0.600923053912954) }, - { FRAC_CONST(0.797459509147442), FRAC_CONST(0.603372464792950) }, - { FRAC_CONST(0.795604635517188), FRAC_CONST(0.605816196501515) }, - { FRAC_CONST(0.793742273353100), FRAC_CONST(0.608254226037314) }, - { FRAC_CONST(0.791872440184440), FRAC_CONST(0.610686530452686) }, - { FRAC_CONST(0.789995153610791), FRAC_CONST(0.613113086853855) }, - { FRAC_CONST(0.788110431301888), FRAC_CONST(0.615533872401147) }, - { FRAC_CONST(0.786218290997456), FRAC_CONST(0.617948864309208) }, - { FRAC_CONST(0.784318750507039), FRAC_CONST(0.620358039847214) }, - { FRAC_CONST(0.782411827709837), FRAC_CONST(0.622761376339086) }, - { FRAC_CONST(0.780497540554532), FRAC_CONST(0.625158851163708) }, - { FRAC_CONST(0.778575907059125), FRAC_CONST(0.627550441755132) }, - { FRAC_CONST(0.776646945310762), FRAC_CONST(0.629936125602796) }, - { FRAC_CONST(0.774710673465566), FRAC_CONST(0.632315880251738) }, - { FRAC_CONST(0.772767109748464), FRAC_CONST(0.634689683302798) }, - { FRAC_CONST(0.770816272453019), FRAC_CONST(0.637057512412839) }, - { FRAC_CONST(0.768858179941253), FRAC_CONST(0.639419345294951) }, - { FRAC_CONST(0.766892850643481), FRAC_CONST(0.641775159718664) }, - { FRAC_CONST(0.764920303058128), FRAC_CONST(0.644124933510155) }, - { FRAC_CONST(0.762940555751566), FRAC_CONST(0.646468644552458) }, - { FRAC_CONST(0.760953627357928), FRAC_CONST(0.648806270785673) }, - { FRAC_CONST(0.758959536578942), FRAC_CONST(0.651137790207170) }, - { FRAC_CONST(0.756958302183750), FRAC_CONST(0.653463180871802) }, - { FRAC_CONST(0.754949943008733), FRAC_CONST(0.655782420892106) }, - { FRAC_CONST(0.752934477957330), FRAC_CONST(0.658095488438511) }, - { FRAC_CONST(0.750911925999868), FRAC_CONST(0.660402361739545) }, - { FRAC_CONST(0.748882306173375), FRAC_CONST(0.662703019082037) }, - { FRAC_CONST(0.746845637581407), FRAC_CONST(0.664997438811325) }, - { FRAC_CONST(0.744801939393863), FRAC_CONST(0.667285599331456) }, - { FRAC_CONST(0.742751230846809), FRAC_CONST(0.669567479105392) }, - { FRAC_CONST(0.740693531242296), FRAC_CONST(0.671843056655212) }, - { FRAC_CONST(0.738628859948175), FRAC_CONST(0.674112310562312) }, - { FRAC_CONST(0.736557236397919), FRAC_CONST(0.676375219467612) }, - { FRAC_CONST(0.734478680090438), FRAC_CONST(0.678631762071749) }, - { FRAC_CONST(0.732393210589896), FRAC_CONST(0.680881917135287) }, - { FRAC_CONST(0.730300847525525), FRAC_CONST(0.683125663478909) }, - { FRAC_CONST(0.728201610591445), FRAC_CONST(0.685362979983619) }, - { FRAC_CONST(0.726095519546471), FRAC_CONST(0.687593845590942) }, - { FRAC_CONST(0.723982594213936), FRAC_CONST(0.689818239303122) }, - { FRAC_CONST(0.721862854481496), FRAC_CONST(0.692036140183319) }, - { FRAC_CONST(0.719736320300951), FRAC_CONST(0.694247527355803) }, - { FRAC_CONST(0.717603011688049), FRAC_CONST(0.696452380006158) }, - { FRAC_CONST(0.715462948722304), FRAC_CONST(0.698650677381469) }, - { FRAC_CONST(0.713316151546803), FRAC_CONST(0.700842398790526) }, - { FRAC_CONST(0.711162640368018), FRAC_CONST(0.703027523604011) }, - { FRAC_CONST(0.709002435455618), FRAC_CONST(0.705206031254698) }, - { FRAC_CONST(0.706835557142274), FRAC_CONST(0.707377901237642) }, - { FRAC_CONST(0.704662025823469), FRAC_CONST(0.709543113110377) }, - { FRAC_CONST(0.702481861957308), FRAC_CONST(0.711701646493103) }, - { FRAC_CONST(0.700295086064324), FRAC_CONST(0.713853481068882) }, - { FRAC_CONST(0.698101718727284), FRAC_CONST(0.715998596583829) }, - { FRAC_CONST(0.695901780590997), FRAC_CONST(0.718136972847297) }, - { FRAC_CONST(0.693695292362118), FRAC_CONST(0.720268589732077) }, - { FRAC_CONST(0.691482274808956), FRAC_CONST(0.722393427174578) }, - { FRAC_CONST(0.689262748761273), FRAC_CONST(0.724511465175020) }, - { FRAC_CONST(0.687036735110096), FRAC_CONST(0.726622683797623) }, - { FRAC_CONST(0.684804254807511), FRAC_CONST(0.728727063170794) }, - { FRAC_CONST(0.682565328866473), FRAC_CONST(0.730824583487312) }, - { FRAC_CONST(0.680319978360607), FRAC_CONST(0.732915225004518) }, - { FRAC_CONST(0.678068224424007), FRAC_CONST(0.734998968044497) }, - { FRAC_CONST(0.675810088251037), FRAC_CONST(0.737075792994266) }, - { FRAC_CONST(0.673545591096136), FRAC_CONST(0.739145680305957) }, - { FRAC_CONST(0.671274754273613), FRAC_CONST(0.741208610497004) }, - { FRAC_CONST(0.668997599157450), FRAC_CONST(0.743264564150321) }, - { FRAC_CONST(0.666714147181098), FRAC_CONST(0.745313521914490) }, - { FRAC_CONST(0.664424419837275), FRAC_CONST(0.747355464503940) }, - { FRAC_CONST(0.662128438677769), FRAC_CONST(0.749390372699130) }, - { FRAC_CONST(0.659826225313227), FRAC_CONST(0.751418227346727) }, - { FRAC_CONST(0.657517801412960), FRAC_CONST(0.753439009359794) }, - { FRAC_CONST(0.655203188704732), FRAC_CONST(0.755452699717958) }, - { FRAC_CONST(0.652882408974559), FRAC_CONST(0.757459279467601) }, - { FRAC_CONST(0.650555484066504), FRAC_CONST(0.759458729722028) }, - { FRAC_CONST(0.648222435882470), FRAC_CONST(0.761451031661654) }, - { FRAC_CONST(0.645883286381996), FRAC_CONST(0.763436166534172) }, - { FRAC_CONST(0.643538057582048), FRAC_CONST(0.765414115654738) }, - { FRAC_CONST(0.641186771556811), FRAC_CONST(0.767384860406142) }, - { FRAC_CONST(0.638829450437486), FRAC_CONST(0.769348382238982) }, - { FRAC_CONST(0.636466116412077), FRAC_CONST(0.771304662671845) }, - { FRAC_CONST(0.634096791725184), FRAC_CONST(0.773253683291473) }, - { FRAC_CONST(0.631721498677792), FRAC_CONST(0.775195425752941) }, - { FRAC_CONST(0.629340259627066), FRAC_CONST(0.777129871779832) }, - { FRAC_CONST(0.626953096986133), FRAC_CONST(0.779057003164401) }, - { FRAC_CONST(0.624560033223877), FRAC_CONST(0.780976801767754) }, - { FRAC_CONST(0.622161090864727), FRAC_CONST(0.782889249520015) }, - { FRAC_CONST(0.619756292488441), FRAC_CONST(0.784794328420499) }, - { FRAC_CONST(0.617345660729897), FRAC_CONST(0.786692020537877) }, - { FRAC_CONST(0.614929218278880), FRAC_CONST(0.788582308010347) }, - { FRAC_CONST(0.612506987879866), FRAC_CONST(0.790465173045805) }, - { FRAC_CONST(0.610078992331810), FRAC_CONST(0.792340597922007) }, - { FRAC_CONST(0.607645254487931), FRAC_CONST(0.794208564986741) }, - { FRAC_CONST(0.605205797255497), FRAC_CONST(0.796069056657988) }, - { FRAC_CONST(0.602760643595607), FRAC_CONST(0.797922055424093) }, - { FRAC_CONST(0.600309816522980), FRAC_CONST(0.799767543843926) }, - { FRAC_CONST(0.597853339105734), FRAC_CONST(0.801605504547046) }, - { FRAC_CONST(0.595391234465169), FRAC_CONST(0.803435920233868) }, - { FRAC_CONST(0.592923525775551), FRAC_CONST(0.805258773675822) }, - { FRAC_CONST(0.590450236263896), FRAC_CONST(0.807074047715518) }, - { FRAC_CONST(0.587971389209745), FRAC_CONST(0.808881725266904) }, - { FRAC_CONST(0.585487007944951), FRAC_CONST(0.810681789315431) }, - { FRAC_CONST(0.582997115853458), FRAC_CONST(0.812474222918210) }, - { FRAC_CONST(0.580501736371077), FRAC_CONST(0.814259009204175) }, - { FRAC_CONST(0.578000892985270), FRAC_CONST(0.816036131374237) }, - { FRAC_CONST(0.575494609234928), FRAC_CONST(0.817805572701444) }, - { FRAC_CONST(0.572982908710149), FRAC_CONST(0.819567316531142) }, - { FRAC_CONST(0.570465815052013), FRAC_CONST(0.821321346281127) }, - { FRAC_CONST(0.567943351952366), FRAC_CONST(0.823067645441802) }, - { FRAC_CONST(0.565415543153590), FRAC_CONST(0.824806197576334) }, - { FRAC_CONST(0.562882412448385), FRAC_CONST(0.826536986320810) }, - { FRAC_CONST(0.560343983679541), FRAC_CONST(0.828259995384386) }, - { FRAC_CONST(0.557800280739717), FRAC_CONST(0.829975208549444) }, - { FRAC_CONST(0.555251327571214), FRAC_CONST(0.831682609671745) }, - { FRAC_CONST(0.552697148165750), FRAC_CONST(0.833382182680580) }, - { FRAC_CONST(0.550137766564234), FRAC_CONST(0.835073911578919) }, - { FRAC_CONST(0.547573206856540), FRAC_CONST(0.836757780443567) }, - { FRAC_CONST(0.545003493181281), FRAC_CONST(0.838433773425308) }, - { FRAC_CONST(0.542428649725581), FRAC_CONST(0.840101874749058) }, - { FRAC_CONST(0.539848700724848), FRAC_CONST(0.841762068714012) }, - { FRAC_CONST(0.537263670462543), FRAC_CONST(0.843414339693793) }, - { FRAC_CONST(0.534673583269956), FRAC_CONST(0.845058672136595) }, - { FRAC_CONST(0.532078463525974), FRAC_CONST(0.846695050565337) }, - { FRAC_CONST(0.529478335656852), FRAC_CONST(0.848323459577802) }, - { FRAC_CONST(0.526873224135985), FRAC_CONST(0.849943883846782) }, - { FRAC_CONST(0.524263153483673), FRAC_CONST(0.851556308120229) }, - { FRAC_CONST(0.521648148266897), FRAC_CONST(0.853160717221390) }, - { FRAC_CONST(0.519028233099081), FRAC_CONST(0.854757096048957) }, - { FRAC_CONST(0.516403432639864), FRAC_CONST(0.856345429577204) }, - { FRAC_CONST(0.513773771594868), FRAC_CONST(0.857925702856130) }, - { FRAC_CONST(0.511139274715464), FRAC_CONST(0.859497901011602) }, - { FRAC_CONST(0.508499966798541), FRAC_CONST(0.861062009245491) }, - { FRAC_CONST(0.505855872686269), FRAC_CONST(0.862618012835817) }, - { FRAC_CONST(0.503207017265869), FRAC_CONST(0.864165897136879) }, - { FRAC_CONST(0.500553425469378), FRAC_CONST(0.865705647579402) }, - { FRAC_CONST(0.497895122273411), FRAC_CONST(0.867237249670668) }, - { FRAC_CONST(0.495232132698931), FRAC_CONST(0.868760688994655) }, - { FRAC_CONST(0.492564481811011), FRAC_CONST(0.870275951212172) }, - { FRAC_CONST(0.489892194718595), FRAC_CONST(0.871783022060993) }, - { FRAC_CONST(0.487215296574269), FRAC_CONST(0.873281887355994) }, - { FRAC_CONST(0.484533812574016), FRAC_CONST(0.874772532989284) }, - { FRAC_CONST(0.481847767956986), FRAC_CONST(0.876254944930338) }, - { FRAC_CONST(0.479157188005253), FRAC_CONST(0.877729109226132) }, - { FRAC_CONST(0.476462098043581), FRAC_CONST(0.879195012001267) }, - { FRAC_CONST(0.473762523439183), FRAC_CONST(0.880652639458111) }, - { FRAC_CONST(0.471058489601483), FRAC_CONST(0.882101977876918) }, - { FRAC_CONST(0.468350021981877), FRAC_CONST(0.883543013615962) }, - { FRAC_CONST(0.465637146073494), FRAC_CONST(0.884975733111667) }, - { FRAC_CONST(0.462919887410955), FRAC_CONST(0.886400122878730) }, - { FRAC_CONST(0.460198271570134), FRAC_CONST(0.887816169510255) }, - { FRAC_CONST(0.457472324167916), FRAC_CONST(0.889223859677868) }, - { FRAC_CONST(0.454742070861955), FRAC_CONST(0.890623180131856) }, - { FRAC_CONST(0.452007537350437), FRAC_CONST(0.892014117701280) }, - { FRAC_CONST(0.449268749371830), FRAC_CONST(0.893396659294108) }, - { FRAC_CONST(0.446525732704651), FRAC_CONST(0.894770791897330) }, - { FRAC_CONST(0.443778513167218), FRAC_CONST(0.896136502577087) }, - { FRAC_CONST(0.441027116617407), FRAC_CONST(0.897493778478790) }, - { FRAC_CONST(0.438271568952410), FRAC_CONST(0.898842606827242) }, - { FRAC_CONST(0.435511896108492), FRAC_CONST(0.900182974926757) }, - { FRAC_CONST(0.432748124060744), FRAC_CONST(0.901514870161279) }, - { FRAC_CONST(0.429980278822841), FRAC_CONST(0.902838279994503) }, - { FRAC_CONST(0.427208386446796), FRAC_CONST(0.904153191969992) }, - { FRAC_CONST(0.424432473022717), FRAC_CONST(0.905459593711293) }, - { FRAC_CONST(0.421652564678558), FRAC_CONST(0.906757472922057) }, - { FRAC_CONST(0.418868687579875), FRAC_CONST(0.908046817386148) }, - { FRAC_CONST(0.416080867929579), FRAC_CONST(0.909327614967767) }, - { FRAC_CONST(0.413289131967691), FRAC_CONST(0.910599853611559) }, - { FRAC_CONST(0.410493505971093), FRAC_CONST(0.911863521342729) }, - { FRAC_CONST(0.407694016253280), FRAC_CONST(0.913118606267154) }, - { FRAC_CONST(0.404890689164118), FRAC_CONST(0.914365096571498) }, - { FRAC_CONST(0.402083551089587), FRAC_CONST(0.915602980523320) }, - { FRAC_CONST(0.399272628451541), FRAC_CONST(0.916832246471184) }, - { FRAC_CONST(0.396457947707454), FRAC_CONST(0.918052882844770) }, - { FRAC_CONST(0.393639535350173), FRAC_CONST(0.919264878154985) }, - { FRAC_CONST(0.390817417907669), FRAC_CONST(0.920468220994067) }, - { FRAC_CONST(0.387991621942785), FRAC_CONST(0.921662900035695) }, - { FRAC_CONST(0.385162174052990), FRAC_CONST(0.922848904035094) }, - { FRAC_CONST(0.382329100870125), FRAC_CONST(0.924026221829144) }, - { FRAC_CONST(0.379492429060153), FRAC_CONST(0.925194842336480) }, - { FRAC_CONST(0.376652185322910), FRAC_CONST(0.926354754557603) }, - { FRAC_CONST(0.373808396391851), FRAC_CONST(0.927505947574975) }, - { FRAC_CONST(0.370961089033802), FRAC_CONST(0.928648410553131) }, - { FRAC_CONST(0.368110290048703), FRAC_CONST(0.929782132738772) }, - { FRAC_CONST(0.365256026269360), FRAC_CONST(0.930907103460875) }, - { FRAC_CONST(0.362398324561191), FRAC_CONST(0.932023312130786) }, - { FRAC_CONST(0.359537211821973), FRAC_CONST(0.933130748242325) }, - { FRAC_CONST(0.356672714981588), FRAC_CONST(0.934229401371881) }, - { FRAC_CONST(0.353804861001772), FRAC_CONST(0.935319261178512) }, - { FRAC_CONST(0.350933676875858), FRAC_CONST(0.936400317404042) }, - { FRAC_CONST(0.348059189628526), FRAC_CONST(0.937472559873159) }, - { FRAC_CONST(0.345181426315543), FRAC_CONST(0.938535978493509) }, - { FRAC_CONST(0.342300414023514), FRAC_CONST(0.939590563255789) }, - { FRAC_CONST(0.339416179869623), FRAC_CONST(0.940636304233848) }, - { FRAC_CONST(0.336528751001382), FRAC_CONST(0.941673191584771) }, - { FRAC_CONST(0.333638154596371), FRAC_CONST(0.942701215548982) }, - { FRAC_CONST(0.330744417861983), FRAC_CONST(0.943720366450326) }, - { FRAC_CONST(0.327847568035171), FRAC_CONST(0.944730634696168) }, - { FRAC_CONST(0.324947632382188), FRAC_CONST(0.945732010777477) }, - { FRAC_CONST(0.322044638198335), FRAC_CONST(0.946724485268921) }, - { FRAC_CONST(0.319138612807696), FRAC_CONST(0.947708048828952) }, - { FRAC_CONST(0.316229583562890), FRAC_CONST(0.948682692199895) }, - { FRAC_CONST(0.313317577844809), FRAC_CONST(0.949648406208035) }, - { FRAC_CONST(0.310402623062359), FRAC_CONST(0.950605181763705) }, - { FRAC_CONST(0.307484746652204), FRAC_CONST(0.951553009861369) }, - { FRAC_CONST(0.304563976078509), FRAC_CONST(0.952491881579706) }, - { FRAC_CONST(0.301640338832679), FRAC_CONST(0.953421788081700) }, - { FRAC_CONST(0.298713862433100), FRAC_CONST(0.954342720614716) }, - { FRAC_CONST(0.295784574424884), FRAC_CONST(0.955254670510587) }, - { FRAC_CONST(0.292852502379605), FRAC_CONST(0.956157629185692) }, - { FRAC_CONST(0.289917673895041), FRAC_CONST(0.957051588141041) }, - { FRAC_CONST(0.286980116594916), FRAC_CONST(0.957936538962351) }, - { FRAC_CONST(0.284039858128637), FRAC_CONST(0.958812473320129) }, - { FRAC_CONST(0.281096926171038), FRAC_CONST(0.959679382969747) }, - { FRAC_CONST(0.278151348422115), FRAC_CONST(0.960537259751520) }, - { FRAC_CONST(0.275203152606767), FRAC_CONST(0.961386095590786) }, - { FRAC_CONST(0.272252366474537), FRAC_CONST(0.962225882497979) }, - { FRAC_CONST(0.269299017799346), FRAC_CONST(0.963056612568704) }, - { FRAC_CONST(0.266343134379238), FRAC_CONST(0.963878277983814) }, - { FRAC_CONST(0.263384744036113), FRAC_CONST(0.964690871009481) }, - { FRAC_CONST(0.260423874615468), FRAC_CONST(0.965494383997270) }, - { FRAC_CONST(0.257460553986133), FRAC_CONST(0.966288809384210) }, - { FRAC_CONST(0.254494810040011), FRAC_CONST(0.967074139692867) }, - { FRAC_CONST(0.251526670691813), FRAC_CONST(0.967850367531414) }, - { FRAC_CONST(0.248556163878797), FRAC_CONST(0.968617485593698) }, - { FRAC_CONST(0.245583317560504), FRAC_CONST(0.969375486659311) }, - { FRAC_CONST(0.242608159718497), FRAC_CONST(0.970124363593660) }, - { FRAC_CONST(0.239630718356094), FRAC_CONST(0.970864109348029) }, - { FRAC_CONST(0.236651021498106), FRAC_CONST(0.971594716959650) }, - { FRAC_CONST(0.233669097190577), FRAC_CONST(0.972316179551765) }, - { FRAC_CONST(0.230684973500512), FRAC_CONST(0.973028490333694) }, - { FRAC_CONST(0.227698678515621), FRAC_CONST(0.973731642600896) }, - { FRAC_CONST(0.224710240344050), FRAC_CONST(0.974425629735035) }, - { FRAC_CONST(0.221719687114115), FRAC_CONST(0.975110445204039) }, - { FRAC_CONST(0.218727046974045), FRAC_CONST(0.975786082562164) }, - { FRAC_CONST(0.215732348091706), FRAC_CONST(0.976452535450054) }, - { FRAC_CONST(0.212735618654346), FRAC_CONST(0.977109797594801) }, - { FRAC_CONST(0.209736886868323), FRAC_CONST(0.977757862810003) }, - { FRAC_CONST(0.206736180958844), FRAC_CONST(0.978396724995823) }, - { FRAC_CONST(0.203733529169694), FRAC_CONST(0.979026378139048) }, - { FRAC_CONST(0.200728959762976), FRAC_CONST(0.979646816313141) }, - { FRAC_CONST(0.197722501018842), FRAC_CONST(0.980258033678304) }, - { FRAC_CONST(0.194714181235226), FRAC_CONST(0.980860024481524) }, - { FRAC_CONST(0.191704028727580), FRAC_CONST(0.981452783056636) }, - { FRAC_CONST(0.188692071828605), FRAC_CONST(0.982036303824369) }, - { FRAC_CONST(0.185678338887988), FRAC_CONST(0.982610581292405) }, - { FRAC_CONST(0.182662858272129), FRAC_CONST(0.983175610055424) }, - { FRAC_CONST(0.179645658363882), FRAC_CONST(0.983731384795162) }, - { FRAC_CONST(0.176626767562281), FRAC_CONST(0.984277900280454) }, - { FRAC_CONST(0.173606214282275), FRAC_CONST(0.984815151367289) }, - { FRAC_CONST(0.170584026954464), FRAC_CONST(0.985343132998855) }, - { FRAC_CONST(0.167560234024824), FRAC_CONST(0.985861840205587) }, - { FRAC_CONST(0.164534863954446), FRAC_CONST(0.986371268105216) }, - { FRAC_CONST(0.161507945219266), FRAC_CONST(0.986871411902812) }, - { FRAC_CONST(0.158479506309796), FRAC_CONST(0.987362266890832) }, - { FRAC_CONST(0.155449575730856), FRAC_CONST(0.987843828449162) }, - { FRAC_CONST(0.152418182001307), FRAC_CONST(0.988316092045160) }, - { FRAC_CONST(0.149385353653780), FRAC_CONST(0.988779053233702) }, - { FRAC_CONST(0.146351119234411), FRAC_CONST(0.989232707657220) }, - { FRAC_CONST(0.143315507302572), FRAC_CONST(0.989677051045747) }, - { FRAC_CONST(0.140278546430595), FRAC_CONST(0.990112079216954) }, - { FRAC_CONST(0.137240265203516), FRAC_CONST(0.990537788076189) }, - { FRAC_CONST(0.134200692218792), FRAC_CONST(0.990954173616519) }, - { FRAC_CONST(0.131159856086043), FRAC_CONST(0.991361231918763) }, - { FRAC_CONST(0.128117785426777), FRAC_CONST(0.991758959151536) }, - { FRAC_CONST(0.125074508874121), FRAC_CONST(0.992147351571276) }, - { FRAC_CONST(0.122030055072553), FRAC_CONST(0.992526405522286) }, - { FRAC_CONST(0.118984452677633), FRAC_CONST(0.992896117436766) }, - { FRAC_CONST(0.115937730355728), FRAC_CONST(0.993256483834846) }, - { FRAC_CONST(0.112889916783750), FRAC_CONST(0.993607501324622) }, - { FRAC_CONST(0.109841040648883), FRAC_CONST(0.993949166602181) }, - { FRAC_CONST(0.106791130648307), FRAC_CONST(0.994281476451642) }, - { FRAC_CONST(0.103740215488939), FRAC_CONST(0.994604427745176) }, - { FRAC_CONST(0.100688323887154), FRAC_CONST(0.994918017443043) }, - { FRAC_CONST(0.097635484568517), FRAC_CONST(0.995222242593618) }, - { FRAC_CONST(0.094581726267515), FRAC_CONST(0.995517100333418) }, - { FRAC_CONST(0.091527077727285), FRAC_CONST(0.995802587887129) }, - { FRAC_CONST(0.088471567699341), FRAC_CONST(0.996078702567634) }, - { FRAC_CONST(0.085415224943307), FRAC_CONST(0.996345441776036) }, - { FRAC_CONST(0.082358078226647), FRAC_CONST(0.996602803001684) }, - { FRAC_CONST(0.079300156324388), FRAC_CONST(0.996850783822197) }, - { FRAC_CONST(0.076241488018856), FRAC_CONST(0.997089381903483) }, - { FRAC_CONST(0.073182102099403), FRAC_CONST(0.997318594999769) }, - { FRAC_CONST(0.070122027362134), FRAC_CONST(0.997538420953611) }, - { FRAC_CONST(0.067061292609637), FRAC_CONST(0.997748857695926) }, - { FRAC_CONST(0.063999926650714), FRAC_CONST(0.997949903246001) }, - { FRAC_CONST(0.060937958300107), FRAC_CONST(0.998141555711521) }, - { FRAC_CONST(0.057875416378229), FRAC_CONST(0.998323813288578) }, - { FRAC_CONST(0.054812329710890), FRAC_CONST(0.998496674261695) }, - { FRAC_CONST(0.051748727129028), FRAC_CONST(0.998660137003838) }, - { FRAC_CONST(0.048684637468439), FRAC_CONST(0.998814199976435) }, - { FRAC_CONST(0.045620089569500), FRAC_CONST(0.998958861729386) }, - { FRAC_CONST(0.042555112276904), FRAC_CONST(0.999094120901079) }, - { FRAC_CONST(0.039489734439384), FRAC_CONST(0.999219976218404) }, - { FRAC_CONST(0.036423984909444), FRAC_CONST(0.999336426496761) }, - { FRAC_CONST(0.033357892543086), FRAC_CONST(0.999443470640078) }, - { FRAC_CONST(0.030291486199539), FRAC_CONST(0.999541107640813) }, - { FRAC_CONST(0.027224794740988), FRAC_CONST(0.999629336579970) }, - { FRAC_CONST(0.024157847032300), FRAC_CONST(0.999708156627105) }, - { FRAC_CONST(0.021090671940755), FRAC_CONST(0.999777567040333) }, - { FRAC_CONST(0.018023298335774), FRAC_CONST(0.999837567166337) }, - { FRAC_CONST(0.014955755088644), FRAC_CONST(0.999888156440373) }, - { FRAC_CONST(0.011888071072252), FRAC_CONST(0.999929334386276) }, - { FRAC_CONST(0.008820275160808), FRAC_CONST(0.999961100616463) }, - { FRAC_CONST(0.005752396229574), FRAC_CONST(0.999983454831938) }, - { FRAC_CONST(0.002684463154596), FRAC_CONST(0.999996396822294) } -}; - -/* 64 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_256[] ICONST_ATTR = -{ - { FRAC_CONST(0.999995293809576), FRAC_CONST(0.003067956762966) }, - { FRAC_CONST(0.999618822495179), FRAC_CONST(0.027608145778966) }, - { FRAC_CONST(0.998640218180265), FRAC_CONST(0.052131704680283) }, - { FRAC_CONST(0.997060070339483), FRAC_CONST(0.076623861392031) }, - { FRAC_CONST(0.994879330794806), FRAC_CONST(0.101069862754828) }, - { FRAC_CONST(0.992099313142192), FRAC_CONST(0.125454983411546) }, - { FRAC_CONST(0.988721691960324), FRAC_CONST(0.149764534677322) }, - { FRAC_CONST(0.984748501801904), FRAC_CONST(0.173983873387464) }, - { FRAC_CONST(0.980182135968117), FRAC_CONST(0.198098410717954) }, - { FRAC_CONST(0.975025345066994), FRAC_CONST(0.222093620973204) }, - { FRAC_CONST(0.969281235356549), FRAC_CONST(0.245955050335795) }, - { FRAC_CONST(0.962953266873684), FRAC_CONST(0.269668325572915) }, - { FRAC_CONST(0.956045251349996), FRAC_CONST(0.293219162694259) }, - { FRAC_CONST(0.948561349915730), FRAC_CONST(0.316593375556166) }, - { FRAC_CONST(0.940506070593268), FRAC_CONST(0.339776884406827) }, - { FRAC_CONST(0.931884265581668), FRAC_CONST(0.362755724367397) }, - { FRAC_CONST(0.922701128333879), FRAC_CONST(0.385516053843919) }, - { FRAC_CONST(0.912962190428398), FRAC_CONST(0.408044162864979) }, - { FRAC_CONST(0.902673318237259), FRAC_CONST(0.430326481340083) }, - { FRAC_CONST(0.891840709392343), FRAC_CONST(0.452349587233771) }, - { FRAC_CONST(0.880470889052161), FRAC_CONST(0.474100214650550) }, - { FRAC_CONST(0.868570705971341), FRAC_CONST(0.495565261825773) }, - { FRAC_CONST(0.856147328375194), FRAC_CONST(0.516731799017650) }, - { FRAC_CONST(0.843208239641845), FRAC_CONST(0.537587076295645) }, - { FRAC_CONST(0.829761233794523), FRAC_CONST(0.558118531220556) }, - { FRAC_CONST(0.815814410806734), FRAC_CONST(0.578313796411656) }, - { FRAC_CONST(0.801376171723140), FRAC_CONST(0.598160706996342) }, - { FRAC_CONST(0.786455213599086), FRAC_CONST(0.617647307937804) }, - { FRAC_CONST(0.771060524261814), FRAC_CONST(0.636761861236284) }, - { FRAC_CONST(0.755201376896537), FRAC_CONST(0.655492852999615) }, - { FRAC_CONST(0.738887324460615), FRAC_CONST(0.673829000378756) }, - { FRAC_CONST(0.722128193929215), FRAC_CONST(0.691759258364158) }, - { FRAC_CONST(0.704934080375905), FRAC_CONST(0.709272826438866) }, - { FRAC_CONST(0.687315340891759), FRAC_CONST(0.726359155084346) }, - { FRAC_CONST(0.669282588346636), FRAC_CONST(0.743007952135122) }, - { FRAC_CONST(0.650846684996381), FRAC_CONST(0.759209188978388) }, - { FRAC_CONST(0.632018735939809), FRAC_CONST(0.774953106594874) }, - { FRAC_CONST(0.612810082429410), FRAC_CONST(0.790230221437310) }, - { FRAC_CONST(0.593232295039800), FRAC_CONST(0.805031331142964) }, - { FRAC_CONST(0.573297166698042), FRAC_CONST(0.819347520076797) }, - { FRAC_CONST(0.553016705580028), FRAC_CONST(0.833170164701913) }, - { FRAC_CONST(0.532403127877198), FRAC_CONST(0.846490938774052) }, - { FRAC_CONST(0.511468850437971), FRAC_CONST(0.859301818357008) }, - { FRAC_CONST(0.490226483288291), FRAC_CONST(0.871595086655951) }, - { FRAC_CONST(0.468688822035828), FRAC_CONST(0.883363338665732) }, - { FRAC_CONST(0.446868840162374), FRAC_CONST(0.894599485631383) }, - { FRAC_CONST(0.424779681209109), FRAC_CONST(0.905296759318119) }, - { FRAC_CONST(0.402434650859419), FRAC_CONST(0.915448716088268) }, - { FRAC_CONST(0.379847208924051), FRAC_CONST(0.925049240782678) }, - { FRAC_CONST(0.357030961233430), FRAC_CONST(0.934092550404259) }, - { FRAC_CONST(0.333999651442009), FRAC_CONST(0.942573197601447) }, - { FRAC_CONST(0.310767152749611), FRAC_CONST(0.950486073949482) }, - { FRAC_CONST(0.287347459544730), FRAC_CONST(0.957826413027533) }, - { FRAC_CONST(0.263754678974832), FRAC_CONST(0.964589793289813) }, - { FRAC_CONST(0.240003022448742), FRAC_CONST(0.970772140728950) }, - { FRAC_CONST(0.216106797076220), FRAC_CONST(0.976369731330021) }, - { FRAC_CONST(0.192080397049892), FRAC_CONST(0.981379193313755) }, - { FRAC_CONST(0.167938294974731), FRAC_CONST(0.985797509167567) }, - { FRAC_CONST(0.143695033150295), FRAC_CONST(0.989622017463201) }, - { FRAC_CONST(0.119365214810991), FRAC_CONST(0.992850414459865) }, - { FRAC_CONST(0.094963495329639), FRAC_CONST(0.995480755491927) }, - { FRAC_CONST(0.070504573389614), FRAC_CONST(0.997511456140303) }, - { FRAC_CONST(0.046003182130915), FRAC_CONST(0.998941293186857) }, - { FRAC_CONST(0.021474080275470), FRAC_CONST(0.999769405351215) } -}; - -#ifdef LD_DEC -/* 256 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_1024[] = -{ - { FRAC_CONST(0.999999705862882), FRAC_CONST(0.000766990318743) }, - { FRAC_CONST(0.999976174986898), FRAC_CONST(0.006902858724730) }, - { FRAC_CONST(0.999914995573113), FRAC_CONST(0.013038467241987) }, - { FRAC_CONST(0.999816169924900), FRAC_CONST(0.019173584868323) }, - { FRAC_CONST(0.999679701762988), FRAC_CONST(0.025307980620025) }, - { FRAC_CONST(0.999505596225325), FRAC_CONST(0.031441423540560) }, - { FRAC_CONST(0.999293859866888), FRAC_CONST(0.037573682709270) }, - { FRAC_CONST(0.999044500659429), FRAC_CONST(0.043704527250063) }, - { FRAC_CONST(0.998757527991183), FRAC_CONST(0.049833726340107) }, - { FRAC_CONST(0.998432952666508), FRAC_CONST(0.055961049218521) }, - { FRAC_CONST(0.998070786905482), FRAC_CONST(0.062086265195060) }, - { FRAC_CONST(0.997671044343441), FRAC_CONST(0.068209143658806) }, - { FRAC_CONST(0.997233740030466), FRAC_CONST(0.074329454086846) }, - { FRAC_CONST(0.996758890430818), FRAC_CONST(0.080446966052950) }, - { FRAC_CONST(0.996246513422316), FRAC_CONST(0.086561449236251) }, - { FRAC_CONST(0.995696628295664), FRAC_CONST(0.092672673429913) }, - { FRAC_CONST(0.995109255753726), FRAC_CONST(0.098780408549800) }, - { FRAC_CONST(0.994484417910748), FRAC_CONST(0.104884424643135) }, - { FRAC_CONST(0.993822138291520), FRAC_CONST(0.110984491897163) }, - { FRAC_CONST(0.993122441830496), FRAC_CONST(0.117080380647801) }, - { FRAC_CONST(0.992385354870852), FRAC_CONST(0.123171861388280) }, - { FRAC_CONST(0.991610905163495), FRAC_CONST(0.129258704777796) }, - { FRAC_CONST(0.990799121866020), FRAC_CONST(0.135340681650134) }, - { FRAC_CONST(0.989950035541609), FRAC_CONST(0.141417563022303) }, - { FRAC_CONST(0.989063678157882), FRAC_CONST(0.147489120103154) }, - { FRAC_CONST(0.988140083085693), FRAC_CONST(0.153555124301993) }, - { FRAC_CONST(0.987179285097874), FRAC_CONST(0.159615347237193) }, - { FRAC_CONST(0.986181320367928), FRAC_CONST(0.165669560744784) }, - { FRAC_CONST(0.985146226468662), FRAC_CONST(0.171717536887050) }, - { FRAC_CONST(0.984074042370776), FRAC_CONST(0.177759047961107) }, - { FRAC_CONST(0.982964808441396), FRAC_CONST(0.183793866507478) }, - { FRAC_CONST(0.981818566442553), FRAC_CONST(0.189821765318656) }, - { FRAC_CONST(0.980635359529608), FRAC_CONST(0.195842517447658) }, - { FRAC_CONST(0.979415232249635), FRAC_CONST(0.201855896216568) }, - { FRAC_CONST(0.978158230539735), FRAC_CONST(0.207861675225075) }, - { FRAC_CONST(0.976864401725313), FRAC_CONST(0.213859628358994) }, - { FRAC_CONST(0.975533794518291), FRAC_CONST(0.219849529798779) }, - { FRAC_CONST(0.974166459015280), FRAC_CONST(0.225831154028026) }, - { FRAC_CONST(0.972762446695689), FRAC_CONST(0.231804275841965) }, - { FRAC_CONST(0.971321810419786), FRAC_CONST(0.237768670355934) }, - { FRAC_CONST(0.969844604426715), FRAC_CONST(0.243724113013852) }, - { FRAC_CONST(0.968330884332445), FRAC_CONST(0.249670379596669) }, - { FRAC_CONST(0.966780707127683), FRAC_CONST(0.255607246230807) }, - { FRAC_CONST(0.965194131175725), FRAC_CONST(0.261534489396596) }, - { FRAC_CONST(0.963571216210257), FRAC_CONST(0.267451885936678) }, - { FRAC_CONST(0.961912023333112), FRAC_CONST(0.273359213064419) }, - { FRAC_CONST(0.960216615011963), FRAC_CONST(0.279256248372291) }, - { FRAC_CONST(0.958485055077976), FRAC_CONST(0.285142769840249) }, - { FRAC_CONST(0.956717408723403), FRAC_CONST(0.291018555844085) }, - { FRAC_CONST(0.954913742499131), FRAC_CONST(0.296883385163778) }, - { FRAC_CONST(0.953074124312172), FRAC_CONST(0.302737036991819) }, - { FRAC_CONST(0.951198623423113), FRAC_CONST(0.308579290941525) }, - { FRAC_CONST(0.949287310443502), FRAC_CONST(0.314409927055337) }, - { FRAC_CONST(0.947340257333192), FRAC_CONST(0.320228725813100) }, - { FRAC_CONST(0.945357537397632), FRAC_CONST(0.326035468140330) }, - { FRAC_CONST(0.943339225285108), FRAC_CONST(0.331829935416461) }, - { FRAC_CONST(0.941285396983929), FRAC_CONST(0.337611909483075) }, - { FRAC_CONST(0.939196129819570), FRAC_CONST(0.343381172652115) }, - { FRAC_CONST(0.937071502451759), FRAC_CONST(0.349137507714085) }, - { FRAC_CONST(0.934911594871516), FRAC_CONST(0.354880697946223) }, - { FRAC_CONST(0.932716488398140), FRAC_CONST(0.360610527120662) }, - { FRAC_CONST(0.930486265676150), FRAC_CONST(0.366326779512574) }, - { FRAC_CONST(0.928221010672169), FRAC_CONST(0.372029239908285) }, - { FRAC_CONST(0.925920808671770), FRAC_CONST(0.377717693613386) }, - { FRAC_CONST(0.923585746276257), FRAC_CONST(0.383391926460809) }, - { FRAC_CONST(0.921215911399409), FRAC_CONST(0.389051724818894) }, - { FRAC_CONST(0.918811393264170), FRAC_CONST(0.394696875599434) }, - { FRAC_CONST(0.916372282399289), FRAC_CONST(0.400327166265690) }, - { FRAC_CONST(0.913898670635912), FRAC_CONST(0.405942384840403) }, - { FRAC_CONST(0.911390651104122), FRAC_CONST(0.411542319913765) }, - { FRAC_CONST(0.908848318229439), FRAC_CONST(0.417126760651388) }, - { FRAC_CONST(0.906271767729258), FRAC_CONST(0.422695496802233) }, - { FRAC_CONST(0.903661096609248), FRAC_CONST(0.428248318706532) }, - { FRAC_CONST(0.901016403159702), FRAC_CONST(0.433785017303679) }, - { FRAC_CONST(0.898337786951834), FRAC_CONST(0.439305384140100) }, - { FRAC_CONST(0.895625348834030), FRAC_CONST(0.444809211377105) }, - { FRAC_CONST(0.892879190928052), FRAC_CONST(0.450296291798709) }, - { FRAC_CONST(0.890099416625192), FRAC_CONST(0.455766418819435) }, - { FRAC_CONST(0.887286130582383), FRAC_CONST(0.461219386492092) }, - { FRAC_CONST(0.884439438718254), FRAC_CONST(0.466654989515531) }, - { FRAC_CONST(0.881559448209144), FRAC_CONST(0.472073023242369) }, - { FRAC_CONST(0.878646267485068), FRAC_CONST(0.477473283686698) }, - { FRAC_CONST(0.875700006225635), FRAC_CONST(0.482855567531766) }, - { FRAC_CONST(0.872720775355914), FRAC_CONST(0.488219672137627) }, - { FRAC_CONST(0.869708687042266), FRAC_CONST(0.493565395548775) }, - { FRAC_CONST(0.866663854688111), FRAC_CONST(0.498892536501745) }, - { FRAC_CONST(0.863586392929668), FRAC_CONST(0.504200894432690) }, - { FRAC_CONST(0.860476417631632), FRAC_CONST(0.509490269484936) }, - { FRAC_CONST(0.857334045882816), FRAC_CONST(0.514760462516501) }, - { FRAC_CONST(0.854159395991739), FRAC_CONST(0.520011275107596) }, - { FRAC_CONST(0.850952587482176), FRAC_CONST(0.525242509568095) }, - { FRAC_CONST(0.847713741088654), FRAC_CONST(0.530453968944976) }, - { FRAC_CONST(0.844442978751911), FRAC_CONST(0.535645457029741) }, - { FRAC_CONST(0.841140423614298), FRAC_CONST(0.540816778365797) }, - { FRAC_CONST(0.837806200015151), FRAC_CONST(0.545967738255818) }, - { FRAC_CONST(0.834440433486103), FRAC_CONST(0.551098142769075) }, - { FRAC_CONST(0.831043250746362), FRAC_CONST(0.556207798748740) }, - { FRAC_CONST(0.827614779697938), FRAC_CONST(0.561296513819151) }, - { FRAC_CONST(0.824155149420829), FRAC_CONST(0.566364096393064) }, - { FRAC_CONST(0.820664490168157), FRAC_CONST(0.571410355678857) }, - { FRAC_CONST(0.817142933361273), FRAC_CONST(0.576435101687722) }, - { FRAC_CONST(0.813590611584799), FRAC_CONST(0.581438145240810) }, - { FRAC_CONST(0.810007658581641), FRAC_CONST(0.586419297976361) }, - { FRAC_CONST(0.806394209247956), FRAC_CONST(0.591378372356788) }, - { FRAC_CONST(0.802750399628069), FRAC_CONST(0.596315181675744) }, - { FRAC_CONST(0.799076366909352), FRAC_CONST(0.601229540065149) }, - { FRAC_CONST(0.795372249417061), FRAC_CONST(0.606121262502186) }, - { FRAC_CONST(0.791638186609126), FRAC_CONST(0.610990164816272) }, - { FRAC_CONST(0.787874319070900), FRAC_CONST(0.615836063695985) }, - { FRAC_CONST(0.784080788509870), FRAC_CONST(0.620658776695972) }, - { FRAC_CONST(0.780257737750317), FRAC_CONST(0.625458122243814) }, - { FRAC_CONST(0.776405310727940), FRAC_CONST(0.630233919646864) }, - { FRAC_CONST(0.772523652484441), FRAC_CONST(0.634985989099049) }, - { FRAC_CONST(0.768612909162058), FRAC_CONST(0.639714151687640) }, - { FRAC_CONST(0.764673227998067), FRAC_CONST(0.644418229399988) }, - { FRAC_CONST(0.760704757319237), FRAC_CONST(0.649098045130226) }, - { FRAC_CONST(0.756707646536246), FRAC_CONST(0.653753422685936) }, - { FRAC_CONST(0.752682046138055), FRAC_CONST(0.658384186794785) }, - { FRAC_CONST(0.748628107686245), FRAC_CONST(0.662990163111121) }, - { FRAC_CONST(0.744545983809307), FRAC_CONST(0.667571178222540) }, - { FRAC_CONST(0.740435828196898), FRAC_CONST(0.672127059656412) }, - { FRAC_CONST(0.736297795594053), FRAC_CONST(0.676657635886375) }, - { FRAC_CONST(0.732132041795361), FRAC_CONST(0.681162736338795) }, - { FRAC_CONST(0.727938723639099), FRAC_CONST(0.685642191399187) }, - { FRAC_CONST(0.723717999001324), FRAC_CONST(0.690095832418600) }, - { FRAC_CONST(0.719470026789933), FRAC_CONST(0.694523491719966) }, - { FRAC_CONST(0.715194966938680), FRAC_CONST(0.698925002604414) }, - { FRAC_CONST(0.710892980401152), FRAC_CONST(0.703300199357549) }, - { FRAC_CONST(0.706564229144710), FRAC_CONST(0.707648917255684) }, - { FRAC_CONST(0.702208876144392), FRAC_CONST(0.711970992572050) }, - { FRAC_CONST(0.697827085376777), FRAC_CONST(0.716266262582953) }, - { FRAC_CONST(0.693419021813812), FRAC_CONST(0.720534565573905) }, - { FRAC_CONST(0.688984851416597), FRAC_CONST(0.724775740845711) }, - { FRAC_CONST(0.684524741129142), FRAC_CONST(0.728989628720519) }, - { FRAC_CONST(0.680038858872079), FRAC_CONST(0.733176070547833) }, - { FRAC_CONST(0.675527373536339), FRAC_CONST(0.737334908710483) }, - { FRAC_CONST(0.670990454976794), FRAC_CONST(0.741465986630563) }, - { FRAC_CONST(0.666428274005865), FRAC_CONST(0.745569148775325) }, - { FRAC_CONST(0.661841002387087), FRAC_CONST(0.749644240663033) }, - { FRAC_CONST(0.657228812828643), FRAC_CONST(0.753691108868781) }, - { FRAC_CONST(0.652591878976863), FRAC_CONST(0.757709601030268) }, - { FRAC_CONST(0.647930375409685), FRAC_CONST(0.761699565853535) }, - { FRAC_CONST(0.643244477630086), FRAC_CONST(0.765660853118662) }, - { FRAC_CONST(0.638534362059467), FRAC_CONST(0.769593313685423) }, - { FRAC_CONST(0.633800206031017), FRAC_CONST(0.773496799498899) }, - { FRAC_CONST(0.629042187783036), FRAC_CONST(0.777371163595056) }, - { FRAC_CONST(0.624260486452221), FRAC_CONST(0.781216260106276) }, - { FRAC_CONST(0.619455282066924), FRAC_CONST(0.785031944266848) }, - { FRAC_CONST(0.614626755540375), FRAC_CONST(0.788818072418420) }, - { FRAC_CONST(0.609775088663868), FRAC_CONST(0.792574502015408) }, - { FRAC_CONST(0.604900464099920), FRAC_CONST(0.796301091630359) }, - { FRAC_CONST(0.600003065375389), FRAC_CONST(0.799997700959282) }, - { FRAC_CONST(0.595083076874570), FRAC_CONST(0.803664190826924) }, - { FRAC_CONST(0.590140683832249), FRAC_CONST(0.807300423192014) }, - { FRAC_CONST(0.585176072326730), FRAC_CONST(0.810906261152460) }, - { FRAC_CONST(0.580189429272832), FRAC_CONST(0.814481568950499) }, - { FRAC_CONST(0.575180942414845), FRAC_CONST(0.818026211977813) }, - { FRAC_CONST(0.570150800319470), FRAC_CONST(0.821540056780598) }, - { FRAC_CONST(0.565099192368714), FRAC_CONST(0.825022971064580) }, - { FRAC_CONST(0.560026308752760), FRAC_CONST(0.828474823700007) }, - { FRAC_CONST(0.554932340462810), FRAC_CONST(0.831895484726578) }, - { FRAC_CONST(0.549817479283891), FRAC_CONST(0.835284825358337) }, - { FRAC_CONST(0.544681917787635), FRAC_CONST(0.838642717988527) }, - { FRAC_CONST(0.539525849325029), FRAC_CONST(0.841969036194388) }, - { FRAC_CONST(0.534349468019138), FRAC_CONST(0.845263654741918) }, - { FRAC_CONST(0.529152968757791), FRAC_CONST(0.848526449590593) }, - { FRAC_CONST(0.523936547186249), FRAC_CONST(0.851757297898029) }, - { FRAC_CONST(0.518700399699835), FRAC_CONST(0.854956078024615) }, - { FRAC_CONST(0.513444723436544), FRAC_CONST(0.858122669538086) }, - { FRAC_CONST(0.508169716269615), FRAC_CONST(0.861256953218062) }, - { FRAC_CONST(0.502875576800087), FRAC_CONST(0.864358811060534) }, - { FRAC_CONST(0.497562504349319), FRAC_CONST(0.867428126282307) }, - { FRAC_CONST(0.492230698951486), FRAC_CONST(0.870464783325398) }, - { FRAC_CONST(0.486880361346047), FRAC_CONST(0.873468667861385) }, - { FRAC_CONST(0.481511692970190), FRAC_CONST(0.876439666795714) }, - { FRAC_CONST(0.476124895951244), FRAC_CONST(0.879377668271953) }, - { FRAC_CONST(0.470720173099072), FRAC_CONST(0.882282561676009) }, - { FRAC_CONST(0.465297727898435), FRAC_CONST(0.885154237640285) }, - { FRAC_CONST(0.459857764501330), FRAC_CONST(0.887992588047806) }, - { FRAC_CONST(0.454400487719304), FRAC_CONST(0.890797506036281) }, - { FRAC_CONST(0.448926103015743), FRAC_CONST(0.893568886002136) }, - { FRAC_CONST(0.443434816498138), FRAC_CONST(0.896306623604480) }, - { FRAC_CONST(0.437926834910323), FRAC_CONST(0.899010615769039) }, - { FRAC_CONST(0.432402365624690), FRAC_CONST(0.901680760692038) }, - { FRAC_CONST(0.426861616634386), FRAC_CONST(0.904316957844028) }, - { FRAC_CONST(0.421304796545480), FRAC_CONST(0.906919107973678) }, - { FRAC_CONST(0.415732114569105), FRAC_CONST(0.909487113111505) }, - { FRAC_CONST(0.410143780513590), FRAC_CONST(0.912020876573568) }, - { FRAC_CONST(0.404540004776553), FRAC_CONST(0.914520302965104) }, - { FRAC_CONST(0.398920998336983), FRAC_CONST(0.916985298184123) }, - { FRAC_CONST(0.393286972747297), FRAC_CONST(0.919415769424947) }, - { FRAC_CONST(0.387638140125373), FRAC_CONST(0.921811625181708) }, - { FRAC_CONST(0.381974713146567), FRAC_CONST(0.924172775251791) }, - { FRAC_CONST(0.376296905035705), FRAC_CONST(0.926499130739231) }, - { FRAC_CONST(0.370604929559052), FRAC_CONST(0.928790604058057) }, - { FRAC_CONST(0.364899001016267), FRAC_CONST(0.931047108935595) }, - { FRAC_CONST(0.359179334232337), FRAC_CONST(0.933268560415712) }, - { FRAC_CONST(0.353446144549481), FRAC_CONST(0.935454874862015) }, - { FRAC_CONST(0.347699647819051), FRAC_CONST(0.937605969961000) }, - { FRAC_CONST(0.341940060393402), FRAC_CONST(0.939721764725153) }, - { FRAC_CONST(0.336167599117745), FRAC_CONST(0.941802179495998) }, - { FRAC_CONST(0.330382481321983), FRAC_CONST(0.943847135947093) }, - { FRAC_CONST(0.324584924812532), FRAC_CONST(0.945856557086984) }, - { FRAC_CONST(0.318775147864118), FRAC_CONST(0.947830367262101) }, - { FRAC_CONST(0.312953369211560), FRAC_CONST(0.949768492159607) }, - { FRAC_CONST(0.307119808041533), FRAC_CONST(0.951670858810194) }, - { FRAC_CONST(0.301274683984318), FRAC_CONST(0.953537395590833) }, - { FRAC_CONST(0.295418217105532), FRAC_CONST(0.955368032227470) }, - { FRAC_CONST(0.289550627897843), FRAC_CONST(0.957162699797670) }, - { FRAC_CONST(0.283672137272669), FRAC_CONST(0.958921330733213) }, - { FRAC_CONST(0.277782966551858), FRAC_CONST(0.960643858822638) }, - { FRAC_CONST(0.271883337459360), FRAC_CONST(0.962330219213737) }, - { FRAC_CONST(0.265973472112876), FRAC_CONST(0.963980348415994) }, - { FRAC_CONST(0.260053593015495), FRAC_CONST(0.965594184302977) }, - { FRAC_CONST(0.254123923047321), FRAC_CONST(0.967171666114677) }, - { FRAC_CONST(0.248184685457075), FRAC_CONST(0.968712734459795) }, - { FRAC_CONST(0.242236103853696), FRAC_CONST(0.970217331317979) }, - { FRAC_CONST(0.236278402197920), FRAC_CONST(0.971685400042009) }, - { FRAC_CONST(0.230311804793846), FRAC_CONST(0.973116885359925) }, - { FRAC_CONST(0.224336536280494), FRAC_CONST(0.974511733377116) }, - { FRAC_CONST(0.218352821623346), FRAC_CONST(0.975869891578341) }, - { FRAC_CONST(0.212360886105879), FRAC_CONST(0.977191308829712) }, - { FRAC_CONST(0.206360955321076), FRAC_CONST(0.978475935380617) }, - { FRAC_CONST(0.200353255162940), FRAC_CONST(0.979723722865591) }, - { FRAC_CONST(0.194338011817989), FRAC_CONST(0.980934624306142) }, - { FRAC_CONST(0.188315451756732), FRAC_CONST(0.982108594112514) }, - { FRAC_CONST(0.182285801725153), FRAC_CONST(0.983245588085407) }, - { FRAC_CONST(0.176249288736168), FRAC_CONST(0.984345563417642) }, - { FRAC_CONST(0.170206140061078), FRAC_CONST(0.985408478695768) }, - { FRAC_CONST(0.164156583221016), FRAC_CONST(0.986434293901627) }, - { FRAC_CONST(0.158100845978377), FRAC_CONST(0.987422970413855) }, - { FRAC_CONST(0.152039156328246), FRAC_CONST(0.988374471009341) }, - { FRAC_CONST(0.145971742489812), FRAC_CONST(0.989288759864625) }, - { FRAC_CONST(0.139898832897777), FRAC_CONST(0.990165802557248) }, - { FRAC_CONST(0.133820656193755), FRAC_CONST(0.991005566067049) }, - { FRAC_CONST(0.127737441217662), FRAC_CONST(0.991808018777406) }, - { FRAC_CONST(0.121649416999106), FRAC_CONST(0.992573130476429) }, - { FRAC_CONST(0.115556812748755), FRAC_CONST(0.993300872358093) }, - { FRAC_CONST(0.109459857849718), FRAC_CONST(0.993991217023329) }, - { FRAC_CONST(0.103358781848900), FRAC_CONST(0.994644138481051) }, - { FRAC_CONST(0.097253814448363), FRAC_CONST(0.995259612149133) }, - { FRAC_CONST(0.091145185496681), FRAC_CONST(0.995837614855342) }, - { FRAC_CONST(0.085033124980280), FRAC_CONST(0.996378124838200) }, - { FRAC_CONST(0.078917863014785), FRAC_CONST(0.996881121747814) }, - { FRAC_CONST(0.072799629836352), FRAC_CONST(0.997346586646633) }, - { FRAC_CONST(0.066678655793002), FRAC_CONST(0.997774502010168) }, - { FRAC_CONST(0.060555171335948), FRAC_CONST(0.998164851727646) }, - { FRAC_CONST(0.054429407010919), FRAC_CONST(0.998517621102622) }, - { FRAC_CONST(0.048301593449480), FRAC_CONST(0.998832796853528) }, - { FRAC_CONST(0.042171961360348), FRAC_CONST(0.999110367114175) }, - { FRAC_CONST(0.036040741520706), FRAC_CONST(0.999350321434199) }, - { FRAC_CONST(0.029908164767517), FRAC_CONST(0.999552650779457) }, - { FRAC_CONST(0.023774461988828), FRAC_CONST(0.999717347532362) }, - { FRAC_CONST(0.017639864115082), FRAC_CONST(0.999844405492175) }, - { FRAC_CONST(0.011504602110423), FRAC_CONST(0.999933819875236) }, - { FRAC_CONST(0.005368906963996), FRAC_CONST(0.999985587315143) } -}; -#endif // LD_DEC - -#ifdef ALLOW_SMALL_FRAMELENGTH -/* 480 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_1920[] = -{ - { FRAC_CONST(0.999999916334328), FRAC_CONST(0.000409061532028) }, - { FRAC_CONST(0.999993223088129), FRAC_CONST(0.003681545574400) }, - { FRAC_CONST(0.999975820717897), FRAC_CONST(0.006953990190376) }, - { FRAC_CONST(0.999947709409999), FRAC_CONST(0.010226360334704) }, - { FRAC_CONST(0.999908889465485), FRAC_CONST(0.013498620962929) }, - { FRAC_CONST(0.999859361300084), FRAC_CONST(0.016770737031768) }, - { FRAC_CONST(0.999799125444203), FRAC_CONST(0.020042673499487) }, - { FRAC_CONST(0.999728182542920), FRAC_CONST(0.023314395326274) }, - { FRAC_CONST(0.999646533355977), FRAC_CONST(0.026585867474619) }, - { FRAC_CONST(0.999554178757770), FRAC_CONST(0.029857054909681) }, - { FRAC_CONST(0.999451119737344), FRAC_CONST(0.033127922599673) }, - { FRAC_CONST(0.999337357398377), FRAC_CONST(0.036398435516228) }, - { FRAC_CONST(0.999212892959173), FRAC_CONST(0.039668558634781) }, - { FRAC_CONST(0.999077727752645), FRAC_CONST(0.042938256934941) }, - { FRAC_CONST(0.998931863226306), FRAC_CONST(0.046207495400865) }, - { FRAC_CONST(0.998775300942246), FRAC_CONST(0.049476239021636) }, - { FRAC_CONST(0.998608042577122), FRAC_CONST(0.052744452791636) }, - { FRAC_CONST(0.998430089922136), FRAC_CONST(0.056012101710921) }, - { FRAC_CONST(0.998241444883019), FRAC_CONST(0.059279150785597) }, - { FRAC_CONST(0.998042109480008), FRAC_CONST(0.062545565028192) }, - { FRAC_CONST(0.997832085847824), FRAC_CONST(0.065811309458034) }, - { FRAC_CONST(0.997611376235651), FRAC_CONST(0.069076349101624) }, - { FRAC_CONST(0.997379983007114), FRAC_CONST(0.072340648993011) }, - { FRAC_CONST(0.997137908640245), FRAC_CONST(0.075604174174166) }, - { FRAC_CONST(0.996885155727469), FRAC_CONST(0.078866889695354) }, - { FRAC_CONST(0.996621726975566), FRAC_CONST(0.082128760615515) }, - { FRAC_CONST(0.996347625205645), FRAC_CONST(0.085389752002632) }, - { FRAC_CONST(0.996062853353117), FRAC_CONST(0.088649828934106) }, - { FRAC_CONST(0.995767414467660), FRAC_CONST(0.091908956497133) }, - { FRAC_CONST(0.995461311713186), FRAC_CONST(0.095167099789075) }, - { FRAC_CONST(0.995144548367810), FRAC_CONST(0.098424223917834) }, - { FRAC_CONST(0.994817127823813), FRAC_CONST(0.101680294002229) }, - { FRAC_CONST(0.994479053587606), FRAC_CONST(0.104935275172364) }, - { FRAC_CONST(0.994130329279692), FRAC_CONST(0.108189132570007) }, - { FRAC_CONST(0.993770958634630), FRAC_CONST(0.111441831348957) }, - { FRAC_CONST(0.993400945500988), FRAC_CONST(0.114693336675426) }, - { FRAC_CONST(0.993020293841312), FRAC_CONST(0.117943613728403) }, - { FRAC_CONST(0.992629007732074), FRAC_CONST(0.121192627700032) }, - { FRAC_CONST(0.992227091363634), FRAC_CONST(0.124440343795983) }, - { FRAC_CONST(0.991814549040194), FRAC_CONST(0.127686727235827) }, - { FRAC_CONST(0.991391385179751), FRAC_CONST(0.130931743253405) }, - { FRAC_CONST(0.990957604314048), FRAC_CONST(0.134175357097202) }, - { FRAC_CONST(0.990513211088533), FRAC_CONST(0.137417534030720) }, - { FRAC_CONST(0.990058210262297), FRAC_CONST(0.140658239332849) }, - { FRAC_CONST(0.989592606708036), FRAC_CONST(0.143897438298239) }, - { FRAC_CONST(0.989116405411988), FRAC_CONST(0.147135096237670) }, - { FRAC_CONST(0.988629611473887), FRAC_CONST(0.150371178478428) }, - { FRAC_CONST(0.988132230106905), FRAC_CONST(0.153605650364672) }, - { FRAC_CONST(0.987624266637598), FRAC_CONST(0.156838477257806) }, - { FRAC_CONST(0.987105726505845), FRAC_CONST(0.160069624536852) }, - { FRAC_CONST(0.986576615264794), FRAC_CONST(0.163299057598817) }, - { FRAC_CONST(0.986036938580803), FRAC_CONST(0.166526741859069) }, - { FRAC_CONST(0.985486702233375), FRAC_CONST(0.169752642751702) }, - { FRAC_CONST(0.984925912115099), FRAC_CONST(0.172976725729910) }, - { FRAC_CONST(0.984354574231587), FRAC_CONST(0.176198956266353) }, - { FRAC_CONST(0.983772694701407), FRAC_CONST(0.179419299853531) }, - { FRAC_CONST(0.983180279756024), FRAC_CONST(0.182637722004152) }, - { FRAC_CONST(0.982577335739725), FRAC_CONST(0.185854188251500) }, - { FRAC_CONST(0.981963869109555), FRAC_CONST(0.189068664149806) }, - { FRAC_CONST(0.981339886435250), FRAC_CONST(0.192281115274616) }, - { FRAC_CONST(0.980705394399163), FRAC_CONST(0.195491507223158) }, - { FRAC_CONST(0.980060399796194), FRAC_CONST(0.198699805614714) }, - { FRAC_CONST(0.979404909533716), FRAC_CONST(0.201905976090986) }, - { FRAC_CONST(0.978738930631504), FRAC_CONST(0.205109984316464) }, - { FRAC_CONST(0.978062470221657), FRAC_CONST(0.208311795978794) }, - { FRAC_CONST(0.977375535548522), FRAC_CONST(0.211511376789145) }, - { FRAC_CONST(0.976678133968618), FRAC_CONST(0.214708692482577) }, - { FRAC_CONST(0.975970272950556), FRAC_CONST(0.217903708818409) }, - { FRAC_CONST(0.975251960074958), FRAC_CONST(0.221096391580581) }, - { FRAC_CONST(0.974523203034377), FRAC_CONST(0.224286706578026) }, - { FRAC_CONST(0.973784009633218), FRAC_CONST(0.227474619645035) }, - { FRAC_CONST(0.973034387787646), FRAC_CONST(0.230660096641619) }, - { FRAC_CONST(0.972274345525510), FRAC_CONST(0.233843103453878) }, - { FRAC_CONST(0.971503890986252), FRAC_CONST(0.237023605994367) }, - { FRAC_CONST(0.970723032420820), FRAC_CONST(0.240201570202459) }, - { FRAC_CONST(0.969931778191584), FRAC_CONST(0.243376962044711) }, - { FRAC_CONST(0.969130136772239), FRAC_CONST(0.246549747515226) }, - { FRAC_CONST(0.968318116747721), FRAC_CONST(0.249719892636022) }, - { FRAC_CONST(0.967495726814114), FRAC_CONST(0.252887363457390) }, - { FRAC_CONST(0.966662975778551), FRAC_CONST(0.256052126058264) }, - { FRAC_CONST(0.965819872559127), FRAC_CONST(0.259214146546579) }, - { FRAC_CONST(0.964966426184802), FRAC_CONST(0.262373391059634) }, - { FRAC_CONST(0.964102645795299), FRAC_CONST(0.265529825764461) }, - { FRAC_CONST(0.963228540641012), FRAC_CONST(0.268683416858178) }, - { FRAC_CONST(0.962344120082907), FRAC_CONST(0.271834130568359) }, - { FRAC_CONST(0.961449393592416), FRAC_CONST(0.274981933153391) }, - { FRAC_CONST(0.960544370751341), FRAC_CONST(0.278126790902837) }, - { FRAC_CONST(0.959629061251750), FRAC_CONST(0.281268670137799) }, - { FRAC_CONST(0.958703474895872), FRAC_CONST(0.284407537211272) }, - { FRAC_CONST(0.957767621595993), FRAC_CONST(0.287543358508512) }, - { FRAC_CONST(0.956821511374351), FRAC_CONST(0.290676100447394) }, - { FRAC_CONST(0.955865154363025), FRAC_CONST(0.293805729478766) }, - { FRAC_CONST(0.954898560803832), FRAC_CONST(0.296932212086818) }, - { FRAC_CONST(0.953921741048211), FRAC_CONST(0.300055514789431) }, - { FRAC_CONST(0.952934705557117), FRAC_CONST(0.303175604138543) }, - { FRAC_CONST(0.951937464900908), FRAC_CONST(0.306292446720504) }, - { FRAC_CONST(0.950930029759229), FRAC_CONST(0.309406009156434) }, - { FRAC_CONST(0.949912410920903), FRAC_CONST(0.312516258102580) }, - { FRAC_CONST(0.948884619283808), FRAC_CONST(0.315623160250676) }, - { FRAC_CONST(0.947846665854767), FRAC_CONST(0.318726682328294) }, - { FRAC_CONST(0.946798561749429), FRAC_CONST(0.321826791099207) }, - { FRAC_CONST(0.945740318192145), FRAC_CONST(0.324923453363742) }, - { FRAC_CONST(0.944671946515855), FRAC_CONST(0.328016635959131) }, - { FRAC_CONST(0.943593458161960), FRAC_CONST(0.331106305759876) }, - { FRAC_CONST(0.942504864680205), FRAC_CONST(0.334192429678095) }, - { FRAC_CONST(0.941406177728551), FRAC_CONST(0.337274974663880) }, - { FRAC_CONST(0.940297409073052), FRAC_CONST(0.340353907705650) }, - { FRAC_CONST(0.939178570587730), FRAC_CONST(0.343429195830507) }, - { FRAC_CONST(0.938049674254446), FRAC_CONST(0.346500806104585) }, - { FRAC_CONST(0.936910732162774), FRAC_CONST(0.349568705633406) }, - { FRAC_CONST(0.935761756509868), FRAC_CONST(0.352632861562230) }, - { FRAC_CONST(0.934602759600334), FRAC_CONST(0.355693241076410) }, - { FRAC_CONST(0.933433753846097), FRAC_CONST(0.358749811401739) }, - { FRAC_CONST(0.932254751766271), FRAC_CONST(0.361802539804806) }, - { FRAC_CONST(0.931065765987021), FRAC_CONST(0.364851393593340) }, - { FRAC_CONST(0.929866809241428), FRAC_CONST(0.367896340116568) }, - { FRAC_CONST(0.928657894369357), FRAC_CONST(0.370937346765559) }, - { FRAC_CONST(0.927439034317314), FRAC_CONST(0.373974380973575) }, - { FRAC_CONST(0.926210242138311), FRAC_CONST(0.377007410216418) }, - { FRAC_CONST(0.924971530991726), FRAC_CONST(0.380036402012783) }, - { FRAC_CONST(0.923722914143160), FRAC_CONST(0.383061323924602) }, - { FRAC_CONST(0.922464404964295), FRAC_CONST(0.386082143557389) }, - { FRAC_CONST(0.921196016932755), FRAC_CONST(0.389098828560595) }, - { FRAC_CONST(0.919917763631956), FRAC_CONST(0.392111346627946) }, - { FRAC_CONST(0.918629658750963), FRAC_CONST(0.395119665497795) }, - { FRAC_CONST(0.917331716084346), FRAC_CONST(0.398123752953462) }, - { FRAC_CONST(0.916023949532027), FRAC_CONST(0.401123576823585) }, - { FRAC_CONST(0.914706373099136), FRAC_CONST(0.404119104982459) }, - { FRAC_CONST(0.913379000895858), FRAC_CONST(0.407110305350386) }, - { FRAC_CONST(0.912041847137282), FRAC_CONST(0.410097145894012) }, - { FRAC_CONST(0.910694926143251), FRAC_CONST(0.413079594626675) }, - { FRAC_CONST(0.909338252338207), FRAC_CONST(0.416057619608744) }, - { FRAC_CONST(0.907971840251037), FRAC_CONST(0.419031188947965) }, - { FRAC_CONST(0.906595704514915), FRAC_CONST(0.422000270799800) }, - { FRAC_CONST(0.905209859867151), FRAC_CONST(0.424964833367766) }, - { FRAC_CONST(0.903814321149027), FRAC_CONST(0.427924844903780) }, - { FRAC_CONST(0.902409103305641), FRAC_CONST(0.430880273708497) }, - { FRAC_CONST(0.900994221385748), FRAC_CONST(0.433831088131649) }, - { FRAC_CONST(0.899569690541596), FRAC_CONST(0.436777256572384) }, - { FRAC_CONST(0.898135526028766), FRAC_CONST(0.439718747479604) }, - { FRAC_CONST(0.896691743206008), FRAC_CONST(0.442655529352306) }, - { FRAC_CONST(0.895238357535076), FRAC_CONST(0.445587570739915) }, - { FRAC_CONST(0.893775384580563), FRAC_CONST(0.448514840242624) }, - { FRAC_CONST(0.892302840009734), FRAC_CONST(0.451437306511726) }, - { FRAC_CONST(0.890820739592359), FRAC_CONST(0.454354938249958) }, - { FRAC_CONST(0.889329099200541), FRAC_CONST(0.457267704211826) }, - { FRAC_CONST(0.887827934808551), FRAC_CONST(0.460175573203949) }, - { FRAC_CONST(0.886317262492655), FRAC_CONST(0.463078514085383) }, - { FRAC_CONST(0.884797098430938), FRAC_CONST(0.465976495767966) }, - { FRAC_CONST(0.883267458903136), FRAC_CONST(0.468869487216642) }, - { FRAC_CONST(0.881728360290461), FRAC_CONST(0.471757457449795) }, - { FRAC_CONST(0.880179819075421), FRAC_CONST(0.474640375539586) }, - { FRAC_CONST(0.878621851841649), FRAC_CONST(0.477518210612278) }, - { FRAC_CONST(0.877054475273722), FRAC_CONST(0.480390931848569) }, - { FRAC_CONST(0.875477706156984), FRAC_CONST(0.483258508483922) }, - { FRAC_CONST(0.873891561377366), FRAC_CONST(0.486120909808896) }, - { FRAC_CONST(0.872296057921204), FRAC_CONST(0.488978105169472) }, - { FRAC_CONST(0.870691212875058), FRAC_CONST(0.491830063967383) }, - { FRAC_CONST(0.869077043425529), FRAC_CONST(0.494676755660442) }, - { FRAC_CONST(0.867453566859076), FRAC_CONST(0.497518149762867) }, - { FRAC_CONST(0.865820800561827), FRAC_CONST(0.500354215845611) }, - { FRAC_CONST(0.864178762019399), FRAC_CONST(0.503184923536685) }, - { FRAC_CONST(0.862527468816704), FRAC_CONST(0.506010242521482) }, - { FRAC_CONST(0.860866938637767), FRAC_CONST(0.508830142543107) }, - { FRAC_CONST(0.859197189265532), FRAC_CONST(0.511644593402696) }, - { FRAC_CONST(0.857518238581672), FRAC_CONST(0.514453564959741) }, - { FRAC_CONST(0.855830104566401), FRAC_CONST(0.517257027132414) }, - { FRAC_CONST(0.854132805298278), FRAC_CONST(0.520054949897887) }, - { FRAC_CONST(0.852426358954015), FRAC_CONST(0.522847303292655) }, - { FRAC_CONST(0.850710783808280), FRAC_CONST(0.525634057412856) }, - { FRAC_CONST(0.848986098233506), FRAC_CONST(0.528415182414593) }, - { FRAC_CONST(0.847252320699689), FRAC_CONST(0.531190648514252) }, - { FRAC_CONST(0.845509469774194), FRAC_CONST(0.533960425988819) }, - { FRAC_CONST(0.843757564121554), FRAC_CONST(0.536724485176205) }, - { FRAC_CONST(0.841996622503271), FRAC_CONST(0.539482796475555) }, - { FRAC_CONST(0.840226663777615), FRAC_CONST(0.542235330347571) }, - { FRAC_CONST(0.838447706899422), FRAC_CONST(0.544982057314827) }, - { FRAC_CONST(0.836659770919891), FRAC_CONST(0.547722947962084) }, - { FRAC_CONST(0.834862874986380), FRAC_CONST(0.550457972936605) }, - { FRAC_CONST(0.833057038342201), FRAC_CONST(0.553187102948470) }, - { FRAC_CONST(0.831242280326413), FRAC_CONST(0.555910308770889) }, - { FRAC_CONST(0.829418620373617), FRAC_CONST(0.558627561240515) }, - { FRAC_CONST(0.827586078013746), FRAC_CONST(0.561338831257758) }, - { FRAC_CONST(0.825744672871856), FRAC_CONST(0.564044089787093) }, - { FRAC_CONST(0.823894424667918), FRAC_CONST(0.566743307857377) }, - { FRAC_CONST(0.822035353216601), FRAC_CONST(0.569436456562150) }, - { FRAC_CONST(0.820167478427070), FRAC_CONST(0.572123507059955) }, - { FRAC_CONST(0.818290820302761), FRAC_CONST(0.574804430574639) }, - { FRAC_CONST(0.816405398941175), FRAC_CONST(0.577479198395666) }, - { FRAC_CONST(0.814511234533661), FRAC_CONST(0.580147781878420) }, - { FRAC_CONST(0.812608347365198), FRAC_CONST(0.582810152444517) }, - { FRAC_CONST(0.810696757814178), FRAC_CONST(0.585466281582107) }, - { FRAC_CONST(0.808776486352191), FRAC_CONST(0.588116140846181) }, - { FRAC_CONST(0.806847553543799), FRAC_CONST(0.590759701858874) }, - { FRAC_CONST(0.804909980046325), FRAC_CONST(0.593396936309773) }, - { FRAC_CONST(0.802963786609623), FRAC_CONST(0.596027815956215) }, - { FRAC_CONST(0.801008994075862), FRAC_CONST(0.598652312623592) }, - { FRAC_CONST(0.799045623379300), FRAC_CONST(0.601270398205654) }, - { FRAC_CONST(0.797073695546059), FRAC_CONST(0.603882044664808) }, - { FRAC_CONST(0.795093231693901), FRAC_CONST(0.606487224032418) }, - { FRAC_CONST(0.793104253032005), FRAC_CONST(0.609085908409106) }, - { FRAC_CONST(0.791106780860733), FRAC_CONST(0.611678069965050) }, - { FRAC_CONST(0.789100836571407), FRAC_CONST(0.614263680940283) }, - { FRAC_CONST(0.787086441646080), FRAC_CONST(0.616842713644988) }, - { FRAC_CONST(0.785063617657302), FRAC_CONST(0.619415140459796) }, - { FRAC_CONST(0.783032386267894), FRAC_CONST(0.621980933836084) }, - { FRAC_CONST(0.780992769230711), FRAC_CONST(0.624540066296266) }, - { FRAC_CONST(0.778944788388414), FRAC_CONST(0.627092510434089) }, - { FRAC_CONST(0.776888465673232), FRAC_CONST(0.629638238914927) }, - { FRAC_CONST(0.774823823106730), FRAC_CONST(0.632177224476073) }, - { FRAC_CONST(0.772750882799570), FRAC_CONST(0.634709439927031) }, - { FRAC_CONST(0.770669666951277), FRAC_CONST(0.637234858149809) }, - { FRAC_CONST(0.768580197850002), FRAC_CONST(0.639753452099206) }, - { FRAC_CONST(0.766482497872280), FRAC_CONST(0.642265194803105) }, - { FRAC_CONST(0.764376589482793), FRAC_CONST(0.644770059362758) }, - { FRAC_CONST(0.762262495234126), FRAC_CONST(0.647268018953079) }, - { FRAC_CONST(0.760140237766532), FRAC_CONST(0.649759046822928) }, - { FRAC_CONST(0.758009839807683), FRAC_CONST(0.652243116295397) }, - { FRAC_CONST(0.755871324172429), FRAC_CONST(0.654720200768098) }, - { FRAC_CONST(0.753724713762555), FRAC_CONST(0.657190273713446) }, - { FRAC_CONST(0.751570031566534), FRAC_CONST(0.659653308678945) }, - { FRAC_CONST(0.749407300659280), FRAC_CONST(0.662109279287469) }, - { FRAC_CONST(0.747236544201905), FRAC_CONST(0.664558159237545) }, - { FRAC_CONST(0.745057785441466), FRAC_CONST(0.666999922303638) }, - { FRAC_CONST(0.742871047710719), FRAC_CONST(0.669434542336425) }, - { FRAC_CONST(0.740676354427868), FRAC_CONST(0.671861993263083) }, - { FRAC_CONST(0.738473729096316), FRAC_CONST(0.674282249087562) }, - { FRAC_CONST(0.736263195304409), FRAC_CONST(0.676695283890867) }, - { FRAC_CONST(0.734044776725190), FRAC_CONST(0.679101071831334) }, - { FRAC_CONST(0.731818497116138), FRAC_CONST(0.681499587144906) }, - { FRAC_CONST(0.729584380318920), FRAC_CONST(0.683890804145412) }, - { FRAC_CONST(0.727342450259131), FRAC_CONST(0.686274697224838) }, - { FRAC_CONST(0.725092730946042), FRAC_CONST(0.688651240853606) }, - { FRAC_CONST(0.722835246472338), FRAC_CONST(0.691020409580841) }, - { FRAC_CONST(0.720570021013866), FRAC_CONST(0.693382178034651) }, - { FRAC_CONST(0.718297078829369), FRAC_CONST(0.695736520922392) }, - { FRAC_CONST(0.716016444260233), FRAC_CONST(0.698083413030944) }, - { FRAC_CONST(0.713728141730222), FRAC_CONST(0.700422829226978) }, - { FRAC_CONST(0.711432195745216), FRAC_CONST(0.702754744457225) }, - { FRAC_CONST(0.709128630892954), FRAC_CONST(0.705079133748748) }, - { FRAC_CONST(0.706817471842764), FRAC_CONST(0.707395972209203) }, - { FRAC_CONST(0.704498743345302), FRAC_CONST(0.709705235027113) }, - { FRAC_CONST(0.702172470232289), FRAC_CONST(0.712006897472128) }, - { FRAC_CONST(0.699838677416240), FRAC_CONST(0.714300934895292) }, - { FRAC_CONST(0.697497389890200), FRAC_CONST(0.716587322729308) }, - { FRAC_CONST(0.695148632727480), FRAC_CONST(0.718866036488799) }, - { FRAC_CONST(0.692792431081381), FRAC_CONST(0.721137051770570) }, - { FRAC_CONST(0.690428810184929), FRAC_CONST(0.723400344253874) }, - { FRAC_CONST(0.688057795350606), FRAC_CONST(0.725655889700665) }, - { FRAC_CONST(0.685679411970075), FRAC_CONST(0.727903663955865) }, - { FRAC_CONST(0.683293685513912), FRAC_CONST(0.730143642947616) }, - { FRAC_CONST(0.680900641531330), FRAC_CONST(0.732375802687543) }, - { FRAC_CONST(0.678500305649909), FRAC_CONST(0.734600119271009) }, - { FRAC_CONST(0.676092703575316), FRAC_CONST(0.736816568877370) }, - { FRAC_CONST(0.673677861091036), FRAC_CONST(0.739025127770231) }, - { FRAC_CONST(0.671255804058092), FRAC_CONST(0.741225772297702) }, - { FRAC_CONST(0.668826558414768), FRAC_CONST(0.743418478892647) }, - { FRAC_CONST(0.666390150176334), FRAC_CONST(0.745603224072940) }, - { FRAC_CONST(0.663946605434765), FRAC_CONST(0.747779984441716) }, - { FRAC_CONST(0.661495950358462), FRAC_CONST(0.749948736687619) }, - { FRAC_CONST(0.659038211191971), FRAC_CONST(0.752109457585056) }, - { FRAC_CONST(0.656573414255705), FRAC_CONST(0.754262123994441) }, - { FRAC_CONST(0.654101585945659), FRAC_CONST(0.756406712862448) }, - { FRAC_CONST(0.651622752733128), FRAC_CONST(0.758543201222251) }, - { FRAC_CONST(0.649136941164425), FRAC_CONST(0.760671566193777) }, - { FRAC_CONST(0.646644177860593), FRAC_CONST(0.762791784983948) }, - { FRAC_CONST(0.644144489517126), FRAC_CONST(0.764903834886923) }, - { FRAC_CONST(0.641637902903677), FRAC_CONST(0.767007693284345) }, - { FRAC_CONST(0.639124444863776), FRAC_CONST(0.769103337645580) }, - { FRAC_CONST(0.636604142314538), FRAC_CONST(0.771190745527961) }, - { FRAC_CONST(0.634077022246379), FRAC_CONST(0.773269894577026) }, - { FRAC_CONST(0.631543111722725), FRAC_CONST(0.775340762526760) }, - { FRAC_CONST(0.629002437879721), FRAC_CONST(0.777403327199831) }, - { FRAC_CONST(0.626455027925944), FRAC_CONST(0.779457566507828) }, - { FRAC_CONST(0.623900909142107), FRAC_CONST(0.781503458451498) }, - { FRAC_CONST(0.621340108880771), FRAC_CONST(0.783540981120982) }, - { FRAC_CONST(0.618772654566049), FRAC_CONST(0.785570112696050) }, - { FRAC_CONST(0.616198573693314), FRAC_CONST(0.787590831446332) }, - { FRAC_CONST(0.613617893828905), FRAC_CONST(0.789603115731555) }, - { FRAC_CONST(0.611030642609828), FRAC_CONST(0.791606944001769) }, - { FRAC_CONST(0.608436847743468), FRAC_CONST(0.793602294797585) }, - { FRAC_CONST(0.605836537007281), FRAC_CONST(0.795589146750397) }, - { FRAC_CONST(0.603229738248508), FRAC_CONST(0.797567478582619) }, - { FRAC_CONST(0.600616479383869), FRAC_CONST(0.799537269107905) }, - { FRAC_CONST(0.597996788399267), FRAC_CONST(0.801498497231381) }, - { FRAC_CONST(0.595370693349487), FRAC_CONST(0.803451141949871) }, - { FRAC_CONST(0.592738222357898), FRAC_CONST(0.805395182352117) }, - { FRAC_CONST(0.590099403616149), FRAC_CONST(0.807330597619008) }, - { FRAC_CONST(0.587454265383869), FRAC_CONST(0.809257367023803) }, - { FRAC_CONST(0.584802835988364), FRAC_CONST(0.811175469932349) }, - { FRAC_CONST(0.582145143824311), FRAC_CONST(0.813084885803304) }, - { FRAC_CONST(0.579481217353460), FRAC_CONST(0.814985594188359) }, - { FRAC_CONST(0.576811085104321), FRAC_CONST(0.816877574732454) }, - { FRAC_CONST(0.574134775671867), FRAC_CONST(0.818760807173997) }, - { FRAC_CONST(0.571452317717222), FRAC_CONST(0.820635271345081) }, - { FRAC_CONST(0.568763739967354), FRAC_CONST(0.822500947171703) }, - { FRAC_CONST(0.566069071214772), FRAC_CONST(0.824357814673971) }, - { FRAC_CONST(0.563368340317214), FRAC_CONST(0.826205853966327) }, - { FRAC_CONST(0.560661576197336), FRAC_CONST(0.828045045257756) }, - { FRAC_CONST(0.557948807842409), FRAC_CONST(0.829875368851995) }, - { FRAC_CONST(0.555230064304002), FRAC_CONST(0.831696805147750) }, - { FRAC_CONST(0.552505374697674), FRAC_CONST(0.833509334638900) }, - { FRAC_CONST(0.549774768202663), FRAC_CONST(0.835312937914713) }, - { FRAC_CONST(0.547038274061568), FRAC_CONST(0.837107595660044) }, - { FRAC_CONST(0.544295921580046), FRAC_CONST(0.838893288655553) }, - { FRAC_CONST(0.541547740126486), FRAC_CONST(0.840669997777901) }, - { FRAC_CONST(0.538793759131706), FRAC_CONST(0.842437703999961) }, - { FRAC_CONST(0.536034008088628), FRAC_CONST(0.844196388391019) }, - { FRAC_CONST(0.533268516551970), FRAC_CONST(0.845946032116980) }, - { FRAC_CONST(0.530497314137923), FRAC_CONST(0.847686616440563) }, - { FRAC_CONST(0.527720430523840), FRAC_CONST(0.849418122721510) }, - { FRAC_CONST(0.524937895447912), FRAC_CONST(0.851140532416778) }, - { FRAC_CONST(0.522149738708856), FRAC_CONST(0.852853827080745) }, - { FRAC_CONST(0.519355990165590), FRAC_CONST(0.854557988365401) }, - { FRAC_CONST(0.516556679736915), FRAC_CONST(0.856252998020546) }, - { FRAC_CONST(0.513751837401199), FRAC_CONST(0.857938837893991) }, - { FRAC_CONST(0.510941493196049), FRAC_CONST(0.859615489931744) }, - { FRAC_CONST(0.508125677217994), FRAC_CONST(0.861282936178208) }, - { FRAC_CONST(0.505304419622159), FRAC_CONST(0.862941158776375) }, - { FRAC_CONST(0.502477750621949), FRAC_CONST(0.864590139968012) }, - { FRAC_CONST(0.499645700488717), FRAC_CONST(0.866229862093855) }, - { FRAC_CONST(0.496808299551444), FRAC_CONST(0.867860307593799) }, - { FRAC_CONST(0.493965578196415), FRAC_CONST(0.869481459007080) }, - { FRAC_CONST(0.491117566866892), FRAC_CONST(0.871093298972471) }, - { FRAC_CONST(0.488264296062789), FRAC_CONST(0.872695810228461) }, - { FRAC_CONST(0.485405796340343), FRAC_CONST(0.874288975613440) }, - { FRAC_CONST(0.482542098311789), FRAC_CONST(0.875872778065888) }, - { FRAC_CONST(0.479673232645033), FRAC_CONST(0.877447200624553) }, - { FRAC_CONST(0.476799230063322), FRAC_CONST(0.879012226428633) }, - { FRAC_CONST(0.473920121344914), FRAC_CONST(0.880567838717962) }, - { FRAC_CONST(0.471035937322751), FRAC_CONST(0.882114020833179) }, - { FRAC_CONST(0.468146708884125), FRAC_CONST(0.883650756215917) }, - { FRAC_CONST(0.465252466970353), FRAC_CONST(0.885178028408975) }, - { FRAC_CONST(0.462353242576441), FRAC_CONST(0.886695821056495) }, - { FRAC_CONST(0.459449066750752), FRAC_CONST(0.888204117904136) }, - { FRAC_CONST(0.456539970594675), FRAC_CONST(0.889702902799251) }, - { FRAC_CONST(0.453625985262295), FRAC_CONST(0.891192159691058) }, - { FRAC_CONST(0.450707141960053), FRAC_CONST(0.892671872630812) }, - { FRAC_CONST(0.447783471946415), FRAC_CONST(0.894142025771977) }, - { FRAC_CONST(0.444855006531538), FRAC_CONST(0.895602603370393) }, - { FRAC_CONST(0.441921777076935), FRAC_CONST(0.897053589784447) }, - { FRAC_CONST(0.438983814995137), FRAC_CONST(0.898494969475242) }, - { FRAC_CONST(0.436041151749356), FRAC_CONST(0.899926727006758) }, - { FRAC_CONST(0.433093818853152), FRAC_CONST(0.901348847046022) }, - { FRAC_CONST(0.430141847870093), FRAC_CONST(0.902761314363272) }, - { FRAC_CONST(0.427185270413416), FRAC_CONST(0.904164113832116) }, - { FRAC_CONST(0.424224118145690), FRAC_CONST(0.905557230429701) }, - { FRAC_CONST(0.421258422778478), FRAC_CONST(0.906940649236866) }, - { FRAC_CONST(0.418288216071994), FRAC_CONST(0.908314355438308) }, - { FRAC_CONST(0.415313529834766), FRAC_CONST(0.909678334322736) }, - { FRAC_CONST(0.412334395923293), FRAC_CONST(0.911032571283032) }, - { FRAC_CONST(0.409350846241706), FRAC_CONST(0.912377051816407) }, - { FRAC_CONST(0.406362912741425), FRAC_CONST(0.913711761524555) }, - { FRAC_CONST(0.403370627420818), FRAC_CONST(0.915036686113806) }, - { FRAC_CONST(0.400374022324857), FRAC_CONST(0.916351811395282) }, - { FRAC_CONST(0.397373129544774), FRAC_CONST(0.917657123285050) }, - { FRAC_CONST(0.394367981217720), FRAC_CONST(0.918952607804266) }, - { FRAC_CONST(0.391358609526420), FRAC_CONST(0.920238251079332) }, - { FRAC_CONST(0.388345046698826), FRAC_CONST(0.921514039342042) }, - { FRAC_CONST(0.385327325007776), FRAC_CONST(0.922779958929729) }, - { FRAC_CONST(0.382305476770645), FRAC_CONST(0.924035996285410) }, - { FRAC_CONST(0.379279534348999), FRAC_CONST(0.925282137957935) }, - { FRAC_CONST(0.376249530148250), FRAC_CONST(0.926518370602127) }, - { FRAC_CONST(0.373215496617310), FRAC_CONST(0.927744680978929) }, - { FRAC_CONST(0.370177466248239), FRAC_CONST(0.928961055955541) }, - { FRAC_CONST(0.367135471575903), FRAC_CONST(0.930167482505564) }, - { FRAC_CONST(0.364089545177621), FRAC_CONST(0.931363947709140) }, - { FRAC_CONST(0.361039719672816), FRAC_CONST(0.932550438753087) }, - { FRAC_CONST(0.357986027722671), FRAC_CONST(0.933726942931039) }, - { FRAC_CONST(0.354928502029772), FRAC_CONST(0.934893447643582) }, - { FRAC_CONST(0.351867175337763), FRAC_CONST(0.936049940398387) }, - { FRAC_CONST(0.348802080430994), FRAC_CONST(0.937196408810347) }, - { FRAC_CONST(0.345733250134169), FRAC_CONST(0.938332840601705) }, - { FRAC_CONST(0.342660717311994), FRAC_CONST(0.939459223602190) }, - { FRAC_CONST(0.339584514868829), FRAC_CONST(0.940575545749145) }, - { FRAC_CONST(0.336504675748328), FRAC_CONST(0.941681795087657) }, - { FRAC_CONST(0.333421232933097), FRAC_CONST(0.942777959770684) }, - { FRAC_CONST(0.330334219444328), FRAC_CONST(0.943864028059183) }, - { FRAC_CONST(0.327243668341457), FRAC_CONST(0.944939988322235) }, - { FRAC_CONST(0.324149612721804), FRAC_CONST(0.946005829037171) }, - { FRAC_CONST(0.321052085720218), FRAC_CONST(0.947061538789691) }, - { FRAC_CONST(0.317951120508725), FRAC_CONST(0.948107106273994) }, - { FRAC_CONST(0.314846750296171), FRAC_CONST(0.949142520292891) }, - { FRAC_CONST(0.311739008327867), FRAC_CONST(0.950167769757930) }, - { FRAC_CONST(0.308627927885232), FRAC_CONST(0.951182843689513) }, - { FRAC_CONST(0.305513542285440), FRAC_CONST(0.952187731217013) }, - { FRAC_CONST(0.302395884881056), FRAC_CONST(0.953182421578893) }, - { FRAC_CONST(0.299274989059689), FRAC_CONST(0.954166904122818) }, - { FRAC_CONST(0.296150888243624), FRAC_CONST(0.955141168305771) }, - { FRAC_CONST(0.293023615889471), FRAC_CONST(0.956105203694164) }, - { FRAC_CONST(0.289893205487806), FRAC_CONST(0.957058999963955) }, - { FRAC_CONST(0.286759690562807), FRAC_CONST(0.958002546900750) }, - { FRAC_CONST(0.283623104671904), FRAC_CONST(0.958935834399920) }, - { FRAC_CONST(0.280483481405410), FRAC_CONST(0.959858852466706) }, - { FRAC_CONST(0.277340854386169), FRAC_CONST(0.960771591216325) }, - { FRAC_CONST(0.274195257269191), FRAC_CONST(0.961674040874080) }, - { FRAC_CONST(0.271046723741295), FRAC_CONST(0.962566191775459) }, - { FRAC_CONST(0.267895287520743), FRAC_CONST(0.963448034366243) }, - { FRAC_CONST(0.264740982356888), FRAC_CONST(0.964319559202607) }, - { FRAC_CONST(0.261583842029803), FRAC_CONST(0.965180756951218) }, - { FRAC_CONST(0.258423900349924), FRAC_CONST(0.966031618389343) }, - { FRAC_CONST(0.255261191157689), FRAC_CONST(0.966872134404937) }, - { FRAC_CONST(0.252095748323171), FRAC_CONST(0.967702295996750) }, - { FRAC_CONST(0.248927605745720), FRAC_CONST(0.968522094274417) }, - { FRAC_CONST(0.245756797353599), FRAC_CONST(0.969331520458559) }, - { FRAC_CONST(0.242583357103617), FRAC_CONST(0.970130565880871) }, - { FRAC_CONST(0.239407318980770), FRAC_CONST(0.970919221984218) }, - { FRAC_CONST(0.236228716997876), FRAC_CONST(0.971697480322728) }, - { FRAC_CONST(0.233047585195206), FRAC_CONST(0.972465332561878) }, - { FRAC_CONST(0.229863957640129), FRAC_CONST(0.973222770478587) }, - { FRAC_CONST(0.226677868426735), FRAC_CONST(0.973969785961306) }, - { FRAC_CONST(0.223489351675482), FRAC_CONST(0.974706371010097) }, - { FRAC_CONST(0.220298441532823), FRAC_CONST(0.975432517736727) }, - { FRAC_CONST(0.217105172170841), FRAC_CONST(0.976148218364747) }, - { FRAC_CONST(0.213909577786886), FRAC_CONST(0.976853465229579) }, - { FRAC_CONST(0.210711692603206), FRAC_CONST(0.977548250778596) }, - { FRAC_CONST(0.207511550866582), FRAC_CONST(0.978232567571202) }, - { FRAC_CONST(0.204309186847962), FRAC_CONST(0.978906408278914) }, - { FRAC_CONST(0.201104634842092), FRAC_CONST(0.979569765685441) }, - { FRAC_CONST(0.197897929167148), FRAC_CONST(0.980222632686756) }, - { FRAC_CONST(0.194689104164373), FRAC_CONST(0.980865002291179) }, - { FRAC_CONST(0.191478194197704), FRAC_CONST(0.981496867619447) }, - { FRAC_CONST(0.188265233653407), FRAC_CONST(0.982118221904791) }, - { FRAC_CONST(0.185050256939710), FRAC_CONST(0.982729058493005) }, - { FRAC_CONST(0.181833298486427), FRAC_CONST(0.983329370842520) }, - { FRAC_CONST(0.178614392744603), FRAC_CONST(0.983919152524473) }, - { FRAC_CONST(0.175393574186129), FRAC_CONST(0.984498397222776) }, - { FRAC_CONST(0.172170877303385), FRAC_CONST(0.985067098734184) }, - { FRAC_CONST(0.168946336608867), FRAC_CONST(0.985625250968360) }, - { FRAC_CONST(0.165719986634814), FRAC_CONST(0.986172847947943) }, - { FRAC_CONST(0.162491861932842), FRAC_CONST(0.986709883808609) }, - { FRAC_CONST(0.159261997073573), FRAC_CONST(0.987236352799134) }, - { FRAC_CONST(0.156030426646266), FRAC_CONST(0.987752249281460) }, - { FRAC_CONST(0.152797185258443), FRAC_CONST(0.988257567730749) }, - { FRAC_CONST(0.149562307535523), FRAC_CONST(0.988752302735447) }, - { FRAC_CONST(0.146325828120446), FRAC_CONST(0.989236448997339) }, - { FRAC_CONST(0.143087781673307), FRAC_CONST(0.989710001331608) }, - { FRAC_CONST(0.139848202870981), FRAC_CONST(0.990172954666889) }, - { FRAC_CONST(0.136607126406757), FRAC_CONST(0.990625304045323) }, - { FRAC_CONST(0.133364586989957), FRAC_CONST(0.991067044622612) }, - { FRAC_CONST(0.130120619345575), FRAC_CONST(0.991498171668069) }, - { FRAC_CONST(0.126875258213898), FRAC_CONST(0.991918680564670) }, - { FRAC_CONST(0.123628538350136), FRAC_CONST(0.992328566809103) }, - { FRAC_CONST(0.120380494524051), FRAC_CONST(0.992727826011815) }, - { FRAC_CONST(0.117131161519582), FRAC_CONST(0.993116453897061) }, - { FRAC_CONST(0.113880574134475), FRAC_CONST(0.993494446302948) }, - { FRAC_CONST(0.110628767179910), FRAC_CONST(0.993861799181482) }, - { FRAC_CONST(0.107375775480128), FRAC_CONST(0.994218508598608) }, - { FRAC_CONST(0.104121633872055), FRAC_CONST(0.994564570734255) }, - { FRAC_CONST(0.100866377204933), FRAC_CONST(0.994899981882376) }, - { FRAC_CONST(0.097610040339947), FRAC_CONST(0.995224738450986) }, - { FRAC_CONST(0.094352658149849), FRAC_CONST(0.995538836962204) }, - { FRAC_CONST(0.091094265518583), FRAC_CONST(0.995842274052287) }, - { FRAC_CONST(0.087834897340919), FRAC_CONST(0.996135046471667) }, - { FRAC_CONST(0.084574588522070), FRAC_CONST(0.996417151084987) }, - { FRAC_CONST(0.081313373977324), FRAC_CONST(0.996688584871134) }, - { FRAC_CONST(0.078051288631670), FRAC_CONST(0.996949344923269) }, - { FRAC_CONST(0.074788367419420), FRAC_CONST(0.997199428448862) }, - { FRAC_CONST(0.071524645283840), FRAC_CONST(0.997438832769720) }, - { FRAC_CONST(0.068260157176771), FRAC_CONST(0.997667555322013) }, - { FRAC_CONST(0.064994938058259), FRAC_CONST(0.997885593656308) }, - { FRAC_CONST(0.061729022896176), FRAC_CONST(0.998092945437590) }, - { FRAC_CONST(0.058462446665851), FRAC_CONST(0.998289608445286) }, - { FRAC_CONST(0.055195244349690), FRAC_CONST(0.998475580573295) }, - { FRAC_CONST(0.051927450936806), FRAC_CONST(0.998650859830004) }, - { FRAC_CONST(0.048659101422640), FRAC_CONST(0.998815444338313) }, - { FRAC_CONST(0.045390230808591), FRAC_CONST(0.998969332335654) }, - { FRAC_CONST(0.042120874101635), FRAC_CONST(0.999112522174011) }, - { FRAC_CONST(0.038851066313958), FRAC_CONST(0.999245012319936) }, - { FRAC_CONST(0.035580842462574), FRAC_CONST(0.999366801354564) }, - { FRAC_CONST(0.032310237568951), FRAC_CONST(0.999477887973635) }, - { FRAC_CONST(0.029039286658643), FRAC_CONST(0.999578270987499) }, - { FRAC_CONST(0.025768024760904), FRAC_CONST(0.999667949321134) }, - { FRAC_CONST(0.022496486908322), FRAC_CONST(0.999746922014158) }, - { FRAC_CONST(0.019224708136438), FRAC_CONST(0.999815188220837) }, - { FRAC_CONST(0.015952723483375), FRAC_CONST(0.999872747210095) }, - { FRAC_CONST(0.012680567989461), FRAC_CONST(0.999919598365521) }, - { FRAC_CONST(0.009408276696850), FRAC_CONST(0.999955741185376) }, - { FRAC_CONST(0.006135884649155), FRAC_CONST(0.999981175282601) }, - { FRAC_CONST(0.002863426891064), FRAC_CONST(0.999995900384816) } -}; - -#ifdef LD_DEC -/* 240 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_960[] = -{ - { FRAC_CONST(0.999999665337326), FRAC_CONST(0.000818122995607) }, - { FRAC_CONST(0.999972892444367), FRAC_CONST(0.007363041249780) }, - { FRAC_CONST(0.999903284040864), FRAC_CONST(0.013907644095771) }, - { FRAC_CONST(0.999790843108610), FRAC_CONST(0.020451651184577) }, - { FRAC_CONST(0.999635574464198), FRAC_CONST(0.026994782192715) }, - { FRAC_CONST(0.999437484758823), FRAC_CONST(0.033536756834230) }, - { FRAC_CONST(0.999196582477986), FRAC_CONST(0.040077294872701) }, - { FRAC_CONST(0.998912877941140), FRAC_CONST(0.046616116133247) }, - { FRAC_CONST(0.998586383301244), FRAC_CONST(0.053152940514528) }, - { FRAC_CONST(0.998217112544241), FRAC_CONST(0.059687488000744) }, - { FRAC_CONST(0.997805081488460), FRAC_CONST(0.066219478673630) }, - { FRAC_CONST(0.997350307783942), FRAC_CONST(0.072748632724445) }, - { FRAC_CONST(0.996852810911678), FRAC_CONST(0.079274670465961) }, - { FRAC_CONST(0.996312612182778), FRAC_CONST(0.085797312344440) }, - { FRAC_CONST(0.995729734737558), FRAC_CONST(0.092316278951614) }, - { FRAC_CONST(0.995104203544548), FRAC_CONST(0.098831291036650) }, - { FRAC_CONST(0.994436045399422), FRAC_CONST(0.105342069518114) }, - { FRAC_CONST(0.993725288923851), FRAC_CONST(0.111848335495926) }, - { FRAC_CONST(0.992971964564277), FRAC_CONST(0.118349810263305) }, - { FRAC_CONST(0.992176104590608), FRAC_CONST(0.124846215318711) }, - { FRAC_CONST(0.991337743094838), FRAC_CONST(0.131337272377774) }, - { FRAC_CONST(0.990456915989581), FRAC_CONST(0.137822703385212) }, - { FRAC_CONST(0.989533661006540), FRAC_CONST(0.144302230526747) }, - { FRAC_CONST(0.988568017694885), FRAC_CONST(0.150775576241001) }, - { FRAC_CONST(0.987560027419562), FRAC_CONST(0.157242463231389) }, - { FRAC_CONST(0.986509733359519), FRAC_CONST(0.163702614477995) }, - { FRAC_CONST(0.985417180505858), FRAC_CONST(0.170155753249442) }, - { FRAC_CONST(0.984282415659907), FRAC_CONST(0.176601603114742) }, - { FRAC_CONST(0.983105487431216), FRAC_CONST(0.183039887955141) }, - { FRAC_CONST(0.981886446235473), FRAC_CONST(0.189470331975943) }, - { FRAC_CONST(0.980625344292344), FRAC_CONST(0.195892659718330) }, - { FRAC_CONST(0.979322235623241), FRAC_CONST(0.202306596071156) }, - { FRAC_CONST(0.977977176049000), FRAC_CONST(0.208711866282735) }, - { FRAC_CONST(0.976590223187499), FRAC_CONST(0.215108195972610) }, - { FRAC_CONST(0.975161436451181), FRAC_CONST(0.221495311143304) }, - { FRAC_CONST(0.973690877044515), FRAC_CONST(0.227872938192063) }, - { FRAC_CONST(0.972178607961371), FRAC_CONST(0.234240803922570) }, - { FRAC_CONST(0.970624693982323), FRAC_CONST(0.240598635556650) }, - { FRAC_CONST(0.969029201671875), FRAC_CONST(0.246946160745958) }, - { FRAC_CONST(0.967392199375607), FRAC_CONST(0.253283107583640) }, - { FRAC_CONST(0.965713757217249), FRAC_CONST(0.259609204615985) }, - { FRAC_CONST(0.963993947095677), FRAC_CONST(0.265924180854051) }, - { FRAC_CONST(0.962232842681832), FRAC_CONST(0.272227765785273) }, - { FRAC_CONST(0.960430519415566), FRAC_CONST(0.278519689385053) }, - { FRAC_CONST(0.958587054502409), FRAC_CONST(0.284799682128326) }, - { FRAC_CONST(0.956702526910263), FRAC_CONST(0.291067475001103) }, - { FRAC_CONST(0.954777017366017), FRAC_CONST(0.297322799511998) }, - { FRAC_CONST(0.952810608352092), FRAC_CONST(0.303565387703730) }, - { FRAC_CONST(0.950803384102905), FRAC_CONST(0.309794972164597) }, - { FRAC_CONST(0.948755430601263), FRAC_CONST(0.316011286039934) }, - { FRAC_CONST(0.946666835574676), FRAC_CONST(0.322214063043544) }, - { FRAC_CONST(0.944537688491606), FRAC_CONST(0.328403037469105) }, - { FRAC_CONST(0.942368080557626), FRAC_CONST(0.334577944201551) }, - { FRAC_CONST(0.940158104711519), FRAC_CONST(0.340738518728429) }, - { FRAC_CONST(0.937907855621296), FRAC_CONST(0.346884497151231) }, - { FRAC_CONST(0.935617429680138), FRAC_CONST(0.353015616196696) }, - { FRAC_CONST(0.933286925002268), FRAC_CONST(0.359131613228090) }, - { FRAC_CONST(0.930916441418752), FRAC_CONST(0.365232226256457) }, - { FRAC_CONST(0.928506080473216), FRAC_CONST(0.371317193951838) }, - { FRAC_CONST(0.926055945417500), FRAC_CONST(0.377386255654469) }, - { FRAC_CONST(0.923566141207236), FRAC_CONST(0.383439151385947) }, - { FRAC_CONST(0.921036774497350), FRAC_CONST(0.389475621860365) }, - { FRAC_CONST(0.918467953637492), FRAC_CONST(0.395495408495417) }, - { FRAC_CONST(0.915859788667400), FRAC_CONST(0.401498253423481) }, - { FRAC_CONST(0.913212391312179), FRAC_CONST(0.407483899502658) }, - { FRAC_CONST(0.910525874977521), FRAC_CONST(0.413452090327791) }, - { FRAC_CONST(0.907800354744844), FRAC_CONST(0.419402570241451) }, - { FRAC_CONST(0.905035947366364), FRAC_CONST(0.425335084344881) }, - { FRAC_CONST(0.902232771260093), FRAC_CONST(0.431249378508924) }, - { FRAC_CONST(0.899390946504764), FRAC_CONST(0.437145199384900) }, - { FRAC_CONST(0.896510594834693), FRAC_CONST(0.443022294415467) }, - { FRAC_CONST(0.893591839634558), FRAC_CONST(0.448880411845433) }, - { FRAC_CONST(0.890634805934118), FRAC_CONST(0.454719300732547) }, - { FRAC_CONST(0.887639620402854), FRAC_CONST(0.460538710958240) }, - { FRAC_CONST(0.884606411344546), FRAC_CONST(0.466338393238348) }, - { FRAC_CONST(0.881535308691775), FRAC_CONST(0.472118099133784) }, - { FRAC_CONST(0.878426444000357), FRAC_CONST(0.477877581061184) }, - { FRAC_CONST(0.875279950443708), FRAC_CONST(0.483616592303511) }, - { FRAC_CONST(0.872095962807140), FRAC_CONST(0.489334887020625) }, - { FRAC_CONST(0.868874617482085), FRAC_CONST(0.495032220259813) }, - { FRAC_CONST(0.865616052460258), FRAC_CONST(0.500708347966279) }, - { FRAC_CONST(0.862320407327736), FRAC_CONST(0.506363026993605) }, - { FRAC_CONST(0.858987823258990), FRAC_CONST(0.511996015114162) }, - { FRAC_CONST(0.855618443010829), FRAC_CONST(0.517607071029487) }, - { FRAC_CONST(0.852212410916289), FRAC_CONST(0.523195954380619) }, - { FRAC_CONST(0.848769872878448), FRAC_CONST(0.528762425758396) }, - { FRAC_CONST(0.845290976364179), FRAC_CONST(0.534306246713712) }, - { FRAC_CONST(0.841775870397828), FRAC_CONST(0.539827179767727) }, - { FRAC_CONST(0.838224705554838), FRAC_CONST(0.545324988422046) }, - { FRAC_CONST(0.834637633955290), FRAC_CONST(0.550799437168844) }, - { FRAC_CONST(0.831014809257393), FRAC_CONST(0.556250291500956) }, - { FRAC_CONST(0.827356386650900), FRAC_CONST(0.561677317921925) }, - { FRAC_CONST(0.823662522850458), FRAC_CONST(0.567080283956001) }, - { FRAC_CONST(0.819933376088899), FRAC_CONST(0.572458958158102) }, - { FRAC_CONST(0.816169106110459), FRAC_CONST(0.577813110123727) }, - { FRAC_CONST(0.812369874163934), FRAC_CONST(0.583142510498826) }, - { FRAC_CONST(0.808535842995778), FRAC_CONST(0.588446930989624) }, - { FRAC_CONST(0.804667176843123), FRAC_CONST(0.593726144372402) }, - { FRAC_CONST(0.800764041426753), FRAC_CONST(0.598979924503229) }, - { FRAC_CONST(0.796826603943998), FRAC_CONST(0.604208046327650) }, - { FRAC_CONST(0.792855033061574), FRAC_CONST(0.609410285890327) }, - { FRAC_CONST(0.788849498908361), FRAC_CONST(0.614586420344631) }, - { FRAC_CONST(0.784810173068109), FRAC_CONST(0.619736227962191) }, - { FRAC_CONST(0.780737228572094), FRAC_CONST(0.624859488142386) }, - { FRAC_CONST(0.776630839891703), FRAC_CONST(0.629955981421804) }, - { FRAC_CONST(0.772491182930959), FRAC_CONST(0.635025489483633) }, - { FRAC_CONST(0.768318435018988), FRAC_CONST(0.640067795167023) }, - { FRAC_CONST(0.764112774902423), FRAC_CONST(0.645082682476378) }, - { FRAC_CONST(0.759874382737746), FRAC_CONST(0.650069936590618) }, - { FRAC_CONST(0.755603440083571), FRAC_CONST(0.655029343872374) }, - { FRAC_CONST(0.751300129892866), FRAC_CONST(0.659960691877147) }, - { FRAC_CONST(0.746964636505118), FRAC_CONST(0.664863769362399) }, - { FRAC_CONST(0.742597145638433), FRAC_CONST(0.669738366296610) }, - { FRAC_CONST(0.738197844381584), FRAC_CONST(0.674584273868271) }, - { FRAC_CONST(0.733766921185995), FRAC_CONST(0.679401284494831) }, - { FRAC_CONST(0.729304565857668), FRAC_CONST(0.684189191831585) }, - { FRAC_CONST(0.724810969549055), FRAC_CONST(0.688947790780520) }, - { FRAC_CONST(0.720286324750863), FRAC_CONST(0.693676877499095) }, - { FRAC_CONST(0.715730825283819), FRAC_CONST(0.698376249408973) }, - { FRAC_CONST(0.711144666290356), FRAC_CONST(0.703045705204703) }, - { FRAC_CONST(0.706528044226263), FRAC_CONST(0.707685044862340) }, - { FRAC_CONST(0.701881156852263), FRAC_CONST(0.712294069648014) }, - { FRAC_CONST(0.697204203225545), FRAC_CONST(0.716872582126442) }, - { FRAC_CONST(0.692497383691237), FRAC_CONST(0.721420386169390) }, - { FRAC_CONST(0.687760899873822), FRAC_CONST(0.725937286964068) }, - { FRAC_CONST(0.682994954668502), FRAC_CONST(0.730423091021479) }, - { FRAC_CONST(0.678199752232508), FRAC_CONST(0.734877606184707) }, - { FRAC_CONST(0.673375497976352), FRAC_CONST(0.739300641637149) }, - { FRAC_CONST(0.668522398555031), FRAC_CONST(0.743692007910687) }, - { FRAC_CONST(0.663640661859171), FRAC_CONST(0.748051516893805) }, - { FRAC_CONST(0.658730497006124), FRAC_CONST(0.752378981839648) }, - { FRAC_CONST(0.653792114331011), FRAC_CONST(0.756674217374021) }, - { FRAC_CONST(0.648825725377709), FRAC_CONST(0.760937039503328) }, - { FRAC_CONST(0.643831542889792), FRAC_CONST(0.765167265622459) }, - { FRAC_CONST(0.638809780801414), FRAC_CONST(0.769364714522605) }, - { FRAC_CONST(0.633760654228152), FRAC_CONST(0.773529206399025) }, - { FRAC_CONST(0.628684379457781), FRAC_CONST(0.777660562858748) }, - { FRAC_CONST(0.623581173941019), FRAC_CONST(0.781758606928213) }, - { FRAC_CONST(0.618451256282204), FRAC_CONST(0.785823163060853) }, - { FRAC_CONST(0.613294846229936), FRAC_CONST(0.789854057144609) }, - { FRAC_CONST(0.608112164667659), FRAC_CONST(0.793851116509396) }, - { FRAC_CONST(0.602903433604202), FRAC_CONST(0.797814169934493) }, - { FRAC_CONST(0.597668876164268), FRAC_CONST(0.801743047655882) }, - { FRAC_CONST(0.592408716578875), FRAC_CONST(0.805637581373517) }, - { FRAC_CONST(0.587123180175754), FRAC_CONST(0.809497604258536) }, - { FRAC_CONST(0.581812493369691), FRAC_CONST(0.813322950960406) }, - { FRAC_CONST(0.576476883652835), FRAC_CONST(0.817113457614006) }, - { FRAC_CONST(0.571116579584947), FRAC_CONST(0.820868961846646) }, - { FRAC_CONST(0.565731810783613), FRAC_CONST(0.824589302785025) }, - { FRAC_CONST(0.560322807914407), FRAC_CONST(0.828274321062119) }, - { FRAC_CONST(0.554889802681009), FRAC_CONST(0.831923858824010) }, - { FRAC_CONST(0.549433027815281), FRAC_CONST(0.835537759736646) }, - { FRAC_CONST(0.543952717067296), FRAC_CONST(0.839115868992540) }, - { FRAC_CONST(0.538449105195327), FRAC_CONST(0.842658033317402) }, - { FRAC_CONST(0.532922427955790), FRAC_CONST(0.846164100976699) }, - { FRAC_CONST(0.527372922093142), FRAC_CONST(0.849633921782164) }, - { FRAC_CONST(0.521800825329746), FRAC_CONST(0.853067347098221) }, - { FRAC_CONST(0.516206376355680), FRAC_CONST(0.856464229848356) }, - { FRAC_CONST(0.510589814818519), FRAC_CONST(0.859824424521420) }, - { FRAC_CONST(0.504951381313066), FRAC_CONST(0.863147787177854) }, - { FRAC_CONST(0.499291317371047), FRAC_CONST(0.866434175455865) }, - { FRAC_CONST(0.493609865450762), FRAC_CONST(0.869683448577516) }, - { FRAC_CONST(0.487907268926702), FRAC_CONST(0.872895467354761) }, - { FRAC_CONST(0.482183772079123), FRAC_CONST(0.876070094195407) }, - { FRAC_CONST(0.476439620083580), FRAC_CONST(0.879207193109004) }, - { FRAC_CONST(0.470675059000427), FRAC_CONST(0.882306629712678) }, - { FRAC_CONST(0.464890335764274), FRAC_CONST(0.885368271236879) }, - { FRAC_CONST(0.459085698173413), FRAC_CONST(0.888391986531075) }, - { FRAC_CONST(0.453261394879198), FRAC_CONST(0.891377646069366) }, - { FRAC_CONST(0.447417675375397), FRAC_CONST(0.894325121956035) }, - { FRAC_CONST(0.441554789987504), FRAC_CONST(0.897234287931024) }, - { FRAC_CONST(0.435672989862017), FRAC_CONST(0.900105019375345) }, - { FRAC_CONST(0.429772526955677), FRAC_CONST(0.902937193316419) }, - { FRAC_CONST(0.423853654024676), FRAC_CONST(0.905730688433339) }, - { FRAC_CONST(0.417916624613831), FRAC_CONST(0.908485385062073) }, - { FRAC_CONST(0.411961693045722), FRAC_CONST(0.911201165200584) }, - { FRAC_CONST(0.405989114409798), FRAC_CONST(0.913877912513892) }, - { FRAC_CONST(0.399999144551449), FRAC_CONST(0.916515512339049) }, - { FRAC_CONST(0.393992040061048), FRAC_CONST(0.919113851690058) }, - { FRAC_CONST(0.387968058262959), FRAC_CONST(0.921672819262709) }, - { FRAC_CONST(0.381927457204511), FRAC_CONST(0.924192305439348) }, - { FRAC_CONST(0.375870495644949), FRAC_CONST(0.926672202293573) }, - { FRAC_CONST(0.369797433044349), FRAC_CONST(0.929112403594856) }, - { FRAC_CONST(0.363708529552499), FRAC_CONST(0.931512804813095) }, - { FRAC_CONST(0.357604045997758), FRAC_CONST(0.933873303123091) }, - { FRAC_CONST(0.351484243875885), FRAC_CONST(0.936193797408954) }, - { FRAC_CONST(0.345349385338836), FRAC_CONST(0.938474188268430) }, - { FRAC_CONST(0.339199733183530), FRAC_CONST(0.940714378017165) }, - { FRAC_CONST(0.333035550840599), FRAC_CONST(0.942914270692887) }, - { FRAC_CONST(0.326857102363098), FRAC_CONST(0.945073772059514) }, - { FRAC_CONST(0.320664652415198), FRAC_CONST(0.947192789611197) }, - { FRAC_CONST(0.314458466260842), FRAC_CONST(0.949271232576274) }, - { FRAC_CONST(0.308238809752391), FRAC_CONST(0.951309011921168) }, - { FRAC_CONST(0.302005949319228), FRAC_CONST(0.953306040354194) }, - { FRAC_CONST(0.295760151956351), FRAC_CONST(0.955262232329299) }, - { FRAC_CONST(0.289501685212929), FRAC_CONST(0.957177504049732) }, - { FRAC_CONST(0.283230817180850), FRAC_CONST(0.959051773471624) }, - { FRAC_CONST(0.276947816483228), FRAC_CONST(0.960884960307514) }, - { FRAC_CONST(0.270652952262902), FRAC_CONST(0.962676986029777) }, - { FRAC_CONST(0.264346494170904), FRAC_CONST(0.964427773873996) }, - { FRAC_CONST(0.258028712354909), FRAC_CONST(0.966137248842248) }, - { FRAC_CONST(0.251699877447663), FRAC_CONST(0.967805337706313) }, - { FRAC_CONST(0.245360260555389), FRAC_CONST(0.969431969010818) }, - { FRAC_CONST(0.239010133246176), FRAC_CONST(0.971017073076290) }, - { FRAC_CONST(0.232649767538342), FRAC_CONST(0.972560582002147) }, - { FRAC_CONST(0.226279435888785), FRAC_CONST(0.974062429669605) }, - { FRAC_CONST(0.219899411181310), FRAC_CONST(0.975522551744506) }, - { FRAC_CONST(0.213509966714943), FRAC_CONST(0.976940885680082) }, - { FRAC_CONST(0.207111376192219), FRAC_CONST(0.978317370719628) }, - { FRAC_CONST(0.200703913707458), FRAC_CONST(0.979651947899104) }, - { FRAC_CONST(0.194287853735029), FRAC_CONST(0.980944560049668) }, - { FRAC_CONST(0.187863471117585), FRAC_CONST(0.982195151800116) }, - { FRAC_CONST(0.181431041054297), FRAC_CONST(0.983403669579260) }, - { FRAC_CONST(0.174990839089060), FRAC_CONST(0.984570061618221) }, - { FRAC_CONST(0.168543141098691), FRAC_CONST(0.985694277952645) }, - { FRAC_CONST(0.162088223281113), FRAC_CONST(0.986776270424848) }, - { FRAC_CONST(0.155626362143520), FRAC_CONST(0.987815992685872) }, - { FRAC_CONST(0.149157834490539), FRAC_CONST(0.988813400197476) }, - { FRAC_CONST(0.142682917412363), FRAC_CONST(0.989768450234042) }, - { FRAC_CONST(0.136201888272891), FRAC_CONST(0.990681101884405) }, - { FRAC_CONST(0.129715024697841), FRAC_CONST(0.991551316053606) }, - { FRAC_CONST(0.123222604562857), FRAC_CONST(0.992379055464567) }, - { FRAC_CONST(0.116724905981611), FRAC_CONST(0.993164284659685) }, - { FRAC_CONST(0.110222207293883), FRAC_CONST(0.993906970002356) }, - { FRAC_CONST(0.103714787053643), FRAC_CONST(0.994607079678411) }, - { FRAC_CONST(0.097202924017115), FRAC_CONST(0.995264583697482) }, - { FRAC_CONST(0.090686897130838), FRAC_CONST(0.995879453894286) }, - { FRAC_CONST(0.084166985519718), FRAC_CONST(0.996451663929828) }, - { FRAC_CONST(0.077643468475068), FRAC_CONST(0.996981189292537) }, - { FRAC_CONST(0.071116625442645), FRAC_CONST(0.997468007299307) }, - { FRAC_CONST(0.064586736010684), FRAC_CONST(0.997912097096476) }, - { FRAC_CONST(0.058054079897912), FRAC_CONST(0.998313439660714) }, - { FRAC_CONST(0.051518936941578), FRAC_CONST(0.998672017799843) }, - { FRAC_CONST(0.044981587085452), FRAC_CONST(0.998987816153567) }, - { FRAC_CONST(0.038442310367847), FRAC_CONST(0.999260821194138) }, - { FRAC_CONST(0.031901386909611), FRAC_CONST(0.999491021226926) }, - { FRAC_CONST(0.025359096902136), FRAC_CONST(0.999678406390929) }, - { FRAC_CONST(0.018815720595351), FRAC_CONST(0.999822968659191) }, - { FRAC_CONST(0.012271538285720), FRAC_CONST(0.999924701839145) }, - { FRAC_CONST(0.005726830304231), FRAC_CONST(0.999983601572879) } -}; -#endif // LD_DEC - -/* 60 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_240[] = -{ - { FRAC_CONST(0.999994645401696), FRAC_CONST(0.003272486506527) }, - { FRAC_CONST(0.999566308502021), FRAC_CONST(0.029448173247963) }, - { FRAC_CONST(0.998452918783950), FRAC_CONST(0.055603677682425) }, - { FRAC_CONST(0.996655239309180), FRAC_CONST(0.081721074133668) }, - { FRAC_CONST(0.994174502117428), FRAC_CONST(0.107782463042759) }, - { FRAC_CONST(0.991012407382049), FRAC_CONST(0.133769983235535) }, - { FRAC_CONST(0.987171122244825), FRAC_CONST(0.159665824163761) }, - { FRAC_CONST(0.982653279330712), FRAC_CONST(0.185452238111591) }, - { FRAC_CONST(0.977461974943572), FRAC_CONST(0.211111552358965) }, - { FRAC_CONST(0.971600766944121), FRAC_CONST(0.236626181293610) }, - { FRAC_CONST(0.965073672311547), FRAC_CONST(0.261978638463337) }, - { FRAC_CONST(0.957885164390477), FRAC_CONST(0.287151548560387) }, - { FRAC_CONST(0.950040169825165), FRAC_CONST(0.312127659329594) }, - { FRAC_CONST(0.941544065183021), FRAC_CONST(0.336889853392220) }, - { FRAC_CONST(0.932402673269775), FRAC_CONST(0.361421159977355) }, - { FRAC_CONST(0.922622259138823), FRAC_CONST(0.385704766552831) }, - { FRAC_CONST(0.912209525797468), FRAC_CONST(0.409724030347695) }, - { FRAC_CONST(0.901171609613013), FRAC_CONST(0.433462489758331) }, - { FRAC_CONST(0.889516075421856), FRAC_CONST(0.456903875630421) }, - { FRAC_CONST(0.877250911344924), FRAC_CONST(0.480032122409011) }, - { FRAC_CONST(0.864384523313017), FRAC_CONST(0.502831379149042) }, - { FRAC_CONST(0.850925729305802), FRAC_CONST(0.525286020378792) }, - { FRAC_CONST(0.836883753308409), FRAC_CONST(0.547380656808797) }, - { FRAC_CONST(0.822268218989775), FRAC_CONST(0.569100145878898) }, - { FRAC_CONST(0.807089143107059), FRAC_CONST(0.590429602136201) }, - { FRAC_CONST(0.791356928640660), FRAC_CONST(0.611354407436816) }, - { FRAC_CONST(0.775082357664531), FRAC_CONST(0.631860220964409) }, - { FRAC_CONST(0.758276583956687), FRAC_CONST(0.651932989058674) }, - { FRAC_CONST(0.740951125354959), FRAC_CONST(0.671558954847018) }, - { FRAC_CONST(0.723117855863248), FRAC_CONST(0.690724667672829) }, - { FRAC_CONST(0.704788997513670), FRAC_CONST(0.709416992313883) }, - { FRAC_CONST(0.685977111990193), FRAC_CONST(0.727623117984575) }, - { FRAC_CONST(0.666695092019479), FRAC_CONST(0.745330567115786) }, - { FRAC_CONST(0.646956152534857), FRAC_CONST(0.762527203906388) }, - { FRAC_CONST(0.626773821619469), FRAC_CONST(0.779201242640517) }, - { FRAC_CONST(0.606161931234795), FRAC_CONST(0.795341255764910) }, - { FRAC_CONST(0.585134607740916), FRAC_CONST(0.810936181720784) }, - { FRAC_CONST(0.563706262215017), FRAC_CONST(0.825975332524873) }, - { FRAC_CONST(0.541891580574752), FRAC_CONST(0.840448401094438) }, - { FRAC_CONST(0.519705513513249), FRAC_CONST(0.854345468311227) }, - { FRAC_CONST(0.497163266252654), FRAC_CONST(0.867657009819544) }, - { FRAC_CONST(0.474280288123229), FRAC_CONST(0.880373902553765) }, - { FRAC_CONST(0.451072261975153), FRAC_CONST(0.892487430990834) }, - { FRAC_CONST(0.427555093430282), FRAC_CONST(0.903989293123443) }, - { FRAC_CONST(0.403744899981227), FRAC_CONST(0.914871606149819) }, - { FRAC_CONST(0.379657999945233), FRAC_CONST(0.925126911876195) }, - { FRAC_CONST(0.355310901280416), FRAC_CONST(0.934748181828292) }, - { FRAC_CONST(0.330720290272038), FRAC_CONST(0.943728822068278) }, - { FRAC_CONST(0.305903020096554), FRAC_CONST(0.952062677713924) }, - { FRAC_CONST(0.280876099271292), FRAC_CONST(0.959744037156857) }, - { FRAC_CONST(0.255656679997665), FRAC_CONST(0.966767635977008) }, - { FRAC_CONST(0.230262046405902), FRAC_CONST(0.973128660550580) }, - { FRAC_CONST(0.204709602709380), FRAC_CONST(0.978822751349072) }, - { FRAC_CONST(0.179016861276633), FRAC_CONST(0.983846005927077) }, - { FRAC_CONST(0.153201430629259), FRAC_CONST(0.988194981596825) }, - { FRAC_CONST(0.127281003373913), FRAC_CONST(0.991866697787626) }, - { FRAC_CONST(0.101273344076683), FRAC_CONST(0.994858638088611) }, - { FRAC_CONST(0.075196277088140), FRAC_CONST(0.997168751973348) }, - { FRAC_CONST(0.049067674327418), FRAC_CONST(0.998795456205172) }, - { FRAC_CONST(0.022905443033697), FRAC_CONST(0.999737635922260) } -}; -#endif // ALLOW_SMALL_FRAMELENGTH - -#ifdef SSR_DEC -/* 128 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_512[] = -{ - { FRAC_CONST(0.999998823451702), FRAC_CONST(0.001533980186285) }, - { FRAC_CONST(0.999904701082853), FRAC_CONST(0.013805388528060) }, - { FRAC_CONST(0.999659996743959), FRAC_CONST(0.026074717829104) }, - { FRAC_CONST(0.999264747286594), FRAC_CONST(0.038340120373553) }, - { FRAC_CONST(0.998719012233873), FRAC_CONST(0.050599749036899) }, - { FRAC_CONST(0.998022873771486), FRAC_CONST(0.062851757564161) }, - { FRAC_CONST(0.997176436735326), FRAC_CONST(0.075094300847921) }, - { FRAC_CONST(0.996179828595697), FRAC_CONST(0.087325535206192) }, - { FRAC_CONST(0.995033199438119), FRAC_CONST(0.099543618660069) }, - { FRAC_CONST(0.993736721940725), FRAC_CONST(0.111746711211127) }, - { FRAC_CONST(0.992290591348257), FRAC_CONST(0.123932975118512) }, - { FRAC_CONST(0.990695025442665), FRAC_CONST(0.136100575175706) }, - { FRAC_CONST(0.988950264510303), FRAC_CONST(0.148247678986896) }, - { FRAC_CONST(0.987056571305751), FRAC_CONST(0.160372457242928) }, - { FRAC_CONST(0.985014231012240), FRAC_CONST(0.172473083996796) }, - { FRAC_CONST(0.982823551198705), FRAC_CONST(0.184547736938620) }, - { FRAC_CONST(0.980484861773469), FRAC_CONST(0.196594597670080) }, - { FRAC_CONST(0.977998514934557), FRAC_CONST(0.208611851978263) }, - { FRAC_CONST(0.975364885116657), FRAC_CONST(0.220597690108874) }, - { FRAC_CONST(0.972584368934732), FRAC_CONST(0.232550307038775) }, - { FRAC_CONST(0.969657385124292), FRAC_CONST(0.244467902747824) }, - { FRAC_CONST(0.966584374478333), FRAC_CONST(0.256348682489943) }, - { FRAC_CONST(0.963365799780954), FRAC_CONST(0.268190857063403) }, - { FRAC_CONST(0.960002145737666), FRAC_CONST(0.279992643080273) }, - { FRAC_CONST(0.956493918902395), FRAC_CONST(0.291752263234989) }, - { FRAC_CONST(0.952841647601199), FRAC_CONST(0.303467946572011) }, - { FRAC_CONST(0.949045881852701), FRAC_CONST(0.315137928752522) }, - { FRAC_CONST(0.945107193285261), FRAC_CONST(0.326760452320132) }, - { FRAC_CONST(0.941026175050889), FRAC_CONST(0.338333766965541) }, - { FRAC_CONST(0.936803441735922), FRAC_CONST(0.349856129790135) }, - { FRAC_CONST(0.932439629268462), FRAC_CONST(0.361325805568454) }, - { FRAC_CONST(0.927935394822618), FRAC_CONST(0.372741067009516) }, - { FRAC_CONST(0.923291416719528), FRAC_CONST(0.384100195016935) }, - { FRAC_CONST(0.918508394325212), FRAC_CONST(0.395401478947816) }, - { FRAC_CONST(0.913587047945251), FRAC_CONST(0.406643216870369) }, - { FRAC_CONST(0.908528118716306), FRAC_CONST(0.417823715820212) }, - { FRAC_CONST(0.903332368494512), FRAC_CONST(0.428941292055329) }, - { FRAC_CONST(0.898000579740740), FRAC_CONST(0.439994271309633) }, - { FRAC_CONST(0.892533555402765), FRAC_CONST(0.450980989045104) }, - { FRAC_CONST(0.886932118794342), FRAC_CONST(0.461899790702463) }, - { FRAC_CONST(0.881197113471222), FRAC_CONST(0.472749031950343) }, - { FRAC_CONST(0.875329403104111), FRAC_CONST(0.483527078932919) }, - { FRAC_CONST(0.869329871348607), FRAC_CONST(0.494232308515960) }, - { FRAC_CONST(0.863199421712124), FRAC_CONST(0.504863108531268) }, - { FRAC_CONST(0.856938977417829), FRAC_CONST(0.515417878019463) }, - { FRAC_CONST(0.850549481265603), FRAC_CONST(0.525895027471085) }, - { FRAC_CONST(0.844031895490066), FRAC_CONST(0.536292979065963) }, - { FRAC_CONST(0.837387201615662), FRAC_CONST(0.546610166910835) }, - { FRAC_CONST(0.830616400308846), FRAC_CONST(0.556845037275160) }, - { FRAC_CONST(0.823720511227391), FRAC_CONST(0.566996048825109) }, - { FRAC_CONST(0.816700572866828), FRAC_CONST(0.577061672855679) }, - { FRAC_CONST(0.809557642404051), FRAC_CONST(0.587040393520918) }, - { FRAC_CONST(0.802292795538116), FRAC_CONST(0.596930708062197) }, - { FRAC_CONST(0.794907126328237), FRAC_CONST(0.606731127034524) }, - { FRAC_CONST(0.787401747029031), FRAC_CONST(0.616440174530854) }, - { FRAC_CONST(0.779777787923015), FRAC_CONST(0.626056388404344) }, - { FRAC_CONST(0.772036397150385), FRAC_CONST(0.635578320488556) }, - { FRAC_CONST(0.764178740536117), FRAC_CONST(0.645004536815544) }, - { FRAC_CONST(0.756206001414395), FRAC_CONST(0.654333617831800) }, - { FRAC_CONST(0.748119380450404), FRAC_CONST(0.663564158612040) }, - { FRAC_CONST(0.739920095459516), FRAC_CONST(0.672694769070773) }, - { FRAC_CONST(0.731609381223893), FRAC_CONST(0.681724074171650) }, - { FRAC_CONST(0.723188489306527), FRAC_CONST(0.690650714134535) }, - { FRAC_CONST(0.714658687862769), FRAC_CONST(0.699473344640284) }, - { FRAC_CONST(0.706021261449340), FRAC_CONST(0.708190637033195) }, - { FRAC_CONST(0.697277510830887), FRAC_CONST(0.716801278521100) }, - { FRAC_CONST(0.688428752784091), FRAC_CONST(0.725303972373061) }, - { FRAC_CONST(0.679476319899365), FRAC_CONST(0.733697438114660) }, - { FRAC_CONST(0.670421560380173), FRAC_CONST(0.741980411720831) }, - { FRAC_CONST(0.661265837839992), FRAC_CONST(0.750151645806215) }, - { FRAC_CONST(0.652010531096960), FRAC_CONST(0.758209909813015) }, - { FRAC_CONST(0.642657033966227), FRAC_CONST(0.766153990196313) }, - { FRAC_CONST(0.633206755050057), FRAC_CONST(0.773982690606823) }, - { FRAC_CONST(0.623661117525695), FRAC_CONST(0.781694832071059) }, - { FRAC_CONST(0.614021558931038), FRAC_CONST(0.789289253168886) }, - { FRAC_CONST(0.604289530948156), FRAC_CONST(0.796764810208419) }, - { FRAC_CONST(0.594466499184665), FRAC_CONST(0.804120377398266) }, - { FRAC_CONST(0.584553942953015), FRAC_CONST(0.811354847017064) }, - { FRAC_CONST(0.574553355047716), FRAC_CONST(0.818467129580299) }, - { FRAC_CONST(0.564466241520520), FRAC_CONST(0.825456154004377) }, - { FRAC_CONST(0.554294121453620), FRAC_CONST(0.832320867767930) }, - { FRAC_CONST(0.544038526730884), FRAC_CONST(0.839060237070313) }, - { FRAC_CONST(0.533701001807153), FRAC_CONST(0.845673246987299) }, - { FRAC_CONST(0.523283103475656), FRAC_CONST(0.852158901623920) }, - { FRAC_CONST(0.512786400633563), FRAC_CONST(0.858516224264443) }, - { FRAC_CONST(0.502212474045711), FRAC_CONST(0.864744257519462) }, - { FRAC_CONST(0.491562916106550), FRAC_CONST(0.870842063470079) }, - { FRAC_CONST(0.480839330600334), FRAC_CONST(0.876808723809146) }, - { FRAC_CONST(0.470043332459596), FRAC_CONST(0.882643339979563) }, - { FRAC_CONST(0.459176547521944), FRAC_CONST(0.888345033309596) }, - { FRAC_CONST(0.448240612285220), FRAC_CONST(0.893912945145203) }, - { FRAC_CONST(0.437237173661044), FRAC_CONST(0.899346236979341) }, - { FRAC_CONST(0.426167888726800), FRAC_CONST(0.904644090578246) }, - { FRAC_CONST(0.415034424476082), FRAC_CONST(0.909805708104652) }, - { FRAC_CONST(0.403838457567654), FRAC_CONST(0.914830312237946) }, - { FRAC_CONST(0.392581674072952), FRAC_CONST(0.919717146291227) }, - { FRAC_CONST(0.381265769222162), FRAC_CONST(0.924465474325263) }, - { FRAC_CONST(0.369892447148934), FRAC_CONST(0.929074581259316) }, - { FRAC_CONST(0.358463420633737), FRAC_CONST(0.933543772978836) }, - { FRAC_CONST(0.346980410845924), FRAC_CONST(0.937872376439990) }, - { FRAC_CONST(0.335445147084532), FRAC_CONST(0.942059739771017) }, - { FRAC_CONST(0.323859366517853), FRAC_CONST(0.946105232370403) }, - { FRAC_CONST(0.312224813921825), FRAC_CONST(0.950008245001843) }, - { FRAC_CONST(0.300543241417273), FRAC_CONST(0.953768189885990) }, - { FRAC_CONST(0.288816408206049), FRAC_CONST(0.957384500788976) }, - { FRAC_CONST(0.277046080306100), FRAC_CONST(0.960856633107680) }, - { FRAC_CONST(0.265234030285512), FRAC_CONST(0.964184063951746) }, - { FRAC_CONST(0.253382036995570), FRAC_CONST(0.967366292222329) }, - { FRAC_CONST(0.241491885302869), FRAC_CONST(0.970402838687556) }, - { FRAC_CONST(0.229565365820519), FRAC_CONST(0.973293246054698) }, - { FRAC_CONST(0.217604274638484), FRAC_CONST(0.976037079039039) }, - { FRAC_CONST(0.205610413053099), FRAC_CONST(0.978633924429423) }, - { FRAC_CONST(0.193585587295804), FRAC_CONST(0.981083391150487) }, - { FRAC_CONST(0.181531608261125), FRAC_CONST(0.983385110321551) }, - { FRAC_CONST(0.169450291233968), FRAC_CONST(0.985538735312176) }, - { FRAC_CONST(0.157343455616238), FRAC_CONST(0.987543941794359) }, - { FRAC_CONST(0.145212924652848), FRAC_CONST(0.989400427791380) }, - { FRAC_CONST(0.133060525157139), FRAC_CONST(0.991107913723277) }, - { FRAC_CONST(0.120888087235777), FRAC_CONST(0.992666142448948) }, - { FRAC_CONST(0.108697444013139), FRAC_CONST(0.994074879304879) }, - { FRAC_CONST(0.096490431355253), FRAC_CONST(0.995333912140482) }, - { FRAC_CONST(0.084268887593324), FRAC_CONST(0.996443051350043) }, - { FRAC_CONST(0.072034653246889), FRAC_CONST(0.997402129901275) }, - { FRAC_CONST(0.059789570746640), FRAC_CONST(0.998211003360478) }, - { FRAC_CONST(0.047535484156959), FRAC_CONST(0.998869549914284) }, - { FRAC_CONST(0.035274238898214), FRAC_CONST(0.999377670388003) }, - { FRAC_CONST(0.023007681468839), FRAC_CONST(0.999735288260562) }, - { FRAC_CONST(0.010737659167265), FRAC_CONST(0.999942349676024) } -}; - -/* 16 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_64[] = -{ - { FRAC_CONST(0.999924701839145), FRAC_CONST(0.012271538285720) }, - { FRAC_CONST(0.993906970002356), FRAC_CONST(0.110222207293883) }, - { FRAC_CONST(0.978317370719628), FRAC_CONST(0.207111376192219) }, - { FRAC_CONST(0.953306040354194), FRAC_CONST(0.302005949319228) }, - { FRAC_CONST(0.919113851690058), FRAC_CONST(0.393992040061048) }, - { FRAC_CONST(0.876070094195407), FRAC_CONST(0.482183772079123) }, - { FRAC_CONST(0.824589302785025), FRAC_CONST(0.565731810783613) }, - { FRAC_CONST(0.765167265622459), FRAC_CONST(0.643831542889791) }, - { FRAC_CONST(0.698376249408973), FRAC_CONST(0.715730825283819) }, - { FRAC_CONST(0.624859488142386), FRAC_CONST(0.780737228572094) }, - { FRAC_CONST(0.545324988422046), FRAC_CONST(0.838224705554838) }, - { FRAC_CONST(0.460538710958240), FRAC_CONST(0.887639620402854) }, - { FRAC_CONST(0.371317193951838), FRAC_CONST(0.928506080473215) }, - { FRAC_CONST(0.278519689385053), FRAC_CONST(0.960430519415566) }, - { FRAC_CONST(0.183039887955141), FRAC_CONST(0.983105487431216) }, - { FRAC_CONST(0.085797312344440), FRAC_CONST(0.996312612182778) } -}; -#endif // SSR_DEC - -#else // FIXED_POINT - -/* 256 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_2048[] = -{ - { FRAC_CONST(0.031249997702054), FRAC_CONST(0.000011984224612) }, - { FRAC_CONST(0.031249813866531), FRAC_CONST(0.000107857810004) }, - { FRAC_CONST(0.031249335895858), FRAC_CONST(0.000203730380198) }, - { FRAC_CONST(0.031248563794535), FRAC_CONST(0.000299601032804) }, - { FRAC_CONST(0.031247497569829), FRAC_CONST(0.000395468865451) }, - { FRAC_CONST(0.031246137231775), FRAC_CONST(0.000491332975794) }, - { FRAC_CONST(0.031244482793177), FRAC_CONST(0.000587192461525) }, - { FRAC_CONST(0.031242534269608), FRAC_CONST(0.000683046420376) }, - { FRAC_CONST(0.031240291679407), FRAC_CONST(0.000778893950134) }, - { FRAC_CONST(0.031237755043684), FRAC_CONST(0.000874734148645) }, - { FRAC_CONST(0.031234924386313), FRAC_CONST(0.000970566113826) }, - { FRAC_CONST(0.031231799733938), FRAC_CONST(0.001066388943669) }, - { FRAC_CONST(0.031228381115970), FRAC_CONST(0.001162201736253) }, - { FRAC_CONST(0.031224668564585), FRAC_CONST(0.001258003589751) }, - { FRAC_CONST(0.031220662114728), FRAC_CONST(0.001353793602441) }, - { FRAC_CONST(0.031216361804108), FRAC_CONST(0.001449570872710) }, - { FRAC_CONST(0.031211767673203), FRAC_CONST(0.001545334499065) }, - { FRAC_CONST(0.031206879765253), FRAC_CONST(0.001641083580144) }, - { FRAC_CONST(0.031201698126266), FRAC_CONST(0.001736817214719) }, - { FRAC_CONST(0.031196222805014), FRAC_CONST(0.001832534501709) }, - { FRAC_CONST(0.031190453853031), FRAC_CONST(0.001928234540186) }, - { FRAC_CONST(0.031184391324617), FRAC_CONST(0.002023916429386) }, - { FRAC_CONST(0.031178035276836), FRAC_CONST(0.002119579268713) }, - { FRAC_CONST(0.031171385769513), FRAC_CONST(0.002215222157753) }, - { FRAC_CONST(0.031164442865236), FRAC_CONST(0.002310844196278) }, - { FRAC_CONST(0.031157206629353), FRAC_CONST(0.002406444484258) }, - { FRAC_CONST(0.031149677129975), FRAC_CONST(0.002502022121865) }, - { FRAC_CONST(0.031141854437973), FRAC_CONST(0.002597576209488) }, - { FRAC_CONST(0.031133738626977), FRAC_CONST(0.002693105847734) }, - { FRAC_CONST(0.031125329773375), FRAC_CONST(0.002788610137442) }, - { FRAC_CONST(0.031116627956316), FRAC_CONST(0.002884088179689) }, - { FRAC_CONST(0.031107633257703), FRAC_CONST(0.002979539075801) }, - { FRAC_CONST(0.031098345762200), FRAC_CONST(0.003074961927355) }, - { FRAC_CONST(0.031088765557222), FRAC_CONST(0.003170355836197) }, - { FRAC_CONST(0.031078892732942), FRAC_CONST(0.003265719904442) }, - { FRAC_CONST(0.031068727382288), FRAC_CONST(0.003361053234488) }, - { FRAC_CONST(0.031058269600939), FRAC_CONST(0.003456354929021) }, - { FRAC_CONST(0.031047519487329), FRAC_CONST(0.003551624091024) }, - { FRAC_CONST(0.031036477142640), FRAC_CONST(0.003646859823790) }, - { FRAC_CONST(0.031025142670809), FRAC_CONST(0.003742061230921) }, - { FRAC_CONST(0.031013516178519), FRAC_CONST(0.003837227416347) }, - { FRAC_CONST(0.031001597775203), FRAC_CONST(0.003932357484328) }, - { FRAC_CONST(0.030989387573042), FRAC_CONST(0.004027450539462) }, - { FRAC_CONST(0.030976885686963), FRAC_CONST(0.004122505686697) }, - { FRAC_CONST(0.030964092234638), FRAC_CONST(0.004217522031340) }, - { FRAC_CONST(0.030951007336485), FRAC_CONST(0.004312498679058) }, - { FRAC_CONST(0.030937631115663), FRAC_CONST(0.004407434735897) }, - { FRAC_CONST(0.030923963698074), FRAC_CONST(0.004502329308281) }, - { FRAC_CONST(0.030910005212362), FRAC_CONST(0.004597181503027) }, - { FRAC_CONST(0.030895755789908), FRAC_CONST(0.004691990427350) }, - { FRAC_CONST(0.030881215564835), FRAC_CONST(0.004786755188872) }, - { FRAC_CONST(0.030866384674000), FRAC_CONST(0.004881474895632) }, - { FRAC_CONST(0.030851263256996), FRAC_CONST(0.004976148656090) }, - { FRAC_CONST(0.030835851456154), FRAC_CONST(0.005070775579142) }, - { FRAC_CONST(0.030820149416533), FRAC_CONST(0.005165354774124) }, - { FRAC_CONST(0.030804157285929), FRAC_CONST(0.005259885350819) }, - { FRAC_CONST(0.030787875214864), FRAC_CONST(0.005354366419469) }, - { FRAC_CONST(0.030771303356593), FRAC_CONST(0.005448797090784) }, - { FRAC_CONST(0.030754441867095), FRAC_CONST(0.005543176475946) }, - { FRAC_CONST(0.030737290905077), FRAC_CONST(0.005637503686619) }, - { FRAC_CONST(0.030719850631972), FRAC_CONST(0.005731777834961) }, - { FRAC_CONST(0.030702121211932), FRAC_CONST(0.005825998033626) }, - { FRAC_CONST(0.030684102811835), FRAC_CONST(0.005920163395780) }, - { FRAC_CONST(0.030665795601276), FRAC_CONST(0.006014273035101) }, - { FRAC_CONST(0.030647199752570), FRAC_CONST(0.006108326065793) }, - { FRAC_CONST(0.030628315440748), FRAC_CONST(0.006202321602594) }, - { FRAC_CONST(0.030609142843557), FRAC_CONST(0.006296258760782) }, - { FRAC_CONST(0.030589682141455), FRAC_CONST(0.006390136656185) }, - { FRAC_CONST(0.030569933517616), FRAC_CONST(0.006483954405188) }, - { FRAC_CONST(0.030549897157919), FRAC_CONST(0.006577711124743) }, - { FRAC_CONST(0.030529573250956), FRAC_CONST(0.006671405932375) }, - { FRAC_CONST(0.030508961988022), FRAC_CONST(0.006765037946194) }, - { FRAC_CONST(0.030488063563118), FRAC_CONST(0.006858606284900) }, - { FRAC_CONST(0.030466878172949), FRAC_CONST(0.006952110067791) }, - { FRAC_CONST(0.030445406016919), FRAC_CONST(0.007045548414774) }, - { FRAC_CONST(0.030423647297133), FRAC_CONST(0.007138920446372) }, - { FRAC_CONST(0.030401602218392), FRAC_CONST(0.007232225283733) }, - { FRAC_CONST(0.030379270988192), FRAC_CONST(0.007325462048634) }, - { FRAC_CONST(0.030356653816724), FRAC_CONST(0.007418629863497) }, - { FRAC_CONST(0.030333750916869), FRAC_CONST(0.007511727851390) }, - { FRAC_CONST(0.030310562504198), FRAC_CONST(0.007604755136040) }, - { FRAC_CONST(0.030287088796968), FRAC_CONST(0.007697710841838) }, - { FRAC_CONST(0.030263330016124), FRAC_CONST(0.007790594093851) }, - { FRAC_CONST(0.030239286385293), FRAC_CONST(0.007883404017824) }, - { FRAC_CONST(0.030214958130781), FRAC_CONST(0.007976139740197) }, - { FRAC_CONST(0.030190345481576), FRAC_CONST(0.008068800388104) }, - { FRAC_CONST(0.030165448669342), FRAC_CONST(0.008161385089390) }, - { FRAC_CONST(0.030140267928416), FRAC_CONST(0.008253892972610) }, - { FRAC_CONST(0.030114803495809), FRAC_CONST(0.008346323167047) }, - { FRAC_CONST(0.030089055611203), FRAC_CONST(0.008438674802711) }, - { FRAC_CONST(0.030063024516947), FRAC_CONST(0.008530947010354) }, - { FRAC_CONST(0.030036710458054), FRAC_CONST(0.008623138921475) }, - { FRAC_CONST(0.030010113682202), FRAC_CONST(0.008715249668328) }, - { FRAC_CONST(0.029983234439732), FRAC_CONST(0.008807278383932) }, - { FRAC_CONST(0.029956072983640), FRAC_CONST(0.008899224202078) }, - { FRAC_CONST(0.029928629569580), FRAC_CONST(0.008991086257336) }, - { FRAC_CONST(0.029900904455860), FRAC_CONST(0.009082863685067) }, - { FRAC_CONST(0.029872897903441), FRAC_CONST(0.009174555621425) }, - { FRAC_CONST(0.029844610175929), FRAC_CONST(0.009266161203371) }, - { FRAC_CONST(0.029816041539579), FRAC_CONST(0.009357679568679) }, - { FRAC_CONST(0.029787192263292), FRAC_CONST(0.009449109855944) }, - { FRAC_CONST(0.029758062618606), FRAC_CONST(0.009540451204587) }, - { FRAC_CONST(0.029728652879702), FRAC_CONST(0.009631702754871) }, - { FRAC_CONST(0.029698963323395), FRAC_CONST(0.009722863647900) }, - { FRAC_CONST(0.029668994229134), FRAC_CONST(0.009813933025633) }, - { FRAC_CONST(0.029638745879000), FRAC_CONST(0.009904910030891) }, - { FRAC_CONST(0.029608218557702), FRAC_CONST(0.009995793807363) }, - { FRAC_CONST(0.029577412552575), FRAC_CONST(0.010086583499618) }, - { FRAC_CONST(0.029546328153577), FRAC_CONST(0.010177278253107) }, - { FRAC_CONST(0.029514965653285), FRAC_CONST(0.010267877214177) }, - { FRAC_CONST(0.029483325346896), FRAC_CONST(0.010358379530076) }, - { FRAC_CONST(0.029451407532220), FRAC_CONST(0.010448784348962) }, - { FRAC_CONST(0.029419212509679), FRAC_CONST(0.010539090819911) }, - { FRAC_CONST(0.029386740582307), FRAC_CONST(0.010629298092923) }, - { FRAC_CONST(0.029353992055740), FRAC_CONST(0.010719405318933) }, - { FRAC_CONST(0.029320967238220), FRAC_CONST(0.010809411649818) }, - { FRAC_CONST(0.029287666440590), FRAC_CONST(0.010899316238403) }, - { FRAC_CONST(0.029254089976290), FRAC_CONST(0.010989118238474) }, - { FRAC_CONST(0.029220238161353), FRAC_CONST(0.011078816804778) }, - { FRAC_CONST(0.029186111314406), FRAC_CONST(0.011168411093039) }, - { FRAC_CONST(0.029151709756664), FRAC_CONST(0.011257900259961) }, - { FRAC_CONST(0.029117033811927), FRAC_CONST(0.011347283463239) }, - { FRAC_CONST(0.029082083806579), FRAC_CONST(0.011436559861563) }, - { FRAC_CONST(0.029046860069582), FRAC_CONST(0.011525728614630) }, - { FRAC_CONST(0.029011362932476), FRAC_CONST(0.011614788883150) }, - { FRAC_CONST(0.028975592729373), FRAC_CONST(0.011703739828853) }, - { FRAC_CONST(0.028939549796957), FRAC_CONST(0.011792580614500) }, - { FRAC_CONST(0.028903234474475), FRAC_CONST(0.011881310403886) }, - { FRAC_CONST(0.028866647103744), FRAC_CONST(0.011969928361855) }, - { FRAC_CONST(0.028829788029135), FRAC_CONST(0.012058433654299) }, - { FRAC_CONST(0.028792657597583), FRAC_CONST(0.012146825448172) }, - { FRAC_CONST(0.028755256158571), FRAC_CONST(0.012235102911499) }, - { FRAC_CONST(0.028717584064137), FRAC_CONST(0.012323265213377) }, - { FRAC_CONST(0.028679641668864), FRAC_CONST(0.012411311523990) }, - { FRAC_CONST(0.028641429329882), FRAC_CONST(0.012499241014612) }, - { FRAC_CONST(0.028602947406859), FRAC_CONST(0.012587052857618) }, - { FRAC_CONST(0.028564196262001), FRAC_CONST(0.012674746226488) }, - { FRAC_CONST(0.028525176260050), FRAC_CONST(0.012762320295819) }, - { FRAC_CONST(0.028485887768276), FRAC_CONST(0.012849774241331) }, - { FRAC_CONST(0.028446331156478), FRAC_CONST(0.012937107239875) }, - { FRAC_CONST(0.028406506796976), FRAC_CONST(0.013024318469437) }, - { FRAC_CONST(0.028366415064615), FRAC_CONST(0.013111407109155) }, - { FRAC_CONST(0.028326056336751), FRAC_CONST(0.013198372339315) }, - { FRAC_CONST(0.028285430993258), FRAC_CONST(0.013285213341368) }, - { FRAC_CONST(0.028244539416515), FRAC_CONST(0.013371929297933) }, - { FRAC_CONST(0.028203381991411), FRAC_CONST(0.013458519392807) }, - { FRAC_CONST(0.028161959105334), FRAC_CONST(0.013544982810971) }, - { FRAC_CONST(0.028120271148172), FRAC_CONST(0.013631318738598) }, - { FRAC_CONST(0.028078318512309), FRAC_CONST(0.013717526363062) }, - { FRAC_CONST(0.028036101592619), FRAC_CONST(0.013803604872943) }, - { FRAC_CONST(0.027993620786463), FRAC_CONST(0.013889553458039) }, - { FRAC_CONST(0.027950876493687), FRAC_CONST(0.013975371309367) }, - { FRAC_CONST(0.027907869116616), FRAC_CONST(0.014061057619178) }, - { FRAC_CONST(0.027864599060052), FRAC_CONST(0.014146611580959) }, - { FRAC_CONST(0.027821066731270), FRAC_CONST(0.014232032389445) }, - { FRAC_CONST(0.027777272540012), FRAC_CONST(0.014317319240622) }, - { FRAC_CONST(0.027733216898487), FRAC_CONST(0.014402471331737) }, - { FRAC_CONST(0.027688900221361), FRAC_CONST(0.014487487861307) }, - { FRAC_CONST(0.027644322925762), FRAC_CONST(0.014572368029123) }, - { FRAC_CONST(0.027599485431266), FRAC_CONST(0.014657111036262) }, - { FRAC_CONST(0.027554388159903), FRAC_CONST(0.014741716085090) }, - { FRAC_CONST(0.027509031536144), FRAC_CONST(0.014826182379271) }, - { FRAC_CONST(0.027463415986904), FRAC_CONST(0.014910509123778) }, - { FRAC_CONST(0.027417541941533), FRAC_CONST(0.014994695524894) }, - { FRAC_CONST(0.027371409831816), FRAC_CONST(0.015078740790225) }, - { FRAC_CONST(0.027325020091965), FRAC_CONST(0.015162644128704) }, - { FRAC_CONST(0.027278373158618), FRAC_CONST(0.015246404750603) }, - { FRAC_CONST(0.027231469470833), FRAC_CONST(0.015330021867534) }, - { FRAC_CONST(0.027184309470088), FRAC_CONST(0.015413494692460) }, - { FRAC_CONST(0.027136893600268), FRAC_CONST(0.015496822439704) }, - { FRAC_CONST(0.027089222307671), FRAC_CONST(0.015580004324954) }, - { FRAC_CONST(0.027041296040997), FRAC_CONST(0.015663039565269) }, - { FRAC_CONST(0.026993115251345), FRAC_CONST(0.015745927379091) }, - { FRAC_CONST(0.026944680392213), FRAC_CONST(0.015828666986247) }, - { FRAC_CONST(0.026895991919487), FRAC_CONST(0.015911257607961) }, - { FRAC_CONST(0.026847050291442), FRAC_CONST(0.015993698466859) }, - { FRAC_CONST(0.026797855968734), FRAC_CONST(0.016075988786976) }, - { FRAC_CONST(0.026748409414401), FRAC_CONST(0.016158127793763) }, - { FRAC_CONST(0.026698711093851), FRAC_CONST(0.016240114714099) }, - { FRAC_CONST(0.026648761474864), FRAC_CONST(0.016321948776289) }, - { FRAC_CONST(0.026598561027585), FRAC_CONST(0.016403629210082) }, - { FRAC_CONST(0.026548110224519), FRAC_CONST(0.016485155246669) }, - { FRAC_CONST(0.026497409540530), FRAC_CONST(0.016566526118696) }, - { FRAC_CONST(0.026446459452830), FRAC_CONST(0.016647741060271) }, - { FRAC_CONST(0.026395260440982), FRAC_CONST(0.016728799306966) }, - { FRAC_CONST(0.026343812986890), FRAC_CONST(0.016809700095831) }, - { FRAC_CONST(0.026292117574797), FRAC_CONST(0.016890442665397) }, - { FRAC_CONST(0.026240174691280), FRAC_CONST(0.016971026255683) }, - { FRAC_CONST(0.026187984825246), FRAC_CONST(0.017051450108208) }, - { FRAC_CONST(0.026135548467924), FRAC_CONST(0.017131713465990) }, - { FRAC_CONST(0.026082866112867), FRAC_CONST(0.017211815573560) }, - { FRAC_CONST(0.026029938255941), FRAC_CONST(0.017291755676967) }, - { FRAC_CONST(0.025976765395322), FRAC_CONST(0.017371533023784) }, - { FRAC_CONST(0.025923348031494), FRAC_CONST(0.017451146863116) }, - { FRAC_CONST(0.025869686667242), FRAC_CONST(0.017530596445607) }, - { FRAC_CONST(0.025815781807646), FRAC_CONST(0.017609881023449) }, - { FRAC_CONST(0.025761633960080), FRAC_CONST(0.017688999850383) }, - { FRAC_CONST(0.025707243634204), FRAC_CONST(0.017767952181715) }, - { FRAC_CONST(0.025652611341960), FRAC_CONST(0.017846737274313) }, - { FRAC_CONST(0.025597737597568), FRAC_CONST(0.017925354386623) }, - { FRAC_CONST(0.025542622917522), FRAC_CONST(0.018003802778671) }, - { FRAC_CONST(0.025487267820581), FRAC_CONST(0.018082081712071) }, - { FRAC_CONST(0.025431672827768), FRAC_CONST(0.018160190450031) }, - { FRAC_CONST(0.025375838462365), FRAC_CONST(0.018238128257362) }, - { FRAC_CONST(0.025319765249906), FRAC_CONST(0.018315894400484) }, - { FRAC_CONST(0.025263453718173), FRAC_CONST(0.018393488147432) }, - { FRAC_CONST(0.025206904397193), FRAC_CONST(0.018470908767865) }, - { FRAC_CONST(0.025150117819228), FRAC_CONST(0.018548155533070) }, - { FRAC_CONST(0.025093094518776), FRAC_CONST(0.018625227715971) }, - { FRAC_CONST(0.025035835032562), FRAC_CONST(0.018702124591135) }, - { FRAC_CONST(0.024978339899534), FRAC_CONST(0.018778845434780) }, - { FRAC_CONST(0.024920609660858), FRAC_CONST(0.018855389524780) }, - { FRAC_CONST(0.024862644859912), FRAC_CONST(0.018931756140672) }, - { FRAC_CONST(0.024804446042284), FRAC_CONST(0.019007944563666) }, - { FRAC_CONST(0.024746013755764), FRAC_CONST(0.019083954076646) }, - { FRAC_CONST(0.024687348550337), FRAC_CONST(0.019159783964183) }, - { FRAC_CONST(0.024628450978184), FRAC_CONST(0.019235433512536) }, - { FRAC_CONST(0.024569321593670), FRAC_CONST(0.019310902009663) }, - { FRAC_CONST(0.024509960953345), FRAC_CONST(0.019386188745225) }, - { FRAC_CONST(0.024450369615932), FRAC_CONST(0.019461293010596) }, - { FRAC_CONST(0.024390548142329), FRAC_CONST(0.019536214098866) }, - { FRAC_CONST(0.024330497095598), FRAC_CONST(0.019610951304848) }, - { FRAC_CONST(0.024270217040961), FRAC_CONST(0.019685503925087) }, - { FRAC_CONST(0.024209708545799), FRAC_CONST(0.019759871257867) }, - { FRAC_CONST(0.024148972179639), FRAC_CONST(0.019834052603212) }, - { FRAC_CONST(0.024088008514157), FRAC_CONST(0.019908047262901) }, - { FRAC_CONST(0.024026818123164), FRAC_CONST(0.019981854540467) }, - { FRAC_CONST(0.023965401582609), FRAC_CONST(0.020055473741208) }, - { FRAC_CONST(0.023903759470567), FRAC_CONST(0.020128904172192) }, - { FRAC_CONST(0.023841892367236), FRAC_CONST(0.020202145142264) }, - { FRAC_CONST(0.023779800854935), FRAC_CONST(0.020275195962052) }, - { FRAC_CONST(0.023717485518092), FRAC_CONST(0.020348055943974) }, - { FRAC_CONST(0.023654946943242), FRAC_CONST(0.020420724402244) }, - { FRAC_CONST(0.023592185719023), FRAC_CONST(0.020493200652878) }, - { FRAC_CONST(0.023529202436167), FRAC_CONST(0.020565484013703) }, - { FRAC_CONST(0.023465997687496), FRAC_CONST(0.020637573804361) }, - { FRAC_CONST(0.023402572067918), FRAC_CONST(0.020709469346314) }, - { FRAC_CONST(0.023338926174419), FRAC_CONST(0.020781169962854) }, - { FRAC_CONST(0.023275060606058), FRAC_CONST(0.020852674979108) }, - { FRAC_CONST(0.023210975963963), FRAC_CONST(0.020923983722044) }, - { FRAC_CONST(0.023146672851322), FRAC_CONST(0.020995095520475) }, - { FRAC_CONST(0.023082151873380), FRAC_CONST(0.021066009705072) }, - { FRAC_CONST(0.023017413637435), FRAC_CONST(0.021136725608363) }, - { FRAC_CONST(0.022952458752826), FRAC_CONST(0.021207242564742) }, - { FRAC_CONST(0.022887287830934), FRAC_CONST(0.021277559910478) }, - { FRAC_CONST(0.022821901485173), FRAC_CONST(0.021347676983716) }, - { FRAC_CONST(0.022756300330983), FRAC_CONST(0.021417593124488) }, - { FRAC_CONST(0.022690484985827), FRAC_CONST(0.021487307674717) }, - { FRAC_CONST(0.022624456069185), FRAC_CONST(0.021556819978223) }, - { FRAC_CONST(0.022558214202547), FRAC_CONST(0.021626129380729) }, - { FRAC_CONST(0.022491760009405), FRAC_CONST(0.021695235229869) }, - { FRAC_CONST(0.022425094115252), FRAC_CONST(0.021764136875192) }, - { FRAC_CONST(0.022358217147572), FRAC_CONST(0.021832833668171) }, - { FRAC_CONST(0.022291129735838), FRAC_CONST(0.021901324962204) }, - { FRAC_CONST(0.022223832511501), FRAC_CONST(0.021969610112625) }, - { FRAC_CONST(0.022156326107988), FRAC_CONST(0.022037688476709) }, - { FRAC_CONST(0.022088611160696), FRAC_CONST(0.022105559413676) }, - { FRAC_CONST(0.022020688306983), FRAC_CONST(0.022173222284699) }, - { FRAC_CONST(0.021952558186166), FRAC_CONST(0.022240676452909) }, - { FRAC_CONST(0.021884221439510), FRAC_CONST(0.022307921283403) }, - { FRAC_CONST(0.021815678710228), FRAC_CONST(0.022374956143245) }, - { FRAC_CONST(0.021746930643469), FRAC_CONST(0.022441780401478) }, - { FRAC_CONST(0.021677977886316), FRAC_CONST(0.022508393429127) }, - { FRAC_CONST(0.021608821087780), FRAC_CONST(0.022574794599206) }, - { FRAC_CONST(0.021539460898790), FRAC_CONST(0.022640983286719) }, - { FRAC_CONST(0.021469897972190), FRAC_CONST(0.022706958868676) }, - { FRAC_CONST(0.021400132962735), FRAC_CONST(0.022772720724087) }, - { FRAC_CONST(0.021330166527077), FRAC_CONST(0.022838268233979) }, - { FRAC_CONST(0.021259999323769), FRAC_CONST(0.022903600781391) }, - { FRAC_CONST(0.021189632013250), FRAC_CONST(0.022968717751391) }, - { FRAC_CONST(0.021119065257845), FRAC_CONST(0.023033618531071) }, - { FRAC_CONST(0.021048299721754), FRAC_CONST(0.023098302509561) }, - { FRAC_CONST(0.020977336071050), FRAC_CONST(0.023162769078031) }, - { FRAC_CONST(0.020906174973670), FRAC_CONST(0.023227017629698) }, - { FRAC_CONST(0.020834817099409), FRAC_CONST(0.023291047559828) }, - { FRAC_CONST(0.020763263119915), FRAC_CONST(0.023354858265748) }, - { FRAC_CONST(0.020691513708680), FRAC_CONST(0.023418449146848) }, - { FRAC_CONST(0.020619569541038), FRAC_CONST(0.023481819604585) }, - { FRAC_CONST(0.020547431294155), FRAC_CONST(0.023544969042494) }, - { FRAC_CONST(0.020475099647023), FRAC_CONST(0.023607896866186) }, - { FRAC_CONST(0.020402575280455), FRAC_CONST(0.023670602483363) }, - { FRAC_CONST(0.020329858877078), FRAC_CONST(0.023733085303813) }, - { FRAC_CONST(0.020256951121327), FRAC_CONST(0.023795344739427) }, - { FRAC_CONST(0.020183852699437), FRAC_CONST(0.023857380204193) }, - { FRAC_CONST(0.020110564299439), FRAC_CONST(0.023919191114211) }, - { FRAC_CONST(0.020037086611150), FRAC_CONST(0.023980776887692) }, - { FRAC_CONST(0.019963420326171), FRAC_CONST(0.024042136944968) }, - { FRAC_CONST(0.019889566137877), FRAC_CONST(0.024103270708495) }, - { FRAC_CONST(0.019815524741412), FRAC_CONST(0.024164177602859) }, - { FRAC_CONST(0.019741296833681), FRAC_CONST(0.024224857054779) }, - { FRAC_CONST(0.019666883113346), FRAC_CONST(0.024285308493120) }, - { FRAC_CONST(0.019592284280817), FRAC_CONST(0.024345531348888) }, - { FRAC_CONST(0.019517501038246), FRAC_CONST(0.024405525055242) }, - { FRAC_CONST(0.019442534089523), FRAC_CONST(0.024465289047500) }, - { FRAC_CONST(0.019367384140264), FRAC_CONST(0.024524822763141) }, - { FRAC_CONST(0.019292051897809), FRAC_CONST(0.024584125641809) }, - { FRAC_CONST(0.019216538071215), FRAC_CONST(0.024643197125323) }, - { FRAC_CONST(0.019140843371246), FRAC_CONST(0.024702036657681) }, - { FRAC_CONST(0.019064968510369), FRAC_CONST(0.024760643685063) }, - { FRAC_CONST(0.018988914202748), FRAC_CONST(0.024819017655836) }, - { FRAC_CONST(0.018912681164234), FRAC_CONST(0.024877158020562) }, - { FRAC_CONST(0.018836270112363), FRAC_CONST(0.024935064232003) }, - { FRAC_CONST(0.018759681766343), FRAC_CONST(0.024992735745123) }, - { FRAC_CONST(0.018682916847054), FRAC_CONST(0.025050172017095) }, - { FRAC_CONST(0.018605976077037), FRAC_CONST(0.025107372507308) }, - { FRAC_CONST(0.018528860180486), FRAC_CONST(0.025164336677369) }, - { FRAC_CONST(0.018451569883247), FRAC_CONST(0.025221063991110) }, - { FRAC_CONST(0.018374105912805), FRAC_CONST(0.025277553914591) }, - { FRAC_CONST(0.018296468998280), FRAC_CONST(0.025333805916107) }, - { FRAC_CONST(0.018218659870421), FRAC_CONST(0.025389819466194) }, - { FRAC_CONST(0.018140679261596), FRAC_CONST(0.025445594037630) }, - { FRAC_CONST(0.018062527905790), FRAC_CONST(0.025501129105445) }, - { FRAC_CONST(0.017984206538592), FRAC_CONST(0.025556424146920) }, - { FRAC_CONST(0.017905715897192), FRAC_CONST(0.025611478641598) }, - { FRAC_CONST(0.017827056720375), FRAC_CONST(0.025666292071285) }, - { FRAC_CONST(0.017748229748511), FRAC_CONST(0.025720863920056) }, - { FRAC_CONST(0.017669235723550), FRAC_CONST(0.025775193674260) }, - { FRAC_CONST(0.017590075389012), FRAC_CONST(0.025829280822525) }, - { FRAC_CONST(0.017510749489986), FRAC_CONST(0.025883124855762) }, - { FRAC_CONST(0.017431258773116), FRAC_CONST(0.025936725267170) }, - { FRAC_CONST(0.017351603986600), FRAC_CONST(0.025990081552242) }, - { FRAC_CONST(0.017271785880180), FRAC_CONST(0.026043193208768) }, - { FRAC_CONST(0.017191805205132), FRAC_CONST(0.026096059736841) }, - { FRAC_CONST(0.017111662714267), FRAC_CONST(0.026148680638861) }, - { FRAC_CONST(0.017031359161915), FRAC_CONST(0.026201055419541) }, - { FRAC_CONST(0.016950895303924), FRAC_CONST(0.026253183585908) }, - { FRAC_CONST(0.016870271897651), FRAC_CONST(0.026305064647313) }, - { FRAC_CONST(0.016789489701954), FRAC_CONST(0.026356698115431) }, - { FRAC_CONST(0.016708549477186), FRAC_CONST(0.026408083504269) }, - { FRAC_CONST(0.016627451985187), FRAC_CONST(0.026459220330167) }, - { FRAC_CONST(0.016546197989277), FRAC_CONST(0.026510108111806) }, - { FRAC_CONST(0.016464788254250), FRAC_CONST(0.026560746370212) }, - { FRAC_CONST(0.016383223546365), FRAC_CONST(0.026611134628757) }, - { FRAC_CONST(0.016301504633341), FRAC_CONST(0.026661272413168) }, - { FRAC_CONST(0.016219632284346), FRAC_CONST(0.026711159251530) }, - { FRAC_CONST(0.016137607269996), FRAC_CONST(0.026760794674288) }, - { FRAC_CONST(0.016055430362340), FRAC_CONST(0.026810178214254) }, - { FRAC_CONST(0.015973102334858), FRAC_CONST(0.026859309406613) }, - { FRAC_CONST(0.015890623962454), FRAC_CONST(0.026908187788922) }, - { FRAC_CONST(0.015807996021446), FRAC_CONST(0.026956812901119) }, - { FRAC_CONST(0.015725219289558), FRAC_CONST(0.027005184285527) }, - { FRAC_CONST(0.015642294545918), FRAC_CONST(0.027053301486856) }, - { FRAC_CONST(0.015559222571044), FRAC_CONST(0.027101164052208) }, - { FRAC_CONST(0.015476004146842), FRAC_CONST(0.027148771531083) }, - { FRAC_CONST(0.015392640056594), FRAC_CONST(0.027196123475380) }, - { FRAC_CONST(0.015309131084956), FRAC_CONST(0.027243219439406) }, - { FRAC_CONST(0.015225478017946), FRAC_CONST(0.027290058979875) }, - { FRAC_CONST(0.015141681642938), FRAC_CONST(0.027336641655915) }, - { FRAC_CONST(0.015057742748656), FRAC_CONST(0.027382967029073) }, - { FRAC_CONST(0.014973662125164), FRAC_CONST(0.027429034663317) }, - { FRAC_CONST(0.014889440563862), FRAC_CONST(0.027474844125040) }, - { FRAC_CONST(0.014805078857474), FRAC_CONST(0.027520394983066) }, - { FRAC_CONST(0.014720577800046), FRAC_CONST(0.027565686808654) }, - { FRAC_CONST(0.014635938186934), FRAC_CONST(0.027610719175499) }, - { FRAC_CONST(0.014551160814797), FRAC_CONST(0.027655491659740) }, - { FRAC_CONST(0.014466246481592), FRAC_CONST(0.027700003839960) }, - { FRAC_CONST(0.014381195986567), FRAC_CONST(0.027744255297195) }, - { FRAC_CONST(0.014296010130247), FRAC_CONST(0.027788245614933) }, - { FRAC_CONST(0.014210689714436), FRAC_CONST(0.027831974379120) }, - { FRAC_CONST(0.014125235542201), FRAC_CONST(0.027875441178165) }, - { FRAC_CONST(0.014039648417870), FRAC_CONST(0.027918645602941) }, - { FRAC_CONST(0.013953929147020), FRAC_CONST(0.027961587246792) }, - { FRAC_CONST(0.013868078536476), FRAC_CONST(0.028004265705534) }, - { FRAC_CONST(0.013782097394294), FRAC_CONST(0.028046680577462) }, - { FRAC_CONST(0.013695986529763), FRAC_CONST(0.028088831463351) }, - { FRAC_CONST(0.013609746753390), FRAC_CONST(0.028130717966461) }, - { FRAC_CONST(0.013523378876898), FRAC_CONST(0.028172339692540) }, - { FRAC_CONST(0.013436883713214), FRAC_CONST(0.028213696249828) }, - { FRAC_CONST(0.013350262076462), FRAC_CONST(0.028254787249062) }, - { FRAC_CONST(0.013263514781960), FRAC_CONST(0.028295612303478) }, - { FRAC_CONST(0.013176642646205), FRAC_CONST(0.028336171028814) }, - { FRAC_CONST(0.013089646486871), FRAC_CONST(0.028376463043317) }, - { FRAC_CONST(0.013002527122799), FRAC_CONST(0.028416487967743) }, - { FRAC_CONST(0.012915285373990), FRAC_CONST(0.028456245425361) }, - { FRAC_CONST(0.012827922061597), FRAC_CONST(0.028495735041960) }, - { FRAC_CONST(0.012740438007915), FRAC_CONST(0.028534956445849) }, - { FRAC_CONST(0.012652834036379), FRAC_CONST(0.028573909267859) }, - { FRAC_CONST(0.012565110971550), FRAC_CONST(0.028612593141354) }, - { FRAC_CONST(0.012477269639111), FRAC_CONST(0.028651007702224) }, - { FRAC_CONST(0.012389310865858), FRAC_CONST(0.028689152588899) }, - { FRAC_CONST(0.012301235479693), FRAC_CONST(0.028727027442343) }, - { FRAC_CONST(0.012213044309615), FRAC_CONST(0.028764631906065) }, - { FRAC_CONST(0.012124738185712), FRAC_CONST(0.028801965626115) }, - { FRAC_CONST(0.012036317939156), FRAC_CONST(0.028839028251097) }, - { FRAC_CONST(0.011947784402191), FRAC_CONST(0.028875819432161) }, - { FRAC_CONST(0.011859138408130), FRAC_CONST(0.028912338823015) }, - { FRAC_CONST(0.011770380791341), FRAC_CONST(0.028948586079925) }, - { FRAC_CONST(0.011681512387245), FRAC_CONST(0.028984560861718) }, - { FRAC_CONST(0.011592534032306), FRAC_CONST(0.029020262829785) }, - { FRAC_CONST(0.011503446564022), FRAC_CONST(0.029055691648087) }, - { FRAC_CONST(0.011414250820918), FRAC_CONST(0.029090846983152) }, - { FRAC_CONST(0.011324947642537), FRAC_CONST(0.029125728504087) }, - { FRAC_CONST(0.011235537869437), FRAC_CONST(0.029160335882573) }, - { FRAC_CONST(0.011146022343175), FRAC_CONST(0.029194668792871) }, - { FRAC_CONST(0.011056401906305), FRAC_CONST(0.029228726911828) }, - { FRAC_CONST(0.010966677402371), FRAC_CONST(0.029262509918876) }, - { FRAC_CONST(0.010876849675891), FRAC_CONST(0.029296017496036) }, - { FRAC_CONST(0.010786919572361), FRAC_CONST(0.029329249327922) }, - { FRAC_CONST(0.010696887938235), FRAC_CONST(0.029362205101743) }, - { FRAC_CONST(0.010606755620926), FRAC_CONST(0.029394884507308) }, - { FRAC_CONST(0.010516523468793), FRAC_CONST(0.029427287237024) }, - { FRAC_CONST(0.010426192331137), FRAC_CONST(0.029459412985906) }, - { FRAC_CONST(0.010335763058187), FRAC_CONST(0.029491261451573) }, - { FRAC_CONST(0.010245236501099), FRAC_CONST(0.029522832334255) }, - { FRAC_CONST(0.010154613511943), FRAC_CONST(0.029554125336796) }, - { FRAC_CONST(0.010063894943698), FRAC_CONST(0.029585140164654) }, - { FRAC_CONST(0.009973081650240), FRAC_CONST(0.029615876525905) }, - { FRAC_CONST(0.009882174486340), FRAC_CONST(0.029646334131247) }, - { FRAC_CONST(0.009791174307650), FRAC_CONST(0.029676512694001) }, - { FRAC_CONST(0.009700081970699), FRAC_CONST(0.029706411930116) }, - { FRAC_CONST(0.009608898332881), FRAC_CONST(0.029736031558168) }, - { FRAC_CONST(0.009517624252453), FRAC_CONST(0.029765371299366) }, - { FRAC_CONST(0.009426260588521), FRAC_CONST(0.029794430877553) }, - { FRAC_CONST(0.009334808201034), FRAC_CONST(0.029823210019210) }, - { FRAC_CONST(0.009243267950778), FRAC_CONST(0.029851708453456) }, - { FRAC_CONST(0.009151640699363), FRAC_CONST(0.029879925912053) }, - { FRAC_CONST(0.009059927309220), FRAC_CONST(0.029907862129408) }, - { FRAC_CONST(0.008968128643591), FRAC_CONST(0.029935516842573) }, - { FRAC_CONST(0.008876245566520), FRAC_CONST(0.029962889791254) }, - { FRAC_CONST(0.008784278942845), FRAC_CONST(0.029989980717805) }, - { FRAC_CONST(0.008692229638191), FRAC_CONST(0.030016789367235) }, - { FRAC_CONST(0.008600098518961), FRAC_CONST(0.030043315487212) }, - { FRAC_CONST(0.008507886452329), FRAC_CONST(0.030069558828062) }, - { FRAC_CONST(0.008415594306230), FRAC_CONST(0.030095519142772) }, - { FRAC_CONST(0.008323222949351), FRAC_CONST(0.030121196186994) }, - { FRAC_CONST(0.008230773251129), FRAC_CONST(0.030146589719046) }, - { FRAC_CONST(0.008138246081733), FRAC_CONST(0.030171699499915) }, - { FRAC_CONST(0.008045642312067), FRAC_CONST(0.030196525293257) }, - { FRAC_CONST(0.007952962813750), FRAC_CONST(0.030221066865402) }, - { FRAC_CONST(0.007860208459119), FRAC_CONST(0.030245323985357) }, - { FRAC_CONST(0.007767380121212), FRAC_CONST(0.030269296424803) }, - { FRAC_CONST(0.007674478673766), FRAC_CONST(0.030292983958103) }, - { FRAC_CONST(0.007581504991203), FRAC_CONST(0.030316386362302) }, - { FRAC_CONST(0.007488459948628), FRAC_CONST(0.030339503417126) }, - { FRAC_CONST(0.007395344421816), FRAC_CONST(0.030362334904989) }, - { FRAC_CONST(0.007302159287206), FRAC_CONST(0.030384880610993) }, - { FRAC_CONST(0.007208905421891), FRAC_CONST(0.030407140322928) }, - { FRAC_CONST(0.007115583703613), FRAC_CONST(0.030429113831278) }, - { FRAC_CONST(0.007022195010752), FRAC_CONST(0.030450800929220) }, - { FRAC_CONST(0.006928740222316), FRAC_CONST(0.030472201412626) }, - { FRAC_CONST(0.006835220217939), FRAC_CONST(0.030493315080068) }, - { FRAC_CONST(0.006741635877866), FRAC_CONST(0.030514141732814) }, - { FRAC_CONST(0.006647988082948), FRAC_CONST(0.030534681174838) }, - { FRAC_CONST(0.006554277714635), FRAC_CONST(0.030554933212813) }, - { FRAC_CONST(0.006460505654964), FRAC_CONST(0.030574897656119) }, - { FRAC_CONST(0.006366672786553), FRAC_CONST(0.030594574316845) }, - { FRAC_CONST(0.006272779992593), FRAC_CONST(0.030613963009786) }, - { FRAC_CONST(0.006178828156839), FRAC_CONST(0.030633063552447) }, - { FRAC_CONST(0.006084818163601), FRAC_CONST(0.030651875765048) }, - { FRAC_CONST(0.005990750897737), FRAC_CONST(0.030670399470520) }, - { FRAC_CONST(0.005896627244644), FRAC_CONST(0.030688634494512) }, - { FRAC_CONST(0.005802448090250), FRAC_CONST(0.030706580665388) }, - { FRAC_CONST(0.005708214321004), FRAC_CONST(0.030724237814232) }, - { FRAC_CONST(0.005613926823871), FRAC_CONST(0.030741605774849) }, - { FRAC_CONST(0.005519586486321), FRAC_CONST(0.030758684383764) }, - { FRAC_CONST(0.005425194196321), FRAC_CONST(0.030775473480228) }, - { FRAC_CONST(0.005330750842327), FRAC_CONST(0.030791972906214) }, - { FRAC_CONST(0.005236257313276), FRAC_CONST(0.030808182506425) }, - { FRAC_CONST(0.005141714498576), FRAC_CONST(0.030824102128288) }, - { FRAC_CONST(0.005047123288102), FRAC_CONST(0.030839731621963) }, - { FRAC_CONST(0.004952484572181), FRAC_CONST(0.030855070840339) }, - { FRAC_CONST(0.004857799241589), FRAC_CONST(0.030870119639036) }, - { FRAC_CONST(0.004763068187541), FRAC_CONST(0.030884877876411) }, - { FRAC_CONST(0.004668292301681), FRAC_CONST(0.030899345413553) }, - { FRAC_CONST(0.004573472476075), FRAC_CONST(0.030913522114288) }, - { FRAC_CONST(0.004478609603205), FRAC_CONST(0.030927407845180) }, - { FRAC_CONST(0.004383704575956), FRAC_CONST(0.030941002475530) }, - { FRAC_CONST(0.004288758287610), FRAC_CONST(0.030954305877381) }, - { FRAC_CONST(0.004193771631837), FRAC_CONST(0.030967317925516) }, - { FRAC_CONST(0.004098745502689), FRAC_CONST(0.030980038497461) }, - { FRAC_CONST(0.004003680794587), FRAC_CONST(0.030992467473486) }, - { FRAC_CONST(0.003908578402316), FRAC_CONST(0.031004604736602) }, - { FRAC_CONST(0.003813439221017), FRAC_CONST(0.031016450172571) }, - { FRAC_CONST(0.003718264146176), FRAC_CONST(0.031028003669899) }, - { FRAC_CONST(0.003623054073616), FRAC_CONST(0.031039265119839) }, - { FRAC_CONST(0.003527809899492), FRAC_CONST(0.031050234416394) }, - { FRAC_CONST(0.003432532520278), FRAC_CONST(0.031060911456318) }, - { FRAC_CONST(0.003337222832760), FRAC_CONST(0.031071296139114) }, - { FRAC_CONST(0.003241881734029), FRAC_CONST(0.031081388367037) }, - { FRAC_CONST(0.003146510121474), FRAC_CONST(0.031091188045095) }, - { FRAC_CONST(0.003051108892766), FRAC_CONST(0.031100695081051) }, - { FRAC_CONST(0.002955678945860), FRAC_CONST(0.031109909385419) }, - { FRAC_CONST(0.002860221178978), FRAC_CONST(0.031118830871473) }, - { FRAC_CONST(0.002764736490604), FRAC_CONST(0.031127459455239) }, - { FRAC_CONST(0.002669225779478), FRAC_CONST(0.031135795055501) }, - { FRAC_CONST(0.002573689944583), FRAC_CONST(0.031143837593803) }, - { FRAC_CONST(0.002478129885137), FRAC_CONST(0.031151586994444) }, - { FRAC_CONST(0.002382546500589), FRAC_CONST(0.031159043184484) }, - { FRAC_CONST(0.002286940690606), FRAC_CONST(0.031166206093743) }, - { FRAC_CONST(0.002191313355067), FRAC_CONST(0.031173075654800) }, - { FRAC_CONST(0.002095665394051), FRAC_CONST(0.031179651802998) }, - { FRAC_CONST(0.001999997707835), FRAC_CONST(0.031185934476438) }, - { FRAC_CONST(0.001904311196878), FRAC_CONST(0.031191923615985) }, - { FRAC_CONST(0.001808606761820), FRAC_CONST(0.031197619165268) }, - { FRAC_CONST(0.001712885303465), FRAC_CONST(0.031203021070678) }, - { FRAC_CONST(0.001617147722782), FRAC_CONST(0.031208129281370) }, - { FRAC_CONST(0.001521394920889), FRAC_CONST(0.031212943749264) }, - { FRAC_CONST(0.001425627799047), FRAC_CONST(0.031217464429043) }, - { FRAC_CONST(0.001329847258653), FRAC_CONST(0.031221691278159) }, - { FRAC_CONST(0.001234054201231), FRAC_CONST(0.031225624256825) }, - { FRAC_CONST(0.001138249528420), FRAC_CONST(0.031229263328024) }, - { FRAC_CONST(0.001042434141971), FRAC_CONST(0.031232608457502) }, - { FRAC_CONST(0.000946608943736), FRAC_CONST(0.031235659613775) }, - { FRAC_CONST(0.000850774835656), FRAC_CONST(0.031238416768124) }, - { FRAC_CONST(0.000754932719759), FRAC_CONST(0.031240879894597) }, - { FRAC_CONST(0.000659083498149), FRAC_CONST(0.031243048970010) }, - { FRAC_CONST(0.000563228072993), FRAC_CONST(0.031244923973948) }, - { FRAC_CONST(0.000467367346520), FRAC_CONST(0.031246504888762) }, - { FRAC_CONST(0.000371502221008), FRAC_CONST(0.031247791699571) }, - { FRAC_CONST(0.000275633598775), FRAC_CONST(0.031248784394264) }, - { FRAC_CONST(0.000179762382174), FRAC_CONST(0.031249482963498) }, - { FRAC_CONST(0.000083889473581), FRAC_CONST(0.031249887400697) } -}; - -/* 64 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_256[] = -{ - { FRAC_CONST(0.088387931675923), FRAC_CONST(0.000271171628935) }, - { FRAC_CONST(0.088354655998507), FRAC_CONST(0.002440238387037) }, - { FRAC_CONST(0.088268158780110), FRAC_CONST(0.004607835236780) }, - { FRAC_CONST(0.088128492123423), FRAC_CONST(0.006772656498875) }, - { FRAC_CONST(0.087935740158418), FRAC_CONST(0.008933398165942) }, - { FRAC_CONST(0.087690018991670), FRAC_CONST(0.011088758687994) }, - { FRAC_CONST(0.087391476636423), FRAC_CONST(0.013237439756448) }, - { FRAC_CONST(0.087040292923427), FRAC_CONST(0.015378147086172) }, - { FRAC_CONST(0.086636679392621), FRAC_CONST(0.017509591195118) }, - { FRAC_CONST(0.086180879165703), FRAC_CONST(0.019630488181053) }, - { FRAC_CONST(0.085673166799686), FRAC_CONST(0.021739560494940) }, - { FRAC_CONST(0.085113848121515), FRAC_CONST(0.023835537710479) }, - { FRAC_CONST(0.084503260043847), FRAC_CONST(0.025917157289369) }, - { FRAC_CONST(0.083841770362110), FRAC_CONST(0.027983165341813) }, - { FRAC_CONST(0.083129777532952), FRAC_CONST(0.030032317381813) }, - { FRAC_CONST(0.082367710434230), FRAC_CONST(0.032063379076803) }, - { FRAC_CONST(0.081556028106671), FRAC_CONST(0.034075126991164) }, - { FRAC_CONST(0.080695219477356), FRAC_CONST(0.036066349323177) }, - { FRAC_CONST(0.079785803065216), FRAC_CONST(0.038035846634965) }, - { FRAC_CONST(0.078828326668693), FRAC_CONST(0.039982432574992) }, - { FRAC_CONST(0.077823367035766), FRAC_CONST(0.041904934592675) }, - { FRAC_CONST(0.076771529516540), FRAC_CONST(0.043802194644686) }, - { FRAC_CONST(0.075673447698606), FRAC_CONST(0.045673069892513) }, - { FRAC_CONST(0.074529783025390), FRAC_CONST(0.047516433390863) }, - { FRAC_CONST(0.073341224397728), FRAC_CONST(0.049331174766491) }, - { FRAC_CONST(0.072108487758894), FRAC_CONST(0.051116200887052) }, - { FRAC_CONST(0.070832315663343), FRAC_CONST(0.052870436519557) }, - { FRAC_CONST(0.069513476829429), FRAC_CONST(0.054592824978055) }, - { FRAC_CONST(0.068152765676348), FRAC_CONST(0.056282328760143) }, - { FRAC_CONST(0.066751001845620), FRAC_CONST(0.057937930171918) }, - { FRAC_CONST(0.065309029707361), FRAC_CONST(0.059558631940996) }, - { FRAC_CONST(0.063827717851668), FRAC_CONST(0.061143457817234) }, - { FRAC_CONST(0.062307958565413), FRAC_CONST(0.062691453160784) }, - { FRAC_CONST(0.060750667294763), FRAC_CONST(0.064201685517134) }, - { FRAC_CONST(0.059156782093749), FRAC_CONST(0.065673245178784) }, - { FRAC_CONST(0.057527263059216), FRAC_CONST(0.067105245733220) }, - { FRAC_CONST(0.055863091752499), FRAC_CONST(0.068496824596852) }, - { FRAC_CONST(0.054165270608165), FRAC_CONST(0.069847143534609) }, - { FRAC_CONST(0.052434822330188), FRAC_CONST(0.071155389164853) }, - { FRAC_CONST(0.050672789275903), FRAC_CONST(0.072420773449336) }, - { FRAC_CONST(0.048880232828135), FRAC_CONST(0.073642534167879) }, - { FRAC_CONST(0.047058232755862), FRAC_CONST(0.074819935377512) }, - { FRAC_CONST(0.045207886563797), FRAC_CONST(0.075952267855771) }, - { FRAC_CONST(0.043330308831298), FRAC_CONST(0.077038849527912) }, - { FRAC_CONST(0.041426630540984), FRAC_CONST(0.078079025877766) }, - { FRAC_CONST(0.039497998397473), FRAC_CONST(0.079072170341994) }, - { FRAC_CONST(0.037545574136653), FRAC_CONST(0.080017684687506) }, - { FRAC_CONST(0.035570533825892), FRAC_CONST(0.080914999371817) }, - { FRAC_CONST(0.033574067155622), FRAC_CONST(0.081763573886112) }, - { FRAC_CONST(0.031557376722714), FRAC_CONST(0.082562897080836) }, - { FRAC_CONST(0.029521677306074), FRAC_CONST(0.083312487473584) }, - { FRAC_CONST(0.027468195134911), FRAC_CONST(0.084011893539132) }, - { FRAC_CONST(0.025398167150101), FRAC_CONST(0.084660693981419) }, - { FRAC_CONST(0.023312840259098), FRAC_CONST(0.085258497987320) }, - { FRAC_CONST(0.021213470584847), FRAC_CONST(0.085804945462053) }, - { FRAC_CONST(0.019101322709138), FRAC_CONST(0.086299707246093) }, - { FRAC_CONST(0.016977668910873), FRAC_CONST(0.086742485313442) }, - { FRAC_CONST(0.014843788399692), FRAC_CONST(0.087133012951149) }, - { FRAC_CONST(0.012700966545425), FRAC_CONST(0.087471054919968) }, - { FRAC_CONST(0.010550494103830), FRAC_CONST(0.087756407596056) }, - { FRAC_CONST(0.008393666439096), FRAC_CONST(0.087988899093631) }, - { FRAC_CONST(0.006231782743558), FRAC_CONST(0.088168389368510) }, - { FRAC_CONST(0.004066145255116), FRAC_CONST(0.088294770302461) }, - { FRAC_CONST(0.001898058472816), FRAC_CONST(0.088367965768336) } -}; - -#ifdef LD_DEC -/* 128 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_1024[] = -{ - { FRAC_CONST(0.044194160825012), FRAC_CONST(0.000033896503468) }, - { FRAC_CONST(0.044193120897389), FRAC_CONST(0.000305066138364) }, - { FRAC_CONST(0.044190417123742), FRAC_CONST(0.000576224287693) }, - { FRAC_CONST(0.044186049605866), FRAC_CONST(0.000847360742503) }, - { FRAC_CONST(0.044180018508197), FRAC_CONST(0.001118465294660) }, - { FRAC_CONST(0.044172324057802), FRAC_CONST(0.001389527737231) }, - { FRAC_CONST(0.044162966544372), FRAC_CONST(0.001660537864867) }, - { FRAC_CONST(0.044151946320213), FRAC_CONST(0.001931485474192) }, - { FRAC_CONST(0.044139263800230), FRAC_CONST(0.002202360364180) }, - { FRAC_CONST(0.044124919461912), FRAC_CONST(0.002473152336546) }, - { FRAC_CONST(0.044108913845316), FRAC_CONST(0.002743851196123) }, - { FRAC_CONST(0.044091247553044), FRAC_CONST(0.003014446751254) }, - { FRAC_CONST(0.044071921250223), FRAC_CONST(0.003284928814169) }, - { FRAC_CONST(0.044050935664476), FRAC_CONST(0.003555287201370) }, - { FRAC_CONST(0.044028291585898), FRAC_CONST(0.003825511734018) }, - { FRAC_CONST(0.044003989867028), FRAC_CONST(0.004095592238311) }, - { FRAC_CONST(0.043978031422810), FRAC_CONST(0.004365518545871) }, - { FRAC_CONST(0.043950417230565), FRAC_CONST(0.004635280494126) }, - { FRAC_CONST(0.043921148329953), FRAC_CONST(0.004904867926689) }, - { FRAC_CONST(0.043890225822930), FRAC_CONST(0.005174270693748) }, - { FRAC_CONST(0.043857650873712), FRAC_CONST(0.005443478652439) }, - { FRAC_CONST(0.043823424708727), FRAC_CONST(0.005712481667236) }, - { FRAC_CONST(0.043787548616571), FRAC_CONST(0.005981269610326) }, - { FRAC_CONST(0.043750023947958), FRAC_CONST(0.006249832361997) }, - { FRAC_CONST(0.043710852115672), FRAC_CONST(0.006518159811011) }, - { FRAC_CONST(0.043670034594508), FRAC_CONST(0.006786241854993) }, - { FRAC_CONST(0.043627572921225), FRAC_CONST(0.007054068400804) }, - { FRAC_CONST(0.043583468694479), FRAC_CONST(0.007321629364927) }, - { FRAC_CONST(0.043537723574771), FRAC_CONST(0.007588914673843) }, - { FRAC_CONST(0.043490339284377), FRAC_CONST(0.007855914264410) }, - { FRAC_CONST(0.043441317607290), FRAC_CONST(0.008122618084246) }, - { FRAC_CONST(0.043390660389149), FRAC_CONST(0.008389016092101) }, - { FRAC_CONST(0.043338369537168), FRAC_CONST(0.008655098258243) }, - { FRAC_CONST(0.043284447020070), FRAC_CONST(0.008920854564826) }, - { FRAC_CONST(0.043228894868005), FRAC_CONST(0.009186275006278) }, - { FRAC_CONST(0.043171715172482), FRAC_CONST(0.009451349589667) }, - { FRAC_CONST(0.043112910086283), FRAC_CONST(0.009716068335087) }, - { FRAC_CONST(0.043052481823387), FRAC_CONST(0.009980421276025) }, - { FRAC_CONST(0.042990432658884), FRAC_CONST(0.010244398459743) }, - { FRAC_CONST(0.042926764928889), FRAC_CONST(0.010507989947649) }, - { FRAC_CONST(0.042861481030457), FRAC_CONST(0.010771185815673) }, - { FRAC_CONST(0.042794583421490), FRAC_CONST(0.011033976154639) }, - { FRAC_CONST(0.042726074620644), FRAC_CONST(0.011296351070639) }, - { FRAC_CONST(0.042655957207238), FRAC_CONST(0.011558300685406) }, - { FRAC_CONST(0.042584233821153), FRAC_CONST(0.011819815136685) }, - { FRAC_CONST(0.042510907162732), FRAC_CONST(0.012080884578604) }, - { FRAC_CONST(0.042435979992684), FRAC_CONST(0.012341499182048) }, - { FRAC_CONST(0.042359455131975), FRAC_CONST(0.012601649135022) }, - { FRAC_CONST(0.042281335461721), FRAC_CONST(0.012861324643029) }, - { FRAC_CONST(0.042201623923085), FRAC_CONST(0.013120515929433) }, - { FRAC_CONST(0.042120323517160), FRAC_CONST(0.013379213235827) }, - { FRAC_CONST(0.042037437304862), FRAC_CONST(0.013637406822406) }, - { FRAC_CONST(0.041952968406809), FRAC_CONST(0.013895086968325) }, - { FRAC_CONST(0.041866920003207), FRAC_CONST(0.014152243972073) }, - { FRAC_CONST(0.041779295333730), FRAC_CONST(0.014408868151835) }, - { FRAC_CONST(0.041690097697398), FRAC_CONST(0.014664949845855) }, - { FRAC_CONST(0.041599330452450), FRAC_CONST(0.014920479412801) }, - { FRAC_CONST(0.041506997016224), FRAC_CONST(0.015175447232131) }, - { FRAC_CONST(0.041413100865019), FRAC_CONST(0.015429843704450) }, - { FRAC_CONST(0.041317645533974), FRAC_CONST(0.015683659251874) }, - { FRAC_CONST(0.041220634616927), FRAC_CONST(0.015936884318392) }, - { FRAC_CONST(0.041122071766285), FRAC_CONST(0.016189509370223) }, - { FRAC_CONST(0.041021960692883), FRAC_CONST(0.016441524896177) }, - { FRAC_CONST(0.040920305165846), FRAC_CONST(0.016692921408010) }, - { FRAC_CONST(0.040817109012449), FRAC_CONST(0.016943689440788) }, - { FRAC_CONST(0.040712376117967), FRAC_CONST(0.017193819553235) }, - { FRAC_CONST(0.040606110425535), FRAC_CONST(0.017443302328094) }, - { FRAC_CONST(0.040498315935996), FRAC_CONST(0.017692128372479) }, - { FRAC_CONST(0.040388996707752), FRAC_CONST(0.017940288318230) }, - { FRAC_CONST(0.040278156856609), FRAC_CONST(0.018187772822267) }, - { FRAC_CONST(0.040165800555627), FRAC_CONST(0.018434572566936) }, - { FRAC_CONST(0.040051932034955), FRAC_CONST(0.018680678260367) }, - { FRAC_CONST(0.039936555581679), FRAC_CONST(0.018926080636820) }, - { FRAC_CONST(0.039819675539659), FRAC_CONST(0.019170770457035) }, - { FRAC_CONST(0.039701296309360), FRAC_CONST(0.019414738508577) }, - { FRAC_CONST(0.039581422347694), FRAC_CONST(0.019657975606187) }, - { FRAC_CONST(0.039460058167849), FRAC_CONST(0.019900472592126) }, - { FRAC_CONST(0.039337208339116), FRAC_CONST(0.020142220336521) }, - { FRAC_CONST(0.039212877486723), FRAC_CONST(0.020383209737704) }, - { FRAC_CONST(0.039087070291656), FRAC_CONST(0.020623431722561) }, - { FRAC_CONST(0.038959791490485), FRAC_CONST(0.020862877246870) }, - { FRAC_CONST(0.038831045875184), FRAC_CONST(0.021101537295642) }, - { FRAC_CONST(0.038700838292953), FRAC_CONST(0.021339402883462) }, - { FRAC_CONST(0.038569173646034), FRAC_CONST(0.021576465054824) }, - { FRAC_CONST(0.038436056891527), FRAC_CONST(0.021812714884472) }, - { FRAC_CONST(0.038301493041202), FRAC_CONST(0.022048143477734) }, - { FRAC_CONST(0.038165487161312), FRAC_CONST(0.022282741970855) }, - { FRAC_CONST(0.038028044372402), FRAC_CONST(0.022516501531335) }, - { FRAC_CONST(0.037889169849115), FRAC_CONST(0.022749413358259) }, - { FRAC_CONST(0.037748868819998), FRAC_CONST(0.022981468682628) }, - { FRAC_CONST(0.037607146567305), FRAC_CONST(0.023212658767690) }, - { FRAC_CONST(0.037464008426800), FRAC_CONST(0.023442974909269) }, - { FRAC_CONST(0.037319459787553), FRAC_CONST(0.023672408436094) }, - { FRAC_CONST(0.037173506091737), FRAC_CONST(0.023900950710120) }, - { FRAC_CONST(0.037026152834428), FRAC_CONST(0.024128593126861) }, - { FRAC_CONST(0.036877405563392), FRAC_CONST(0.024355327115708) }, - { FRAC_CONST(0.036727269878879), FRAC_CONST(0.024581144140255) }, - { FRAC_CONST(0.036575751433414), FRAC_CONST(0.024806035698618) }, - { FRAC_CONST(0.036422855931580), FRAC_CONST(0.025029993323758) }, - { FRAC_CONST(0.036268589129807), FRAC_CONST(0.025253008583796) }, - { FRAC_CONST(0.036112956836151), FRAC_CONST(0.025475073082334) }, - { FRAC_CONST(0.035955964910083), FRAC_CONST(0.025696178458769) }, - { FRAC_CONST(0.035797619262257), FRAC_CONST(0.025916316388609) }, - { FRAC_CONST(0.035637925854300), FRAC_CONST(0.026135478583784) }, - { FRAC_CONST(0.035476890698576), FRAC_CONST(0.026353656792963) }, - { FRAC_CONST(0.035314519857970), FRAC_CONST(0.026570842801858) }, - { FRAC_CONST(0.035150819445650), FRAC_CONST(0.026787028433540) }, - { FRAC_CONST(0.034985795624846), FRAC_CONST(0.027002205548742) }, - { FRAC_CONST(0.034819454608610), FRAC_CONST(0.027216366046166) }, - { FRAC_CONST(0.034651802659589), FRAC_CONST(0.027429501862792) }, - { FRAC_CONST(0.034482846089783), FRAC_CONST(0.027641604974175) }, - { FRAC_CONST(0.034312591260311), FRAC_CONST(0.027852667394755) }, - { FRAC_CONST(0.034141044581172), FRAC_CONST(0.028062681178149) }, - { FRAC_CONST(0.033968212511001), FRAC_CONST(0.028271638417458) }, - { FRAC_CONST(0.033794101556828), FRAC_CONST(0.028479531245560) }, - { FRAC_CONST(0.033618718273831), FRAC_CONST(0.028686351835407) }, - { FRAC_CONST(0.033442069265093), FRAC_CONST(0.028892092400321) }, - { FRAC_CONST(0.033264161181349), FRAC_CONST(0.029096745194286) }, - { FRAC_CONST(0.033085000720737), FRAC_CONST(0.029300302512241) }, - { FRAC_CONST(0.032904594628548), FRAC_CONST(0.029502756690366) }, - { FRAC_CONST(0.032722949696969), FRAC_CONST(0.029704100106376) }, - { FRAC_CONST(0.032540072764829), FRAC_CONST(0.029904325179807) }, - { FRAC_CONST(0.032355970717341), FRAC_CONST(0.030103424372297) }, - { FRAC_CONST(0.032170650485843), FRAC_CONST(0.030301390187873) }, - { FRAC_CONST(0.031984119047537), FRAC_CONST(0.030498215173235) }, - { FRAC_CONST(0.031796383425227), FRAC_CONST(0.030693891918034) }, - { FRAC_CONST(0.031607450687052), FRAC_CONST(0.030888413055150) }, - { FRAC_CONST(0.031417327946223), FRAC_CONST(0.031081771260973) }, - { FRAC_CONST(0.031226022360754), FRAC_CONST(0.031273959255676) }, - { FRAC_CONST(0.031033541133193), FRAC_CONST(0.031464969803488) }, - { FRAC_CONST(0.030839891510348), FRAC_CONST(0.031654795712972) }, - { FRAC_CONST(0.030645080783018), FRAC_CONST(0.031843429837288) }, - { FRAC_CONST(0.030449116285718), FRAC_CONST(0.032030865074469) }, - { FRAC_CONST(0.030252005396399), FRAC_CONST(0.032217094367684) }, - { FRAC_CONST(0.030053755536176), FRAC_CONST(0.032402110705505) }, - { FRAC_CONST(0.029854374169043), FRAC_CONST(0.032585907122172) }, - { FRAC_CONST(0.029653868801596), FRAC_CONST(0.032768476697853) }, - { FRAC_CONST(0.029452246982750), FRAC_CONST(0.032949812558907) }, - { FRAC_CONST(0.029249516303451), FRAC_CONST(0.033129907878142) }, - { FRAC_CONST(0.029045684396395), FRAC_CONST(0.033308755875070) }, - { FRAC_CONST(0.028840758935738), FRAC_CONST(0.033486349816166) }, - { FRAC_CONST(0.028634747636808), FRAC_CONST(0.033662683015118) }, - { FRAC_CONST(0.028427658255815), FRAC_CONST(0.033837748833080) }, - { FRAC_CONST(0.028219498589555), FRAC_CONST(0.034011540678924) }, - { FRAC_CONST(0.028010276475123), FRAC_CONST(0.034184052009485) }, - { FRAC_CONST(0.027799999789613), FRAC_CONST(0.034355276329809) }, - { FRAC_CONST(0.027588676449824), FRAC_CONST(0.034525207193396) }, - { FRAC_CONST(0.027376314411959), FRAC_CONST(0.034693838202447) }, - { FRAC_CONST(0.027162921671330), FRAC_CONST(0.034861163008098) }, - { FRAC_CONST(0.026948506262053), FRAC_CONST(0.035027175310665) }, - { FRAC_CONST(0.026733076256746), FRAC_CONST(0.035191868859880) }, - { FRAC_CONST(0.026516639766228), FRAC_CONST(0.035355237455122) }, - { FRAC_CONST(0.026299204939210), FRAC_CONST(0.035517274945657) }, - { FRAC_CONST(0.026080779961991), FRAC_CONST(0.035677975230865) }, - { FRAC_CONST(0.025861373058146), FRAC_CONST(0.035837332260471) }, - { FRAC_CONST(0.025640992488223), FRAC_CONST(0.035995340034772) }, - { FRAC_CONST(0.025419646549425), FRAC_CONST(0.036151992604866) }, - { FRAC_CONST(0.025197343575302), FRAC_CONST(0.036307284072871) }, - { FRAC_CONST(0.024974091935435), FRAC_CONST(0.036461208592152) }, - { FRAC_CONST(0.024749900035122), FRAC_CONST(0.036613760367538) }, - { FRAC_CONST(0.024524776315061), FRAC_CONST(0.036764933655540) }, - { FRAC_CONST(0.024298729251033), FRAC_CONST(0.036914722764569) }, - { FRAC_CONST(0.024071767353583), FRAC_CONST(0.037063122055150) }, - { FRAC_CONST(0.023843899167697), FRAC_CONST(0.037210125940135) }, - { FRAC_CONST(0.023615133272485), FRAC_CONST(0.037355728884908) }, - { FRAC_CONST(0.023385478280852), FRAC_CONST(0.037499925407603) }, - { FRAC_CONST(0.023154942839179), FRAC_CONST(0.037642710079302) }, - { FRAC_CONST(0.022923535626995), FRAC_CONST(0.037784077524241) }, - { FRAC_CONST(0.022691265356652), FRAC_CONST(0.037924022420018) }, - { FRAC_CONST(0.022458140772993), FRAC_CONST(0.038062539497785) }, - { FRAC_CONST(0.022224170653027), FRAC_CONST(0.038199623542453) }, - { FRAC_CONST(0.021989363805598), FRAC_CONST(0.038335269392885) }, - { FRAC_CONST(0.021753729071049), FRAC_CONST(0.038469471942092) }, - { FRAC_CONST(0.021517275320897), FRAC_CONST(0.038602226137423) }, - { FRAC_CONST(0.021280011457490), FRAC_CONST(0.038733526980758) }, - { FRAC_CONST(0.021041946413679), FRAC_CONST(0.038863369528695) }, - { FRAC_CONST(0.020803089152479), FRAC_CONST(0.038991748892734) }, - { FRAC_CONST(0.020563448666730), FRAC_CONST(0.039118660239466) }, - { FRAC_CONST(0.020323033978761), FRAC_CONST(0.039244098790750) }, - { FRAC_CONST(0.020081854140050), FRAC_CONST(0.039368059823895) }, - { FRAC_CONST(0.019839918230880), FRAC_CONST(0.039490538671839) }, - { FRAC_CONST(0.019597235360003), FRAC_CONST(0.039611530723322) }, - { FRAC_CONST(0.019353814664291), FRAC_CONST(0.039731031423061) }, - { FRAC_CONST(0.019109665308395), FRAC_CONST(0.039849036271924) }, - { FRAC_CONST(0.018864796484402), FRAC_CONST(0.039965540827094) }, - { FRAC_CONST(0.018619217411483), FRAC_CONST(0.040080540702240) }, - { FRAC_CONST(0.018372937335552), FRAC_CONST(0.040194031567683) }, - { FRAC_CONST(0.018125965528915), FRAC_CONST(0.040306009150554) }, - { FRAC_CONST(0.017878311289921), FRAC_CONST(0.040416469234963) }, - { FRAC_CONST(0.017629983942612), FRAC_CONST(0.040525407662148) }, - { FRAC_CONST(0.017380992836371), FRAC_CONST(0.040632820330639) }, - { FRAC_CONST(0.017131347345575), FRAC_CONST(0.040738703196411) }, - { FRAC_CONST(0.016881056869233), FRAC_CONST(0.040843052273033) }, - { FRAC_CONST(0.016630130830641), FRAC_CONST(0.040945863631822) }, - { FRAC_CONST(0.016378578677023), FRAC_CONST(0.041047133401988) }, - { FRAC_CONST(0.016126409879175), FRAC_CONST(0.041146857770781) }, - { FRAC_CONST(0.015873633931110), FRAC_CONST(0.041245032983635) }, - { FRAC_CONST(0.015620260349699), FRAC_CONST(0.041341655344309) }, - { FRAC_CONST(0.015366298674314), FRAC_CONST(0.041436721215026) }, - { FRAC_CONST(0.015111758466470), FRAC_CONST(0.041530227016609) }, - { FRAC_CONST(0.014856649309460), FRAC_CONST(0.041622169228618) }, - { FRAC_CONST(0.014600980808001), FRAC_CONST(0.041712544389481) }, - { FRAC_CONST(0.014344762587867), FRAC_CONST(0.041801349096623) }, - { FRAC_CONST(0.014088004295529), FRAC_CONST(0.041888580006598) }, - { FRAC_CONST(0.013830715597792), FRAC_CONST(0.041974233835211) }, - { FRAC_CONST(0.013572906181430), FRAC_CONST(0.042058307357645) }, - { FRAC_CONST(0.013314585752822), FRAC_CONST(0.042140797408577) }, - { FRAC_CONST(0.013055764037585), FRAC_CONST(0.042221700882306) }, - { FRAC_CONST(0.012796450780212), FRAC_CONST(0.042301014732860) }, - { FRAC_CONST(0.012536655743699), FRAC_CONST(0.042378735974118) }, - { FRAC_CONST(0.012276388709183), FRAC_CONST(0.042454861679919) }, - { FRAC_CONST(0.012015659475571), FRAC_CONST(0.042529388984173) }, - { FRAC_CONST(0.011754477859172), FRAC_CONST(0.042602315080970) }, - { FRAC_CONST(0.011492853693324), FRAC_CONST(0.042673637224683) }, - { FRAC_CONST(0.011230796828031), FRAC_CONST(0.042743352730074) }, - { FRAC_CONST(0.010968317129584), FRAC_CONST(0.042811458972393) }, - { FRAC_CONST(0.010705424480197), FRAC_CONST(0.042877953387479) }, - { FRAC_CONST(0.010442128777629), FRAC_CONST(0.042942833471854) }, - { FRAC_CONST(0.010178439934815), FRAC_CONST(0.043006096782821) }, - { FRAC_CONST(0.009914367879490), FRAC_CONST(0.043067740938551) }, - { FRAC_CONST(0.009649922553818), FRAC_CONST(0.043127763618177) }, - { FRAC_CONST(0.009385113914016), FRAC_CONST(0.043186162561878) }, - { FRAC_CONST(0.009119951929979), FRAC_CONST(0.043242935570968) }, - { FRAC_CONST(0.008854446584907), FRAC_CONST(0.043298080507974) }, - { FRAC_CONST(0.008588607874926), FRAC_CONST(0.043351595296722) }, - { FRAC_CONST(0.008322445808712), FRAC_CONST(0.043403477922409) }, - { FRAC_CONST(0.008055970407118), FRAC_CONST(0.043453726431684) }, - { FRAC_CONST(0.007789191702791), FRAC_CONST(0.043502338932719) }, - { FRAC_CONST(0.007522119739798), FRAC_CONST(0.043549313595281) }, - { FRAC_CONST(0.007254764573250), FRAC_CONST(0.043594648650800) }, - { FRAC_CONST(0.006987136268915), FRAC_CONST(0.043638342392438) }, - { FRAC_CONST(0.006719244902849), FRAC_CONST(0.043680393175148) }, - { FRAC_CONST(0.006451100561010), FRAC_CONST(0.043720799415744) }, - { FRAC_CONST(0.006182713338881), FRAC_CONST(0.043759559592953) }, - { FRAC_CONST(0.005914093341090), FRAC_CONST(0.043796672247476) }, - { FRAC_CONST(0.005645250681027), FRAC_CONST(0.043832135982044) }, - { FRAC_CONST(0.005376195480466), FRAC_CONST(0.043865949461465) }, - { FRAC_CONST(0.005106937869184), FRAC_CONST(0.043898111412683) }, - { FRAC_CONST(0.004837487984578), FRAC_CONST(0.043928620624817) }, - { FRAC_CONST(0.004567855971284), FRAC_CONST(0.043957475949213) }, - { FRAC_CONST(0.004298051980793), FRAC_CONST(0.043984676299484) }, - { FRAC_CONST(0.004028086171076), FRAC_CONST(0.044010220651553) }, - { FRAC_CONST(0.003757968706190), FRAC_CONST(0.044034108043689) }, - { FRAC_CONST(0.003487709755907), FRAC_CONST(0.044056337576546) }, - { FRAC_CONST(0.003217319495322), FRAC_CONST(0.044076908413193) }, - { FRAC_CONST(0.002946808104477), FRAC_CONST(0.044095819779151) }, - { FRAC_CONST(0.002676185767973), FRAC_CONST(0.044113070962418) }, - { FRAC_CONST(0.002405462674586), FRAC_CONST(0.044128661313495) }, - { FRAC_CONST(0.002134649016890), FRAC_CONST(0.044142590245416) }, - { FRAC_CONST(0.001863754990865), FRAC_CONST(0.044154857233763) }, - { FRAC_CONST(0.001592790795518), FRAC_CONST(0.044165461816692) }, - { FRAC_CONST(0.001321766632497), FRAC_CONST(0.044174403594946) }, - { FRAC_CONST(0.001050692705710), FRAC_CONST(0.044181682231873) }, - { FRAC_CONST(0.000779579220936), FRAC_CONST(0.044187297453434) }, - { FRAC_CONST(0.000508436385446), FRAC_CONST(0.044191249048222) }, - { FRAC_CONST(0.000237274407613), FRAC_CONST(0.044193536867459) } -}; -#endif // LD_DEC - -#ifdef ALLOW_SMALL_FRAMELENGTH -/* 480 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_1920[] = -{ - { FRAC_CONST(0.032274858518097), FRAC_CONST(0.000013202404176) }, - { FRAC_CONST(0.032274642494505), FRAC_CONST(0.000118821372483) }, - { FRAC_CONST(0.032274080835421), FRAC_CONST(0.000224439068308) }, - { FRAC_CONST(0.032273173546860), FRAC_CONST(0.000330054360572) }, - { FRAC_CONST(0.032271920638538), FRAC_CONST(0.000435666118218) }, - { FRAC_CONST(0.032270322123873), FRAC_CONST(0.000541273210231) }, - { FRAC_CONST(0.032268378019984), FRAC_CONST(0.000646874505642) }, - { FRAC_CONST(0.032266088347691), FRAC_CONST(0.000752468873546) }, - { FRAC_CONST(0.032263453131514), FRAC_CONST(0.000858055183114) }, - { FRAC_CONST(0.032260472399674), FRAC_CONST(0.000963632303600) }, - { FRAC_CONST(0.032257146184092), FRAC_CONST(0.001069199104358) }, - { FRAC_CONST(0.032253474520390), FRAC_CONST(0.001174754454853) }, - { FRAC_CONST(0.032249457447888), FRAC_CONST(0.001280297224671) }, - { FRAC_CONST(0.032245095009606), FRAC_CONST(0.001385826283535) }, - { FRAC_CONST(0.032240387252262), FRAC_CONST(0.001491340501313) }, - { FRAC_CONST(0.032235334226272), FRAC_CONST(0.001596838748031) }, - { FRAC_CONST(0.032229935985750), FRAC_CONST(0.001702319893890) }, - { FRAC_CONST(0.032224192588507), FRAC_CONST(0.001807782809271) }, - { FRAC_CONST(0.032218104096050), FRAC_CONST(0.001913226364749) }, - { FRAC_CONST(0.032211670573582), FRAC_CONST(0.002018649431111) }, - { FRAC_CONST(0.032204892090000), FRAC_CONST(0.002124050879359) }, - { FRAC_CONST(0.032197768717898), FRAC_CONST(0.002229429580728) }, - { FRAC_CONST(0.032190300533560), FRAC_CONST(0.002334784406698) }, - { FRAC_CONST(0.032182487616965), FRAC_CONST(0.002440114229003) }, - { FRAC_CONST(0.032174330051782), FRAC_CONST(0.002545417919644) }, - { FRAC_CONST(0.032165827925374), FRAC_CONST(0.002650694350905) }, - { FRAC_CONST(0.032156981328790), FRAC_CONST(0.002755942395358) }, - { FRAC_CONST(0.032147790356771), FRAC_CONST(0.002861160925883) }, - { FRAC_CONST(0.032138255107744), FRAC_CONST(0.002966348815672) }, - { FRAC_CONST(0.032128375683825), FRAC_CONST(0.003071504938250) }, - { FRAC_CONST(0.032118152190814), FRAC_CONST(0.003176628167476) }, - { FRAC_CONST(0.032107584738196), FRAC_CONST(0.003281717377568) }, - { FRAC_CONST(0.032096673439141), FRAC_CONST(0.003386771443102) }, - { FRAC_CONST(0.032085418410500), FRAC_CONST(0.003491789239036) }, - { FRAC_CONST(0.032073819772804), FRAC_CONST(0.003596769640711) }, - { FRAC_CONST(0.032061877650267), FRAC_CONST(0.003701711523874) }, - { FRAC_CONST(0.032049592170778), FRAC_CONST(0.003806613764680) }, - { FRAC_CONST(0.032036963465906), FRAC_CONST(0.003911475239711) }, - { FRAC_CONST(0.032023991670893), FRAC_CONST(0.004016294825985) }, - { FRAC_CONST(0.032010676924657), FRAC_CONST(0.004121071400967) }, - { FRAC_CONST(0.031997019369789), FRAC_CONST(0.004225803842586) }, - { FRAC_CONST(0.031983019152549), FRAC_CONST(0.004330491029241) }, - { FRAC_CONST(0.031968676422869), FRAC_CONST(0.004435131839816) }, - { FRAC_CONST(0.031953991334348), FRAC_CONST(0.004539725153692) }, - { FRAC_CONST(0.031938964044252), FRAC_CONST(0.004644269850758) }, - { FRAC_CONST(0.031923594713510), FRAC_CONST(0.004748764811426) }, - { FRAC_CONST(0.031907883506716), FRAC_CONST(0.004853208916638) }, - { FRAC_CONST(0.031891830592124), FRAC_CONST(0.004957601047881) }, - { FRAC_CONST(0.031875436141648), FRAC_CONST(0.005061940087200) }, - { FRAC_CONST(0.031858700330859), FRAC_CONST(0.005166224917208) }, - { FRAC_CONST(0.031841623338985), FRAC_CONST(0.005270454421097) }, - { FRAC_CONST(0.031824205348907), FRAC_CONST(0.005374627482653) }, - { FRAC_CONST(0.031806446547156), FRAC_CONST(0.005478742986267) }, - { FRAC_CONST(0.031788347123916), FRAC_CONST(0.005582799816945) }, - { FRAC_CONST(0.031769907273017), FRAC_CONST(0.005686796860323) }, - { FRAC_CONST(0.031751127191935), FRAC_CONST(0.005790733002674) }, - { FRAC_CONST(0.031732007081789), FRAC_CONST(0.005894607130928) }, - { FRAC_CONST(0.031712547147340), FRAC_CONST(0.005998418132675) }, - { FRAC_CONST(0.031692747596989), FRAC_CONST(0.006102164896182) }, - { FRAC_CONST(0.031672608642773), FRAC_CONST(0.006205846310406) }, - { FRAC_CONST(0.031652130500364), FRAC_CONST(0.006309461265002) }, - { FRAC_CONST(0.031631313389067), FRAC_CONST(0.006413008650337) }, - { FRAC_CONST(0.031610157531816), FRAC_CONST(0.006516487357501) }, - { FRAC_CONST(0.031588663155172), FRAC_CONST(0.006619896278321) }, - { FRAC_CONST(0.031566830489325), FRAC_CONST(0.006723234305370) }, - { FRAC_CONST(0.031544659768083), FRAC_CONST(0.006826500331981) }, - { FRAC_CONST(0.031522151228878), FRAC_CONST(0.006929693252258) }, - { FRAC_CONST(0.031499305112758), FRAC_CONST(0.007032811961088) }, - { FRAC_CONST(0.031476121664387), FRAC_CONST(0.007135855354151) }, - { FRAC_CONST(0.031452601132040), FRAC_CONST(0.007238822327937) }, - { FRAC_CONST(0.031428743767604), FRAC_CONST(0.007341711779751) }, - { FRAC_CONST(0.031404549826572), FRAC_CONST(0.007444522607730) }, - { FRAC_CONST(0.031380019568042), FRAC_CONST(0.007547253710853) }, - { FRAC_CONST(0.031355153254712), FRAC_CONST(0.007649903988952) }, - { FRAC_CONST(0.031329951152882), FRAC_CONST(0.007752472342725) }, - { FRAC_CONST(0.031304413532445), FRAC_CONST(0.007854957673748) }, - { FRAC_CONST(0.031278540666888), FRAC_CONST(0.007957358884484) }, - { FRAC_CONST(0.031252332833290), FRAC_CONST(0.008059674878300) }, - { FRAC_CONST(0.031225790312316), FRAC_CONST(0.008161904559473) }, - { FRAC_CONST(0.031198913388214), FRAC_CONST(0.008264046833205) }, - { FRAC_CONST(0.031171702348814), FRAC_CONST(0.008366100605636) }, - { FRAC_CONST(0.031144157485525), FRAC_CONST(0.008468064783849) }, - { FRAC_CONST(0.031116279093331), FRAC_CONST(0.008569938275893) }, - { FRAC_CONST(0.031088067470786), FRAC_CONST(0.008671719990782) }, - { FRAC_CONST(0.031059522920014), FRAC_CONST(0.008773408838517) }, - { FRAC_CONST(0.031030645746705), FRAC_CONST(0.008875003730092) }, - { FRAC_CONST(0.031001436260110), FRAC_CONST(0.008976503577507) }, - { FRAC_CONST(0.030971894773039), FRAC_CONST(0.009077907293780) }, - { FRAC_CONST(0.030942021601857), FRAC_CONST(0.009179213792959) }, - { FRAC_CONST(0.030911817066483), FRAC_CONST(0.009280421990133) }, - { FRAC_CONST(0.030881281490382), FRAC_CONST(0.009381530801444) }, - { FRAC_CONST(0.030850415200566), FRAC_CONST(0.009482539144097) }, - { FRAC_CONST(0.030819218527589), FRAC_CONST(0.009583445936373) }, - { FRAC_CONST(0.030787691805541), FRAC_CONST(0.009684250097643) }, - { FRAC_CONST(0.030755835372048), FRAC_CONST(0.009784950548375) }, - { FRAC_CONST(0.030723649568268), FRAC_CONST(0.009885546210147) }, - { FRAC_CONST(0.030691134738883), FRAC_CONST(0.009986036005661) }, - { FRAC_CONST(0.030658291232103), FRAC_CONST(0.010086418858753) }, - { FRAC_CONST(0.030625119399655), FRAC_CONST(0.010186693694402) }, - { FRAC_CONST(0.030591619596781), FRAC_CONST(0.010286859438745) }, - { FRAC_CONST(0.030557792182239), FRAC_CONST(0.010386915019088) }, - { FRAC_CONST(0.030523637518292), FRAC_CONST(0.010486859363916) }, - { FRAC_CONST(0.030489155970710), FRAC_CONST(0.010586691402906) }, - { FRAC_CONST(0.030454347908763), FRAC_CONST(0.010686410066936) }, - { FRAC_CONST(0.030419213705216), FRAC_CONST(0.010786014288099) }, - { FRAC_CONST(0.030383753736329), FRAC_CONST(0.010885502999714) }, - { FRAC_CONST(0.030347968381849), FRAC_CONST(0.010984875136338) }, - { FRAC_CONST(0.030311858025010), FRAC_CONST(0.011084129633775) }, - { FRAC_CONST(0.030275423052523), FRAC_CONST(0.011183265429088) }, - { FRAC_CONST(0.030238663854579), FRAC_CONST(0.011282281460612) }, - { FRAC_CONST(0.030201580824838), FRAC_CONST(0.011381176667967) }, - { FRAC_CONST(0.030164174360430), FRAC_CONST(0.011479949992062) }, - { FRAC_CONST(0.030126444861948), FRAC_CONST(0.011578600375117) }, - { FRAC_CONST(0.030088392733446), FRAC_CONST(0.011677126760663) }, - { FRAC_CONST(0.030050018382430), FRAC_CONST(0.011775528093563) }, - { FRAC_CONST(0.030011322219859), FRAC_CONST(0.011873803320018) }, - { FRAC_CONST(0.029972304660138), FRAC_CONST(0.011971951387578) }, - { FRAC_CONST(0.029932966121114), FRAC_CONST(0.012069971245157) }, - { FRAC_CONST(0.029893307024070), FRAC_CONST(0.012167861843041) }, - { FRAC_CONST(0.029853327793724), FRAC_CONST(0.012265622132901) }, - { FRAC_CONST(0.029813028858222), FRAC_CONST(0.012363251067801) }, - { FRAC_CONST(0.029772410649132), FRAC_CONST(0.012460747602215) }, - { FRAC_CONST(0.029731473601443), FRAC_CONST(0.012558110692033) }, - { FRAC_CONST(0.029690218153558), FRAC_CONST(0.012655339294575) }, - { FRAC_CONST(0.029648644747289), FRAC_CONST(0.012752432368600) }, - { FRAC_CONST(0.029606753827855), FRAC_CONST(0.012849388874320) }, - { FRAC_CONST(0.029564545843872), FRAC_CONST(0.012946207773407) }, - { FRAC_CONST(0.029522021247356), FRAC_CONST(0.013042888029011) }, - { FRAC_CONST(0.029479180493710), FRAC_CONST(0.013139428605762) }, - { FRAC_CONST(0.029436024041725), FRAC_CONST(0.013235828469789) }, - { FRAC_CONST(0.029392552353570), FRAC_CONST(0.013332086588727) }, - { FRAC_CONST(0.029348765894794), FRAC_CONST(0.013428201931728) }, - { FRAC_CONST(0.029304665134313), FRAC_CONST(0.013524173469475) }, - { FRAC_CONST(0.029260250544412), FRAC_CONST(0.013620000174189) }, - { FRAC_CONST(0.029215522600735), FRAC_CONST(0.013715681019643) }, - { FRAC_CONST(0.029170481782283), FRAC_CONST(0.013811214981173) }, - { FRAC_CONST(0.029125128571406), FRAC_CONST(0.013906601035686) }, - { FRAC_CONST(0.029079463453801), FRAC_CONST(0.014001838161674) }, - { FRAC_CONST(0.029033486918505), FRAC_CONST(0.014096925339225) }, - { FRAC_CONST(0.028987199457889), FRAC_CONST(0.014191861550031) }, - { FRAC_CONST(0.028940601567655), FRAC_CONST(0.014286645777401) }, - { FRAC_CONST(0.028893693746829), FRAC_CONST(0.014381277006273) }, - { FRAC_CONST(0.028846476497755), FRAC_CONST(0.014475754223221) }, - { FRAC_CONST(0.028798950326094), FRAC_CONST(0.014570076416472) }, - { FRAC_CONST(0.028751115740811), FRAC_CONST(0.014664242575910) }, - { FRAC_CONST(0.028702973254178), FRAC_CONST(0.014758251693091) }, - { FRAC_CONST(0.028654523381760), FRAC_CONST(0.014852102761253) }, - { FRAC_CONST(0.028605766642418), FRAC_CONST(0.014945794775326) }, - { FRAC_CONST(0.028556703558297), FRAC_CONST(0.015039326731945) }, - { FRAC_CONST(0.028507334654823), FRAC_CONST(0.015132697629457) }, - { FRAC_CONST(0.028457660460698), FRAC_CONST(0.015225906467935) }, - { FRAC_CONST(0.028407681507891), FRAC_CONST(0.015318952249187) }, - { FRAC_CONST(0.028357398331639), FRAC_CONST(0.015411833976768) }, - { FRAC_CONST(0.028306811470432), FRAC_CONST(0.015504550655988) }, - { FRAC_CONST(0.028255921466016), FRAC_CONST(0.015597101293927) }, - { FRAC_CONST(0.028204728863381), FRAC_CONST(0.015689484899442) }, - { FRAC_CONST(0.028153234210760), FRAC_CONST(0.015781700483179) }, - { FRAC_CONST(0.028101438059619), FRAC_CONST(0.015873747057582) }, - { FRAC_CONST(0.028049340964652), FRAC_CONST(0.015965623636907) }, - { FRAC_CONST(0.027996943483779), FRAC_CONST(0.016057329237229) }, - { FRAC_CONST(0.027944246178133), FRAC_CONST(0.016148862876456) }, - { FRAC_CONST(0.027891249612061), FRAC_CONST(0.016240223574335) }, - { FRAC_CONST(0.027837954353113), FRAC_CONST(0.016331410352467) }, - { FRAC_CONST(0.027784360972039), FRAC_CONST(0.016422422234315) }, - { FRAC_CONST(0.027730470042780), FRAC_CONST(0.016513258245214) }, - { FRAC_CONST(0.027676282142466), FRAC_CONST(0.016603917412384) }, - { FRAC_CONST(0.027621797851405), FRAC_CONST(0.016694398764938) }, - { FRAC_CONST(0.027567017753080), FRAC_CONST(0.016784701333894) }, - { FRAC_CONST(0.027511942434143), FRAC_CONST(0.016874824152183) }, - { FRAC_CONST(0.027456572484404), FRAC_CONST(0.016964766254662) }, - { FRAC_CONST(0.027400908496833), FRAC_CONST(0.017054526678124) }, - { FRAC_CONST(0.027344951067546), FRAC_CONST(0.017144104461307) }, - { FRAC_CONST(0.027288700795801), FRAC_CONST(0.017233498644904) }, - { FRAC_CONST(0.027232158283994), FRAC_CONST(0.017322708271577) }, - { FRAC_CONST(0.027175324137651), FRAC_CONST(0.017411732385960) }, - { FRAC_CONST(0.027118198965418), FRAC_CONST(0.017500570034678) }, - { FRAC_CONST(0.027060783379060), FRAC_CONST(0.017589220266351) }, - { FRAC_CONST(0.027003077993454), FRAC_CONST(0.017677682131607) }, - { FRAC_CONST(0.026945083426576), FRAC_CONST(0.017765954683088) }, - { FRAC_CONST(0.026886800299502), FRAC_CONST(0.017854036975468) }, - { FRAC_CONST(0.026828229236397), FRAC_CONST(0.017941928065456) }, - { FRAC_CONST(0.026769370864511), FRAC_CONST(0.018029627011808) }, - { FRAC_CONST(0.026710225814170), FRAC_CONST(0.018117132875340) }, - { FRAC_CONST(0.026650794718768), FRAC_CONST(0.018204444718934) }, - { FRAC_CONST(0.026591078214767), FRAC_CONST(0.018291561607551) }, - { FRAC_CONST(0.026531076941680), FRAC_CONST(0.018378482608238) }, - { FRAC_CONST(0.026470791542075), FRAC_CONST(0.018465206790142) }, - { FRAC_CONST(0.026410222661558), FRAC_CONST(0.018551733224515) }, - { FRAC_CONST(0.026349370948775), FRAC_CONST(0.018638060984730) }, - { FRAC_CONST(0.026288237055398), FRAC_CONST(0.018724189146286) }, - { FRAC_CONST(0.026226821636121), FRAC_CONST(0.018810116786819) }, - { FRAC_CONST(0.026165125348656), FRAC_CONST(0.018895842986112) }, - { FRAC_CONST(0.026103148853718), FRAC_CONST(0.018981366826109) }, - { FRAC_CONST(0.026040892815028), FRAC_CONST(0.019066687390916) }, - { FRAC_CONST(0.025978357899296), FRAC_CONST(0.019151803766819) }, - { FRAC_CONST(0.025915544776223), FRAC_CONST(0.019236715042290) }, - { FRAC_CONST(0.025852454118485), FRAC_CONST(0.019321420307998) }, - { FRAC_CONST(0.025789086601733), FRAC_CONST(0.019405918656817) }, - { FRAC_CONST(0.025725442904582), FRAC_CONST(0.019490209183837) }, - { FRAC_CONST(0.025661523708606), FRAC_CONST(0.019574290986376) }, - { FRAC_CONST(0.025597329698327), FRAC_CONST(0.019658163163984) }, - { FRAC_CONST(0.025532861561211), FRAC_CONST(0.019741824818458) }, - { FRAC_CONST(0.025468119987662), FRAC_CONST(0.019825275053848) }, - { FRAC_CONST(0.025403105671008), FRAC_CONST(0.019908512976470) }, - { FRAC_CONST(0.025337819307501), FRAC_CONST(0.019991537694913) }, - { FRAC_CONST(0.025272261596305), FRAC_CONST(0.020074348320047) }, - { FRAC_CONST(0.025206433239491), FRAC_CONST(0.020156943965039) }, - { FRAC_CONST(0.025140334942028), FRAC_CONST(0.020239323745355) }, - { FRAC_CONST(0.025073967411776), FRAC_CONST(0.020321486778774) }, - { FRAC_CONST(0.025007331359476), FRAC_CONST(0.020403432185395) }, - { FRAC_CONST(0.024940427498748), FRAC_CONST(0.020485159087650) }, - { FRAC_CONST(0.024873256546079), FRAC_CONST(0.020566666610309) }, - { FRAC_CONST(0.024805819220816), FRAC_CONST(0.020647953880491) }, - { FRAC_CONST(0.024738116245157), FRAC_CONST(0.020729020027676) }, - { FRAC_CONST(0.024670148344147), FRAC_CONST(0.020809864183709) }, - { FRAC_CONST(0.024601916245669), FRAC_CONST(0.020890485482816) }, - { FRAC_CONST(0.024533420680433), FRAC_CONST(0.020970883061607) }, - { FRAC_CONST(0.024464662381971), FRAC_CONST(0.021051056059087) }, - { FRAC_CONST(0.024395642086630), FRAC_CONST(0.021131003616670) }, - { FRAC_CONST(0.024326360533561), FRAC_CONST(0.021210724878181) }, - { FRAC_CONST(0.024256818464715), FRAC_CONST(0.021290218989868) }, - { FRAC_CONST(0.024187016624830), FRAC_CONST(0.021369485100415) }, - { FRAC_CONST(0.024116955761430), FRAC_CONST(0.021448522360944) }, - { FRAC_CONST(0.024046636624808), FRAC_CONST(0.021527329925030) }, - { FRAC_CONST(0.023976059968027), FRAC_CONST(0.021605906948708) }, - { FRAC_CONST(0.023905226546906), FRAC_CONST(0.021684252590480) }, - { FRAC_CONST(0.023834137120014), FRAC_CONST(0.021762366011328) }, - { FRAC_CONST(0.023762792448662), FRAC_CONST(0.021840246374720) }, - { FRAC_CONST(0.023691193296893), FRAC_CONST(0.021917892846620) }, - { FRAC_CONST(0.023619340431478), FRAC_CONST(0.021995304595495) }, - { FRAC_CONST(0.023547234621902), FRAC_CONST(0.022072480792330) }, - { FRAC_CONST(0.023474876640361), FRAC_CONST(0.022149420610628) }, - { FRAC_CONST(0.023402267261751), FRAC_CONST(0.022226123226426) }, - { FRAC_CONST(0.023329407263659), FRAC_CONST(0.022302587818300) }, - { FRAC_CONST(0.023256297426359), FRAC_CONST(0.022378813567377) }, - { FRAC_CONST(0.023182938532797), FRAC_CONST(0.022454799657339) }, - { FRAC_CONST(0.023109331368588), FRAC_CONST(0.022530545274437) }, - { FRAC_CONST(0.023035476722006), FRAC_CONST(0.022606049607496) }, - { FRAC_CONST(0.022961375383975), FRAC_CONST(0.022681311847926) }, - { FRAC_CONST(0.022887028148061), FRAC_CONST(0.022756331189727) }, - { FRAC_CONST(0.022812435810462), FRAC_CONST(0.022831106829504) }, - { FRAC_CONST(0.022737599170003), FRAC_CONST(0.022905637966469) }, - { FRAC_CONST(0.022662519028125), FRAC_CONST(0.022979923802453) }, - { FRAC_CONST(0.022587196188874), FRAC_CONST(0.023053963541915) }, - { FRAC_CONST(0.022511631458899), FRAC_CONST(0.023127756391950) }, - { FRAC_CONST(0.022435825647437), FRAC_CONST(0.023201301562294) }, - { FRAC_CONST(0.022359779566306), FRAC_CONST(0.023274598265338) }, - { FRAC_CONST(0.022283494029900), FRAC_CONST(0.023347645716133) }, - { FRAC_CONST(0.022206969855176), FRAC_CONST(0.023420443132400) }, - { FRAC_CONST(0.022130207861645), FRAC_CONST(0.023492989734537) }, - { FRAC_CONST(0.022053208871367), FRAC_CONST(0.023565284745628) }, - { FRAC_CONST(0.021975973708940), FRAC_CONST(0.023637327391451) }, - { FRAC_CONST(0.021898503201489), FRAC_CONST(0.023709116900488) }, - { FRAC_CONST(0.021820798178663), FRAC_CONST(0.023780652503931) }, - { FRAC_CONST(0.021742859472618), FRAC_CONST(0.023851933435691) }, - { FRAC_CONST(0.021664687918017), FRAC_CONST(0.023922958932406) }, - { FRAC_CONST(0.021586284352013), FRAC_CONST(0.023993728233451) }, - { FRAC_CONST(0.021507649614247), FRAC_CONST(0.024064240580942) }, - { FRAC_CONST(0.021428784546832), FRAC_CONST(0.024134495219750) }, - { FRAC_CONST(0.021349689994350), FRAC_CONST(0.024204491397504) }, - { FRAC_CONST(0.021270366803840), FRAC_CONST(0.024274228364600) }, - { FRAC_CONST(0.021190815824791), FRAC_CONST(0.024343705374213) }, - { FRAC_CONST(0.021111037909128), FRAC_CONST(0.024412921682298) }, - { FRAC_CONST(0.021031033911210), FRAC_CONST(0.024481876547605) }, - { FRAC_CONST(0.020950804687815), FRAC_CONST(0.024550569231683) }, - { FRAC_CONST(0.020870351098134), FRAC_CONST(0.024618998998889) }, - { FRAC_CONST(0.020789674003759), FRAC_CONST(0.024687165116394) }, - { FRAC_CONST(0.020708774268678), FRAC_CONST(0.024755066854194) }, - { FRAC_CONST(0.020627652759262), FRAC_CONST(0.024822703485116) }, - { FRAC_CONST(0.020546310344257), FRAC_CONST(0.024890074284826) }, - { FRAC_CONST(0.020464747894775), FRAC_CONST(0.024957178531837) }, - { FRAC_CONST(0.020382966284284), FRAC_CONST(0.025024015507516) }, - { FRAC_CONST(0.020300966388600), FRAC_CONST(0.025090584496093) }, - { FRAC_CONST(0.020218749085876), FRAC_CONST(0.025156884784668) }, - { FRAC_CONST(0.020136315256592), FRAC_CONST(0.025222915663218) }, - { FRAC_CONST(0.020053665783549), FRAC_CONST(0.025288676424605) }, - { FRAC_CONST(0.019970801551857), FRAC_CONST(0.025354166364584) }, - { FRAC_CONST(0.019887723448925), FRAC_CONST(0.025419384781811) }, - { FRAC_CONST(0.019804432364452), FRAC_CONST(0.025484330977848) }, - { FRAC_CONST(0.019720929190419), FRAC_CONST(0.025549004257175) }, - { FRAC_CONST(0.019637214821078), FRAC_CONST(0.025613403927192) }, - { FRAC_CONST(0.019553290152943), FRAC_CONST(0.025677529298230) }, - { FRAC_CONST(0.019469156084779), FRAC_CONST(0.025741379683559) }, - { FRAC_CONST(0.019384813517595), FRAC_CONST(0.025804954399392) }, - { FRAC_CONST(0.019300263354632), FRAC_CONST(0.025868252764895) }, - { FRAC_CONST(0.019215506501354), FRAC_CONST(0.025931274102193) }, - { FRAC_CONST(0.019130543865439), FRAC_CONST(0.025994017736379) }, - { FRAC_CONST(0.019045376356769), FRAC_CONST(0.026056482995518) }, - { FRAC_CONST(0.018960004887419), FRAC_CONST(0.026118669210657) }, - { FRAC_CONST(0.018874430371648), FRAC_CONST(0.026180575715833) }, - { FRAC_CONST(0.018788653725892), FRAC_CONST(0.026242201848076) }, - { FRAC_CONST(0.018702675868750), FRAC_CONST(0.026303546947421) }, - { FRAC_CONST(0.018616497720974), FRAC_CONST(0.026364610356909) }, - { FRAC_CONST(0.018530120205464), FRAC_CONST(0.026425391422602) }, - { FRAC_CONST(0.018443544247254), FRAC_CONST(0.026485889493583) }, - { FRAC_CONST(0.018356770773502), FRAC_CONST(0.026546103921965) }, - { FRAC_CONST(0.018269800713483), FRAC_CONST(0.026606034062902) }, - { FRAC_CONST(0.018182634998576), FRAC_CONST(0.026665679274589) }, - { FRAC_CONST(0.018095274562256), FRAC_CONST(0.026725038918274) }, - { FRAC_CONST(0.018007720340083), FRAC_CONST(0.026784112358263) }, - { FRAC_CONST(0.017919973269692), FRAC_CONST(0.026842898961926) }, - { FRAC_CONST(0.017832034290785), FRAC_CONST(0.026901398099707) }, - { FRAC_CONST(0.017743904345116), FRAC_CONST(0.026959609145127) }, - { FRAC_CONST(0.017655584376488), FRAC_CONST(0.027017531474792) }, - { FRAC_CONST(0.017567075330734), FRAC_CONST(0.027075164468401) }, - { FRAC_CONST(0.017478378155718), FRAC_CONST(0.027132507508750) }, - { FRAC_CONST(0.017389493801313), FRAC_CONST(0.027189559981742) }, - { FRAC_CONST(0.017300423219401), FRAC_CONST(0.027246321276391) }, - { FRAC_CONST(0.017211167363854), FRAC_CONST(0.027302790784828) }, - { FRAC_CONST(0.017121727190533), FRAC_CONST(0.027358967902310) }, - { FRAC_CONST(0.017032103657269), FRAC_CONST(0.027414852027226) }, - { FRAC_CONST(0.016942297723858), FRAC_CONST(0.027470442561102) }, - { FRAC_CONST(0.016852310352050), FRAC_CONST(0.027525738908608) }, - { FRAC_CONST(0.016762142505537), FRAC_CONST(0.027580740477564) }, - { FRAC_CONST(0.016671795149944), FRAC_CONST(0.027635446678948) }, - { FRAC_CONST(0.016581269252819), FRAC_CONST(0.027689856926900) }, - { FRAC_CONST(0.016490565783622), FRAC_CONST(0.027743970638730) }, - { FRAC_CONST(0.016399685713714), FRAC_CONST(0.027797787234924) }, - { FRAC_CONST(0.016308630016347), FRAC_CONST(0.027851306139149) }, - { FRAC_CONST(0.016217399666655), FRAC_CONST(0.027904526778260) }, - { FRAC_CONST(0.016125995641641), FRAC_CONST(0.027957448582309) }, - { FRAC_CONST(0.016034418920170), FRAC_CONST(0.028010070984544) }, - { FRAC_CONST(0.015942670482954), FRAC_CONST(0.028062393421421) }, - { FRAC_CONST(0.015850751312545), FRAC_CONST(0.028114415332610) }, - { FRAC_CONST(0.015758662393324), FRAC_CONST(0.028166136160998) }, - { FRAC_CONST(0.015666404711489), FRAC_CONST(0.028217555352697) }, - { FRAC_CONST(0.015573979255046), FRAC_CONST(0.028268672357047) }, - { FRAC_CONST(0.015481387013797), FRAC_CONST(0.028319486626627) }, - { FRAC_CONST(0.015388628979331), FRAC_CONST(0.028369997617257) }, - { FRAC_CONST(0.015295706145012), FRAC_CONST(0.028420204788004) }, - { FRAC_CONST(0.015202619505968), FRAC_CONST(0.028470107601191) }, - { FRAC_CONST(0.015109370059084), FRAC_CONST(0.028519705522399) }, - { FRAC_CONST(0.015015958802984), FRAC_CONST(0.028568998020472) }, - { FRAC_CONST(0.014922386738030), FRAC_CONST(0.028617984567529) }, - { FRAC_CONST(0.014828654866302), FRAC_CONST(0.028666664638963) }, - { FRAC_CONST(0.014734764191593), FRAC_CONST(0.028715037713449) }, - { FRAC_CONST(0.014640715719398), FRAC_CONST(0.028763103272951) }, - { FRAC_CONST(0.014546510456900), FRAC_CONST(0.028810860802724) }, - { FRAC_CONST(0.014452149412962), FRAC_CONST(0.028858309791325) }, - { FRAC_CONST(0.014357633598114), FRAC_CONST(0.028905449730613) }, - { FRAC_CONST(0.014262964024545), FRAC_CONST(0.028952280115756) }, - { FRAC_CONST(0.014168141706090), FRAC_CONST(0.028998800445240) }, - { FRAC_CONST(0.014073167658220), FRAC_CONST(0.029045010220868) }, - { FRAC_CONST(0.013978042898030), FRAC_CONST(0.029090908947771) }, - { FRAC_CONST(0.013882768444231), FRAC_CONST(0.029136496134411) }, - { FRAC_CONST(0.013787345317136), FRAC_CONST(0.029181771292585) }, - { FRAC_CONST(0.013691774538648), FRAC_CONST(0.029226733937433) }, - { FRAC_CONST(0.013596057132255), FRAC_CONST(0.029271383587441) }, - { FRAC_CONST(0.013500194123014), FRAC_CONST(0.029315719764447) }, - { FRAC_CONST(0.013404186537539), FRAC_CONST(0.029359741993647) }, - { FRAC_CONST(0.013308035403995), FRAC_CONST(0.029403449803598) }, - { FRAC_CONST(0.013211741752084), FRAC_CONST(0.029446842726223) }, - { FRAC_CONST(0.013115306613032), FRAC_CONST(0.029489920296820) }, - { FRAC_CONST(0.013018731019584), FRAC_CONST(0.029532682054063) }, - { FRAC_CONST(0.012922016005985), FRAC_CONST(0.029575127540008) }, - { FRAC_CONST(0.012825162607977), FRAC_CONST(0.029617256300097) }, - { FRAC_CONST(0.012728171862781), FRAC_CONST(0.029659067883165) }, - { FRAC_CONST(0.012631044809089), FRAC_CONST(0.029700561841444) }, - { FRAC_CONST(0.012533782487056), FRAC_CONST(0.029741737730567) }, - { FRAC_CONST(0.012436385938281), FRAC_CONST(0.029782595109573) }, - { FRAC_CONST(0.012338856205805), FRAC_CONST(0.029823133540913) }, - { FRAC_CONST(0.012241194334091), FRAC_CONST(0.029863352590452) }, - { FRAC_CONST(0.012143401369021), FRAC_CONST(0.029903251827477) }, - { FRAC_CONST(0.012045478357878), FRAC_CONST(0.029942830824699) }, - { FRAC_CONST(0.011947426349339), FRAC_CONST(0.029982089158259) }, - { FRAC_CONST(0.011849246393462), FRAC_CONST(0.030021026407731) }, - { FRAC_CONST(0.011750939541676), FRAC_CONST(0.030059642156129) }, - { FRAC_CONST(0.011652506846768), FRAC_CONST(0.030097935989909) }, - { FRAC_CONST(0.011553949362874), FRAC_CONST(0.030135907498976) }, - { FRAC_CONST(0.011455268145464), FRAC_CONST(0.030173556276684) }, - { FRAC_CONST(0.011356464251335), FRAC_CONST(0.030210881919845) }, - { FRAC_CONST(0.011257538738598), FRAC_CONST(0.030247884028732) }, - { FRAC_CONST(0.011158492666665), FRAC_CONST(0.030284562207083) }, - { FRAC_CONST(0.011059327096240), FRAC_CONST(0.030320916062102) }, - { FRAC_CONST(0.010960043089307), FRAC_CONST(0.030356945204470) }, - { FRAC_CONST(0.010860641709118), FRAC_CONST(0.030392649248343) }, - { FRAC_CONST(0.010761124020182), FRAC_CONST(0.030428027811361) }, - { FRAC_CONST(0.010661491088253), FRAC_CONST(0.030463080514646) }, - { FRAC_CONST(0.010561743980319), FRAC_CONST(0.030497806982812) }, - { FRAC_CONST(0.010461883764593), FRAC_CONST(0.030532206843968) }, - { FRAC_CONST(0.010361911510496), FRAC_CONST(0.030566279729717) }, - { FRAC_CONST(0.010261828288652), FRAC_CONST(0.030600025275167) }, - { FRAC_CONST(0.010161635170872), FRAC_CONST(0.030633443118931) }, - { FRAC_CONST(0.010061333230142), FRAC_CONST(0.030666532903129) }, - { FRAC_CONST(0.009960923540617), FRAC_CONST(0.030699294273397) }, - { FRAC_CONST(0.009860407177603), FRAC_CONST(0.030731726878888) }, - { FRAC_CONST(0.009759785217550), FRAC_CONST(0.030763830372273) }, - { FRAC_CONST(0.009659058738038), FRAC_CONST(0.030795604409750) }, - { FRAC_CONST(0.009558228817767), FRAC_CONST(0.030827048651045) }, - { FRAC_CONST(0.009457296536545), FRAC_CONST(0.030858162759415) }, - { FRAC_CONST(0.009356262975275), FRAC_CONST(0.030888946401653) }, - { FRAC_CONST(0.009255129215945), FRAC_CONST(0.030919399248091) }, - { FRAC_CONST(0.009153896341616), FRAC_CONST(0.030949520972603) }, - { FRAC_CONST(0.009052565436412), FRAC_CONST(0.030979311252611) }, - { FRAC_CONST(0.008951137585505), FRAC_CONST(0.031008769769084) }, - { FRAC_CONST(0.008849613875105), FRAC_CONST(0.031037896206544) }, - { FRAC_CONST(0.008747995392451), FRAC_CONST(0.031066690253072) }, - { FRAC_CONST(0.008646283225794), FRAC_CONST(0.031095151600306) }, - { FRAC_CONST(0.008544478464390), FRAC_CONST(0.031123279943448) }, - { FRAC_CONST(0.008442582198486), FRAC_CONST(0.031151074981266) }, - { FRAC_CONST(0.008340595519310), FRAC_CONST(0.031178536416098) }, - { FRAC_CONST(0.008238519519057), FRAC_CONST(0.031205663953853) }, - { FRAC_CONST(0.008136355290878), FRAC_CONST(0.031232457304017) }, - { FRAC_CONST(0.008034103928871), FRAC_CONST(0.031258916179656) }, - { FRAC_CONST(0.007931766528065), FRAC_CONST(0.031285040297416) }, - { FRAC_CONST(0.007829344184412), FRAC_CONST(0.031310829377528) }, - { FRAC_CONST(0.007726837994772), FRAC_CONST(0.031336283143813) }, - { FRAC_CONST(0.007624249056906), FRAC_CONST(0.031361401323680) }, - { FRAC_CONST(0.007521578469457), FRAC_CONST(0.031386183648135) }, - { FRAC_CONST(0.007418827331946), FRAC_CONST(0.031410629851778) }, - { FRAC_CONST(0.007315996744755), FRAC_CONST(0.031434739672811) }, - { FRAC_CONST(0.007213087809115), FRAC_CONST(0.031458512853036) }, - { FRAC_CONST(0.007110101627101), FRAC_CONST(0.031481949137863) }, - { FRAC_CONST(0.007007039301610), FRAC_CONST(0.031505048276306) }, - { FRAC_CONST(0.006903901936357), FRAC_CONST(0.031527810020993) }, - { FRAC_CONST(0.006800690635862), FRAC_CONST(0.031550234128164) }, - { FRAC_CONST(0.006697406505433), FRAC_CONST(0.031572320357675) }, - { FRAC_CONST(0.006594050651161), FRAC_CONST(0.031594068473000) }, - { FRAC_CONST(0.006490624179905), FRAC_CONST(0.031615478241233) }, - { FRAC_CONST(0.006387128199278), FRAC_CONST(0.031636549433095) }, - { FRAC_CONST(0.006283563817639), FRAC_CONST(0.031657281822929) }, - { FRAC_CONST(0.006179932144080), FRAC_CONST(0.031677675188707) }, - { FRAC_CONST(0.006076234288412), FRAC_CONST(0.031697729312034) }, - { FRAC_CONST(0.005972471361157), FRAC_CONST(0.031717443978146) }, - { FRAC_CONST(0.005868644473532), FRAC_CONST(0.031736818975914) }, - { FRAC_CONST(0.005764754737440), FRAC_CONST(0.031755854097848) }, - { FRAC_CONST(0.005660803265456), FRAC_CONST(0.031774549140098) }, - { FRAC_CONST(0.005556791170816), FRAC_CONST(0.031792903902453) }, - { FRAC_CONST(0.005452719567407), FRAC_CONST(0.031810918188350) }, - { FRAC_CONST(0.005348589569753), FRAC_CONST(0.031828591804869) }, - { FRAC_CONST(0.005244402293001), FRAC_CONST(0.031845924562742) }, - { FRAC_CONST(0.005140158852914), FRAC_CONST(0.031862916276347) }, - { FRAC_CONST(0.005035860365855), FRAC_CONST(0.031879566763717) }, - { FRAC_CONST(0.004931507948778), FRAC_CONST(0.031895875846539) }, - { FRAC_CONST(0.004827102719212), FRAC_CONST(0.031911843350155) }, - { FRAC_CONST(0.004722645795254), FRAC_CONST(0.031927469103567) }, - { FRAC_CONST(0.004618138295554), FRAC_CONST(0.031942752939435) }, - { FRAC_CONST(0.004513581339303), FRAC_CONST(0.031957694694082) }, - { FRAC_CONST(0.004408976046222), FRAC_CONST(0.031972294207493) }, - { FRAC_CONST(0.004304323536549), FRAC_CONST(0.031986551323320) }, - { FRAC_CONST(0.004199624931030), FRAC_CONST(0.032000465888879) }, - { FRAC_CONST(0.004094881350902), FRAC_CONST(0.032014037755158) }, - { FRAC_CONST(0.003990093917884), FRAC_CONST(0.032027266776813) }, - { FRAC_CONST(0.003885263754166), FRAC_CONST(0.032040152812170) }, - { FRAC_CONST(0.003780391982394), FRAC_CONST(0.032052695723232) }, - { FRAC_CONST(0.003675479725661), FRAC_CONST(0.032064895375674) }, - { FRAC_CONST(0.003570528107494), FRAC_CONST(0.032076751638847) }, - { FRAC_CONST(0.003465538251839), FRAC_CONST(0.032088264385780) }, - { FRAC_CONST(0.003360511283053), FRAC_CONST(0.032099433493181) }, - { FRAC_CONST(0.003255448325892), FRAC_CONST(0.032110258841438) }, - { FRAC_CONST(0.003150350505494), FRAC_CONST(0.032120740314619) }, - { FRAC_CONST(0.003045218947373), FRAC_CONST(0.032130877800478) }, - { FRAC_CONST(0.002940054777404), FRAC_CONST(0.032140671190449) }, - { FRAC_CONST(0.002834859121810), FRAC_CONST(0.032150120379653) }, - { FRAC_CONST(0.002729633107153), FRAC_CONST(0.032159225266897) }, - { FRAC_CONST(0.002624377860318), FRAC_CONST(0.032167985754674) }, - { FRAC_CONST(0.002519094508504), FRAC_CONST(0.032176401749168) }, - { FRAC_CONST(0.002413784179212), FRAC_CONST(0.032184473160250) }, - { FRAC_CONST(0.002308448000231), FRAC_CONST(0.032192199901481) }, - { FRAC_CONST(0.002203087099626), FRAC_CONST(0.032199581890114) }, - { FRAC_CONST(0.002097702605728), FRAC_CONST(0.032206619047093) }, - { FRAC_CONST(0.001992295647121), FRAC_CONST(0.032213311297057) }, - { FRAC_CONST(0.001886867352628), FRAC_CONST(0.032219658568338) }, - { FRAC_CONST(0.001781418851302), FRAC_CONST(0.032225660792960) }, - { FRAC_CONST(0.001675951272410), FRAC_CONST(0.032231317906644) }, - { FRAC_CONST(0.001570465745428), FRAC_CONST(0.032236629848809) }, - { FRAC_CONST(0.001464963400018), FRAC_CONST(0.032241596562566) }, - { FRAC_CONST(0.001359445366028), FRAC_CONST(0.032246217994727) }, - { FRAC_CONST(0.001253912773470), FRAC_CONST(0.032250494095799) }, - { FRAC_CONST(0.001148366752513), FRAC_CONST(0.032254424819990) }, - { FRAC_CONST(0.001042808433471), FRAC_CONST(0.032258010125204) }, - { FRAC_CONST(0.000937238946789), FRAC_CONST(0.032261249973045) }, - { FRAC_CONST(0.000831659423030), FRAC_CONST(0.032264144328817) }, - { FRAC_CONST(0.000726070992868), FRAC_CONST(0.032266693161525) }, - { FRAC_CONST(0.000620474787068), FRAC_CONST(0.032268896443871) }, - { FRAC_CONST(0.000514871936481), FRAC_CONST(0.032270754152261) }, - { FRAC_CONST(0.000409263572030), FRAC_CONST(0.032272266266801) }, - { FRAC_CONST(0.000303650824695), FRAC_CONST(0.032273432771295) }, - { FRAC_CONST(0.000198034825504), FRAC_CONST(0.032274253653254) }, - { FRAC_CONST(0.000092416705518), FRAC_CONST(0.032274728903884) } -}; - -#ifdef LD_DEC -/* 240 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_960[] = -{ - { FRAC_CONST(0.045643531183573), FRAC_CONST(0.000037342034959) }, - { FRAC_CONST(0.045642309173789), FRAC_CONST(0.000336075315362) }, - { FRAC_CONST(0.045639131999390), FRAC_CONST(0.000634794199417) }, - { FRAC_CONST(0.045633999796474), FRAC_CONST(0.000933485891002) }, - { FRAC_CONST(0.045626912784890), FRAC_CONST(0.001232137595157) }, - { FRAC_CONST(0.045617871268219), FRAC_CONST(0.001530736518639) }, - { FRAC_CONST(0.045606875633772), FRAC_CONST(0.001829269870464) }, - { FRAC_CONST(0.045593926352564), FRAC_CONST(0.002127724862455) }, - { FRAC_CONST(0.045579023979299), FRAC_CONST(0.002426088709795) }, - { FRAC_CONST(0.045562169152346), FRAC_CONST(0.002724348631569) }, - { FRAC_CONST(0.045543362593709), FRAC_CONST(0.003022491851315) }, - { FRAC_CONST(0.045522605108999), FRAC_CONST(0.003320505597570) }, - { FRAC_CONST(0.045499897587396), FRAC_CONST(0.003618377104416) }, - { FRAC_CONST(0.045475241001617), FRAC_CONST(0.003916093612031) }, - { FRAC_CONST(0.045448636407866), FRAC_CONST(0.004213642367228) }, - { FRAC_CONST(0.045420084945797), FRAC_CONST(0.004511010624011) }, - { FRAC_CONST(0.045389587838458), FRAC_CONST(0.004808185644112) }, - { FRAC_CONST(0.045357146392244), FRAC_CONST(0.005105154697544) }, - { FRAC_CONST(0.045322761996840), FRAC_CONST(0.005401905063139) }, - { FRAC_CONST(0.045286436125157), FRAC_CONST(0.005698424029100) }, - { FRAC_CONST(0.045248170333275), FRAC_CONST(0.005994698893542) }, - { FRAC_CONST(0.045207966260374), FRAC_CONST(0.006290716965035) }, - { FRAC_CONST(0.045165825628663), FRAC_CONST(0.006586465563151) }, - { FRAC_CONST(0.045121750243305), FRAC_CONST(0.006881932019003) }, - { FRAC_CONST(0.045075741992343), FRAC_CONST(0.007177103675792) }, - { FRAC_CONST(0.045027802846618), FRAC_CONST(0.007471967889347) }, - { FRAC_CONST(0.044977934859683), FRAC_CONST(0.007766512028667) }, - { FRAC_CONST(0.044926140167717), FRAC_CONST(0.008060723476460) }, - { FRAC_CONST(0.044872420989432), FRAC_CONST(0.008354589629687) }, - { FRAC_CONST(0.044816779625979), FRAC_CONST(0.008648097900101) }, - { FRAC_CONST(0.044759218460849), FRAC_CONST(0.008941235714784) }, - { FRAC_CONST(0.044699739959770), FRAC_CONST(0.009233990516688) }, - { FRAC_CONST(0.044638346670603), FRAC_CONST(0.009526349765171) }, - { FRAC_CONST(0.044575041223233), FRAC_CONST(0.009818300936537) }, - { FRAC_CONST(0.044509826329454), FRAC_CONST(0.010109831524568) }, - { FRAC_CONST(0.044442704782856), FRAC_CONST(0.010400929041064) }, - { FRAC_CONST(0.044373679458701), FRAC_CONST(0.010691581016378) }, - { FRAC_CONST(0.044302753313806), FRAC_CONST(0.010981774999945) }, - { FRAC_CONST(0.044229929386409), FRAC_CONST(0.011271498560822) }, - { FRAC_CONST(0.044155210796046), FRAC_CONST(0.011560739288214) }, - { FRAC_CONST(0.044078600743413), FRAC_CONST(0.011849484792012) }, - { FRAC_CONST(0.044000102510229), FRAC_CONST(0.012137722703321) }, - { FRAC_CONST(0.043919719459097), FRAC_CONST(0.012425440674986) }, - { FRAC_CONST(0.043837455033359), FRAC_CONST(0.012712626382127) }, - { FRAC_CONST(0.043753312756950), FRAC_CONST(0.012999267522665) }, - { FRAC_CONST(0.043667296234245), FRAC_CONST(0.013285351817848) }, - { FRAC_CONST(0.043579409149906), FRAC_CONST(0.013570867012776) }, - { FRAC_CONST(0.043489655268722), FRAC_CONST(0.013855800876928) }, - { FRAC_CONST(0.043398038435451), FRAC_CONST(0.014140141204686) }, - { FRAC_CONST(0.043304562574653), FRAC_CONST(0.014423875815857) }, - { FRAC_CONST(0.043209231690524), FRAC_CONST(0.014706992556195) }, - { FRAC_CONST(0.043112049866720), FRAC_CONST(0.014989479297920) }, - { FRAC_CONST(0.043013021266188), FRAC_CONST(0.015271323940241) }, - { FRAC_CONST(0.042912150130984), FRAC_CONST(0.015552514409871) }, - { FRAC_CONST(0.042809440782090), FRAC_CONST(0.015833038661547) }, - { FRAC_CONST(0.042704897619235), FRAC_CONST(0.016112884678543) }, - { FRAC_CONST(0.042598525120698), FRAC_CONST(0.016392040473187) }, - { FRAC_CONST(0.042490327843124), FRAC_CONST(0.016670494087374) }, - { FRAC_CONST(0.042380310421324), FRAC_CONST(0.016948233593079) }, - { FRAC_CONST(0.042268477568078), FRAC_CONST(0.017225247092864) }, - { FRAC_CONST(0.042154834073934), FRAC_CONST(0.017501522720393) }, - { FRAC_CONST(0.042039384807000), FRAC_CONST(0.017777048640940) }, - { FRAC_CONST(0.041922134712739), FRAC_CONST(0.018051813051888) }, - { FRAC_CONST(0.041803088813754), FRAC_CONST(0.018325804183247) }, - { FRAC_CONST(0.041682252209576), FRAC_CONST(0.018599010298148) }, - { FRAC_CONST(0.041559630076443), FRAC_CONST(0.018871419693350) }, - { FRAC_CONST(0.041435227667079), FRAC_CONST(0.019143020699741) }, - { FRAC_CONST(0.041309050310468), FRAC_CONST(0.019413801682838) }, - { FRAC_CONST(0.041181103411629), FRAC_CONST(0.019683751043285) }, - { FRAC_CONST(0.041051392451382), FRAC_CONST(0.019952857217350) }, - { FRAC_CONST(0.040919922986111), FRAC_CONST(0.020221108677421) }, - { FRAC_CONST(0.040786700647532), FRAC_CONST(0.020488493932496) }, - { FRAC_CONST(0.040651731142446), FRAC_CONST(0.020755001528683) }, - { FRAC_CONST(0.040515020252497), FRAC_CONST(0.021020620049682) }, - { FRAC_CONST(0.040376573833925), FRAC_CONST(0.021285338117280) }, - { FRAC_CONST(0.040236397817314), FRAC_CONST(0.021549144391836) }, - { FRAC_CONST(0.040094498207337), FRAC_CONST(0.021812027572768) }, - { FRAC_CONST(0.039950881082502), FRAC_CONST(0.022073976399034) }, - { FRAC_CONST(0.039805552594888), FRAC_CONST(0.022334979649620) }, - { FRAC_CONST(0.039658518969884), FRAC_CONST(0.022595026144014) }, - { FRAC_CONST(0.039509786505922), FRAC_CONST(0.022854104742690) }, - { FRAC_CONST(0.039359361574204), FRAC_CONST(0.023112204347583) }, - { FRAC_CONST(0.039207250618434), FRAC_CONST(0.023369313902565) }, - { FRAC_CONST(0.039053460154540), FRAC_CONST(0.023625422393919) }, - { FRAC_CONST(0.038897996770393), FRAC_CONST(0.023880518850809) }, - { FRAC_CONST(0.038740867125527), FRAC_CONST(0.024134592345752) }, - { FRAC_CONST(0.038582077950852), FRAC_CONST(0.024387631995085) }, - { FRAC_CONST(0.038421636048370), FRAC_CONST(0.024639626959432) }, - { FRAC_CONST(0.038259548290876), FRAC_CONST(0.024890566444167) }, - { FRAC_CONST(0.038095821621671), FRAC_CONST(0.025140439699877) }, - { FRAC_CONST(0.037930463054261), FRAC_CONST(0.025389236022825) }, - { FRAC_CONST(0.037763479672055), FRAC_CONST(0.025636944755403) }, - { FRAC_CONST(0.037594878628068), FRAC_CONST(0.025883555286595) }, - { FRAC_CONST(0.037424667144605), FRAC_CONST(0.026129057052425) }, - { FRAC_CONST(0.037252852512960), FRAC_CONST(0.026373439536415) }, - { FRAC_CONST(0.037079442093102), FRAC_CONST(0.026616692270033) }, - { FRAC_CONST(0.036904443313354), FRAC_CONST(0.026858804833142) }, - { FRAC_CONST(0.036727863670081), FRAC_CONST(0.027099766854444) }, - { FRAC_CONST(0.036549710727369), FRAC_CONST(0.027339568011930) }, - { FRAC_CONST(0.036369992116697), FRAC_CONST(0.027578198033315) }, - { FRAC_CONST(0.036188715536611), FRAC_CONST(0.027815646696484) }, - { FRAC_CONST(0.036005888752396), FRAC_CONST(0.028051903829926) }, - { FRAC_CONST(0.035821519595745), FRAC_CONST(0.028286959313171) }, - { FRAC_CONST(0.035635615964417), FRAC_CONST(0.028520803077226) }, - { FRAC_CONST(0.035448185821906), FRAC_CONST(0.028753425105002) }, - { FRAC_CONST(0.035259237197095), FRAC_CONST(0.028984815431745) }, - { FRAC_CONST(0.035068778183914), FRAC_CONST(0.029214964145465) }, - { FRAC_CONST(0.034876816940994), FRAC_CONST(0.029443861387355) }, - { FRAC_CONST(0.034683361691315), FRAC_CONST(0.029671497352220) }, - { FRAC_CONST(0.034488420721856), FRAC_CONST(0.029897862288892) }, - { FRAC_CONST(0.034292002383240), FRAC_CONST(0.030122946500652) }, - { FRAC_CONST(0.034094115089375), FRAC_CONST(0.030346740345641) }, - { FRAC_CONST(0.033894767317093), FRAC_CONST(0.030569234237276) }, - { FRAC_CONST(0.033693967605790), FRAC_CONST(0.030790418644658) }, - { FRAC_CONST(0.033491724557057), FRAC_CONST(0.031010284092984) }, - { FRAC_CONST(0.033288046834313), FRAC_CONST(0.031228821163949) }, - { FRAC_CONST(0.033082943162434), FRAC_CONST(0.031446020496153) }, - { FRAC_CONST(0.032876422327378), FRAC_CONST(0.031661872785500) }, - { FRAC_CONST(0.032668493175811), FRAC_CONST(0.031876368785596) }, - { FRAC_CONST(0.032459164614726), FRAC_CONST(0.032089499308145) }, - { FRAC_CONST(0.032248445611061), FRAC_CONST(0.032301255223347) }, - { FRAC_CONST(0.032036345191317), FRAC_CONST(0.032511627460281) }, - { FRAC_CONST(0.031822872441171), FRAC_CONST(0.032720607007302) }, - { FRAC_CONST(0.031608036505083), FRAC_CONST(0.032928184912422) }, - { FRAC_CONST(0.031391846585912), FRAC_CONST(0.033134352283693) }, - { FRAC_CONST(0.031174311944513), FRAC_CONST(0.033339100289593) }, - { FRAC_CONST(0.030955441899347), FRAC_CONST(0.033542420159397) }, - { FRAC_CONST(0.030735245826077), FRAC_CONST(0.033744303183559) }, - { FRAC_CONST(0.030513733157171), FRAC_CONST(0.033944740714083) }, - { FRAC_CONST(0.030290913381494), FRAC_CONST(0.034143724164891) }, - { FRAC_CONST(0.030066796043904), FRAC_CONST(0.034341245012195) }, - { FRAC_CONST(0.029841390744841), FRAC_CONST(0.034537294794860) }, - { FRAC_CONST(0.029614707139919), FRAC_CONST(0.034731865114764) }, - { FRAC_CONST(0.029386754939508), FRAC_CONST(0.034924947637164) }, - { FRAC_CONST(0.029157543908322), FRAC_CONST(0.035116534091046) }, - { FRAC_CONST(0.028927083864999), FRAC_CONST(0.035306616269485) }, - { FRAC_CONST(0.028695384681680), FRAC_CONST(0.035495186029992) }, - { FRAC_CONST(0.028462456283587), FRAC_CONST(0.035682235294866) }, - { FRAC_CONST(0.028228308648598), FRAC_CONST(0.035867756051541) }, - { FRAC_CONST(0.027992951806817), FRAC_CONST(0.036051740352923) }, - { FRAC_CONST(0.027756395840148), FRAC_CONST(0.036234180317738) }, - { FRAC_CONST(0.027518650881862), FRAC_CONST(0.036415068130865) }, - { FRAC_CONST(0.027279727116161), FRAC_CONST(0.036594396043672) }, - { FRAC_CONST(0.027039634777745), FRAC_CONST(0.036772156374348) }, - { FRAC_CONST(0.026798384151369), FRAC_CONST(0.036948341508233) }, - { FRAC_CONST(0.026555985571409), FRAC_CONST(0.037122943898140) }, - { FRAC_CONST(0.026312449421412), FRAC_CONST(0.037295956064686) }, - { FRAC_CONST(0.026067786133656), FRAC_CONST(0.037467370596605) }, - { FRAC_CONST(0.025822006188702), FRAC_CONST(0.037637180151068) }, - { FRAC_CONST(0.025575120114946), FRAC_CONST(0.037805377454000) }, - { FRAC_CONST(0.025327138488165), FRAC_CONST(0.037971955300388) }, - { FRAC_CONST(0.025078071931066), FRAC_CONST(0.038136906554591) }, - { FRAC_CONST(0.024827931112832), FRAC_CONST(0.038300224150647) }, - { FRAC_CONST(0.024576726748663), FRAC_CONST(0.038461901092573) }, - { FRAC_CONST(0.024324469599317), FRAC_CONST(0.038621930454668) }, - { FRAC_CONST(0.024071170470652), FRAC_CONST(0.038780305381806) }, - { FRAC_CONST(0.023816840213160), FRAC_CONST(0.038937019089732) }, - { FRAC_CONST(0.023561489721501), FRAC_CONST(0.039092064865353) }, - { FRAC_CONST(0.023305129934041), FRAC_CONST(0.039245436067023) }, - { FRAC_CONST(0.023047771832380), FRAC_CONST(0.039397126124832) }, - { FRAC_CONST(0.022789426440883), FRAC_CONST(0.039547128540881) }, - { FRAC_CONST(0.022530104826206), FRAC_CONST(0.039695436889566) }, - { FRAC_CONST(0.022269818096825), FRAC_CONST(0.039842044817851) }, - { FRAC_CONST(0.022008577402555), FRAC_CONST(0.039986946045542) }, - { FRAC_CONST(0.021746393934081), FRAC_CONST(0.040130134365550) }, - { FRAC_CONST(0.021483278922467), FRAC_CONST(0.040271603644166) }, - { FRAC_CONST(0.021219243638687), FRAC_CONST(0.040411347821316) }, - { FRAC_CONST(0.020954299393132), FRAC_CONST(0.040549360910825) }, - { FRAC_CONST(0.020688457535133), FRAC_CONST(0.040685637000671) }, - { FRAC_CONST(0.020421729452469), FRAC_CONST(0.040820170253240) }, - { FRAC_CONST(0.020154126570884), FRAC_CONST(0.040952954905576) }, - { FRAC_CONST(0.019885660353596), FRAC_CONST(0.041083985269625) }, - { FRAC_CONST(0.019616342300802), FRAC_CONST(0.041213255732484) }, - { FRAC_CONST(0.019346183949192), FRAC_CONST(0.041340760756635) }, - { FRAC_CONST(0.019075196871451), FRAC_CONST(0.041466494880189) }, - { FRAC_CONST(0.018803392675763), FRAC_CONST(0.041590452717113) }, - { FRAC_CONST(0.018530783005316), FRAC_CONST(0.041712628957466) }, - { FRAC_CONST(0.018257379537800), FRAC_CONST(0.041833018367625) }, - { FRAC_CONST(0.017983193984910), FRAC_CONST(0.041951615790509) }, - { FRAC_CONST(0.017708238091842), FRAC_CONST(0.042068416145797) }, - { FRAC_CONST(0.017432523636792), FRAC_CONST(0.042183414430153) }, - { FRAC_CONST(0.017156062430449), FRAC_CONST(0.042296605717432) }, - { FRAC_CONST(0.016878866315491), FRAC_CONST(0.042407985158896) }, - { FRAC_CONST(0.016600947166078), FRAC_CONST(0.042517547983420) }, - { FRAC_CONST(0.016322316887341), FRAC_CONST(0.042625289497698) }, - { FRAC_CONST(0.016042987414872), FRAC_CONST(0.042731205086442) }, - { FRAC_CONST(0.015762970714219), FRAC_CONST(0.042835290212581) }, - { FRAC_CONST(0.015482278780363), FRAC_CONST(0.042937540417454) }, - { FRAC_CONST(0.015200923637213), FRAC_CONST(0.043037951321002) }, - { FRAC_CONST(0.014918917337087), FRAC_CONST(0.043136518621958) }, - { FRAC_CONST(0.014636271960196), FRAC_CONST(0.043233238098025) }, - { FRAC_CONST(0.014352999614128), FRAC_CONST(0.043328105606063) }, - { FRAC_CONST(0.014069112433327), FRAC_CONST(0.043421117082265) }, - { FRAC_CONST(0.013784622578575), FRAC_CONST(0.043512268542327) }, - { FRAC_CONST(0.013499542236471), FRAC_CONST(0.043601556081625) }, - { FRAC_CONST(0.013213883618907), FRAC_CONST(0.043688975875378) }, - { FRAC_CONST(0.012927658962548), FRAC_CONST(0.043774524178812) }, - { FRAC_CONST(0.012640880528305), FRAC_CONST(0.043858197327323) }, - { FRAC_CONST(0.012353560600813), FRAC_CONST(0.043939991736633) }, - { FRAC_CONST(0.012065711487901), FRAC_CONST(0.044019903902940) }, - { FRAC_CONST(0.011777345520066), FRAC_CONST(0.044097930403073) }, - { FRAC_CONST(0.011488475049948), FRAC_CONST(0.044174067894638) }, - { FRAC_CONST(0.011199112451794), FRAC_CONST(0.044248313116156) }, - { FRAC_CONST(0.010909270120937), FRAC_CONST(0.044320662887211) }, - { FRAC_CONST(0.010618960473257), FRAC_CONST(0.044391114108577) }, - { FRAC_CONST(0.010328195944653), FRAC_CONST(0.044459663762361) }, - { FRAC_CONST(0.010036988990509), FRAC_CONST(0.044526308912122) }, - { FRAC_CONST(0.009745352085163), FRAC_CONST(0.044591046703005) }, - { FRAC_CONST(0.009453297721368), FRAC_CONST(0.044653874361857) }, - { FRAC_CONST(0.009160838409762), FRAC_CONST(0.044714789197351) }, - { FRAC_CONST(0.008867986678328), FRAC_CONST(0.044773788600099) }, - { FRAC_CONST(0.008574755071860), FRAC_CONST(0.044830870042761) }, - { FRAC_CONST(0.008281156151424), FRAC_CONST(0.044886031080160) }, - { FRAC_CONST(0.007987202493820), FRAC_CONST(0.044939269349379) }, - { FRAC_CONST(0.007692906691044), FRAC_CONST(0.044990582569869) }, - { FRAC_CONST(0.007398281349750), FRAC_CONST(0.045039968543542) }, - { FRAC_CONST(0.007103339090706), FRAC_CONST(0.045087425154868) }, - { FRAC_CONST(0.006808092548258), FRAC_CONST(0.045132950370962) }, - { FRAC_CONST(0.006512554369783), FRAC_CONST(0.045176542241676) }, - { FRAC_CONST(0.006216737215155), FRAC_CONST(0.045218198899680) }, - { FRAC_CONST(0.005920653756196), FRAC_CONST(0.045257918560541) }, - { FRAC_CONST(0.005624316676135), FRAC_CONST(0.045295699522801) }, - { FRAC_CONST(0.005327738669067), FRAC_CONST(0.045331540168049) }, - { FRAC_CONST(0.005030932439406), FRAC_CONST(0.045365438960992) }, - { FRAC_CONST(0.004733910701344), FRAC_CONST(0.045397394449517) }, - { FRAC_CONST(0.004436686178303), FRAC_CONST(0.045427405264758) }, - { FRAC_CONST(0.004139271602393), FRAC_CONST(0.045455470121152) }, - { FRAC_CONST(0.003841679713863), FRAC_CONST(0.045481587816494) }, - { FRAC_CONST(0.003543923260561), FRAC_CONST(0.045505757231988) }, - { FRAC_CONST(0.003246014997382), FRAC_CONST(0.045527977332297) }, - { FRAC_CONST(0.002947967685724), FRAC_CONST(0.045548247165585) }, - { FRAC_CONST(0.002649794092941), FRAC_CONST(0.045566565863562) }, - { FRAC_CONST(0.002351506991799), FRAC_CONST(0.045582932641515) }, - { FRAC_CONST(0.002053119159924), FRAC_CONST(0.045597346798344) }, - { FRAC_CONST(0.001754643379257), FRAC_CONST(0.045609807716597) }, - { FRAC_CONST(0.001456092435508), FRAC_CONST(0.045620314862489) }, - { FRAC_CONST(0.001157479117605), FRAC_CONST(0.045628867785927) }, - { FRAC_CONST(0.000858816217149), FRAC_CONST(0.045635466120535) }, - { FRAC_CONST(0.000560116527865), FRAC_CONST(0.045640109583661) }, - { FRAC_CONST(0.000261392845053), FRAC_CONST(0.045642797976394) } -}; -#endif // LD_DEC - -/* 60 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_240[] = -{ - { FRAC_CONST(0.091286604111815), FRAC_CONST(0.000298735779793) }, - { FRAC_CONST(0.091247502481454), FRAC_CONST(0.002688238127538) }, - { FRAC_CONST(0.091145864370807), FRAC_CONST(0.005075898091152) }, - { FRAC_CONST(0.090981759437558), FRAC_CONST(0.007460079287760) }, - { FRAC_CONST(0.090755300151030), FRAC_CONST(0.009839147718664) }, - { FRAC_CONST(0.090466641715108), FRAC_CONST(0.012211472889198) }, - { FRAC_CONST(0.090115981961863), FRAC_CONST(0.014575428926191) }, - { FRAC_CONST(0.089703561215976), FRAC_CONST(0.016929395692256) }, - { FRAC_CONST(0.089229662130024), FRAC_CONST(0.019271759896156) }, - { FRAC_CONST(0.088694609490769), FRAC_CONST(0.021600916198470) }, - { FRAC_CONST(0.088098769996564), FRAC_CONST(0.023915268311810) }, - { FRAC_CONST(0.087442552006035), FRAC_CONST(0.026213230094844) }, - { FRAC_CONST(0.086726405258214), FRAC_CONST(0.028493226639351) }, - { FRAC_CONST(0.085950820564309), FRAC_CONST(0.030753695349588) }, - { FRAC_CONST(0.085116329471329), FRAC_CONST(0.032993087013213) }, - { FRAC_CONST(0.084223503897785), FRAC_CONST(0.035209866863042) }, - { FRAC_CONST(0.083272955741727), FRAC_CONST(0.037402515628894) }, - { FRAC_CONST(0.082265336461381), FRAC_CONST(0.039569530578832) }, - { FRAC_CONST(0.081201336628670), FRAC_CONST(0.041709426549053) }, - { FRAC_CONST(0.080081685455930), FRAC_CONST(0.043820736961749) }, - { FRAC_CONST(0.078907150296148), FRAC_CONST(0.045902014830227) }, - { FRAC_CONST(0.077678536117054), FRAC_CONST(0.047951833750597) }, - { FRAC_CONST(0.076396684949434), FRAC_CONST(0.049968788879362) }, - { FRAC_CONST(0.075062475310050), FRAC_CONST(0.051951497896226) }, - { FRAC_CONST(0.073676821599542), FRAC_CONST(0.053898601951466) }, - { FRAC_CONST(0.072240673475749), FRAC_CONST(0.055808766597225) }, - { FRAC_CONST(0.070755015202858), FRAC_CONST(0.057680682702068) }, - { FRAC_CONST(0.069220864976840), FRAC_CONST(0.059513067348201) }, - { FRAC_CONST(0.067639274227625), FRAC_CONST(0.061304664710718) }, - { FRAC_CONST(0.066011326898512), FRAC_CONST(0.063054246918278) }, - { FRAC_CONST(0.064338138703282), FRAC_CONST(0.064760614894630) }, - { FRAC_CONST(0.062620856361546), FRAC_CONST(0.066422599180399) }, - { FRAC_CONST(0.060860656812842), FRAC_CONST(0.068039060734572) }, - { FRAC_CONST(0.059058746410016), FRAC_CONST(0.069608891715145) }, - { FRAC_CONST(0.057216360092450), FRAC_CONST(0.071131016238378) }, - { FRAC_CONST(0.055334760539699), FRAC_CONST(0.072604391116154) }, - { FRAC_CONST(0.053415237306106), FRAC_CONST(0.074028006570930) }, - { FRAC_CONST(0.051459105937014), FRAC_CONST(0.075400886927784) }, - { FRAC_CONST(0.049467707067153), FRAC_CONST(0.076722091283096) }, - { FRAC_CONST(0.047442405501835), FRAC_CONST(0.077990714149396) }, - { FRAC_CONST(0.045384589281588), FRAC_CONST(0.079205886075941) }, - { FRAC_CONST(0.043295668730857), FRAC_CONST(0.080366774244592) }, - { FRAC_CONST(0.041177075491445), FRAC_CONST(0.081472583040586) }, - { FRAC_CONST(0.039030261541332), FRAC_CONST(0.082522554597810) }, - { FRAC_CONST(0.036856698199564), FRAC_CONST(0.083515969318206) }, - { FRAC_CONST(0.034657875117883), FRAC_CONST(0.084452146364948) }, - { FRAC_CONST(0.032435299259796), FRAC_CONST(0.085330444129049) }, - { FRAC_CONST(0.030190493867775), FRAC_CONST(0.086150260669096) }, - { FRAC_CONST(0.027924997419306), FRAC_CONST(0.086911034123781) }, - { FRAC_CONST(0.025640362572491), FRAC_CONST(0.087612243096981) }, - { FRAC_CONST(0.023338155101933), FRAC_CONST(0.088253407015092) }, - { FRAC_CONST(0.021019952825636), FRAC_CONST(0.088834086456390) }, - { FRAC_CONST(0.018687344523641), FRAC_CONST(0.089353883452193) }, - { FRAC_CONST(0.016341928849164), FRAC_CONST(0.089812441759604) }, - { FRAC_CONST(0.013985313232951), FRAC_CONST(0.090209447105664) }, - { FRAC_CONST(0.011619112781631), FRAC_CONST(0.090544627402740) }, - { FRAC_CONST(0.009244949170797), FRAC_CONST(0.090817752935000) }, - { FRAC_CONST(0.006864449533597), FRAC_CONST(0.091028636515846) }, - { FRAC_CONST(0.004479245345574), FRAC_CONST(0.091177133616206) }, - { FRAC_CONST(0.002090971306534), FRAC_CONST(0.091263142463585) } -}; -#endif // ALLOW_SMALL_FRAMELENGTH - -#ifdef SSR_DEC -/* 128 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_512[] = -{ - { FRAC_CONST(0.062499926465731), FRAC_CONST(0.000095873761643) }, - { FRAC_CONST(0.062494043817678), FRAC_CONST(0.000862836783004) }, - { FRAC_CONST(0.062478749796497), FRAC_CONST(0.001629669864319) }, - { FRAC_CONST(0.062454046705412), FRAC_CONST(0.002396257523347) }, - { FRAC_CONST(0.062419938264617), FRAC_CONST(0.003162484314806) }, - { FRAC_CONST(0.062376429610718), FRAC_CONST(0.003928234847760) }, - { FRAC_CONST(0.062323527295958), FRAC_CONST(0.004693393802995) }, - { FRAC_CONST(0.062261239287231), FRAC_CONST(0.005457845950387) }, - { FRAC_CONST(0.062189574964882), FRAC_CONST(0.006221476166254) }, - { FRAC_CONST(0.062108545121295), FRAC_CONST(0.006984169450695) }, - { FRAC_CONST(0.062018161959266), FRAC_CONST(0.007745810944907) }, - { FRAC_CONST(0.061918439090167), FRAC_CONST(0.008506285948482) }, - { FRAC_CONST(0.061809391531894), FRAC_CONST(0.009265479936681) }, - { FRAC_CONST(0.061691035706609), FRAC_CONST(0.010023278577683) }, - { FRAC_CONST(0.061563389438265), FRAC_CONST(0.010779567749800) }, - { FRAC_CONST(0.061426471949919), FRAC_CONST(0.011534233558664) }, - { FRAC_CONST(0.061280303860842), FRAC_CONST(0.012287162354380) }, - { FRAC_CONST(0.061124907183410), FRAC_CONST(0.013038240748641) }, - { FRAC_CONST(0.060960305319791), FRAC_CONST(0.013787355631805) }, - { FRAC_CONST(0.060786523058421), FRAC_CONST(0.014534394189923) }, - { FRAC_CONST(0.060603586570268), FRAC_CONST(0.015279243921739) }, - { FRAC_CONST(0.060411523404896), FRAC_CONST(0.016021792655621) }, - { FRAC_CONST(0.060210362486310), FRAC_CONST(0.016761928566463) }, - { FRAC_CONST(0.060000134108604), FRAC_CONST(0.017499540192517) }, - { FRAC_CONST(0.059780869931400), FRAC_CONST(0.018234516452187) }, - { FRAC_CONST(0.059552602975075), FRAC_CONST(0.018966746660751) }, - { FRAC_CONST(0.059315367615794), FRAC_CONST(0.019696120547033) }, - { FRAC_CONST(0.059069199580329), FRAC_CONST(0.020422528270008) }, - { FRAC_CONST(0.058814135940681), FRAC_CONST(0.021145860435346) }, - { FRAC_CONST(0.058550215108495), FRAC_CONST(0.021866008111883) }, - { FRAC_CONST(0.058277476829279), FRAC_CONST(0.022582862848028) }, - { FRAC_CONST(0.057995962176414), FRAC_CONST(0.023296316688095) }, - { FRAC_CONST(0.057705713544970), FRAC_CONST(0.024006262188558) }, - { FRAC_CONST(0.057406774645326), FRAC_CONST(0.024712592434239) }, - { FRAC_CONST(0.057099190496578), FRAC_CONST(0.025415201054398) }, - { FRAC_CONST(0.056783007419769), FRAC_CONST(0.026113982238763) }, - { FRAC_CONST(0.056458273030907), FRAC_CONST(0.026808830753458) }, - { FRAC_CONST(0.056125036233796), FRAC_CONST(0.027499641956852) }, - { FRAC_CONST(0.055783347212673), FRAC_CONST(0.028186311815319) }, - { FRAC_CONST(0.055433257424646), FRAC_CONST(0.028868736918904) }, - { FRAC_CONST(0.055074819591951), FRAC_CONST(0.029546814496896) }, - { FRAC_CONST(0.054708087694007), FRAC_CONST(0.030220442433307) }, - { FRAC_CONST(0.054333116959288), FRAC_CONST(0.030889519282247) }, - { FRAC_CONST(0.053949963857008), FRAC_CONST(0.031553944283204) }, - { FRAC_CONST(0.053558686088614), FRAC_CONST(0.032213617376216) }, - { FRAC_CONST(0.053159342579100), FRAC_CONST(0.032868439216943) }, - { FRAC_CONST(0.052751993468129), FRAC_CONST(0.033518311191623) }, - { FRAC_CONST(0.052336700100979), FRAC_CONST(0.034163135431927) }, - { FRAC_CONST(0.051913525019303), FRAC_CONST(0.034802814829698) }, - { FRAC_CONST(0.051482531951712), FRAC_CONST(0.035437253051569) }, - { FRAC_CONST(0.051043785804177), FRAC_CONST(0.036066354553480) }, - { FRAC_CONST(0.050597352650253), FRAC_CONST(0.036690024595057) }, - { FRAC_CONST(0.050143299721132), FRAC_CONST(0.037308169253887) }, - { FRAC_CONST(0.049681695395515), FRAC_CONST(0.037920695439658) }, - { FRAC_CONST(0.049212609189314), FRAC_CONST(0.038527510908178) }, - { FRAC_CONST(0.048736111745188), FRAC_CONST(0.039128524275271) }, - { FRAC_CONST(0.048252274821899), FRAC_CONST(0.039723645030535) }, - { FRAC_CONST(0.047761171283507), FRAC_CONST(0.040312783550971) }, - { FRAC_CONST(0.047262875088400), FRAC_CONST(0.040895851114488) }, - { FRAC_CONST(0.046757461278150), FRAC_CONST(0.041472759913252) }, - { FRAC_CONST(0.046245005966220), FRAC_CONST(0.042043423066923) }, - { FRAC_CONST(0.045725586326493), FRAC_CONST(0.042607754635728) }, - { FRAC_CONST(0.045199280581658), FRAC_CONST(0.043165669633408) }, - { FRAC_CONST(0.044666167991423), FRAC_CONST(0.043717084040018) }, - { FRAC_CONST(0.044126328840584), FRAC_CONST(0.044261914814575) }, - { FRAC_CONST(0.043579844426930), FRAC_CONST(0.044800079907569) }, - { FRAC_CONST(0.043026797049006), FRAC_CONST(0.045331498273316) }, - { FRAC_CONST(0.042467269993710), FRAC_CONST(0.045856089882166) }, - { FRAC_CONST(0.041901347523761), FRAC_CONST(0.046373775732552) }, - { FRAC_CONST(0.041329114865000), FRAC_CONST(0.046884477862888) }, - { FRAC_CONST(0.040750658193560), FRAC_CONST(0.047388119363313) }, - { FRAC_CONST(0.040166064622889), FRAC_CONST(0.047884624387270) }, - { FRAC_CONST(0.039575422190629), FRAC_CONST(0.048373918162926) }, - { FRAC_CONST(0.038978819845356), FRAC_CONST(0.048855927004441) }, - { FRAC_CONST(0.038376347433190), FRAC_CONST(0.049330578323055) }, - { FRAC_CONST(0.037768095684260), FRAC_CONST(0.049797800638026) }, - { FRAC_CONST(0.037154156199042), FRAC_CONST(0.050257523587392) }, - { FRAC_CONST(0.036534621434563), FRAC_CONST(0.050709677938566) }, - { FRAC_CONST(0.035909584690482), FRAC_CONST(0.051154195598769) }, - { FRAC_CONST(0.035279140095032), FRAC_CONST(0.051591009625274) }, - { FRAC_CONST(0.034643382590851), FRAC_CONST(0.052020054235496) }, - { FRAC_CONST(0.034002407920680), FRAC_CONST(0.052441264816895) }, - { FRAC_CONST(0.033356312612947), FRAC_CONST(0.052854577936706) }, - { FRAC_CONST(0.032705193967229), FRAC_CONST(0.053259931351495) }, - { FRAC_CONST(0.032049150039598), FRAC_CONST(0.053657264016528) }, - { FRAC_CONST(0.031388279627857), FRAC_CONST(0.054046516094966) }, - { FRAC_CONST(0.030722682256659), FRAC_CONST(0.054427628966880) }, - { FRAC_CONST(0.030052458162521), FRAC_CONST(0.054800545238072) }, - { FRAC_CONST(0.029377708278725), FRAC_CONST(0.055165208748723) }, - { FRAC_CONST(0.028698534220122), FRAC_CONST(0.055521564581850) }, - { FRAC_CONST(0.028015038267826), FRAC_CONST(0.055869559071575) }, - { FRAC_CONST(0.027327323353815), FRAC_CONST(0.056209139811209) }, - { FRAC_CONST(0.026635493045425), FRAC_CONST(0.056540255661140) }, - { FRAC_CONST(0.025939651529755), FRAC_CONST(0.056862856756541) }, - { FRAC_CONST(0.025239903597978), FRAC_CONST(0.057176894514872) }, - { FRAC_CONST(0.024536354629559), FRAC_CONST(0.057482321643202) }, - { FRAC_CONST(0.023829110576385), FRAC_CONST(0.057779092145329) }, - { FRAC_CONST(0.023118277946808), FRAC_CONST(0.058067161328707) }, - { FRAC_CONST(0.022403963789609), FRAC_CONST(0.058346485811177) }, - { FRAC_CONST(0.021686275677870), FRAC_CONST(0.058617023527499) }, - { FRAC_CONST(0.020965321692783), FRAC_CONST(0.058878733735689) }, - { FRAC_CONST(0.020241210407366), FRAC_CONST(0.059131577023150) }, - { FRAC_CONST(0.019514050870114), FRAC_CONST(0.059375515312615) }, - { FRAC_CONST(0.018783952588580), FRAC_CONST(0.059610511867874) }, - { FRAC_CONST(0.018051025512878), FRAC_CONST(0.059836531299311) }, - { FRAC_CONST(0.017315380019131), FRAC_CONST(0.060053539569230) }, - { FRAC_CONST(0.016577126892844), FRAC_CONST(0.060261503996984) }, - { FRAC_CONST(0.015836377312223), FRAC_CONST(0.060460393263896) }, - { FRAC_CONST(0.015093242831429), FRAC_CONST(0.060650177417972) }, - { FRAC_CONST(0.014347835363782), FRAC_CONST(0.060830827878419) }, - { FRAC_CONST(0.013600267164905), FRAC_CONST(0.061002317439940) }, - { FRAC_CONST(0.012850650815819), FRAC_CONST(0.061164620276839) }, - { FRAC_CONST(0.012099099205988), FRAC_CONST(0.061317711946905) }, - { FRAC_CONST(0.011345725516320), FRAC_CONST(0.061461569395097) }, - { FRAC_CONST(0.010590643202123), FRAC_CONST(0.061596170957011) }, - { FRAC_CONST(0.009833965976015), FRAC_CONST(0.061721496362147) }, - { FRAC_CONST(0.009075807790803), FRAC_CONST(0.061837526736961) }, - { FRAC_CONST(0.008316282822321), FRAC_CONST(0.061944244607705) }, - { FRAC_CONST(0.007555505452236), FRAC_CONST(0.062041633903059) }, - { FRAC_CONST(0.006793590250821), FRAC_CONST(0.062129679956555) }, - { FRAC_CONST(0.006030651959703), FRAC_CONST(0.062208369508780) }, - { FRAC_CONST(0.005266805474583), FRAC_CONST(0.062277690709378) }, - { FRAC_CONST(0.004502165827931), FRAC_CONST(0.062337633118830) }, - { FRAC_CONST(0.003736848171665), FRAC_CONST(0.062388187710030) }, - { FRAC_CONST(0.002970967759810), FRAC_CONST(0.062429346869643) }, - { FRAC_CONST(0.002204639931138), FRAC_CONST(0.062461104399250) }, - { FRAC_CONST(0.001437980091802), FRAC_CONST(0.062483455516285) }, - { FRAC_CONST(0.000671103697954), FRAC_CONST(0.062496396854751) } -}; - -/* 16 (N/4) complex twiddle factors */ -ALIGN static const complex_t mdct_tab_64[] = -{ - { FRAC_CONST(0.176763384336599), FRAC_CONST(0.002169321984356) }, - { FRAC_CONST(0.175699589589310), FRAC_CONST(0.019484717553714) }, - { FRAC_CONST(0.172943711747111), FRAC_CONST(0.036612464641599) }, - { FRAC_CONST(0.168522291420137), FRAC_CONST(0.053387613680577) }, - { FRAC_CONST(0.162477909303132), FRAC_CONST(0.069648610815172) }, - { FRAC_CONST(0.154868776100077), FRAC_CONST(0.085238853753814) }, - { FRAC_CONST(0.145768171923295), FRAC_CONST(0.100008199934509) }, - { FRAC_CONST(0.135263740565902), FRAC_CONST(0.113814412479792) }, - { FRAC_CONST(0.123456645444178), FRAC_CONST(0.126524530015608) }, - { FRAC_CONST(0.110460595338559), FRAC_CONST(0.138016147162030) }, - { FRAC_CONST(0.096400749315926), FRAC_CONST(0.148178593363981) }, - { FRAC_CONST(0.081412511379371), FRAC_CONST(0.156913998709178) }, - { FRAC_CONST(0.065640226453626), FRAC_CONST(0.164138236468888) }, - { FRAC_CONST(0.049235790264535), FRAC_CONST(0.169781733284316) }, - { FRAC_CONST(0.032357186500177), FRAC_CONST(0.173790139196080) }, - { FRAC_CONST(0.015166965341583), FRAC_CONST(0.176124851064031) } -}; -#endif // SSR_DEC - -#endif // FIXED_POINT - -#ifdef __cplusplus -} -#endif -#endif diff --git a/apps/codecs/libfaad/specrec.c b/apps/codecs/libfaad/specrec.c index fc1beb7e04..87470f54f4 100644 --- a/apps/codecs/libfaad/specrec.c +++ b/apps/codecs/libfaad/specrec.c @@ -958,8 +958,7 @@ uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics, if (hDecoder->object_type != SSR) { #endif - ifilter_bank(hDecoder->fb, ics->window_sequence, ics->window_shape, - hDecoder->window_shape_prev[sce->channel], spec_coef, + ifilter_bank(ics->window_sequence,spec_coef, hDecoder->time_out[sce->channel], hDecoder->fb_intermed[sce->channel], hDecoder->object_type, hDecoder->frameLength); #ifdef SSR_DEC @@ -1197,12 +1196,10 @@ uint8_t reconstruct_channel_pair(NeAACDecHandle hDecoder, ic_stream *ics1, ic_st if (hDecoder->object_type != SSR) { #endif - ifilter_bank(hDecoder->fb, ics1->window_sequence, ics1->window_shape, - hDecoder->window_shape_prev[cpe->channel], spec_coef1, + ifilter_bank(ics1->window_sequence, spec_coef1, hDecoder->time_out[cpe->channel], hDecoder->fb_intermed[cpe->channel], hDecoder->object_type, hDecoder->frameLength); - ifilter_bank(hDecoder->fb, ics2->window_sequence, ics2->window_shape, - hDecoder->window_shape_prev[cpe->paired_channel], spec_coef2, + ifilter_bank(ics2->window_sequence,spec_coef2, hDecoder->time_out[cpe->paired_channel], hDecoder->fb_intermed[cpe->paired_channel], hDecoder->object_type, hDecoder->frameLength); #ifdef SSR_DEC diff --git a/apps/codecs/libfaad/structs.h b/apps/codecs/libfaad/structs.h index 9fa2029e1d..05a2b52280 100644 --- a/apps/codecs/libfaad/structs.h +++ b/apps/codecs/libfaad/structs.h @@ -32,7 +32,7 @@ extern "C" { #endif -#include "cfft.h" +//#include "cfft.h" #ifdef SBR_DEC #include "sbr_dec.h" #endif @@ -53,7 +53,7 @@ typedef struct { typedef struct { uint16_t N; - cfft_info *cfft; + //cfft_info *cfft; complex_t *sincos; #ifdef PROFILE int64_t cycles; diff --git a/apps/codecs/libwma/SOURCES b/apps/codecs/libwma/SOURCES index 213e1da12e..967577d0db 100644 --- a/apps/codecs/libwma/SOURCES +++ b/apps/codecs/libwma/SOURCES @@ -1,7 +1,3 @@ wmadeci.c wmafixed.c bitstream.c -mdct2.c -#ifdef CPU_ARM -mdct_arm.S -#endif \ No newline at end of file diff --git a/apps/codecs/libwma/asm_arm.h b/apps/codecs/libwma/asm_arm.h deleted file mode 100644 index e0ab3e7e20..0000000000 --- a/apps/codecs/libwma/asm_arm.h +++ /dev/null @@ -1,343 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * - * * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: arm7 and later wide math functions - - ********************************************************************/ -#ifdef CPU_ARM - -#if !defined(_V_WIDE_MATH) && !defined(_LOW_ACCURACY_) -#define _V_WIDE_MATH - -static inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { - int lo,hi; - asm volatile("smull\t%0, %1, %2, %3" - : "=&r"(lo),"=&r"(hi) - : "%r"(x),"r"(y) - : "cc"); - return(hi); -} - -static inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) { - return MULT32(x,y)<<1; -} - -static inline ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) { - int lo,hi; - asm volatile("smull %0, %1, %2, %3\n\t" - "movs %0, %0, lsr #15\n\t" - "adc %1, %0, %1, lsl #17\n\t" - : "=&r"(lo),"=&r"(hi) - : "%r"(x),"r"(y) - : "cc"); - return(hi); -} - -#define MB() asm volatile ("" : : : "memory") - -#define XPROD32(a, b, t, v, x, y) \ -{ \ - long l; \ - asm( "smull %0, %1, %4, %6\n\t" \ - "smlal %0, %1, %5, %7\n\t" \ - "rsb %3, %4, #0\n\t" \ - "smull %0, %2, %5, %6\n\t" \ - "smlal %0, %2, %3, %7" \ - : "=&r" (l), "=&r" (x), "=&r" (y), "=r" ((a)) \ - : "3" ((a)), "r" ((b)), "r" ((t)), "r" ((v)) \ - : "cc" ); \ -} - -static inline void XPROD31(ogg_int32_t a, ogg_int32_t b, - ogg_int32_t t, ogg_int32_t v, - ogg_int32_t *x, ogg_int32_t *y) -{ - int x1, y1, l; - asm( "smull %0, %1, %4, %6\n\t" - "smlal %0, %1, %5, %7\n\t" - "rsb %3, %4, #0\n\t" - "smull %0, %2, %5, %6\n\t" - "smlal %0, %2, %3, %7" - : "=&r" (l), "=&r" (x1), "=&r" (y1), "=r" (a) - : "3" (a), "r" (b), "r" (t), "r" (v) - : "cc" ); - *x = x1 << 1; - MB(); - *y = y1 << 1; -} - -static inline void XNPROD31(ogg_int32_t a, ogg_int32_t b, - ogg_int32_t t, ogg_int32_t v, - ogg_int32_t *x, ogg_int32_t *y) -{ - int x1, y1, l; - asm( "rsb %2, %4, #0\n\t" - "smull %0, %1, %3, %5\n\t" - "smlal %0, %1, %2, %6\n\t" - "smull %0, %2, %4, %5\n\t" - "smlal %0, %2, %3, %6" - : "=&r" (l), "=&r" (x1), "=&r" (y1) - : "r" (a), "r" (b), "r" (t), "r" (v) - : "cc" ); - *x = x1 << 1; - MB(); - *y = y1 << 1; -} - -#ifndef _V_VECT_OPS -#define _V_VECT_OPS - -/* asm versions of vector operations for block.c, window.c */ -static inline -void vect_add(ogg_int32_t *x, ogg_int32_t *y, int n) -{ - while (n>=4) { - asm volatile ("ldmia %[x], {r0, r1, r2, r3};" - "ldmia %[y]!, {r4, r5, r6, r7};" - "add r0, r0, r4;" - "add r1, r1, r5;" - "add r2, r2, r6;" - "add r3, r3, r7;" - "stmia %[x]!, {r0, r1, r2, r3};" - : [x] "+r" (x), [y] "+r" (y) - : : "r0", "r1", "r2", "r3", - "r4", "r5", "r6", "r7", - "memory"); - n -= 4; - } - /* add final elements */ - while (n>0) { - *x++ += *y++; - n--; - } -} - -static inline -void vect_copy(ogg_int32_t *x, ogg_int32_t *y, int n) -{ - while (n>=4) { - asm volatile ("ldmia %[y]!, {r0, r1, r2, r3};" - "stmia %[x]!, {r0, r1, r2, r3};" - : [x] "+r" (x), [y] "+r" (y) - : : "r0", "r1", "r2", "r3", - "memory"); - n -= 4; - } - /* copy final elements */ - while (n>0) { - *x++ = *y++; - n--; - } -} - -static inline -void vect_mult_fw(ogg_int32_t *data, LOOKUP_T *window, int n) -{ - while (n>=4) { - asm volatile ("ldmia %[d], {r0, r1, r2, r3};" - "ldmia %[w]!, {r4, r5, r6, r7};" - "smull r8, r9, r0, r4;" - "mov r0, r9, lsl #1;" - "smull r8, r9, r1, r5;" - "mov r1, r9, lsl #1;" - "smull r8, r9, r2, r6;" - "mov r2, r9, lsl #1;" - "smull r8, r9, r3, r7;" - "mov r3, r9, lsl #1;" - "stmia %[d]!, {r0, r1, r2, r3};" - : [d] "+r" (data), [w] "+r" (window) - : : "r0", "r1", "r2", "r3", - "r4", "r5", "r6", "r7", "r8", "r9", - "memory", "cc"); - n -= 4; - } - while(n>0) { - *data = MULT31(*data, *window); - data++; - window++; - n--; - } -} - -static inline -void vect_mult_bw(ogg_int32_t *data, LOOKUP_T *window, int n) -{ - while (n>=4) { - asm volatile ("ldmia %[d], {r0, r1, r2, r3};" - "ldmda %[w]!, {r4, r5, r6, r7};" - "smull r8, r9, r0, r7;" - "mov r0, r9, lsl #1;" - "smull r8, r9, r1, r6;" - "mov r1, r9, lsl #1;" - "smull r8, r9, r2, r5;" - "mov r2, r9, lsl #1;" - "smull r8, r9, r3, r4;" - "mov r3, r9, lsl #1;" - "stmia %[d]!, {r0, r1, r2, r3};" - : [d] "+r" (data), [w] "+r" (window) - : : "r0", "r1", "r2", "r3", - "r4", "r5", "r6", "r7", "r8", "r9", - "memory", "cc"); - n -= 4; - } - while(n>0) { - *data = MULT31(*data, *window); - data++; - window--; - n--; - } -} - -#endif - -#endif - -#ifndef _V_CLIP_MATH -#define _V_CLIP_MATH - -static inline ogg_int32_t CLIP_TO_15(ogg_int32_t x) { - int tmp; - asm volatile("subs %1, %0, #32768\n\t" - "movpl %0, #0x7f00\n\t" - "orrpl %0, %0, #0xff\n" - "adds %1, %0, #32768\n\t" - "movmi %0, #0x8000" - : "+r"(x),"=r"(tmp) - : - : "cc"); - return(x); -} - -#endif - -#ifndef _V_LSP_MATH_ASM -#define _V_LSP_MATH_ASM - -static inline void lsp_loop_asm(ogg_uint32_t *qip,ogg_uint32_t *pip, - ogg_int32_t *qexpp, - ogg_int32_t *ilsp,ogg_int32_t wi, - ogg_int32_t m){ - - ogg_uint32_t qi=*qip,pi=*pip; - ogg_int32_t qexp=*qexpp; - - asm("mov r0,%3;" - "mov r1,%5,asr#1;" - "add r0,r0,r1,lsl#3;" - "1:" - - "ldmdb r0!,{r1,r3};" - "subs r1,r1,%4;" //ilsp[j]-wi - "rsbmi r1,r1,#0;" //labs(ilsp[j]-wi) - "umull %0,r2,r1,%0;" //qi*=labs(ilsp[j]-wi) - - "subs r1,r3,%4;" //ilsp[j+1]-wi - "rsbmi r1,r1,#0;" //labs(ilsp[j+1]-wi) - "umull %1,r3,r1,%1;" //pi*=labs(ilsp[j+1]-wi) - - "cmn r2,r3;" // shift down 16? - "beq 0f;" - "add %2,%2,#16;" - "mov %0,%0,lsr #16;" - "orr %0,%0,r2,lsl #16;" - "mov %1,%1,lsr #16;" - "orr %1,%1,r3,lsl #16;" - "0:" - "cmp r0,%3;\n" - "bhi 1b;\n" - - // odd filter assymetry - "ands r0,%5,#1;\n" - "beq 2f;\n" - "add r0,%3,%5,lsl#2;\n" - - "ldr r1,[r0,#-4];\n" - "mov r0,#0x4000;\n" - - "subs r1,r1,%4;\n" //ilsp[j]-wi - "rsbmi r1,r1,#0;\n" //labs(ilsp[j]-wi) - "umull %0,r2,r1,%0;\n" //qi*=labs(ilsp[j]-wi) - "umull %1,r3,r0,%1;\n" //pi*=labs(ilsp[j+1]-wi) - - "cmn r2,r3;\n" // shift down 16? - "beq 2f;\n" - "add %2,%2,#16;\n" - "mov %0,%0,lsr #16;\n" - "orr %0,%0,r2,lsl #16;\n" - "mov %1,%1,lsr #16;\n" - "orr %1,%1,r3,lsl #16;\n" - - //qi=(pi>>shift)*labs(ilsp[j]-wi); - //pi=(qi>>shift)*labs(ilsp[j+1]-wi); - //qexp+=shift; - - //} - - /* normalize to max 16 sig figs */ - "2:" - "mov r2,#0;" - "orr r1,%0,%1;" - "tst r1,#0xff000000;" - "addne r2,r2,#8;" - "movne r1,r1,lsr #8;" - "tst r1,#0x00f00000;" - "addne r2,r2,#4;" - "movne r1,r1,lsr #4;" - "tst r1,#0x000c0000;" - "addne r2,r2,#2;" - "movne r1,r1,lsr #2;" - "tst r1,#0x00020000;" - "addne r2,r2,#1;" - "movne r1,r1,lsr #1;" - "tst r1,#0x00010000;" - "addne r2,r2,#1;" - "mov %0,%0,lsr r2;" - "mov %1,%1,lsr r2;" - "add %2,%2,r2;" - - : "+r"(qi),"+r"(pi),"+r"(qexp) - : "r"(ilsp),"r"(wi),"r"(m) - : "r0","r1","r2","r3","cc"); - - *qip=qi; - *pip=pi; - *qexpp=qexp; -} - -static inline void lsp_norm_asm(ogg_uint32_t *qip,ogg_int32_t *qexpp){ - - ogg_uint32_t qi=*qip; - ogg_int32_t qexp=*qexpp; - - asm("tst %0,#0x0000ff00;" - "moveq %0,%0,lsl #8;" - "subeq %1,%1,#8;" - "tst %0,#0x0000f000;" - "moveq %0,%0,lsl #4;" - "subeq %1,%1,#4;" - "tst %0,#0x0000c000;" - "moveq %0,%0,lsl #2;" - "subeq %1,%1,#2;" - "tst %0,#0x00008000;" - "moveq %0,%0,lsl #1;" - "subeq %1,%1,#1;" - : "+r"(qi),"+r"(qexp) - : - : "cc"); - *qip=qi; - *qexpp=qexp; -} - -#endif -#endif - diff --git a/apps/codecs/libwma/asm_mcf5249.h b/apps/codecs/libwma/asm_mcf5249.h deleted file mode 100644 index 6b5c600685..0000000000 --- a/apps/codecs/libwma/asm_mcf5249.h +++ /dev/null @@ -1,327 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * - * Copyright (C) 2005 by Pedro Vasconcelos - * - * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ -/* asm routines for wide math on the MCF5249 */ - -//#include "os_types.h" - -#if defined(CPU_COLDFIRE) - -/* attribute for 16-byte alignment */ -#define LINE_ATTR __attribute__ ((aligned (16))) - -#ifndef _V_WIDE_MATH -#define _V_WIDE_MATH - -#define MB() - -static inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { - - asm volatile ("mac.l %[x], %[y], %%acc0;" /* multiply & shift */ - "movclr.l %%acc0, %[x];" /* move & clear acc */ - "asr.l #1, %[x];" /* no overflow test */ - : [x] "+&d" (x) - : [y] "r" (y) - : "cc"); - return x; -} - -static inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) { - - asm volatile ("mac.l %[x], %[y], %%acc0;" /* multiply */ - "movclr.l %%acc0, %[x];" /* move and clear */ - : [x] "+&r" (x) - : [y] "r" (y) - : "cc"); - return x; -} - - -static inline ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) { - ogg_int32_t r; - - asm volatile ("mac.l %[x], %[y], %%acc0;" /* multiply */ - "mulu.l %[y], %[x];" /* get lower half, avoid emac stall */ - "movclr.l %%acc0, %[r];" /* get higher half */ - "asl.l #8, %[r];" /* hi<<16, plus one free */ - "asl.l #8, %[r];" - "lsr.l #8, %[x];" /* (unsigned)lo >> 15 */ - "lsr.l #7, %[x];" - "or.l %[x], %[r];" /* logical-or results */ - : [r] "=&d" (r), [x] "+d" (x) - : [y] "d" (y) - : "cc"); - return r; -} - - -static inline -void XPROD31(ogg_int32_t a, ogg_int32_t b, - ogg_int32_t t, ogg_int32_t v, - ogg_int32_t *x, ogg_int32_t *y) -{ - asm volatile ("mac.l %[a], %[t], %%acc0;" - "mac.l %[b], %[v], %%acc0;" - "mac.l %[b], %[t], %%acc1;" - "msac.l %[a], %[v], %%acc1;" - "movclr.l %%acc0, %[a];" - "move.l %[a], (%[x]);" - "movclr.l %%acc1, %[a];" - "move.l %[a], (%[y]);" - : [a] "+&r" (a) - : [x] "a" (x), [y] "a" (y), - [b] "r" (b), [t] "r" (t), [v] "r" (v) - : "cc", "memory"); -} - - -static inline -void XNPROD31(ogg_int32_t a, ogg_int32_t b, - ogg_int32_t t, ogg_int32_t v, - ogg_int32_t *x, ogg_int32_t *y) -{ - asm volatile ("mac.l %[a], %[t], %%acc0;" - "msac.l %[b], %[v], %%acc0;" - "mac.l %[b], %[t], %%acc1;" - "mac.l %[a], %[v], %%acc1;" - "movclr.l %%acc0, %[a];" - "move.l %[a], (%[x]);" - "movclr.l %%acc1, %[a];" - "move.l %[a], (%[y]);" - : [a] "+&r" (a) - : [x] "a" (x), [y] "a" (y), - [b] "r" (b), [t] "r" (t), [v] "r" (v) - : "cc", "memory"); -} - - -#if 0 /* canonical Tremor definition */ -#define XPROD32(_a, _b, _t, _v, _x, _y) \ - { (_x)=MULT32(_a,_t)+MULT32(_b,_v); \ - (_y)=MULT32(_b,_t)-MULT32(_a,_v); } -#endif - -/* this could lose the LSB by overflow, but i don't think it'll ever happen. - if anyone think they can hear a bug caused by this, please try the above - version. */ -#define XPROD32(_a, _b, _t, _v, _x, _y) \ - asm volatile ("mac.l %[a], %[t], %%acc0;" \ - "mac.l %[b], %[v], %%acc0;" \ - "mac.l %[b], %[t], %%acc1;" \ - "msac.l %[a], %[v], %%acc1;" \ - "movclr.l %%acc0, %[x];" \ - "asr.l #1, %[x];" \ - "movclr.l %%acc1, %[y];" \ - "asr.l #1, %[y];" \ - : [x] "=&d" (_x), [y] "=&d" (_y) \ - : [a] "r" (_a), [b] "r" (_b), \ - [t] "r" (_t), [v] "r" (_v) \ - : "cc"); - -#ifndef _V_VECT_OPS -#define _V_VECT_OPS - -/* asm versions of vector operations for block.c, window.c */ -/* assumes MAC is initialized & accumulators cleared */ -static inline -void vect_add(ogg_int32_t *x, ogg_int32_t *y, int n) -{ - /* align to 16 bytes */ - while(n>0 && (int)x&16) { - *x++ += *y++; - n--; - } - asm volatile ("bra 1f;" - "0:" /* loop start */ - "movem.l (%[x]), %%d0-%%d3;" /* fetch values */ - "movem.l (%[y]), %%a0-%%a3;" - /* add */ - "add.l %%a0, %%d0;" - "add.l %%a1, %%d1;" - "add.l %%a2, %%d2;" - "add.l %%a3, %%d3;" - /* store and advance */ - "movem.l %%d0-%%d3, (%[x]);" - "lea.l (4*4, %[x]), %[x];" - "lea.l (4*4, %[y]), %[y];" - "subq.l #4, %[n];" /* done 4 elements */ - "1: cmpi.l #4, %[n];" - "bge 0b;" - : [n] "+d" (n), [x] "+a" (x), [y] "+a" (y) - : : "%d0", "%d1", "%d2", "%d3", "%a0", "%a1", "%a2", "%a3", - "cc", "memory"); - /* add final elements */ - while (n>0) { - *x++ += *y++; - n--; - } -} - -static inline -void vect_copy(ogg_int32_t *x, ogg_int32_t *y, int n) -{ - /* align to 16 bytes */ - while(n>0 && (int)x&16) { - *x++ = *y++; - n--; - } - asm volatile ("bra 1f;" - "0:" /* loop start */ - "movem.l (%[y]), %%d0-%%d3;" /* fetch values */ - "movem.l %%d0-%%d3, (%[x]);" /* store */ - "lea.l (4*4, %[x]), %[x];" /* advance */ - "lea.l (4*4, %[y]), %[y];" - "subq.l #4, %[n];" /* done 4 elements */ - "1: cmpi.l #4, %[n];" - "bge 0b;" - : [n] "+d" (n), [x] "+a" (x), [y] "+a" (y) - : : "%d0", "%d1", "%d2", "%d3", "cc", "memory"); - /* copy final elements */ - while (n>0) { - *x++ = *y++; - n--; - } -} - - -static inline -void vect_mult_fw(ogg_int32_t *data, LOOKUP_T *window, int n) -{ - /* ensure data is aligned to 16-bytes */ - while(n>0 && (int)data%16) { - *data = MULT31(*data, *window); - data++; - window++; - n--; - } - asm volatile ("movem.l (%[d]), %%d0-%%d3;" /* loop start */ - "movem.l (%[w]), %%a0-%%a3;" /* pre-fetch registers */ - "lea.l (4*4, %[w]), %[w];" - "bra 1f;" /* jump to loop condition */ - "0:" /* loop body */ - /* multiply and load next window values */ - "mac.l %%d0, %%a0, (%[w])+, %%a0, %%acc0;" - "mac.l %%d1, %%a1, (%[w])+, %%a1, %%acc1;" - "mac.l %%d2, %%a2, (%[w])+, %%a2, %%acc2;" - "mac.l %%d3, %%a3, (%[w])+, %%a3, %%acc3;" - "movclr.l %%acc0, %%d0;" /* get the products */ - "movclr.l %%acc1, %%d1;" - "movclr.l %%acc2, %%d2;" - "movclr.l %%acc3, %%d3;" - /* store and advance */ - "movem.l %%d0-%%d3, (%[d]);" - "lea.l (4*4, %[d]), %[d];" - "movem.l (%[d]), %%d0-%%d3;" - "subq.l #4, %[n];" /* done 4 elements */ - "1: cmpi.l #4, %[n];" - "bge 0b;" - /* multiply final elements */ - "tst.l %[n];" - "beq 1f;" /* n=0 */ - "mac.l %%d0, %%a0, %%acc0;" - "movclr.l %%acc0, %%d0;" - "move.l %%d0, (%[d])+;" - "subq.l #1, %[n];" - "beq 1f;" /* n=1 */ - "mac.l %%d1, %%a1, %%acc0;" - "movclr.l %%acc0, %%d1;" - "move.l %%d1, (%[d])+;" - "subq.l #1, %[n];" - "beq 1f;" /* n=2 */ - /* otherwise n = 3 */ - "mac.l %%d2, %%a2, %%acc0;" - "movclr.l %%acc0, %%d2;" - "move.l %%d2, (%[d])+;" - "1:" - : [n] "+d" (n), [d] "+a" (data), [w] "+a" (window) - : : "%d0", "%d1", "%d2", "%d3", "%a0", "%a1", "%a2", "%a3", - "cc", "memory"); -} - -static inline -void vect_mult_bw(ogg_int32_t *data, LOOKUP_T *window, int n) -{ - /* ensure at least data is aligned to 16-bytes */ - while(n>0 && (int)data%16) { - *data = MULT31(*data, *window); - data++; - window--; - n--; - } - asm volatile ("lea.l (-3*4, %[w]), %[w];" /* loop start */ - "movem.l (%[d]), %%d0-%%d3;" /* pre-fetch registers */ - "movem.l (%[w]), %%a0-%%a3;" - "bra 1f;" /* jump to loop condition */ - "0:" /* loop body */ - /* multiply and load next window value */ - "mac.l %%d0, %%a3, -(%[w]), %%a3, %%acc0;" - "mac.l %%d1, %%a2, -(%[w]), %%a2, %%acc1;" - "mac.l %%d2, %%a1, -(%[w]), %%a1, %%acc2;" - "mac.l %%d3, %%a0, -(%[w]), %%a0, %%acc3;" - "movclr.l %%acc0, %%d0;" /* get the products */ - "movclr.l %%acc1, %%d1;" - "movclr.l %%acc2, %%d2;" - "movclr.l %%acc3, %%d3;" - /* store and advance */ - "movem.l %%d0-%%d3, (%[d]);" - "lea.l (4*4, %[d]), %[d];" - "movem.l (%[d]), %%d0-%%d3;" - "subq.l #4, %[n];" /* done 4 elements */ - "1: cmpi.l #4, %[n];" - "bge 0b;" - /* multiply final elements */ - "tst.l %[n];" - "beq 1f;" /* n=0 */ - "mac.l %%d0, %%a3, %%acc0;" - "movclr.l %%acc0, %%d0;" - "move.l %%d0, (%[d])+;" - "subq.l #1, %[n];" - "beq 1f;" /* n=1 */ - "mac.l %%d1, %%a2, %%acc0;" - "movclr.l %%acc0, %%d1;" - "move.l %%d1, (%[d])+;" - "subq.l #1, %[n];" - "beq 1f;" /* n=2 */ - /* otherwise n = 3 */ - "mac.l %%d2, %%a1, %%acc0;" - "movclr.l %%acc0, %%d2;" - "move.l %%d2, (%[d])+;" - "1:" - : [n] "+d" (n), [d] "+a" (data), [w] "+a" (window) - : : "%d0", "%d1", "%d2", "%d3", "%a0", "%a1", "%a2", "%a3", - "cc", "memory"); -} - -#endif - -#endif - -#ifndef _V_CLIP_MATH -#define _V_CLIP_MATH - -/* this is portable C and simple; why not use this as default? */ -static inline ogg_int32_t CLIP_TO_15(register ogg_int32_t x) { - register ogg_int32_t hi=32767, lo=-32768; - return (x>=hi ? hi : (x<=lo ? lo : x)); -} - -#endif -#else -#define LINE_ATTR -#endif diff --git a/apps/codecs/libwma/fft.c b/apps/codecs/libwma/fft.c deleted file mode 100644 index f19dac0aed..0000000000 --- a/apps/codecs/libwma/fft.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * WMA compatible decoder - * Copyright (c) 2002 The FFmpeg Project. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -//#include "types.h" -#include "fft.h" -#include "wmafixed.h" - -FFTComplex exptab0[512] IBSS_ATTR; - -/* butter fly op */ -#define BF(pre, pim, qre, qim, pre1, pim1, qre1, qim1) \ -{\ - fixed32 ax, ay, bx, by;\ - bx=pre1;\ - by=pim1;\ - ax=qre1;\ - ay=qim1;\ - pre = (bx + ax);\ - pim = (by + ay);\ - qre = (bx - ax);\ - qim = (by - ay);\ -} - - -int fft_calc_unscaled(FFTContext *s, FFTComplex *z) -{ - int ln = s->nbits; - int j, np, np2; - int nblocks, nloops; - register FFTComplex *p, *q; - // FFTComplex *exptab = s->exptab; - int l; - fixed32 tmp_re, tmp_im; - int tabshift = 10-ln; - - np = 1 << ln; - - - /* pass 0 */ - - p=&z[0]; - j=(np >> 1); - do - { - BF(p[0].re, p[0].im, p[1].re, p[1].im, - p[0].re, p[0].im, p[1].re, p[1].im); - p+=2; - } - while (--j != 0); - - /* pass 1 */ - - - p=&z[0]; - j=np >> 2; - if (s->inverse) - { - do - { - BF(p[0].re, p[0].im, p[2].re, p[2].im, - p[0].re, p[0].im, p[2].re, p[2].im); - BF(p[1].re, p[1].im, p[3].re, p[3].im, - p[1].re, p[1].im, -p[3].im, p[3].re); - p+=4; - } - while (--j != 0); - } - else - { - do - { - BF(p[0].re, p[0].im, p[2].re, p[2].im, - p[0].re, p[0].im, p[2].re, p[2].im); - BF(p[1].re, p[1].im, p[3].re, p[3].im, - p[1].re, p[1].im, p[3].im, -p[3].re); - p+=4; - } - while (--j != 0); - } - /* pass 2 .. ln-1 */ - - nblocks = np >> 3; - nloops = 1 << 2; - np2 = np >> 1; - do - { - p = z; - q = z + nloops; - for (j = 0; j < nblocks; ++j) - { - BF(p->re, p->im, q->re, q->im, - p->re, p->im, q->re, q->im); - - p++; - q++; - for(l = nblocks; l < np2; l += nblocks) - { - CMUL(&tmp_re, &tmp_im, exptab0[(l<re, q->im); - //CMUL(&tmp_re, &tmp_im, exptab[l].re, exptab[l].im, q->re, q->im); - BF(p->re, p->im, q->re, q->im, - p->re, p->im, tmp_re, tmp_im); - p++; - q++; - } - - p += nloops; - q += nloops; - } - nblocks = nblocks >> 1; - nloops = nloops << 1; - } - while (nblocks != 0); - return 0; -} - -int fft_init_global(void) -{ - int i, n; - fixed32 c1, s1, s2; - - n=1<<10; - s2 = 1 ? 1 : -1; - for(i=0;i<(n/2);++i) - { - fixed32 ifix = itofix32(i); - fixed32 nfix = itofix32(n); - fixed32 res = fixdiv32(ifix,nfix); - - s1 = fsincos(res<<16, &c1); - - exptab0[i].re = c1; - exptab0[i].im = s1*s2; - } - - return 0; -} - diff --git a/apps/codecs/libwma/fft.h b/apps/codecs/libwma/fft.h deleted file mode 100644 index f3aaf2fcc8..0000000000 --- a/apps/codecs/libwma/fft.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * WMA compatible decoder - * Copyright (c) 2002 The FFmpeg Project. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "types.h" - -typedef fixed32 FFTSample; - -typedef struct FFTComplex -{ - fixed32 re, im; -} -FFTComplex; - -typedef struct FFTContext -{ - int nbits; - int inverse; - uint16_t *revtab; - FFTComplex *exptab; - FFTComplex *exptab1; /* only used by SSE code */ - int (*fft_calc)(struct FFTContext *s, FFTComplex *z); -} -FFTContext; - -int fft_calc_unscaled(FFTContext *s, FFTComplex *z); -int fft_init_global(void); - diff --git a/apps/codecs/libwma/mdct.c b/apps/codecs/libwma/mdct.c deleted file mode 100644 index a764f47eed..0000000000 --- a/apps/codecs/libwma/mdct.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * WMA compatible decoder - * Copyright (c) 2002 The FFmpeg Project. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "wmafixed.h" -#include "mdct.h" - -/*these are the sin and cos rotations used by the MDCT*/ - -/*accessed too infrequently to give much speedup in IRAM*/ - -fixed32 *tcosarray[5], *tsinarray[5]; -fixed32 tcos0[1024], tcos1[512], tcos2[256], tcos3[128], tcos4[64]; -fixed32 tsin0[1024], tsin1[512], tsin2[256], tsin3[128], tsin4[64]; - -uint16_t revtab0[1024]; - -/** - * init MDCT or IMDCT computation. - */ -int ff_mdct_init(MDCTContext *s, int nbits, int inverse) -{ - int n, n4, i; - - memset(s, 0, sizeof(*s)); - n = 1 << nbits; //nbits ranges from 12 to 8 inclusive - s->nbits = nbits; - s->n = n; - n4 = n >> 2; - s->tcos = tcosarray[12-nbits]; - s->tsin = tsinarray[12-nbits]; - for(i=0;i> nbits; - - /*I can't remember why this works, but it seems to agree for ~24 bits, maybe more!*/ - s->tsin[i] = - fsincos(ip<<16, &(s->tcos[i])); - s->tcos[i] *=-1; - } - - (&s->fft)->nbits = nbits-2; - - (&s->fft)->inverse = inverse; - - return 0; - -} - -/** - * Compute inverse MDCT of size N = 2^nbits - * @param output N samples - * @param input N/2 samples - * @param tmp N/2 samples - */ -void ff_imdct_calc(MDCTContext *s, - fixed32 *output, - fixed32 *input) -{ - int k, n8, n4, n2, n, j,scale; - const fixed32 *tcos = s->tcos; - const fixed32 *tsin = s->tsin; - const fixed32 *in1, *in2; - FFTComplex *z1 = (FFTComplex *)output; - FFTComplex *z2 = (FFTComplex *)input; - int revtabshift = 12 - s->nbits; - - n = 1 << s->nbits; - - n2 = n >> 1; - n4 = n >> 2; - n8 = n >> 3; - - - /* pre rotation */ - in1 = input; - in2 = input + n2 - 1; - - for(k = 0; k < n4; k++) - { - j=revtab0[k<fft, z1); - - /* post rotation + reordering */ - - for(k = 0; k < n4; k++) - { - CMUL(&z2[k].re, &z2[k].im, (z1[k].re), (z1[k].im), tcos[k], tsin[k]); - } - - for(k = 0; k < n8; k++) - { - fixed32 r1,r2,r3,r4,r1n,r2n,r3n; - - r1 = z2[n8 + k].im; - r1n = r1 * -1; - r2 = z2[n8-1-k].re; - r2n = r2 * -1; - r3 = z2[k+n8].re; - r3n = r3 * -1; - r4 = z2[n8-k-1].im; - - output[2*k] = r1n; - output[n2-1-2*k] = r1; - - output[2*k+1] = r2; - output[n2-1-2*k-1] = r2n; - - output[n2 + 2*k]= r3n; - output[n-1- 2*k]= r3n; - - output[n2 + 2*k+1]= r4; - output[n-2 - 2 * k] = r4; - } -} - -/* init MDCT */ - -int mdct_init_global(void) -{ - int i,j,m; - - /* although seemingly degenerate, these cannot actually be merged together without - a substantial increase in error which is unjustified by the tiny memory savings*/ - - tcosarray[0] = tcos0; tcosarray[1] = tcos1; tcosarray[2] = tcos2; tcosarray[3] = tcos3;tcosarray[4] = tcos4; - tsinarray[0] = tsin0; tsinarray[1] = tsin1; tsinarray[2] = tsin2; tsinarray[3] = tsin3;tsinarray[4] = tsin4; - - /* init the MDCT bit reverse table here rather then in fft_init */ - - for(i=0;i<1024;i++) /*hard coded to a 2048 bit rotation*/ - { /*smaller sizes can reuse the largest*/ - m=0; - for(j=0;j<10;j++) - { - m |= ((i >> j) & 1) << (10-j-1); - } - - revtab0[i]=m; - } - - fft_init_global(); - - return 0; -} - diff --git a/apps/codecs/libwma/mdct.h b/apps/codecs/libwma/mdct.h deleted file mode 100644 index 57d65ae9a7..0000000000 --- a/apps/codecs/libwma/mdct.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * WMA compatible decoder - * Copyright (c) 2002 The FFmpeg Project. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -//#include "types.h" -#include "fft.h" - -typedef struct MDCTContext -{ - int n; /* size of MDCT (i.e. number of input data * 2) */ - int nbits; /* n = 2^nbits */ - /* pre/post rotation tables */ - fixed32 *tcos; - fixed32 *tsin; - FFTContext fft; -} -MDCTContext; - -int ff_mdct_init(MDCTContext *s, int nbits, int inverse); -void ff_imdct_calc(MDCTContext *s, fixed32 *output, fixed32 *input); -int mdct_init_global(void); - diff --git a/apps/codecs/libwma/mdct2.c b/apps/codecs/libwma/mdct2.c deleted file mode 100644 index c492403b41..0000000000 --- a/apps/codecs/libwma/mdct2.c +++ /dev/null @@ -1,522 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * - * * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: normalized modified discrete cosine transform - power of two length transform only [64 <= n ] - - - Original algorithm adapted long ago from _The use of multirate filter - banks for coding of high quality digital audio_, by T. Sporer, - K. Brandenburg and B. Edler, collection of the European Signal - Processing Conference (EUSIPCO), Amsterdam, June 1992, Vol.1, pp - 211-214 - - The below code implements an algorithm that no longer looks much like - that presented in the paper, but the basic structure remains if you - dig deep enough to see it. - - This module DOES NOT INCLUDE code to generate/apply the window - function. Everybody has their own weird favorite including me... I - happen to like the properties of y=sin(.5PI*sin^2(x)), but others may - vehemently disagree. - - ********************************************************************/ - -/*Tremor IMDCT adapted for use with libwmai*/ - - -#include "mdct2.h" -#include "mdct_lookup.h" -#include - -#if defined(CPU_ARM) && CONFIG_CPU != S3C2440 -/* C code is faster on S3C2440 */ - -extern void mdct_butterfly_32(ogg_int32_t *x); -extern void mdct_butterfly_generic_loop(ogg_int32_t *x1, ogg_int32_t *x2, - LOOKUP_T *T0, int step, - LOOKUP_T *Ttop); - -static inline void mdct_butterfly_generic(ogg_int32_t *x,int points, int step){ - mdct_butterfly_generic_loop(x + points, x + (points>>1), - sincos_lookup0, step, sincos_lookup0+1024); -} - -#else - -/* 8 point butterfly (in place) */ -static inline void mdct_butterfly_8(ogg_int32_t *x){ - register ogg_int32_t r0 = x[4] + x[0]; - register ogg_int32_t r1 = x[4] - x[0]; - register ogg_int32_t r2 = x[5] + x[1]; - register ogg_int32_t r3 = x[5] - x[1]; - register ogg_int32_t r4 = x[6] + x[2]; - register ogg_int32_t r5 = x[6] - x[2]; - register ogg_int32_t r6 = x[7] + x[3]; - register ogg_int32_t r7 = x[7] - x[3]; - - x[0] = r5 + r3; - x[1] = r7 - r1; - x[2] = r5 - r3; - x[3] = r7 + r1; - x[4] = r4 - r0; - x[5] = r6 - r2; - x[6] = r4 + r0; - x[7] = r6 + r2; - MB(); -} - -/* 16 point butterfly (in place, 4 register) */ -static inline void mdct_butterfly_16(ogg_int32_t *x){ - - register ogg_int32_t r0, r1; - - r0 = x[ 0] - x[ 8]; x[ 8] += x[ 0]; - r1 = x[ 1] - x[ 9]; x[ 9] += x[ 1]; - x[ 0] = MULT31((r0 + r1) , cPI2_8); - x[ 1] = MULT31((r1 - r0) , cPI2_8); - MB(); - - r0 = x[10] - x[ 2]; x[10] += x[ 2]; - r1 = x[ 3] - x[11]; x[11] += x[ 3]; - x[ 2] = r1; x[ 3] = r0; - MB(); - - r0 = x[12] - x[ 4]; x[12] += x[ 4]; - r1 = x[13] - x[ 5]; x[13] += x[ 5]; - x[ 4] = MULT31((r0 - r1) , cPI2_8); - x[ 5] = MULT31((r0 + r1) , cPI2_8); - MB(); - - r0 = x[14] - x[ 6]; x[14] += x[ 6]; - r1 = x[15] - x[ 7]; x[15] += x[ 7]; - x[ 6] = r0; x[ 7] = r1; - MB(); - - mdct_butterfly_8(x); - mdct_butterfly_8(x+8); -} - -/* 32 point butterfly (in place, 4 register) */ -static inline void mdct_butterfly_32(ogg_int32_t *x){ - - register ogg_int32_t r0, r1; - - r0 = x[30] - x[14]; x[30] += x[14]; - r1 = x[31] - x[15]; x[31] += x[15]; - x[14] = r0; x[15] = r1; - MB(); - - r0 = x[28] - x[12]; x[28] += x[12]; - r1 = x[29] - x[13]; x[29] += x[13]; - XNPROD31( r0, r1, cPI1_8, cPI3_8, &x[12], &x[13] ); - MB(); - - r0 = x[26] - x[10]; x[26] += x[10]; - r1 = x[27] - x[11]; x[27] += x[11]; - x[10] = MULT31((r0 - r1) , cPI2_8); - x[11] = MULT31((r0 + r1) , cPI2_8); - MB(); - - r0 = x[24] - x[ 8]; x[24] += x[ 8]; - r1 = x[25] - x[ 9]; x[25] += x[ 9]; - XNPROD31( r0, r1, cPI3_8, cPI1_8, &x[ 8], &x[ 9] ); - MB(); - - r0 = x[22] - x[ 6]; x[22] += x[ 6]; - r1 = x[ 7] - x[23]; x[23] += x[ 7]; - x[ 6] = r1; x[ 7] = r0; - MB(); - - r0 = x[ 4] - x[20]; x[20] += x[ 4]; - r1 = x[ 5] - x[21]; x[21] += x[ 5]; - XPROD31 ( r0, r1, cPI3_8, cPI1_8, &x[ 4], &x[ 5] ); - MB(); - - r0 = x[ 2] - x[18]; x[18] += x[ 2]; - r1 = x[ 3] - x[19]; x[19] += x[ 3]; - x[ 2] = MULT31((r1 + r0) , cPI2_8); - x[ 3] = MULT31((r1 - r0) , cPI2_8); - MB(); - - r0 = x[ 0] - x[16]; x[16] += x[ 0]; - r1 = x[ 1] - x[17]; x[17] += x[ 1]; - XPROD31 ( r0, r1, cPI1_8, cPI3_8, &x[ 0], &x[ 1] ); - MB(); - - mdct_butterfly_16(x); - mdct_butterfly_16(x+16); -} - -/* N/stage point generic N stage butterfly (in place, 4 register) */ -void mdct_butterfly_generic(ogg_int32_t *x,int points, int step) - ICODE_ATTR_TREMOR_MDCT; -void mdct_butterfly_generic(ogg_int32_t *x,int points, int step){ - LOOKUP_T *T = sincos_lookup0; - ogg_int32_t *x1 = x + points - 8; - ogg_int32_t *x2 = x + (points>>1) - 8; - register ogg_int32_t r0; - register ogg_int32_t r1; - register ogg_int32_t r2; - register ogg_int32_t r3; - - do{ - r0 = x1[6] - x2[6]; x1[6] += x2[6]; - r1 = x2[7] - x1[7]; x1[7] += x2[7]; - r2 = x1[4] - x2[4]; x1[4] += x2[4]; - r3 = x2[5] - x1[5]; x1[5] += x2[5]; - XPROD31( r1, r0, T[0], T[1], &x2[6], &x2[7] ); T+=step; - XPROD31( r3, r2, T[0], T[1], &x2[4], &x2[5] ); T+=step; - - r0 = x1[2] - x2[2]; x1[2] += x2[2]; - r1 = x2[3] - x1[3]; x1[3] += x2[3]; - r2 = x1[0] - x2[0]; x1[0] += x2[0]; - r3 = x2[1] - x1[1]; x1[1] += x2[1]; - XPROD31( r1, r0, T[0], T[1], &x2[2], &x2[3] ); T+=step; - XPROD31( r3, r2, T[0], T[1], &x2[0], &x2[1] ); T+=step; - - x1-=8; x2-=8; - }while(Tsincos_lookup0); - do{ - r0 = x2[6] - x1[6]; x1[6] += x2[6]; - r1 = x2[7] - x1[7]; x1[7] += x2[7]; - r2 = x2[4] - x1[4]; x1[4] += x2[4]; - r3 = x2[5] - x1[5]; x1[5] += x2[5]; - XPROD31( r0, r1, T[0], T[1], &x2[6], &x2[7] ); T+=step; - XPROD31( r2, r3, T[0], T[1], &x2[4], &x2[5] ); T+=step; - - r0 = x2[2] - x1[2]; x1[2] += x2[2]; - r1 = x2[3] - x1[3]; x1[3] += x2[3]; - r2 = x2[0] - x1[0]; x1[0] += x2[0]; - r3 = x2[1] - x1[1]; x1[1] += x2[1]; - XPROD31( r0, r1, T[0], T[1], &x2[2], &x2[3] ); T+=step; - XPROD31( r2, r3, T[0], T[1], &x2[0], &x2[1] ); T+=step; - - x1-=8; x2-=8; - }while(Tsincos_lookup0); -} - -#endif /* CPU_ARM */ - -static inline void mdct_butterflies(ogg_int32_t *x,int points,int shift) { - - int stages=8-shift; - int i,j; - - for(i=0;--stages>0;i++){ - for(j=0;j<(1<>i)*j,points>>i,4<<(i+shift)); - } - - for(j=0;j>8]|(bitrev[(x&0x0f0)>>4]<<4)|(((int)bitrev[x&0x00f])<<8); -} - -static inline void mdct_bitreverse(ogg_int32_t *x,int n,int step,int shift) { - - int bit = 0; - ogg_int32_t *w0 = x; - ogg_int32_t *w1 = x = w0+(n>>1); - LOOKUP_T *T = (step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1; - LOOKUP_T *Ttop = T+1024; - register ogg_int32_t r2; - - do{ - register ogg_int32_t r3 = bitrev12(bit++); - ogg_int32_t *x0 = x + ((r3 ^ 0xfff)>>shift) -1; - ogg_int32_t *x1 = x + (r3>>shift); - - register ogg_int32_t r0 = x0[0] + x1[0]; - register ogg_int32_t r1 = x1[1] - x0[1]; - - XPROD32( r0, r1, T[1], T[0], r2, r3 ); T+=step; - - w1 -= 4; - - r0 = (x0[1] + x1[1])>>1; - r1 = (x0[0] - x1[0])>>1; - w0[0] = r0 + r2; - w0[1] = r1 + r3; - w1[2] = r0 - r2; - w1[3] = r3 - r1; - - r3 = bitrev12(bit++); - x0 = x + ((r3 ^ 0xfff)>>shift) -1; - x1 = x + (r3>>shift); - - r0 = x0[0] + x1[0]; - r1 = x1[1] - x0[1]; - - XPROD32( r0, r1, T[1], T[0], r2, r3 ); T+=step; - - r0 = (x0[1] + x1[1])>>1; - r1 = (x0[0] - x1[0])>>1; - w0[2] = r0 + r2; - w0[3] = r1 + r3; - w1[0] = r0 - r2; - w1[1] = r3 - r1; - - w0 += 4; - }while(T>shift) -1; - ogg_int32_t *x1 = x + (r3>>shift); - - register ogg_int32_t r0 = x0[0] + x1[0]; - register ogg_int32_t r1 = x1[1] - x0[1]; - - T-=step; XPROD32( r0, r1, T[0], T[1], r2, r3 ); - - w1 -= 4; - - r0 = (x0[1] + x1[1])>>1; - r1 = (x0[0] - x1[0])>>1; - w0[0] = r0 + r2; - w0[1] = r1 + r3; - w1[2] = r0 - r2; - w1[3] = r3 - r1; - - r3 = bitrev12(bit++); - x0 = x + ((r3 ^ 0xfff)>>shift) -1; - x1 = x + (r3>>shift); - - r0 = x0[0] + x1[0]; - r1 = x1[1] - x0[1]; - - T-=step; XPROD32( r0, r1, T[0], T[1], r2, r3 ); - - r0 = (x0[1] + x1[1])>>1; - r1 = (x0[0] - x1[0])>>1; - w0[2] = r0 + r2; - w0[3] = r1 + r3; - w1[0] = r0 - r2; - w1[1] = r3 - r1; - - w0 += 4; - }while(w0>1; - int n4=n>>2; - ogg_int32_t *iX; - ogg_int32_t *oX; - LOOKUP_T *T; - LOOKUP_T *V; - int shift; - int step; - for (shift=6;!(n&(1<=in+n4); - do{ - oX-=4; - XPROD31( iX[4], iX[6], T[1], T[0], &oX[2], &oX[3] ); T-=step; - XPROD31( iX[0], iX[2], T[1], T[0], &oX[0], &oX[1] ); T-=step; - iX-=8; - }while(iX>=in); - - iX = in+n2-8; - oX = out+n2+n4; - T = sincos_lookup0; - - do{ - T+=step; XNPROD31( iX[6], iX[4], T[0], T[1], &oX[0], &oX[1] ); - T+=step; XNPROD31( iX[2], iX[0], T[0], T[1], &oX[2], &oX[3] ); - iX-=8; - oX+=4; - }while(iX>=in+n4); - do{ - T-=step; XNPROD31( iX[6], iX[4], T[1], T[0], &oX[0], &oX[1] ); - T-=step; XNPROD31( iX[2], iX[0], T[1], T[0], &oX[2], &oX[3] ); - iX-=8; - oX+=4; - }while(iX>=in); - - mdct_butterflies(out+n2,n2,shift); - mdct_bitreverse(out,n,step,shift); - /* rotate + window */ - - step>>=2; - { - ogg_int32_t *oX1=out+n2+n4; - ogg_int32_t *oX2=out+n2+n4; - ogg_int32_t *iX =out; - - switch(step) { - default: { - T=(step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1; - do{ - oX1-=4; - XPROD31( iX[0], -iX[1], T[0], T[1], &oX1[3], &oX2[0] ); T+=step; - XPROD31( iX[2], -iX[3], T[0], T[1], &oX1[2], &oX2[1] ); T+=step; - XPROD31( iX[4], -iX[5], T[0], T[1], &oX1[1], &oX2[2] ); T+=step; - XPROD31( iX[6], -iX[7], T[0], T[1], &oX1[0], &oX2[3] ); T+=step; - oX2+=4; - iX+=8; - }while(iX>1; - t1 = (*T++)>>1; - do{ - oX1-=4; - - t0 += (v0 = (*V++)>>1); - t1 += (v1 = (*V++)>>1); - XPROD31( iX[0], -iX[1], t0, t1, &oX1[3], &oX2[0] ); - v0 += (t0 = (*T++)>>1); - v1 += (t1 = (*T++)>>1); - XPROD31( iX[2], -iX[3], v0, v1, &oX1[2], &oX2[1] ); - t0 += (v0 = (*V++)>>1); - t1 += (v1 = (*V++)>>1); - XPROD31( iX[4], -iX[5], t0, t1, &oX1[1], &oX2[2] ); - v0 += (t0 = (*T++)>>1); - v1 += (t1 = (*T++)>>1); - XPROD31( iX[6], -iX[7], v0, v1, &oX1[0], &oX2[3] ); - - oX2+=4; - iX+=8; - }while(iX>2); - t1 += (q1 = (v1-t1)>>2); - XPROD31( iX[0], -iX[1], t0, t1, &oX1[3], &oX2[0] ); - t0 = v0-q0; - t1 = v1-q1; - XPROD31( iX[2], -iX[3], t0, t1, &oX1[2], &oX2[1] ); - - t0 = *T++; - t1 = *T++; - v0 += (q0 = (t0-v0)>>2); - v1 += (q1 = (t1-v1)>>2); - XPROD31( iX[4], -iX[5], v0, v1, &oX1[1], &oX2[2] ); - v0 = t0-q0; - v1 = t1-q1; - XPROD31( iX[6], -iX[7], v0, v1, &oX1[0], &oX2[3] ); - - oX2+=4; - iX+=8; - }while(iXoX2); - } -} diff --git a/apps/codecs/libwma/mdct2.h b/apps/codecs/libwma/mdct2.h deleted file mode 100644 index f062f48a72..0000000000 --- a/apps/codecs/libwma/mdct2.h +++ /dev/null @@ -1,81 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * - * * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: modified discrete cosine transform prototypes - - ********************************************************************/ - -#ifndef _OGG_mdct_H_ -#define _OGG_mdct_H_ - -typedef short ogg_int16_t; -typedef int ogg_int32_t; -typedef unsigned int ogg_uint32_t; -typedef long long ogg_int64_t; - - -#ifdef _LOW_ACCURACY_ -# define X(n) (((((n)>>22)+1)>>1) - ((((n)>>22)+1)>>9)) -# define LOOKUP_T const unsigned char -#else -# define X(n) (n) -# define LOOKUP_T const ogg_int32_t -#endif - -#include -#include "asm_arm.h" -#include "asm_mcf5249.h" -#include "misc.h" - -#ifndef ICONST_ATTR_TREMOR_WINDOW -#define ICONST_ATTR_TREMOR_WINDOW ICONST_ATTR -#endif - -#ifndef ICODE_ATTR_TREMOR_MDCT -#define ICODE_ATTR_TREMOR_MDCT ICODE_ATTR -#endif - -#ifndef ICODE_ATTR_TREMOR_NOT_MDCT -#define ICODE_ATTR_TREMOR_NOT_MDCT ICODE_ATTR -#endif - - -#define DATA_TYPE ogg_int32_t -#define REG_TYPE register ogg_int32_t - -#ifdef _LOW_ACCURACY_ -#define cPI3_8 (0x0062) -#define cPI2_8 (0x00b5) -#define cPI1_8 (0x00ed) -#else -#define cPI3_8 (0x30fbc54d) -#define cPI2_8 (0x5a82799a) -#define cPI1_8 (0x7641af3d) -#endif - - -extern void mdct_backward(int n, ogg_int32_t *in, DATA_TYPE *out); - -#endif - - - - - - - - - - - - diff --git a/apps/codecs/libwma/mdct_arm.S b/apps/codecs/libwma/mdct_arm.S deleted file mode 100644 index f262951ea8..0000000000 --- a/apps/codecs/libwma/mdct_arm.S +++ /dev/null @@ -1,429 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2007 by Tomasz Malesinski - * - * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include "config.h" -/* Codecs should not normally do this, but we need to check a macro, and - * codecs.h would confuse the assembler. */ - -#define cPI3_8 (0x30fbc54d) -#define cPI2_8 (0x5a82799a) -#define cPI1_8 (0x7641af3d) - -#ifdef USE_IRAM - .section .icode,"ax",%progbits -#else - .text -#endif - .align - - .global mdct_butterfly_32 - .global mdct_butterfly_generic_loop - -mdct_butterfly_8: - add r9, r5, r1 @ x4 + x0 - sub r5, r5, r1 @ x4 - x0 - add r7, r6, r2 @ x5 + x1 - sub r6, r6, r2 @ x5 - x1 - add r8, r10, r3 @ x6 + x2 - sub r10, r10, r3 @ x6 - x2 - add r12, r11, r4 @ x7 + x3 - sub r11, r11, r4 @ x7 - x3 - - add r1, r10, r6 @ y0 = (x6 - x2) + (x5 - x1) - sub r2, r11, r5 @ y1 = (x7 - x3) - (x4 - x0) - sub r3, r10, r6 @ y2 = (x6 - x2) - (x5 - x1) - add r4, r11, r5 @ y3 = (x7 - x3) + (x4 - x0) - sub r5, r8, r9 @ y4 = (x6 + x2) - (x4 + x0) - sub r6, r12, r7 @ y5 = (x7 + x3) - (x5 + x1) - add r10, r8, r9 @ y6 = (x6 + x2) + (x4 + x0) - add r11, r12, r7 @ y7 = (x7 + x3) + (x5 + x1) - stmia r0, {r1, r2, r3, r4, r5, r6, r10, r11} - - mov pc, lr - -mdct_butterfly_16: - str lr, [sp, #-4]! - add r1, r0, #8*4 - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y8 = x8 + x0 - rsb r2, r6, r2, asl #1 @ x0 - x8 - add r7, r7, r3 @ y9 = x9 + x1 - rsb r3, r7, r3, asl #1 @ x1 - x9 - add r8, r8, r4 @ y10 = x10 + x2 - sub r11, r8, r4, asl #1 @ x10 - x2 - add r9, r9, r5 @ y11 = x11 + x3 - rsb r10, r9, r5, asl #1 @ x3 - x11 - - stmia r1!, {r6, r7, r8, r9} - - add r2, r2, r3 @ (x0 - x8) + (x1 - x9) - rsb r3, r2, r3, asl #1 @ (x1 - x9) - (x0 - x8) - - ldr r12, =cPI2_8 - smull r8, r5, r2, r12 - mov r5, r5, asl #1 - smull r8, r6, r3, r12 - mov r6, r6, asl #1 - - stmia r0!, {r5, r6, r10, r11} - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y12 = x12 + x4 - sub r2, r6, r2, asl #1 @ x12 - x4 - add r7, r7, r3 @ y13 = x13 + x5 - sub r3, r7, r3, asl #1 @ x13 - x5 - add r8, r8, r4 @ y10 = x14 + x6 - sub r10, r8, r4, asl #1 @ x14 - x6 - add r9, r9, r5 @ y11 = x15 + x7 - sub r11, r9, r5, asl #1 @ x15 - x7 - - stmia r1, {r6, r7, r8, r9} - - sub r2, r2, r3 @ (x12 - x4) - (x13 - x5) - add r3, r2, r3, asl #1 @ (x12 - x4) + (x13 - x5) - - smull r8, r5, r2, r12 - mov r5, r5, asl #1 - smull r8, r6, r3, r12 - mov r6, r6, asl #1 - @ no stmia here, r5, r6, r10, r11 are passed to mdct_butterfly_8 - - sub r0, r0, #4*4 - ldmia r0, {r1, r2, r3, r4} - bl mdct_butterfly_8 - add r0, r0, #8*4 - ldmia r0, {r1, r2, r3, r4, r5, r6, r10, r11} - bl mdct_butterfly_8 - - ldr pc, [sp], #4 - -mdct_butterfly_32: - stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} - - add r1, r0, #16*4 - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y16 = x16 + x0 - rsb r2, r6, r2, asl #1 @ x0 - x16 - add r7, r7, r3 @ y17 = x17 + x1 - rsb r3, r7, r3, asl #1 @ x1 - x17 - add r8, r8, r4 @ y18 = x18 + x2 - rsb r4, r8, r4, asl #1 @ x2 - x18 - add r9, r9, r5 @ y19 = x19 + x3 - rsb r5, r9, r5, asl #1 @ x3 - x19 - - stmia r1!, {r6, r7, r8, r9} - - ldr r12, =cPI1_8 - ldr lr, =cPI3_8 - smull r10, r6, r2, r12 - smlal r10, r6, r3, lr - rsb r2, r2, #0 - smull r10, r7, r3, r12 - smlal r10, r7, r2, lr - mov r6, r6, asl #1 - mov r7, r7, asl #1 - - add r4, r4, r5 @ (x3 - x19) + (x2 - x18) - rsb r5, r4, r5, asl #1 @ (x3 - x19) - (x2 - x18) - - ldr r11, =cPI2_8 - smull r10, r8, r4, r11 - mov r8, r8, asl #1 - smull r10, r9, r5, r11 - mov r9, r9, asl #1 - - stmia r0!, {r6, r7, r8, r9} - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y20 = x20 + x4 - rsb r2, r6, r2, asl #1 @ x4 - x20 - add r7, r7, r3 @ y21 = x21 + x5 - rsb r3, r7, r3, asl #1 @ x5 - x21 - add r8, r8, r4 @ y22 = x22 + x6 - sub r4, r8, r4, asl #1 @ x22 - x6 - add r9, r9, r5 @ y23 = x23 + x7 - rsb r5, r9, r5, asl #1 @ x7 - x23 - - stmia r1!, {r6, r7, r8, r9} - - smull r10, r6, r2, lr - smlal r10, r6, r3, r12 - rsb r2, r2, #0 - smull r10, r7, r3, lr - smlal r10, r7, r2, r12 - mov r6, r6, asl #1 - mov r7, r7, asl #1 - - mov r8, r5 - mov r9, r4 - stmia r0!, {r6, r7, r8, r9} - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y24 = x24 + x8 - sub r2, r6, r2, asl #1 @ x24 - x8 - add r7, r7, r3 @ y25 = x25 + x9 - sub r3, r7, r3, asl #1 @ x25 - x9 - add r8, r8, r4 @ y26 = x26 + x10 - sub r4, r8, r4, asl #1 @ x26 - x10 - add r9, r9, r5 @ y27 = x27 + x11 - sub r5, r9, r5, asl #1 @ x27 - x11 - - stmia r1!, {r6, r7, r8, r9} - - smull r10, r7, r2, r12 - smlal r10, r7, r3, lr - rsb r3, r3, #0 - smull r10, r6, r3, r12 - smlal r10, r6, r2, lr - mov r6, r6, asl #1 - mov r7, r7, asl #1 - - sub r4, r4, r5 @ (x26 - x10) - (x27 - x11) - add r5, r4, r5, asl #1 @ (x26 - x10) + (x27 - x11) - - ldr r11, =cPI2_8 - smull r10, r8, r4, r11 - mov r8, r8, asl #1 - smull r10, r9, r5, r11 - mov r9, r9, asl #1 - - stmia r0!, {r6, r7, r8, r9} - - ldmia r0, {r2, r3, r4, r5} - ldmia r1, {r6, r7, r8, r9} - add r6, r6, r2 @ y28 = x28 + x12 - sub r2, r6, r2, asl #1 @ x28 - x12 - add r7, r7, r3 @ y29 = x29 + x13 - sub r3, r7, r3, asl #1 @ x29 - x13 - add r8, r8, r4 @ y30 = x30 + x14 - sub r4, r8, r4, asl #1 @ x30 - x14 - add r9, r9, r5 @ y31 = x31 + x15 - sub r5, r9, r5, asl #1 @ x31 - x15 - - stmia r1, {r6, r7, r8, r9} - - smull r10, r7, r2, lr - smlal r10, r7, r3, r12 - rsb r3, r3, #0 - smull r10, r6, r3, lr - smlal r10, r6, r2, r12 - mov r6, r6, asl #1 - mov r7, r7, asl #1 - - mov r8, r4 - mov r9, r5 - stmia r0, {r6, r7, r8, r9} - - sub r0, r0, #12*4 - str r0, [sp, #-4]! - bl mdct_butterfly_16 - - ldr r0, [sp], #4 - add r0, r0, #16*4 - bl mdct_butterfly_16 - - ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, pc} - - @ mdct_butterfly_generic_loop(x1, x2, T0, step, Ttop) -mdct_butterfly_generic_loop: - stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} - str r2, [sp, #-4] - ldr r4, [sp, #40] -1: - ldmdb r0, {r6, r7, r8, r9} - ldmdb r1, {r10, r11, r12, r14} - - add r6, r6, r10 - sub r10, r6, r10, asl #1 - add r7, r7, r11 - rsb r11, r7, r11, asl #1 - add r8, r8, r12 - sub r12, r8, r12, asl #1 - add r9, r9, r14 - rsb r14, r9, r14, asl #1 - - stmdb r0!, {r6, r7, r8, r9} - - ldmia r2, {r6, r7} - smull r5, r8, r14, r6 - smlal r5, r8, r12, r7 - rsb r14, r14, #0 - smull r5, r9, r12, r6 - smlal r5, r9, r14, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - add r2, r2, r3, asl #2 - - ldmia r2, {r6, r7} - smull r5, r8, r11, r6 - smlal r5, r8, r10, r7 - rsb r11, r11, #0 - smull r5, r9, r10, r6 - smlal r5, r9, r11, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - add r2, r2, r3, asl #2 - - cmp r2, r4 - blo 1b - - ldr r4, [sp, #-4] -1: - ldmdb r0, {r6, r7, r8, r9} - ldmdb r1, {r10, r11, r12, r14} - - add r6, r6, r10 - sub r10, r6, r10, asl #1 - add r7, r7, r11 - sub r11, r7, r11, asl #1 - add r8, r8, r12 - sub r12, r8, r12, asl #1 - add r9, r9, r14 - sub r14, r9, r14, asl #1 - - stmdb r0!, {r6, r7, r8, r9} - - ldmia r2, {r6, r7} - smull r5, r9, r14, r6 - smlal r5, r9, r12, r7 - rsb r14, r14, #0 - smull r5, r8, r12, r6 - smlal r5, r8, r14, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - sub r2, r2, r3, asl #2 - - ldmia r2, {r6, r7} - smull r5, r9, r11, r6 - smlal r5, r9, r10, r7 - rsb r11, r11, #0 - smull r5, r8, r10, r6 - smlal r5, r8, r11, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - sub r2, r2, r3, asl #2 - - cmp r2, r4 - bhi 1b - - ldr r4, [sp, #40] -1: - ldmdb r0, {r6, r7, r8, r9} - ldmdb r1, {r10, r11, r12, r14} - - add r6, r6, r10 - rsb r10, r6, r10, asl #1 - add r7, r7, r11 - rsb r11, r7, r11, asl #1 - add r8, r8, r12 - rsb r12, r8, r12, asl #1 - add r9, r9, r14 - rsb r14, r9, r14, asl #1 - - stmdb r0!, {r6, r7, r8, r9} - - ldmia r2, {r6, r7} - smull r5, r8, r12, r6 - smlal r5, r8, r14, r7 - rsb r12, r12, #0 - smull r5, r9, r14, r6 - smlal r5, r9, r12, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - add r2, r2, r3, asl #2 - - ldmia r2, {r6, r7} - smull r5, r8, r10, r6 - smlal r5, r8, r11, r7 - rsb r10, r10, #0 - smull r5, r9, r11, r6 - smlal r5, r9, r10, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - add r2, r2, r3, asl #2 - - cmp r2, r4 - blo 1b - - ldr r4, [sp, #-4] -1: - ldmdb r0, {r6, r7, r8, r9} - ldmdb r1, {r10, r11, r12, r14} - - add r6, r6, r10 - sub r10, r6, r10, asl #1 - add r7, r7, r11 - rsb r11, r7, r11, asl #1 - add r8, r8, r12 - sub r12, r8, r12, asl #1 - add r9, r9, r14 - rsb r14, r9, r14, asl #1 - - stmdb r0!, {r6, r7, r8, r9} - - ldmia r2, {r6, r7} - smull r5, r9, r12, r6 - smlal r5, r9, r14, r7 - rsb r12, r12, #0 - smull r5, r8, r14, r6 - smlal r5, r8, r12, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - sub r2, r2, r3, asl #2 - - ldmia r2, {r6, r7} - smull r5, r9, r10, r6 - smlal r5, r9, r11, r7 - rsb r10, r10, #0 - smull r5, r8, r11, r6 - smlal r5, r8, r10, r7 - - mov r8, r8, asl #1 - mov r9, r9, asl #1 - stmdb r1!, {r8, r9} - sub r2, r2, r3, asl #2 - - cmp r2, r4 - bhi 1b - - ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, pc} - diff --git a/apps/codecs/libwma/mdct_lookup.h b/apps/codecs/libwma/mdct_lookup.h deleted file mode 100644 index 1c568af736..0000000000 --- a/apps/codecs/libwma/mdct_lookup.h +++ /dev/null @@ -1,544 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * - * * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: sin,cos lookup tables - - ********************************************************************/ - - - - - - - -/* {sin(2*i*PI/4096), cos(2*i*PI/4096)}, with i = 0 to 512 */ -static const int sincos_lookup0[1026] ICONST_ATTR = { - X(0x00000000), X(0x7fffffff), X(0x003243f5), X(0x7ffff621), - X(0x006487e3), X(0x7fffd886), X(0x0096cbc1), X(0x7fffa72c), - X(0x00c90f88), X(0x7fff6216), X(0x00fb5330), X(0x7fff0943), - X(0x012d96b1), X(0x7ffe9cb2), X(0x015fda03), X(0x7ffe1c65), - X(0x01921d20), X(0x7ffd885a), X(0x01c45ffe), X(0x7ffce093), - X(0x01f6a297), X(0x7ffc250f), X(0x0228e4e2), X(0x7ffb55ce), - X(0x025b26d7), X(0x7ffa72d1), X(0x028d6870), X(0x7ff97c18), - X(0x02bfa9a4), X(0x7ff871a2), X(0x02f1ea6c), X(0x7ff75370), - X(0x03242abf), X(0x7ff62182), X(0x03566a96), X(0x7ff4dbd9), - X(0x0388a9ea), X(0x7ff38274), X(0x03bae8b2), X(0x7ff21553), - X(0x03ed26e6), X(0x7ff09478), X(0x041f6480), X(0x7feeffe1), - X(0x0451a177), X(0x7fed5791), X(0x0483ddc3), X(0x7feb9b85), - X(0x04b6195d), X(0x7fe9cbc0), X(0x04e8543e), X(0x7fe7e841), - X(0x051a8e5c), X(0x7fe5f108), X(0x054cc7b1), X(0x7fe3e616), - X(0x057f0035), X(0x7fe1c76b), X(0x05b137df), X(0x7fdf9508), - X(0x05e36ea9), X(0x7fdd4eec), X(0x0615a48b), X(0x7fdaf519), - X(0x0647d97c), X(0x7fd8878e), X(0x067a0d76), X(0x7fd6064c), - X(0x06ac406f), X(0x7fd37153), X(0x06de7262), X(0x7fd0c8a3), - X(0x0710a345), X(0x7fce0c3e), X(0x0742d311), X(0x7fcb3c23), - X(0x077501be), X(0x7fc85854), X(0x07a72f45), X(0x7fc560cf), - X(0x07d95b9e), X(0x7fc25596), X(0x080b86c2), X(0x7fbf36aa), - X(0x083db0a7), X(0x7fbc040a), X(0x086fd947), X(0x7fb8bdb8), - X(0x08a2009a), X(0x7fb563b3), X(0x08d42699), X(0x7fb1f5fc), - X(0x09064b3a), X(0x7fae7495), X(0x09386e78), X(0x7faadf7c), - X(0x096a9049), X(0x7fa736b4), X(0x099cb0a7), X(0x7fa37a3c), - X(0x09cecf89), X(0x7f9faa15), X(0x0a00ece8), X(0x7f9bc640), - X(0x0a3308bd), X(0x7f97cebd), X(0x0a6522fe), X(0x7f93c38c), - X(0x0a973ba5), X(0x7f8fa4b0), X(0x0ac952aa), X(0x7f8b7227), - X(0x0afb6805), X(0x7f872bf3), X(0x0b2d7baf), X(0x7f82d214), - X(0x0b5f8d9f), X(0x7f7e648c), X(0x0b919dcf), X(0x7f79e35a), - X(0x0bc3ac35), X(0x7f754e80), X(0x0bf5b8cb), X(0x7f70a5fe), - X(0x0c27c389), X(0x7f6be9d4), X(0x0c59cc68), X(0x7f671a05), - X(0x0c8bd35e), X(0x7f62368f), X(0x0cbdd865), X(0x7f5d3f75), - X(0x0cefdb76), X(0x7f5834b7), X(0x0d21dc87), X(0x7f531655), - X(0x0d53db92), X(0x7f4de451), X(0x0d85d88f), X(0x7f489eaa), - X(0x0db7d376), X(0x7f434563), X(0x0de9cc40), X(0x7f3dd87c), - X(0x0e1bc2e4), X(0x7f3857f6), X(0x0e4db75b), X(0x7f32c3d1), - X(0x0e7fa99e), X(0x7f2d1c0e), X(0x0eb199a4), X(0x7f2760af), - X(0x0ee38766), X(0x7f2191b4), X(0x0f1572dc), X(0x7f1baf1e), - X(0x0f475bff), X(0x7f15b8ee), X(0x0f7942c7), X(0x7f0faf25), - X(0x0fab272b), X(0x7f0991c4), X(0x0fdd0926), X(0x7f0360cb), - X(0x100ee8ad), X(0x7efd1c3c), X(0x1040c5bb), X(0x7ef6c418), - X(0x1072a048), X(0x7ef05860), X(0x10a4784b), X(0x7ee9d914), - X(0x10d64dbd), X(0x7ee34636), X(0x11082096), X(0x7edc9fc6), - X(0x1139f0cf), X(0x7ed5e5c6), X(0x116bbe60), X(0x7ecf1837), - X(0x119d8941), X(0x7ec8371a), X(0x11cf516a), X(0x7ec14270), - X(0x120116d5), X(0x7eba3a39), X(0x1232d979), X(0x7eb31e78), - X(0x1264994e), X(0x7eabef2c), X(0x1296564d), X(0x7ea4ac58), - X(0x12c8106f), X(0x7e9d55fc), X(0x12f9c7aa), X(0x7e95ec1a), - X(0x132b7bf9), X(0x7e8e6eb2), X(0x135d2d53), X(0x7e86ddc6), - X(0x138edbb1), X(0x7e7f3957), X(0x13c0870a), X(0x7e778166), - X(0x13f22f58), X(0x7e6fb5f4), X(0x1423d492), X(0x7e67d703), - X(0x145576b1), X(0x7e5fe493), X(0x148715ae), X(0x7e57dea7), - X(0x14b8b17f), X(0x7e4fc53e), X(0x14ea4a1f), X(0x7e47985b), - X(0x151bdf86), X(0x7e3f57ff), X(0x154d71aa), X(0x7e37042a), - X(0x157f0086), X(0x7e2e9cdf), X(0x15b08c12), X(0x7e26221f), - X(0x15e21445), X(0x7e1d93ea), X(0x16139918), X(0x7e14f242), - X(0x16451a83), X(0x7e0c3d29), X(0x1676987f), X(0x7e0374a0), - X(0x16a81305), X(0x7dfa98a8), X(0x16d98a0c), X(0x7df1a942), - X(0x170afd8d), X(0x7de8a670), X(0x173c6d80), X(0x7ddf9034), - X(0x176dd9de), X(0x7dd6668f), X(0x179f429f), X(0x7dcd2981), - X(0x17d0a7bc), X(0x7dc3d90d), X(0x1802092c), X(0x7dba7534), - X(0x183366e9), X(0x7db0fdf8), X(0x1864c0ea), X(0x7da77359), - X(0x18961728), X(0x7d9dd55a), X(0x18c7699b), X(0x7d9423fc), - X(0x18f8b83c), X(0x7d8a5f40), X(0x192a0304), X(0x7d808728), - X(0x195b49ea), X(0x7d769bb5), X(0x198c8ce7), X(0x7d6c9ce9), - X(0x19bdcbf3), X(0x7d628ac6), X(0x19ef0707), X(0x7d58654d), - X(0x1a203e1b), X(0x7d4e2c7f), X(0x1a517128), X(0x7d43e05e), - X(0x1a82a026), X(0x7d3980ec), X(0x1ab3cb0d), X(0x7d2f0e2b), - X(0x1ae4f1d6), X(0x7d24881b), X(0x1b161479), X(0x7d19eebf), - X(0x1b4732ef), X(0x7d0f4218), X(0x1b784d30), X(0x7d048228), - X(0x1ba96335), X(0x7cf9aef0), X(0x1bda74f6), X(0x7ceec873), - X(0x1c0b826a), X(0x7ce3ceb2), X(0x1c3c8b8c), X(0x7cd8c1ae), - X(0x1c6d9053), X(0x7ccda169), X(0x1c9e90b8), X(0x7cc26de5), - X(0x1ccf8cb3), X(0x7cb72724), X(0x1d00843d), X(0x7cabcd28), - X(0x1d31774d), X(0x7ca05ff1), X(0x1d6265dd), X(0x7c94df83), - X(0x1d934fe5), X(0x7c894bde), X(0x1dc4355e), X(0x7c7da505), - X(0x1df5163f), X(0x7c71eaf9), X(0x1e25f282), X(0x7c661dbc), - X(0x1e56ca1e), X(0x7c5a3d50), X(0x1e879d0d), X(0x7c4e49b7), - X(0x1eb86b46), X(0x7c4242f2), X(0x1ee934c3), X(0x7c362904), - X(0x1f19f97b), X(0x7c29fbee), X(0x1f4ab968), X(0x7c1dbbb3), - X(0x1f7b7481), X(0x7c116853), X(0x1fac2abf), X(0x7c0501d2), - X(0x1fdcdc1b), X(0x7bf88830), X(0x200d888d), X(0x7bebfb70), - X(0x203e300d), X(0x7bdf5b94), X(0x206ed295), X(0x7bd2a89e), - X(0x209f701c), X(0x7bc5e290), X(0x20d0089c), X(0x7bb9096b), - X(0x21009c0c), X(0x7bac1d31), X(0x21312a65), X(0x7b9f1de6), - X(0x2161b3a0), X(0x7b920b89), X(0x219237b5), X(0x7b84e61f), - X(0x21c2b69c), X(0x7b77ada8), X(0x21f3304f), X(0x7b6a6227), - X(0x2223a4c5), X(0x7b5d039e), X(0x225413f8), X(0x7b4f920e), - X(0x22847de0), X(0x7b420d7a), X(0x22b4e274), X(0x7b3475e5), - X(0x22e541af), X(0x7b26cb4f), X(0x23159b88), X(0x7b190dbc), - X(0x2345eff8), X(0x7b0b3d2c), X(0x23763ef7), X(0x7afd59a4), - X(0x23a6887f), X(0x7aef6323), X(0x23d6cc87), X(0x7ae159ae), - X(0x24070b08), X(0x7ad33d45), X(0x243743fa), X(0x7ac50dec), - X(0x24677758), X(0x7ab6cba4), X(0x2497a517), X(0x7aa8766f), - X(0x24c7cd33), X(0x7a9a0e50), X(0x24f7efa2), X(0x7a8b9348), - X(0x25280c5e), X(0x7a7d055b), X(0x2558235f), X(0x7a6e648a), - X(0x2588349d), X(0x7a5fb0d8), X(0x25b84012), X(0x7a50ea47), - X(0x25e845b6), X(0x7a4210d8), X(0x26184581), X(0x7a332490), - X(0x26483f6c), X(0x7a24256f), X(0x26783370), X(0x7a151378), - X(0x26a82186), X(0x7a05eead), X(0x26d809a5), X(0x79f6b711), - X(0x2707ebc7), X(0x79e76ca7), X(0x2737c7e3), X(0x79d80f6f), - X(0x27679df4), X(0x79c89f6e), X(0x27976df1), X(0x79b91ca4), - X(0x27c737d3), X(0x79a98715), X(0x27f6fb92), X(0x7999dec4), - X(0x2826b928), X(0x798a23b1), X(0x2856708d), X(0x797a55e0), - X(0x288621b9), X(0x796a7554), X(0x28b5cca5), X(0x795a820e), - X(0x28e5714b), X(0x794a7c12), X(0x29150fa1), X(0x793a6361), - X(0x2944a7a2), X(0x792a37fe), X(0x29743946), X(0x7919f9ec), - X(0x29a3c485), X(0x7909a92d), X(0x29d34958), X(0x78f945c3), - X(0x2a02c7b8), X(0x78e8cfb2), X(0x2a323f9e), X(0x78d846fb), - X(0x2a61b101), X(0x78c7aba2), X(0x2a911bdc), X(0x78b6fda8), - X(0x2ac08026), X(0x78a63d11), X(0x2aefddd8), X(0x789569df), - X(0x2b1f34eb), X(0x78848414), X(0x2b4e8558), X(0x78738bb3), - X(0x2b7dcf17), X(0x786280bf), X(0x2bad1221), X(0x7851633b), - X(0x2bdc4e6f), X(0x78403329), X(0x2c0b83fa), X(0x782ef08b), - X(0x2c3ab2b9), X(0x781d9b65), X(0x2c69daa6), X(0x780c33b8), - X(0x2c98fbba), X(0x77fab989), X(0x2cc815ee), X(0x77e92cd9), - X(0x2cf72939), X(0x77d78daa), X(0x2d263596), X(0x77c5dc01), - X(0x2d553afc), X(0x77b417df), X(0x2d843964), X(0x77a24148), - X(0x2db330c7), X(0x7790583e), X(0x2de2211e), X(0x777e5cc3), - X(0x2e110a62), X(0x776c4edb), X(0x2e3fec8b), X(0x775a2e89), - X(0x2e6ec792), X(0x7747fbce), X(0x2e9d9b70), X(0x7735b6af), - X(0x2ecc681e), X(0x77235f2d), X(0x2efb2d95), X(0x7710f54c), - X(0x2f29ebcc), X(0x76fe790e), X(0x2f58a2be), X(0x76ebea77), - X(0x2f875262), X(0x76d94989), X(0x2fb5fab2), X(0x76c69647), - X(0x2fe49ba7), X(0x76b3d0b4), X(0x30133539), X(0x76a0f8d2), - X(0x3041c761), X(0x768e0ea6), X(0x30705217), X(0x767b1231), - X(0x309ed556), X(0x76680376), X(0x30cd5115), X(0x7654e279), - X(0x30fbc54d), X(0x7641af3d), X(0x312a31f8), X(0x762e69c4), - X(0x3158970e), X(0x761b1211), X(0x3186f487), X(0x7607a828), - X(0x31b54a5e), X(0x75f42c0b), X(0x31e39889), X(0x75e09dbd), - X(0x3211df04), X(0x75ccfd42), X(0x32401dc6), X(0x75b94a9c), - X(0x326e54c7), X(0x75a585cf), X(0x329c8402), X(0x7591aedd), - X(0x32caab6f), X(0x757dc5ca), X(0x32f8cb07), X(0x7569ca99), - X(0x3326e2c3), X(0x7555bd4c), X(0x3354f29b), X(0x75419de7), - X(0x3382fa88), X(0x752d6c6c), X(0x33b0fa84), X(0x751928e0), - X(0x33def287), X(0x7504d345), X(0x340ce28b), X(0x74f06b9e), - X(0x343aca87), X(0x74dbf1ef), X(0x3468aa76), X(0x74c7663a), - X(0x34968250), X(0x74b2c884), X(0x34c4520d), X(0x749e18cd), - X(0x34f219a8), X(0x7489571c), X(0x351fd918), X(0x74748371), - X(0x354d9057), X(0x745f9dd1), X(0x357b3f5d), X(0x744aa63f), - X(0x35a8e625), X(0x74359cbd), X(0x35d684a6), X(0x74208150), - X(0x36041ad9), X(0x740b53fb), X(0x3631a8b8), X(0x73f614c0), - X(0x365f2e3b), X(0x73e0c3a3), X(0x368cab5c), X(0x73cb60a8), - X(0x36ba2014), X(0x73b5ebd1), X(0x36e78c5b), X(0x73a06522), - X(0x3714f02a), X(0x738acc9e), X(0x37424b7b), X(0x73752249), - X(0x376f9e46), X(0x735f6626), X(0x379ce885), X(0x73499838), - X(0x37ca2a30), X(0x7333b883), X(0x37f76341), X(0x731dc70a), - X(0x382493b0), X(0x7307c3d0), X(0x3851bb77), X(0x72f1aed9), - X(0x387eda8e), X(0x72db8828), X(0x38abf0ef), X(0x72c54fc1), - X(0x38d8fe93), X(0x72af05a7), X(0x39060373), X(0x7298a9dd), - X(0x3932ff87), X(0x72823c67), X(0x395ff2c9), X(0x726bbd48), - X(0x398cdd32), X(0x72552c85), X(0x39b9bebc), X(0x723e8a20), - X(0x39e6975e), X(0x7227d61c), X(0x3a136712), X(0x7211107e), - X(0x3a402dd2), X(0x71fa3949), X(0x3a6ceb96), X(0x71e35080), - X(0x3a99a057), X(0x71cc5626), X(0x3ac64c0f), X(0x71b54a41), - X(0x3af2eeb7), X(0x719e2cd2), X(0x3b1f8848), X(0x7186fdde), - X(0x3b4c18ba), X(0x716fbd68), X(0x3b78a007), X(0x71586b74), - X(0x3ba51e29), X(0x71410805), X(0x3bd19318), X(0x7129931f), - X(0x3bfdfecd), X(0x71120cc5), X(0x3c2a6142), X(0x70fa74fc), - X(0x3c56ba70), X(0x70e2cbc6), X(0x3c830a50), X(0x70cb1128), - X(0x3caf50da), X(0x70b34525), X(0x3cdb8e09), X(0x709b67c0), - X(0x3d07c1d6), X(0x708378ff), X(0x3d33ec39), X(0x706b78e3), - X(0x3d600d2c), X(0x70536771), X(0x3d8c24a8), X(0x703b44ad), - X(0x3db832a6), X(0x7023109a), X(0x3de4371f), X(0x700acb3c), - X(0x3e10320d), X(0x6ff27497), X(0x3e3c2369), X(0x6fda0cae), - X(0x3e680b2c), X(0x6fc19385), X(0x3e93e950), X(0x6fa90921), - X(0x3ebfbdcd), X(0x6f906d84), X(0x3eeb889c), X(0x6f77c0b3), - X(0x3f1749b8), X(0x6f5f02b2), X(0x3f430119), X(0x6f463383), - X(0x3f6eaeb8), X(0x6f2d532c), X(0x3f9a5290), X(0x6f1461b0), - X(0x3fc5ec98), X(0x6efb5f12), X(0x3ff17cca), X(0x6ee24b57), - X(0x401d0321), X(0x6ec92683), X(0x40487f94), X(0x6eaff099), - X(0x4073f21d), X(0x6e96a99d), X(0x409f5ab6), X(0x6e7d5193), - X(0x40cab958), X(0x6e63e87f), X(0x40f60dfb), X(0x6e4a6e66), - X(0x4121589b), X(0x6e30e34a), X(0x414c992f), X(0x6e174730), - X(0x4177cfb1), X(0x6dfd9a1c), X(0x41a2fc1a), X(0x6de3dc11), - X(0x41ce1e65), X(0x6dca0d14), X(0x41f93689), X(0x6db02d29), - X(0x42244481), X(0x6d963c54), X(0x424f4845), X(0x6d7c3a98), - X(0x427a41d0), X(0x6d6227fa), X(0x42a5311b), X(0x6d48047e), - X(0x42d0161e), X(0x6d2dd027), X(0x42faf0d4), X(0x6d138afb), - X(0x4325c135), X(0x6cf934fc), X(0x4350873c), X(0x6cdece2f), - X(0x437b42e1), X(0x6cc45698), X(0x43a5f41e), X(0x6ca9ce3b), - X(0x43d09aed), X(0x6c8f351c), X(0x43fb3746), X(0x6c748b3f), - X(0x4425c923), X(0x6c59d0a9), X(0x4450507e), X(0x6c3f055d), - X(0x447acd50), X(0x6c242960), X(0x44a53f93), X(0x6c093cb6), - X(0x44cfa740), X(0x6bee3f62), X(0x44fa0450), X(0x6bd3316a), - X(0x452456bd), X(0x6bb812d1), X(0x454e9e80), X(0x6b9ce39b), - X(0x4578db93), X(0x6b81a3cd), X(0x45a30df0), X(0x6b66536b), - X(0x45cd358f), X(0x6b4af279), X(0x45f7526b), X(0x6b2f80fb), - X(0x4621647d), X(0x6b13fef5), X(0x464b6bbe), X(0x6af86c6c), - X(0x46756828), X(0x6adcc964), X(0x469f59b4), X(0x6ac115e2), - X(0x46c9405c), X(0x6aa551e9), X(0x46f31c1a), X(0x6a897d7d), - X(0x471cece7), X(0x6a6d98a4), X(0x4746b2bc), X(0x6a51a361), - X(0x47706d93), X(0x6a359db9), X(0x479a1d67), X(0x6a1987b0), - X(0x47c3c22f), X(0x69fd614a), X(0x47ed5be6), X(0x69e12a8c), - X(0x4816ea86), X(0x69c4e37a), X(0x48406e08), X(0x69a88c19), - X(0x4869e665), X(0x698c246c), X(0x48935397), X(0x696fac78), - X(0x48bcb599), X(0x69532442), X(0x48e60c62), X(0x69368bce), - X(0x490f57ee), X(0x6919e320), X(0x49389836), X(0x68fd2a3d), - X(0x4961cd33), X(0x68e06129), X(0x498af6df), X(0x68c387e9), - X(0x49b41533), X(0x68a69e81), X(0x49dd282a), X(0x6889a4f6), - X(0x4a062fbd), X(0x686c9b4b), X(0x4a2f2be6), X(0x684f8186), - X(0x4a581c9e), X(0x683257ab), X(0x4a8101de), X(0x68151dbe), - X(0x4aa9dba2), X(0x67f7d3c5), X(0x4ad2a9e2), X(0x67da79c3), - X(0x4afb6c98), X(0x67bd0fbd), X(0x4b2423be), X(0x679f95b7), - X(0x4b4ccf4d), X(0x67820bb7), X(0x4b756f40), X(0x676471c0), - X(0x4b9e0390), X(0x6746c7d8), X(0x4bc68c36), X(0x67290e02), - X(0x4bef092d), X(0x670b4444), X(0x4c177a6e), X(0x66ed6aa1), - X(0x4c3fdff4), X(0x66cf8120), X(0x4c6839b7), X(0x66b187c3), - X(0x4c9087b1), X(0x66937e91), X(0x4cb8c9dd), X(0x6675658c), - X(0x4ce10034), X(0x66573cbb), X(0x4d092ab0), X(0x66390422), - X(0x4d31494b), X(0x661abbc5), X(0x4d595bfe), X(0x65fc63a9), - X(0x4d8162c4), X(0x65ddfbd3), X(0x4da95d96), X(0x65bf8447), - X(0x4dd14c6e), X(0x65a0fd0b), X(0x4df92f46), X(0x65826622), - X(0x4e210617), X(0x6563bf92), X(0x4e48d0dd), X(0x6545095f), - X(0x4e708f8f), X(0x6526438f), X(0x4e984229), X(0x65076e25), - X(0x4ebfe8a5), X(0x64e88926), X(0x4ee782fb), X(0x64c99498), - X(0x4f0f1126), X(0x64aa907f), X(0x4f369320), X(0x648b7ce0), - X(0x4f5e08e3), X(0x646c59bf), X(0x4f857269), X(0x644d2722), - X(0x4faccfab), X(0x642de50d), X(0x4fd420a4), X(0x640e9386), - X(0x4ffb654d), X(0x63ef3290), X(0x50229da1), X(0x63cfc231), - X(0x5049c999), X(0x63b0426d), X(0x5070e92f), X(0x6390b34a), - X(0x5097fc5e), X(0x637114cc), X(0x50bf031f), X(0x635166f9), - X(0x50e5fd6d), X(0x6331a9d4), X(0x510ceb40), X(0x6311dd64), - X(0x5133cc94), X(0x62f201ac), X(0x515aa162), X(0x62d216b3), - X(0x518169a5), X(0x62b21c7b), X(0x51a82555), X(0x6292130c), - X(0x51ced46e), X(0x6271fa69), X(0x51f576ea), X(0x6251d298), - X(0x521c0cc2), X(0x62319b9d), X(0x524295f0), X(0x6211557e), - X(0x5269126e), X(0x61f1003f), X(0x528f8238), X(0x61d09be5), - X(0x52b5e546), X(0x61b02876), X(0x52dc3b92), X(0x618fa5f7), - X(0x53028518), X(0x616f146c), X(0x5328c1d0), X(0x614e73da), - X(0x534ef1b5), X(0x612dc447), X(0x537514c2), X(0x610d05b7), - X(0x539b2af0), X(0x60ec3830), X(0x53c13439), X(0x60cb5bb7), - X(0x53e73097), X(0x60aa7050), X(0x540d2005), X(0x60897601), - X(0x5433027d), X(0x60686ccf), X(0x5458d7f9), X(0x604754bf), - X(0x547ea073), X(0x60262dd6), X(0x54a45be6), X(0x6004f819), - X(0x54ca0a4b), X(0x5fe3b38d), X(0x54efab9c), X(0x5fc26038), - X(0x55153fd4), X(0x5fa0fe1f), X(0x553ac6ee), X(0x5f7f8d46), - X(0x556040e2), X(0x5f5e0db3), X(0x5585adad), X(0x5f3c7f6b), - X(0x55ab0d46), X(0x5f1ae274), X(0x55d05faa), X(0x5ef936d1), - X(0x55f5a4d2), X(0x5ed77c8a), X(0x561adcb9), X(0x5eb5b3a2), - X(0x56400758), X(0x5e93dc1f), X(0x566524aa), X(0x5e71f606), - X(0x568a34a9), X(0x5e50015d), X(0x56af3750), X(0x5e2dfe29), - X(0x56d42c99), X(0x5e0bec6e), X(0x56f9147e), X(0x5de9cc33), - X(0x571deefa), X(0x5dc79d7c), X(0x5742bc06), X(0x5da5604f), - X(0x57677b9d), X(0x5d8314b1), X(0x578c2dba), X(0x5d60baa7), - X(0x57b0d256), X(0x5d3e5237), X(0x57d5696d), X(0x5d1bdb65), - X(0x57f9f2f8), X(0x5cf95638), X(0x581e6ef1), X(0x5cd6c2b5), - X(0x5842dd54), X(0x5cb420e0), X(0x58673e1b), X(0x5c9170bf), - X(0x588b9140), X(0x5c6eb258), X(0x58afd6bd), X(0x5c4be5b0), - X(0x58d40e8c), X(0x5c290acc), X(0x58f838a9), X(0x5c0621b2), - X(0x591c550e), X(0x5be32a67), X(0x594063b5), X(0x5bc024f0), - X(0x59646498), X(0x5b9d1154), X(0x598857b2), X(0x5b79ef96), - X(0x59ac3cfd), X(0x5b56bfbd), X(0x59d01475), X(0x5b3381ce), - X(0x59f3de12), X(0x5b1035cf), X(0x5a1799d1), X(0x5aecdbc5), - X(0x5a3b47ab), X(0x5ac973b5), X(0x5a5ee79a), X(0x5aa5fda5), - X(0x5a82799a), X(0x5a82799a) - }; - - /* {sin((2*i+1)*PI/4096), cos((2*i+1)*PI/4096)}, with i = 0 to 511 */ -static LOOKUP_T sincos_lookup1[1024] ICONST_ATTR = { - X(0x001921fb), X(0x7ffffd88), X(0x004b65ee), X(0x7fffe9cb), - X(0x007da9d4), X(0x7fffc251), X(0x00afeda8), X(0x7fff8719), - X(0x00e23160), X(0x7fff3824), X(0x011474f6), X(0x7ffed572), - X(0x0146b860), X(0x7ffe5f03), X(0x0178fb99), X(0x7ffdd4d7), - X(0x01ab3e97), X(0x7ffd36ee), X(0x01dd8154), X(0x7ffc8549), - X(0x020fc3c6), X(0x7ffbbfe6), X(0x024205e8), X(0x7ffae6c7), - X(0x027447b0), X(0x7ff9f9ec), X(0x02a68917), X(0x7ff8f954), - X(0x02d8ca16), X(0x7ff7e500), X(0x030b0aa4), X(0x7ff6bcf0), - X(0x033d4abb), X(0x7ff58125), X(0x036f8a51), X(0x7ff4319d), - X(0x03a1c960), X(0x7ff2ce5b), X(0x03d407df), X(0x7ff1575d), - X(0x040645c7), X(0x7fefcca4), X(0x04388310), X(0x7fee2e30), - X(0x046abfb3), X(0x7fec7c02), X(0x049cfba7), X(0x7feab61a), - X(0x04cf36e5), X(0x7fe8dc78), X(0x05017165), X(0x7fe6ef1c), - X(0x0533ab20), X(0x7fe4ee06), X(0x0565e40d), X(0x7fe2d938), - X(0x05981c26), X(0x7fe0b0b1), X(0x05ca5361), X(0x7fde7471), - X(0x05fc89b8), X(0x7fdc247a), X(0x062ebf22), X(0x7fd9c0ca), - X(0x0660f398), X(0x7fd74964), X(0x06932713), X(0x7fd4be46), - X(0x06c5598a), X(0x7fd21f72), X(0x06f78af6), X(0x7fcf6ce8), - X(0x0729bb4e), X(0x7fcca6a7), X(0x075bea8c), X(0x7fc9ccb2), - X(0x078e18a7), X(0x7fc6df08), X(0x07c04598), X(0x7fc3dda9), - X(0x07f27157), X(0x7fc0c896), X(0x08249bdd), X(0x7fbd9fd0), - X(0x0856c520), X(0x7fba6357), X(0x0888ed1b), X(0x7fb7132b), - X(0x08bb13c5), X(0x7fb3af4e), X(0x08ed3916), X(0x7fb037bf), - X(0x091f5d06), X(0x7facac7f), X(0x09517f8f), X(0x7fa90d8e), - X(0x0983a0a7), X(0x7fa55aee), X(0x09b5c048), X(0x7fa1949e), - X(0x09e7de6a), X(0x7f9dbaa0), X(0x0a19fb04), X(0x7f99ccf4), - X(0x0a4c1610), X(0x7f95cb9a), X(0x0a7e2f85), X(0x7f91b694), - X(0x0ab0475c), X(0x7f8d8de1), X(0x0ae25d8d), X(0x7f895182), - X(0x0b147211), X(0x7f850179), X(0x0b4684df), X(0x7f809dc5), - X(0x0b7895f0), X(0x7f7c2668), X(0x0baaa53b), X(0x7f779b62), - X(0x0bdcb2bb), X(0x7f72fcb4), X(0x0c0ebe66), X(0x7f6e4a5e), - X(0x0c40c835), X(0x7f698461), X(0x0c72d020), X(0x7f64aabf), - X(0x0ca4d620), X(0x7f5fbd77), X(0x0cd6da2d), X(0x7f5abc8a), - X(0x0d08dc3f), X(0x7f55a7fa), X(0x0d3adc4e), X(0x7f507fc7), - X(0x0d6cda53), X(0x7f4b43f2), X(0x0d9ed646), X(0x7f45f47b), - X(0x0dd0d01f), X(0x7f409164), X(0x0e02c7d7), X(0x7f3b1aad), - X(0x0e34bd66), X(0x7f359057), X(0x0e66b0c3), X(0x7f2ff263), - X(0x0e98a1e9), X(0x7f2a40d2), X(0x0eca90ce), X(0x7f247ba5), - X(0x0efc7d6b), X(0x7f1ea2dc), X(0x0f2e67b8), X(0x7f18b679), - X(0x0f604faf), X(0x7f12b67c), X(0x0f923546), X(0x7f0ca2e7), - X(0x0fc41876), X(0x7f067bba), X(0x0ff5f938), X(0x7f0040f6), - X(0x1027d784), X(0x7ef9f29d), X(0x1059b352), X(0x7ef390ae), - X(0x108b8c9b), X(0x7eed1b2c), X(0x10bd6356), X(0x7ee69217), - X(0x10ef377d), X(0x7edff570), X(0x11210907), X(0x7ed94538), - X(0x1152d7ed), X(0x7ed28171), X(0x1184a427), X(0x7ecbaa1a), - X(0x11b66dad), X(0x7ec4bf36), X(0x11e83478), X(0x7ebdc0c6), - X(0x1219f880), X(0x7eb6aeca), X(0x124bb9be), X(0x7eaf8943), - X(0x127d7829), X(0x7ea85033), X(0x12af33ba), X(0x7ea1039b), - X(0x12e0ec6a), X(0x7e99a37c), X(0x1312a230), X(0x7e922fd6), - X(0x13445505), X(0x7e8aa8ac), X(0x137604e2), X(0x7e830dff), - X(0x13a7b1bf), X(0x7e7b5fce), X(0x13d95b93), X(0x7e739e1d), - X(0x140b0258), X(0x7e6bc8eb), X(0x143ca605), X(0x7e63e03b), - X(0x146e4694), X(0x7e5be40c), X(0x149fe3fc), X(0x7e53d462), - X(0x14d17e36), X(0x7e4bb13c), X(0x1503153a), X(0x7e437a9c), - X(0x1534a901), X(0x7e3b3083), X(0x15663982), X(0x7e32d2f4), - X(0x1597c6b7), X(0x7e2a61ed), X(0x15c95097), X(0x7e21dd73), - X(0x15fad71b), X(0x7e194584), X(0x162c5a3b), X(0x7e109a24), - X(0x165dd9f0), X(0x7e07db52), X(0x168f5632), X(0x7dff0911), - X(0x16c0cef9), X(0x7df62362), X(0x16f2443e), X(0x7ded2a47), - X(0x1723b5f9), X(0x7de41dc0), X(0x17552422), X(0x7ddafdce), - X(0x17868eb3), X(0x7dd1ca75), X(0x17b7f5a3), X(0x7dc883b4), - X(0x17e958ea), X(0x7dbf298d), X(0x181ab881), X(0x7db5bc02), - X(0x184c1461), X(0x7dac3b15), X(0x187d6c82), X(0x7da2a6c6), - X(0x18aec0db), X(0x7d98ff17), X(0x18e01167), X(0x7d8f4409), - X(0x19115e1c), X(0x7d85759f), X(0x1942a6f3), X(0x7d7b93da), - X(0x1973ebe6), X(0x7d719eba), X(0x19a52ceb), X(0x7d679642), - X(0x19d669fc), X(0x7d5d7a74), X(0x1a07a311), X(0x7d534b50), - X(0x1a38d823), X(0x7d4908d9), X(0x1a6a0929), X(0x7d3eb30f), - X(0x1a9b361d), X(0x7d3449f5), X(0x1acc5ef6), X(0x7d29cd8c), - X(0x1afd83ad), X(0x7d1f3dd6), X(0x1b2ea43a), X(0x7d149ad5), - X(0x1b5fc097), X(0x7d09e489), X(0x1b90d8bb), X(0x7cff1af5), - X(0x1bc1ec9e), X(0x7cf43e1a), X(0x1bf2fc3a), X(0x7ce94dfb), - X(0x1c240786), X(0x7cde4a98), X(0x1c550e7c), X(0x7cd333f3), - X(0x1c861113), X(0x7cc80a0f), X(0x1cb70f43), X(0x7cbcccec), - X(0x1ce80906), X(0x7cb17c8d), X(0x1d18fe54), X(0x7ca618f3), - X(0x1d49ef26), X(0x7c9aa221), X(0x1d7adb73), X(0x7c8f1817), - X(0x1dabc334), X(0x7c837ad8), X(0x1ddca662), X(0x7c77ca65), - X(0x1e0d84f5), X(0x7c6c06c0), X(0x1e3e5ee5), X(0x7c602fec), - X(0x1e6f342c), X(0x7c5445e9), X(0x1ea004c1), X(0x7c4848ba), - X(0x1ed0d09d), X(0x7c3c3860), X(0x1f0197b8), X(0x7c3014de), - X(0x1f325a0b), X(0x7c23de35), X(0x1f63178f), X(0x7c179467), - X(0x1f93d03c), X(0x7c0b3777), X(0x1fc4840a), X(0x7bfec765), - X(0x1ff532f2), X(0x7bf24434), X(0x2025dcec), X(0x7be5ade6), - X(0x205681f1), X(0x7bd9047c), X(0x208721f9), X(0x7bcc47fa), - X(0x20b7bcfe), X(0x7bbf7860), X(0x20e852f6), X(0x7bb295b0), - X(0x2118e3dc), X(0x7ba59fee), X(0x21496fa7), X(0x7b989719), - X(0x2179f64f), X(0x7b8b7b36), X(0x21aa77cf), X(0x7b7e4c45), - X(0x21daf41d), X(0x7b710a49), X(0x220b6b32), X(0x7b63b543), - X(0x223bdd08), X(0x7b564d36), X(0x226c4996), X(0x7b48d225), - X(0x229cb0d5), X(0x7b3b4410), X(0x22cd12bd), X(0x7b2da2fa), - X(0x22fd6f48), X(0x7b1feee5), X(0x232dc66d), X(0x7b1227d3), - X(0x235e1826), X(0x7b044dc7), X(0x238e646a), X(0x7af660c2), - X(0x23beab33), X(0x7ae860c7), X(0x23eeec78), X(0x7ada4dd8), - X(0x241f2833), X(0x7acc27f7), X(0x244f5e5c), X(0x7abdef25), - X(0x247f8eec), X(0x7aafa367), X(0x24afb9da), X(0x7aa144bc), - X(0x24dfdf20), X(0x7a92d329), X(0x250ffeb7), X(0x7a844eae), - X(0x25401896), X(0x7a75b74f), X(0x25702cb7), X(0x7a670d0d), - X(0x25a03b11), X(0x7a584feb), X(0x25d0439f), X(0x7a497feb), - X(0x26004657), X(0x7a3a9d0f), X(0x26304333), X(0x7a2ba75a), - X(0x26603a2c), X(0x7a1c9ece), X(0x26902b39), X(0x7a0d836d), - X(0x26c01655), X(0x79fe5539), X(0x26effb76), X(0x79ef1436), - X(0x271fda96), X(0x79dfc064), X(0x274fb3ae), X(0x79d059c8), - X(0x277f86b5), X(0x79c0e062), X(0x27af53a6), X(0x79b15435), - X(0x27df1a77), X(0x79a1b545), X(0x280edb23), X(0x79920392), - X(0x283e95a1), X(0x79823f20), X(0x286e49ea), X(0x797267f2), - X(0x289df7f8), X(0x79627e08), X(0x28cd9fc1), X(0x79528167), - X(0x28fd4140), X(0x79427210), X(0x292cdc6d), X(0x79325006), - X(0x295c7140), X(0x79221b4b), X(0x298bffb2), X(0x7911d3e2), - X(0x29bb87bc), X(0x790179cd), X(0x29eb0957), X(0x78f10d0f), - X(0x2a1a847b), X(0x78e08dab), X(0x2a49f920), X(0x78cffba3), - X(0x2a796740), X(0x78bf56f9), X(0x2aa8ced3), X(0x78ae9fb0), - X(0x2ad82fd2), X(0x789dd5cb), X(0x2b078a36), X(0x788cf94c), - X(0x2b36ddf7), X(0x787c0a36), X(0x2b662b0e), X(0x786b088c), - X(0x2b957173), X(0x7859f44f), X(0x2bc4b120), X(0x7848cd83), - X(0x2bf3ea0d), X(0x7837942b), X(0x2c231c33), X(0x78264849), - X(0x2c52478a), X(0x7814e9df), X(0x2c816c0c), X(0x780378f1), - X(0x2cb089b1), X(0x77f1f581), X(0x2cdfa071), X(0x77e05f91), - X(0x2d0eb046), X(0x77ceb725), X(0x2d3db928), X(0x77bcfc3f), - X(0x2d6cbb10), X(0x77ab2ee2), X(0x2d9bb5f6), X(0x77994f11), - X(0x2dcaa9d5), X(0x77875cce), X(0x2df996a3), X(0x7775581d), - X(0x2e287c5a), X(0x776340ff), X(0x2e575af3), X(0x77511778), - X(0x2e863267), X(0x773edb8b), X(0x2eb502ae), X(0x772c8d3a), - X(0x2ee3cbc1), X(0x771a2c88), X(0x2f128d99), X(0x7707b979), - X(0x2f41482e), X(0x76f5340e), X(0x2f6ffb7a), X(0x76e29c4b), - X(0x2f9ea775), X(0x76cff232), X(0x2fcd4c19), X(0x76bd35c7), - X(0x2ffbe95d), X(0x76aa670d), X(0x302a7f3a), X(0x76978605), - X(0x30590dab), X(0x768492b4), X(0x308794a6), X(0x76718d1c), - X(0x30b61426), X(0x765e7540), X(0x30e48c22), X(0x764b4b23), - X(0x3112fc95), X(0x76380ec8), X(0x31416576), X(0x7624c031), - X(0x316fc6be), X(0x76115f63), X(0x319e2067), X(0x75fdec60), - X(0x31cc7269), X(0x75ea672a), X(0x31fabcbd), X(0x75d6cfc5), - X(0x3228ff5c), X(0x75c32634), X(0x32573a3f), X(0x75af6a7b), - X(0x32856d5e), X(0x759b9c9b), X(0x32b398b3), X(0x7587bc98), - X(0x32e1bc36), X(0x7573ca75), X(0x330fd7e1), X(0x755fc635), - X(0x333debab), X(0x754bafdc), X(0x336bf78f), X(0x7537876c), - X(0x3399fb85), X(0x75234ce8), X(0x33c7f785), X(0x750f0054), - X(0x33f5eb89), X(0x74faa1b3), X(0x3423d78a), X(0x74e63108), - X(0x3451bb81), X(0x74d1ae55), X(0x347f9766), X(0x74bd199f), - X(0x34ad6b32), X(0x74a872e8), X(0x34db36df), X(0x7493ba34), - X(0x3508fa66), X(0x747eef85), X(0x3536b5be), X(0x746a12df), - X(0x356468e2), X(0x74552446), X(0x359213c9), X(0x744023bc), - X(0x35bfb66e), X(0x742b1144), X(0x35ed50c9), X(0x7415ece2), - X(0x361ae2d3), X(0x7400b69a), X(0x36486c86), X(0x73eb6e6e), - X(0x3675edd9), X(0x73d61461), X(0x36a366c6), X(0x73c0a878), - X(0x36d0d746), X(0x73ab2ab4), X(0x36fe3f52), X(0x73959b1b), - X(0x372b9ee3), X(0x737ff9ae), X(0x3758f5f2), X(0x736a4671), - X(0x37864477), X(0x73548168), X(0x37b38a6d), X(0x733eaa96), - X(0x37e0c7cc), X(0x7328c1ff), X(0x380dfc8d), X(0x7312c7a5), - X(0x383b28a9), X(0x72fcbb8c), X(0x38684c19), X(0x72e69db7), - X(0x389566d6), X(0x72d06e2b), X(0x38c278d9), X(0x72ba2cea), - X(0x38ef821c), X(0x72a3d9f7), X(0x391c8297), X(0x728d7557), - X(0x39497a43), X(0x7276ff0d), X(0x39766919), X(0x7260771b), - X(0x39a34f13), X(0x7249dd86), X(0x39d02c2a), X(0x72333251), - X(0x39fd0056), X(0x721c7580), X(0x3a29cb91), X(0x7205a716), - X(0x3a568dd4), X(0x71eec716), X(0x3a834717), X(0x71d7d585), - X(0x3aaff755), X(0x71c0d265), X(0x3adc9e86), X(0x71a9bdba), - X(0x3b093ca3), X(0x71929789), X(0x3b35d1a5), X(0x717b5fd3), - X(0x3b625d86), X(0x7164169d), X(0x3b8ee03e), X(0x714cbbeb), - X(0x3bbb59c7), X(0x71354fc0), X(0x3be7ca1a), X(0x711dd220), - X(0x3c143130), X(0x7106430e), X(0x3c408f03), X(0x70eea28e), - X(0x3c6ce38a), X(0x70d6f0a4), X(0x3c992ec0), X(0x70bf2d53), - X(0x3cc5709e), X(0x70a7589f), X(0x3cf1a91c), X(0x708f728b), - X(0x3d1dd835), X(0x70777b1c), X(0x3d49fde1), X(0x705f7255), - X(0x3d761a19), X(0x70475839), X(0x3da22cd7), X(0x702f2ccd), - X(0x3dce3614), X(0x7016f014), X(0x3dfa35c8), X(0x6ffea212), - X(0x3e262bee), X(0x6fe642ca), X(0x3e52187f), X(0x6fcdd241), - X(0x3e7dfb73), X(0x6fb5507a), X(0x3ea9d4c3), X(0x6f9cbd79), - X(0x3ed5a46b), X(0x6f841942), X(0x3f016a61), X(0x6f6b63d8), - X(0x3f2d26a0), X(0x6f529d40), X(0x3f58d921), X(0x6f39c57d), - X(0x3f8481dd), X(0x6f20dc92), X(0x3fb020ce), X(0x6f07e285), - X(0x3fdbb5ec), X(0x6eeed758), X(0x40074132), X(0x6ed5bb10), - X(0x4032c297), X(0x6ebc8db0), X(0x405e3a16), X(0x6ea34f3d), - X(0x4089a7a8), X(0x6e89ffb9), X(0x40b50b46), X(0x6e709f2a), - X(0x40e064ea), X(0x6e572d93), X(0x410bb48c), X(0x6e3daaf8), - X(0x4136fa27), X(0x6e24175c), X(0x416235b2), X(0x6e0a72c5), - X(0x418d6729), X(0x6df0bd35), X(0x41b88e84), X(0x6dd6f6b1), - X(0x41e3abbc), X(0x6dbd1f3c), X(0x420ebecb), X(0x6da336dc), - X(0x4239c7aa), X(0x6d893d93), X(0x4264c653), X(0x6d6f3365), - X(0x428fbabe), X(0x6d551858), X(0x42baa4e6), X(0x6d3aec6e), - X(0x42e584c3), X(0x6d20afac), X(0x43105a50), X(0x6d066215), - X(0x433b2585), X(0x6cec03af), X(0x4365e65b), X(0x6cd1947c), - X(0x43909ccd), X(0x6cb71482), X(0x43bb48d4), X(0x6c9c83c3), - X(0x43e5ea68), X(0x6c81e245), X(0x44108184), X(0x6c67300b), - X(0x443b0e21), X(0x6c4c6d1a), X(0x44659039), X(0x6c319975), - X(0x449007c4), X(0x6c16b521), X(0x44ba74bd), X(0x6bfbc021), - X(0x44e4d71c), X(0x6be0ba7b), X(0x450f2edb), X(0x6bc5a431), - X(0x45397bf4), X(0x6baa7d49), X(0x4563be60), X(0x6b8f45c7), - X(0x458df619), X(0x6b73fdae), X(0x45b82318), X(0x6b58a503), - X(0x45e24556), X(0x6b3d3bcb), X(0x460c5cce), X(0x6b21c208), - X(0x46366978), X(0x6b0637c1), X(0x46606b4e), X(0x6aea9cf8), - X(0x468a624a), X(0x6acef1b2), X(0x46b44e65), X(0x6ab335f4), - X(0x46de2f99), X(0x6a9769c1), X(0x470805df), X(0x6a7b8d1e), - X(0x4731d131), X(0x6a5fa010), X(0x475b9188), X(0x6a43a29a), - X(0x478546de), X(0x6a2794c1), X(0x47aef12c), X(0x6a0b7689), - X(0x47d8906d), X(0x69ef47f6), X(0x48022499), X(0x69d3090e), - X(0x482badab), X(0x69b6b9d3), X(0x48552b9b), X(0x699a5a4c), - X(0x487e9e64), X(0x697dea7b), X(0x48a805ff), X(0x69616a65), - X(0x48d16265), X(0x6944da10), X(0x48fab391), X(0x6928397e), - X(0x4923f97b), X(0x690b88b5), X(0x494d341e), X(0x68eec7b9), - X(0x49766373), X(0x68d1f68f), X(0x499f8774), X(0x68b5153a), - X(0x49c8a01b), X(0x689823bf), X(0x49f1ad61), X(0x687b2224), - X(0x4a1aaf3f), X(0x685e106c), X(0x4a43a5b0), X(0x6840ee9b), - X(0x4a6c90ad), X(0x6823bcb7), X(0x4a957030), X(0x68067ac3), - X(0x4abe4433), X(0x67e928c5), X(0x4ae70caf), X(0x67cbc6c0), - X(0x4b0fc99d), X(0x67ae54ba), X(0x4b387af9), X(0x6790d2b6), - X(0x4b6120bb), X(0x677340ba), X(0x4b89badd), X(0x67559eca), - X(0x4bb24958), X(0x6737ecea), X(0x4bdacc28), X(0x671a2b20), - X(0x4c034345), X(0x66fc596f), X(0x4c2baea9), X(0x66de77dc), - X(0x4c540e4e), X(0x66c0866d), X(0x4c7c622d), X(0x66a28524), - X(0x4ca4aa41), X(0x66847408), X(0x4ccce684), X(0x6666531d), - X(0x4cf516ee), X(0x66482267), X(0x4d1d3b7a), X(0x6629e1ec), - X(0x4d455422), X(0x660b91af), X(0x4d6d60df), X(0x65ed31b5), - X(0x4d9561ac), X(0x65cec204), X(0x4dbd5682), X(0x65b0429f), - X(0x4de53f5a), X(0x6591b38c), X(0x4e0d1c30), X(0x657314cf), - X(0x4e34ecfc), X(0x6554666d), X(0x4e5cb1b9), X(0x6535a86b), - X(0x4e846a60), X(0x6516dacd), X(0x4eac16eb), X(0x64f7fd98), - X(0x4ed3b755), X(0x64d910d1), X(0x4efb4b96), X(0x64ba147d), - X(0x4f22d3aa), X(0x649b08a0), X(0x4f4a4f89), X(0x647bed3f), - X(0x4f71bf2e), X(0x645cc260), X(0x4f992293), X(0x643d8806), - X(0x4fc079b1), X(0x641e3e38), X(0x4fe7c483), X(0x63fee4f8), - X(0x500f0302), X(0x63df7c4d), X(0x50363529), X(0x63c0043b), - X(0x505d5af1), X(0x63a07cc7), X(0x50847454), X(0x6380e5f6), - X(0x50ab814d), X(0x63613fcd), X(0x50d281d5), X(0x63418a50), - X(0x50f975e6), X(0x6321c585), X(0x51205d7b), X(0x6301f171), - X(0x5147388c), X(0x62e20e17), X(0x516e0715), X(0x62c21b7e), - X(0x5194c910), X(0x62a219aa), X(0x51bb7e75), X(0x628208a1), - X(0x51e22740), X(0x6261e866), X(0x5208c36a), X(0x6241b8ff), - X(0x522f52ee), X(0x62217a72), X(0x5255d5c5), X(0x62012cc2), - X(0x527c4bea), X(0x61e0cff5), X(0x52a2b556), X(0x61c06410), - X(0x52c91204), X(0x619fe918), X(0x52ef61ee), X(0x617f5f12), - X(0x5315a50e), X(0x615ec603), X(0x533bdb5d), X(0x613e1df0), - X(0x536204d7), X(0x611d66de), X(0x53882175), X(0x60fca0d2), - X(0x53ae3131), X(0x60dbcbd1), X(0x53d43406), X(0x60bae7e1), - X(0x53fa29ed), X(0x6099f505), X(0x542012e1), X(0x6078f344), - X(0x5445eedb), X(0x6057e2a2), X(0x546bbdd7), X(0x6036c325), - X(0x54917fce), X(0x601594d1), X(0x54b734ba), X(0x5ff457ad), - X(0x54dcdc96), X(0x5fd30bbc), X(0x5502775c), X(0x5fb1b104), - X(0x55280505), X(0x5f90478a), X(0x554d858d), X(0x5f6ecf53), - X(0x5572f8ed), X(0x5f4d4865), X(0x55985f20), X(0x5f2bb2c5), - X(0x55bdb81f), X(0x5f0a0e77), X(0x55e303e6), X(0x5ee85b82), - X(0x5608426e), X(0x5ec699e9), X(0x562d73b2), X(0x5ea4c9b3), - X(0x565297ab), X(0x5e82eae5), X(0x5677ae54), X(0x5e60fd84), - X(0x569cb7a8), X(0x5e3f0194), X(0x56c1b3a1), X(0x5e1cf71c), - X(0x56e6a239), X(0x5dfade20), X(0x570b8369), X(0x5dd8b6a7), - X(0x5730572e), X(0x5db680b4), X(0x57551d80), X(0x5d943c4e), - X(0x5779d65b), X(0x5d71e979), X(0x579e81b8), X(0x5d4f883b), - X(0x57c31f92), X(0x5d2d189a), X(0x57e7afe4), X(0x5d0a9a9a), - X(0x580c32a7), X(0x5ce80e41), X(0x5830a7d6), X(0x5cc57394), - X(0x58550f6c), X(0x5ca2ca99), X(0x58796962), X(0x5c801354), - X(0x589db5b3), X(0x5c5d4dcc), X(0x58c1f45b), X(0x5c3a7a05), - X(0x58e62552), X(0x5c179806), X(0x590a4893), X(0x5bf4a7d2), - X(0x592e5e19), X(0x5bd1a971), X(0x595265df), X(0x5bae9ce7), - X(0x59765fde), X(0x5b8b8239), X(0x599a4c12), X(0x5b68596d), - X(0x59be2a74), X(0x5b452288), X(0x59e1faff), X(0x5b21dd90), - X(0x5a05bdae), X(0x5afe8a8b), X(0x5a29727b), X(0x5adb297d), - X(0x5a4d1960), X(0x5ab7ba6c), X(0x5a70b258), X(0x5a943d5e), -}; - diff --git a/apps/codecs/libwma/misc.h b/apps/codecs/libwma/misc.h deleted file mode 100644 index 59760bf885..0000000000 --- a/apps/codecs/libwma/misc.h +++ /dev/null @@ -1,291 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * - * * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: miscellaneous math and prototypes - - ********************************************************************/ - -//#include "config-tremor.h" - -#ifndef _V_RANDOM_H_ -#define _V_RANDOM_H_ -//#include "ivorbiscodec.h" -//#include "os_types.h" - -//#include "asm_arm.h" -//#include "asm_mcf5249.h" - - -/* Some prototypes that were not defined elsewhere */ -//void *_vorbis_block_alloc(vorbis_block *vb,long bytes); -//void _vorbis_block_ripcord(vorbis_block *vb); -//extern int _ilog(unsigned int v); - -#ifndef _V_WIDE_MATH -#define _V_WIDE_MATH - -#ifndef _LOW_ACCURACY_ -/* 64 bit multiply */ -/* #include */ - -#if BYTE_ORDER==LITTLE_ENDIAN -union magic { - struct { - ogg_int32_t lo; - ogg_int32_t hi; - } halves; - ogg_int64_t whole; -}; -#elif BYTE_ORDER==BIG_ENDIAN -union magic { - struct { - ogg_int32_t hi; - ogg_int32_t lo; - } halves; - ogg_int64_t whole; -}; -#endif - -static inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { - union magic magic; - magic.whole = (ogg_int64_t)x * y; - return magic.halves.hi; -} -static inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) { - return MULT32(x,y)<<1; -} - -static inline ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) { - union magic magic; - magic.whole = (ogg_int64_t)x * y; - return ((ogg_uint32_t)(magic.halves.lo)>>15) | ((magic.halves.hi)<<17); -} - -#else -/* 32 bit multiply, more portable but less accurate */ - -/* - * Note: Precision is biased towards the first argument therefore ordering - * is important. Shift values were chosen for the best sound quality after - * many listening tests. - */ - -/* - * For MULT32 and MULT31: The second argument is always a lookup table - * value already preshifted from 31 to 8 bits. We therefore take the - * opportunity to save on text space and use unsigned char for those - * tables in this case. - */ - -static inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { - return (x >> 9) * y; /* y preshifted >>23 */ -} - -static inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) { - return (x >> 8) * y; /* y preshifted >>23 */ -} - -static inline ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) { - return (x >> 6) * y; /* y preshifted >>9 */ -} -#endif - -/* - * This should be used as a memory barrier, forcing all cached values in - * registers to wr writen back to memory. Might or might not be beneficial - * depending on the architecture and compiler. - */ -#define MB() - -/* - * The XPROD functions are meant to optimize the cross products found all - * over the place in mdct.c by forcing memory operation ordering to avoid - * unnecessary register reloads as soon as memory is being written to. - * However this is only beneficial on CPUs with a sane number of general - * purpose registers which exclude the Intel x86. On Intel, better let the - * compiler actually reload registers directly from original memory by using - * macros. - */ - -/* replaced XPROD32 with a macro to avoid memory reference - _x, _y are the results (must be l-values) */ -#define XPROD32(_a, _b, _t, _v, _x, _y) \ - { (_x)=MULT32(_a,_t)+MULT32(_b,_v); \ - (_y)=MULT32(_b,_t)-MULT32(_a,_v); } - - -#ifdef __i386__ - -#define XPROD31(_a, _b, _t, _v, _x, _y) \ - { *(_x)=MULT31(_a,_t)+MULT31(_b,_v); \ - *(_y)=MULT31(_b,_t)-MULT31(_a,_v); } -#define XNPROD31(_a, _b, _t, _v, _x, _y) \ - { *(_x)=MULT31(_a,_t)-MULT31(_b,_v); \ - *(_y)=MULT31(_b,_t)+MULT31(_a,_v); } - -#else - -static inline void XPROD31(ogg_int32_t a, ogg_int32_t b, - ogg_int32_t t, ogg_int32_t v, - ogg_int32_t *x, ogg_int32_t *y) -{ - *x = MULT31(a, t) + MULT31(b, v); - *y = MULT31(b, t) - MULT31(a, v); -} - -static inline void XNPROD31(ogg_int32_t a, ogg_int32_t b, - ogg_int32_t t, ogg_int32_t v, - ogg_int32_t *x, ogg_int32_t *y) -{ - *x = MULT31(a, t) - MULT31(b, v); - *y = MULT31(b, t) + MULT31(a, v); -} -#endif - -#ifndef _V_VECT_OPS -#define _V_VECT_OPS - -static inline -void vect_add(ogg_int32_t *x, ogg_int32_t *y, int n) -{ - while (n>0) { - *x++ += *y++; - n--; - } -} - -static inline -void vect_copy(ogg_int32_t *x, ogg_int32_t *y, int n) -{ - while (n>0) { - *x++ = *y++; - n--; - } -} - -static inline -void vect_mult_fw(ogg_int32_t *data, LOOKUP_T *window, int n) -{ - while(n>0) { - *data = MULT31(*data, *window); - data++; - window++; - n--; - } -} - -static inline -void vect_mult_bw(ogg_int32_t *data, LOOKUP_T *window, int n) -{ - while(n>0) { - *data = MULT31(*data, *window); - data++; - window--; - n--; - } -} -#endif - -#endif - -#ifndef _V_CLIP_MATH -#define _V_CLIP_MATH - -static inline ogg_int32_t CLIP_TO_15(ogg_int32_t x) { - int ret=x; - ret-= ((x<=32767)-1)&(x-32767); - ret-= ((x>=-32768)-1)&(x+32768); - return(ret); -} - -#endif - -static inline ogg_int32_t VFLOAT_MULT(ogg_int32_t a,ogg_int32_t ap, - ogg_int32_t b,ogg_int32_t bp, - ogg_int32_t *p){ - if(a && b){ -#ifndef _LOW_ACCURACY_ - *p=ap+bp+32; - return MULT32(a,b); -#else - *p=ap+bp+31; - return (a>>15)*(b>>16); -#endif - }else - return 0; -} - -/*static inline ogg_int32_t VFLOAT_MULTI(ogg_int32_t a,ogg_int32_t ap, - ogg_int32_t i, - ogg_int32_t *p){ - - int ip=_ilog(abs(i))-31; - return VFLOAT_MULT(a,ap,i<<-ip,ip,p); -} -*/ -static inline ogg_int32_t VFLOAT_ADD(ogg_int32_t a,ogg_int32_t ap, - ogg_int32_t b,ogg_int32_t bp, - ogg_int32_t *p){ - - if(!a){ - *p=bp; - return b; - }else if(!b){ - *p=ap; - return a; - } - - /* yes, this can leak a bit. */ - if(ap>bp){ - int shift=ap-bp+1; - *p=ap+1; - a>>=1; - if(shift<32){ - b=(b+(1<<(shift-1)))>>shift; - }else{ - b=0; - } - }else{ - int shift=bp-ap+1; - *p=bp+1; - b>>=1; - if(shift<32){ - a=(a+(1<<(shift-1)))>>shift; - }else{ - a=0; - } - } - - a+=b; - if((a&0xc0000000)==0xc0000000 || - (a&0xc0000000)==0){ - a<<=1; - (*p)--; - } - return(a); -} - -#ifdef __GNUC__ -#if __GNUC__ >= 3 -#define EXPECT(a, b) __builtin_expect((a), (b)) -#else -#define EXPECT(a, b) (a) -#endif -#else -#define EXPECT(a, b) (a) -#endif - -#endif - - - diff --git a/apps/codecs/libwma/wmadeci.c b/apps/codecs/libwma/wmadeci.c index a96907135d..5677ac69f8 100644 --- a/apps/codecs/libwma/wmadeci.c +++ b/apps/codecs/libwma/wmadeci.c @@ -28,7 +28,6 @@ #include "wmadec.h" #include "wmafixed.h" #include "bitstream.h" -#include "mdct2.h" #define VLCBITS 7 /*7 is the lowest without glitching*/ @@ -1389,7 +1388,7 @@ static int wma_decode_block(WMADecodeContext *s, int32_t *scratch_buffer) n4 = s->block_len >>1; /*faster IMDCT from Vorbis*/ - mdct_backward( (1 << (12-bsize)), (int*)(*(s->coefs))[ch], (int*)scratch_buffer); + mdct_backward( (1 << (12-bsize)), (int32_t*)(*(s->coefs))[ch], (int32_t*)scratch_buffer); /*slower but more easily understood IMDCT from FFMPEG*/ //ff_imdct_calc(&s->mdct_ctx[bsize], @@ -1435,7 +1434,7 @@ static int wma_decode_frame(WMADecodeContext *s, int32_t *samples) /* read each block */ s->block_num = 0; s->block_pos = 0; - + for(;;) { -- cgit v1.2.3