From e24087509a752d8f4dcc679b304fc1745ff768b0 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 3 Oct 2003 22:23:26 +0000 Subject: synced with current cvs git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10990 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libfaad2/Makefile | 2 +- libfaad2/bits.c | 36 +- libfaad2/bits.h | 141 +- libfaad2/cfft.c | 114 +- libfaad2/cfft_tab.h | 3226 ++++++------ libfaad2/common.c | 19 +- libfaad2/common.h | 9 +- libfaad2/decoder.c | 327 +- libfaad2/decoder.h | 13 +- libfaad2/dither.c | 4 +- libfaad2/dither.h | 2 +- libfaad2/drc.c | 6 +- libfaad2/faad.h | 45 +- libfaad2/filtbank.c | 20 +- libfaad2/filtbank.h | 3 +- libfaad2/fixed.h | 8 +- libfaad2/hcr.c | 230 +- libfaad2/huffman.c | 503 ++ libfaad2/huffman.h | 325 +- libfaad2/iq_table.h | 9228 ++++++++++++++++++++++++++++++---- libfaad2/is.c | 2 +- libfaad2/is.h | 2 +- libfaad2/kbd_win.h | 6720 +++++++++---------------- libfaad2/lt_predict.c | 3 +- libfaad2/lt_predict.h | 2 +- libfaad2/mdct.c | 43 +- libfaad2/mdct.h | 3 +- libfaad2/mp4.c | 21 +- libfaad2/mp4.h | 2 +- libfaad2/ms.c | 2 +- libfaad2/ms.h | 2 +- libfaad2/output.c | 34 +- libfaad2/output.h | 2 +- libfaad2/pns.c | 55 +- libfaad2/pns.h | 14 +- libfaad2/pulse.c | 2 +- libfaad2/pulse.h | 2 +- libfaad2/rvlc.c | 2 +- libfaad2/rvlc.h | 2 +- libfaad2/sbr_dct.c | 1620 +----- libfaad2/sbr_dct.h | 3 +- libfaad2/sbr_dec.c | 164 +- libfaad2/sbr_dec.h | 28 +- libfaad2/sbr_e_nf.c | 167 +- libfaad2/sbr_e_nf.h | 3 +- libfaad2/sbr_fbt.c | 156 +- libfaad2/sbr_fbt.h | 17 +- libfaad2/sbr_hfadj.c | 355 +- libfaad2/sbr_hfadj.h | 2 +- libfaad2/sbr_hfgen.c | 219 +- libfaad2/sbr_hfgen.h | 6 +- libfaad2/sbr_huff.c | 182 +- libfaad2/sbr_huff.h | 17 +- libfaad2/sbr_noise.h | 2 +- libfaad2/sbr_qmf.c | 253 +- libfaad2/sbr_qmf.h | 498 +- libfaad2/sbr_qmf_c.h | 364 ++ libfaad2/sbr_syntax.c | 504 +- libfaad2/sbr_syntax.h | 23 +- libfaad2/sbr_tf_grid.c | 33 +- libfaad2/sbr_tf_grid.h | 4 +- libfaad2/sine_win.h | 12689 ++++++++++++++++------------------------------- libfaad2/specrec.c | 129 +- libfaad2/specrec.h | 7 +- libfaad2/ssr.c | 2 +- libfaad2/ssr.h | 2 +- libfaad2/ssr_fb.c | 2 +- libfaad2/ssr_fb.h | 12 +- libfaad2/ssr_ipqf.c | 2 +- libfaad2/ssr_ipqf.h | 12 +- libfaad2/ssr_win.h | 12 +- libfaad2/structs.h | 21 +- libfaad2/syntax.c | 205 +- libfaad2/syntax.h | 41 +- libfaad2/tns.c | 65 +- libfaad2/tns.h | 2 +- 76 files changed, 18975 insertions(+), 20024 deletions(-) create mode 100644 libfaad2/huffman.c create mode 100644 libfaad2/sbr_qmf_c.h (limited to 'libfaad2') diff --git a/libfaad2/Makefile b/libfaad2/Makefile index 36d7b1ea14..0af71f9b7c 100644 --- a/libfaad2/Makefile +++ b/libfaad2/Makefile @@ -3,7 +3,7 @@ LIBNAME = libfaad2.a include ../config.mak -SRCS = bits.c cfft.c common.c decoder.c dither.c drc.c error.c filtbank.c hcr.c ic_predict.c is.c lt_predict.c mdct.c mp4.c ms.c output.c pns.c pulse.c rvlc.c sbr_dct.c sbr_dec.c sbr_e_nf.c sbr_fbt.c sbr_hfadj.c sbr_hfgen.c sbr_huff.c sbr_qmf.c sbr_syntax.c sbr_tf_grid.c specrec.c ssr.c ssr_fb.c ssr_ipqf.c syntax.c tns.c +SRCS = bits.c cfft.c common.c decoder.c dither.c drc.c error.c filtbank.c hcr.c huffman.c ic_predict.c is.c lt_predict.c mdct.c mp4.c ms.c output.c pns.c pulse.c rvlc.c sbr_dct.c sbr_dec.c sbr_e_nf.c sbr_fbt.c sbr_hfadj.c sbr_hfgen.c sbr_huff.c sbr_qmf.c sbr_syntax.c sbr_tf_grid.c specrec.c ssr.c ssr_fb.c ssr_ipqf.c syntax.c tns.c OBJS = $(SRCS:.c=.o) CFLAGS = -I. $(OPTFLAGS) diff --git a/libfaad2/bits.c b/libfaad2/bits.c index 00f9ad0090..1d8c91bed3 100644 --- a/libfaad2/bits.c +++ b/libfaad2/bits.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: bits.c,v 1.22 2003/07/29 08:20:12 menno Exp $ +** $Id: bits.c,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ #include "common.h" @@ -37,6 +37,18 @@ void faad_initbits(bitfile *ld, void *_buffer, uint32_t buffer_size) { uint32_t tmp; + if (ld == NULL) + return; + + memset(ld, 0, sizeof(bitfile)); + + if (buffer_size == 0 || _buffer == NULL) + { + ld->error = 1; + ld->no_more_reading = 1; + return; + } + ld->buffer = malloc((buffer_size+12)*sizeof(uint8_t)); memset(ld->buffer, 0, (buffer_size+12)*sizeof(uint8_t)); memcpy(ld->buffer, _buffer, buffer_size*sizeof(uint8_t)); @@ -71,10 +83,9 @@ void faad_endbits(bitfile *ld) if (ld->buffer) free(ld->buffer); } - uint32_t faad_get_processed_bits(bitfile *ld) { - return 8 * (4*(ld->tail - ld->start) - 4) - (ld->bits_left); + return (uint32_t)(8 * (4*(ld->tail - ld->start) - 4) - (ld->bits_left)); } uint8_t faad_byte_align(bitfile *ld) @@ -89,6 +100,25 @@ uint8_t faad_byte_align(bitfile *ld) return 0; } +void faad_flushbits_ex(bitfile *ld, uint32_t bits) +{ + uint32_t tmp; + + ld->bufa = ld->bufb; + tmp = getdword(ld->tail); + ld->tail++; +#ifndef ARCH_IS_BIG_ENDIAN + BSWAP(tmp); +#endif + ld->bufb = tmp; + ld->bits_left += (32 - bits); + ld->bytes_used += 4; + if (ld->bytes_used == ld->buffer_size) + ld->no_more_reading = 1; + if (ld->bytes_used > ld->buffer_size) + ld->error = 1; +} + /* rewind to beginning */ void faad_rewindbits(bitfile *ld) { diff --git a/libfaad2/bits.h b/libfaad2/bits.h index 809084aa84..3d4bd811ea 100644 --- a/libfaad2/bits.h +++ b/libfaad2/bits.h @@ -79,6 +79,7 @@ void faad_initbits_rev(bitfile *ld, void *buffer, uint32_t bits_in_buffer); uint8_t faad_byte_align(bitfile *ld); uint32_t faad_get_processed_bits(bitfile *ld); +void faad_flushbits_ex(bitfile *ld, uint32_t bits); void faad_rewindbits(bitfile *ld); uint8_t *faad_getbitbuffer(bitfile *ld, uint32_t bits DEBUGDEC); @@ -104,10 +105,10 @@ static INLINE uint32_t faad_showbits(bitfile *ld, uint32_t bits) if (bits <= ld->bits_left) { return (ld->bufa >> (ld->bits_left - bits)) & bitmask[bits]; - } else { + } + bits -= ld->bits_left; return ((ld->bufa & bitmask[ld->bits_left]) << bits) | (ld->bufb >> (32 - bits)); - } } static INLINE void faad_flushbits(bitfile *ld, uint32_t bits) @@ -120,21 +121,7 @@ static INLINE void faad_flushbits(bitfile *ld, uint32_t bits) { ld->bits_left -= bits; } else { - uint32_t tmp; - - ld->bufa = ld->bufb; - tmp = getdword(ld->tail); - ld->tail++; -#ifndef ARCH_IS_BIG_ENDIAN - BSWAP(tmp); -#endif - ld->bufb = tmp; - ld->bits_left += (32 - bits); - ld->bytes_used += 4; - if (ld->bytes_used == ld->buffer_size) - ld->no_more_reading = 1; - if (ld->bytes_used > ld->buffer_size) - ld->error = 1; + faad_flushbits_ex(ld, bits); } } @@ -143,10 +130,7 @@ static INLINE uint32_t faad_getbits(bitfile *ld, uint32_t n DEBUGDEC) { uint32_t ret; - if (ld->no_more_reading) - return 0; - - if (n == 0) + if (ld->no_more_reading || n == 0) return 0; ret = faad_showbits(ld, n); @@ -253,6 +237,121 @@ static INLINE uint32_t faad_getbits_rev(bitfile *ld, uint32_t n return ret; } +#ifdef DRM +static uint8_t faad_check_CRC(bitfile *ld, uint16_t len) +{ + uint8_t CRC; + uint16_t r=255; /* Initialize to all ones */ + + /* CRC polynome used x^8 + x^4 + x^3 + x^2 +1 */ +#define GPOLY 0435 + + faad_rewindbits(ld); + + CRC = ~faad_getbits(ld, 8 + DEBUGVAR(1,999,"faad_check_CRC(): CRC")); /* CRC is stored inverted */ + + for (; len>0; len--) + { + r = ( (r << 1) ^ (( ( faad_get1bit(ld + DEBUGVAR(1,998,"")) & 1) ^ ((r >> 7) & 1)) * GPOLY )) & 0xFF; + } + + if (r != CRC) + { + return 8; + } else { + return 0; + } +} + +static uint8_t tabFlipbits[256] = { + 0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240, + 8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248, + 4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244, + 12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252, + 2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242, + 10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250, + 6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246, + 14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254, + 1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241, + 9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249, + 5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245, + 13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253, + 3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243, + 11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251, + 7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247, + 15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255 +}; +#endif + +#ifdef ERROR_RESILIENCE + +/* Modified bit reading functions for HCR */ + +typedef struct +{ + /* bit input */ + uint32_t bufa; + uint32_t bufb; + int8_t len; +} bits_t; + + +static INLINE uint32_t showbits_hcr(bits_t *ld, uint8_t bits) +{ + if (bits == 0) return 0; + if (ld->len <= 32) + { + /* huffman_spectral_data_2 needs to read more than may be available, bits maybe + > ld->len, deliver 0 than */ + if (ld->len >= bits) + return ((ld->bufa >> (ld->len - bits)) & (0xFFFFFFFF >> (32 - bits))); + else + return ((ld->bufa << (bits - ld->len)) & (0xFFFFFFFF >> (32 - bits))); + } else { + if ((ld->len - bits) < 32) + { + return ( (ld->bufb & (0xFFFFFFFF >> (64 - ld->len))) << (bits - ld->len + 32)) | + (ld->bufa >> (ld->len - bits)); + } else { + return ((ld->bufb >> (ld->len - bits - 32)) & (0xFFFFFFFF >> (32 - bits))); + } + } +} + +/* return 1 if position is outside of buffer, 0 otherwise */ +static INLINE int8_t flushbits_hcr( bits_t *ld, uint8_t bits) +{ + ld->len -= bits; + + if (ld->len <0) + { + ld->len = 0; + return 1; + } else { + return 0; + } +} + +static INLINE int8_t getbits_hcr(bits_t *ld, uint8_t n, uint32_t *result) +{ + *result = showbits_hcr(ld, n); + return flushbits_hcr(ld, n); +} + +static INLINE int8_t get1bit_hcr(bits_t *ld, uint8_t *result) +{ + uint32_t res; + int8_t ret; + + ret = getbits_hcr(ld, 1, &res); + *result = (int8_t)(res & 1); + return ret; +} + +#endif + #ifdef __cplusplus } diff --git a/libfaad2/cfft.c b/libfaad2/cfft.c index 74754383bd..9765a84f6a 100644 --- a/libfaad2/cfft.c +++ b/libfaad2/cfft.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: cfft.c,v 1.11 2003/07/29 08:20:12 menno Exp $ +** $Id: cfft.c,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ /* @@ -65,8 +65,8 @@ static void passf2(uint16_t ido, uint16_t l1, complex_t *cc, complex_t *ch, ac = 4*k; RE(ch[ah]) = RE(cc[ac]) + RE(cc[ac+1]); - IM(ch[ah]) = IM(cc[ac]) + IM(cc[ac+1]); RE(ch[ah+l1]) = RE(cc[ac]) - RE(cc[ac+1]); + IM(ch[ah]) = IM(cc[ac]) + IM(cc[ac+1]); IM(ch[ah+l1]) = IM(cc[ac]) - IM(cc[ac+1]); } } else { @@ -79,16 +79,14 @@ static void passf2(uint16_t ido, uint16_t l1, complex_t *cc, complex_t *ch, { complex_t t2; - RE(ch[ah]) = RE(cc[ac]) + RE(cc[ac+ido]); - IM(ch[ah]) = IM(cc[ac]) + IM(cc[ac+ido]); + RE(ch[ah+i]) = RE(cc[ac+i]) + RE(cc[ac+i+ido]); + RE(t2) = RE(cc[ac+i]) - RE(cc[ac+i+ido]); - RE(t2) = RE(cc[ac]) - RE(cc[ac+ido]); - IM(t2) = IM(cc[ac]) - IM(cc[ac+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]); - RE(ch[ah+l1*ido]) = MUL_R_C(RE(t2),RE(wa[i])) - MUL_R_C(IM(t2),IM(wa[i]))*isign; - IM(ch[ah+l1*ido]) = MUL_R_C(IM(t2),RE(wa[i])) + MUL_R_C(RE(t2),IM(wa[i]))*isign; - ah++; - ac++; + RE(ch[ah+i+l1*ido]) = MUL_R_C(RE(t2),RE(wa[i])) - MUL_R_C(IM(t2),IM(wa[i]))*isign; + IM(ch[ah+i+l1*ido]) = MUL_R_C(IM(t2),RE(wa[i])) + MUL_R_C(RE(t2),IM(wa[i]))*isign; } } } @@ -164,66 +162,74 @@ static void passf4(uint16_t ido, uint16_t l1, complex_t *cc, complex_t *ch, complex_t *wa1, complex_t *wa2, complex_t *wa3, int8_t isign) { uint16_t i, k, ac, ah; - complex_t c2, c3, c4, t1, t2, t3, t4; 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]); - IM(t2) = IM(cc[ac]) + IM(cc[ac+2]); - RE(t3) = RE(cc[ac+1]) + RE(cc[ac+3]); - IM(t3) = IM(cc[ac+1]) + IM(cc[ac+3]); RE(t1) = RE(cc[ac]) - RE(cc[ac+2]); + IM(t2) = IM(cc[ac]) + IM(cc[ac+2]); IM(t1) = IM(cc[ac]) - IM(cc[ac+2]); - RE(t4) = IM(cc[ac+3]) - IM(cc[ac+1]); + 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); - IM(ch[ah]) = IM(t2) + IM(t3); - RE(ch[ah+l1]) = RE(t1) + RE(t4)*isign; - IM(ch[ah+l1]) = IM(t1) + IM(t4)*isign; RE(ch[ah+2*l1]) = RE(t2) - RE(t3); + + IM(ch[ah]) = IM(t2) + IM(t3); IM(ch[ah+2*l1]) = IM(t2) - IM(t3); + + RE(ch[ah+l1]) = RE(t1) + RE(t4)*isign; RE(ch[ah+3*l1]) = RE(t1) - RE(t4)*isign; + + IM(ch[ah+l1]) = IM(t1) + IM(t4)*isign; IM(ch[ah+3*l1]) = IM(t1) - IM(t4)*isign; } } else { for (k = 0; k < l1; k++) { + ac = 4*k*ido; + ah = k*ido; + for (i = 0; i < ido; i++) { - ac = i + 4*k*ido; - ah = i + k*ido; - - RE(t2) = RE(cc[ac]) + RE(cc[ac+2*ido]); - IM(t2) = IM(cc[ac]) + IM(cc[ac+2*ido]); - RE(t3) = RE(cc[ac+ido]) + RE(cc[ac+3*ido]); - IM(t3) = IM(cc[ac+ido]) + IM(cc[ac+3*ido]); - RE(t1) = RE(cc[ac]) - RE(cc[ac+2*ido]); - IM(t1) = IM(cc[ac]) - IM(cc[ac+2*ido]); - RE(t4) = IM(cc[ac+3*ido]) - IM(cc[ac+ido]); - IM(t4) = RE(cc[ac+ido]) - RE(cc[ac+3*ido]); + complex_t c2, c3, c4, t1, t2, t3, t4; - RE(ch[ah]) = RE(t2) + RE(t3); - IM(ch[ah]) = IM(t2) + IM(t3); + 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)*isign; + RE(c4) = RE(t1) - RE(t4)*isign; + IM(c2) = IM(t1) + IM(t4)*isign; + IM(c4) = IM(t1) - IM(t4)*isign; + + 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); - RE(c4) = RE(t1) - RE(t4)*isign; - IM(c4) = IM(t1) - IM(t4)*isign; - RE(ch[ah+l1*ido]) = MUL_R_C(RE(c2),RE(wa1[i])) - MUL_R_C(IM(c2),IM(wa1[i]))*isign; - IM(ch[ah+l1*ido]) = MUL_R_C(IM(c2),RE(wa1[i])) + MUL_R_C(RE(c2),IM(wa1[i]))*isign; - RE(ch[ah+2*l1*ido]) = MUL_R_C(RE(c3),RE(wa2[i])) - MUL_R_C(IM(c3),IM(wa2[i]))*isign; - IM(ch[ah+2*l1*ido]) = MUL_R_C(IM(c3),RE(wa2[i])) + MUL_R_C(RE(c3),IM(wa2[i]))*isign; - RE(ch[ah+3*l1*ido]) = MUL_R_C(RE(c4),RE(wa3[i])) - MUL_R_C(IM(c4),IM(wa3[i]))*isign; - IM(ch[ah+3*l1*ido]) = MUL_R_C(IM(c4),RE(wa3[i])) + MUL_R_C(RE(c4),IM(wa3[i]))*isign; + IM(ch[ah+i+l1*ido]) = MUL_R_C(IM(c2),RE(wa1[i])) + MUL_R_C(RE(c2),IM(wa1[i]))*isign; + RE(ch[ah+i+l1*ido]) = MUL_R_C(RE(c2),RE(wa1[i])) - MUL_R_C(IM(c2),IM(wa1[i]))*isign; + IM(ch[ah+i+2*l1*ido]) = MUL_R_C(IM(c3),RE(wa2[i])) + MUL_R_C(RE(c3),IM(wa2[i]))*isign; + RE(ch[ah+i+2*l1*ido]) = MUL_R_C(RE(c3),RE(wa2[i])) - MUL_R_C(IM(c3),IM(wa2[i]))*isign; + IM(ch[ah+i+3*l1*ido]) = MUL_R_C(IM(c4),RE(wa3[i])) + MUL_R_C(RE(c4),IM(wa3[i]))*isign; + RE(ch[ah+i+3*l1*ido]) = MUL_R_C(RE(c4),RE(wa3[i])) - MUL_R_C(IM(c4),IM(wa3[i]))*isign; } } } @@ -355,6 +361,17 @@ INLINE void cfftf1(uint16_t n, complex_t *c, complex_t *ch, switch (ip) { + case 4: + ix2 = iw + ido; + ix3 = ix2 + ido; + + if (na == 0) + passf4(ido, l1, c, ch, &wa[iw], &wa[ix2], &wa[ix3], isign); + else + passf4(ido, l1, ch, c, &wa[iw], &wa[ix2], &wa[ix3], isign); + + na = 1 - na; + break; case 2: if (na == 0) passf2(ido, l1, c, ch, &wa[iw], isign); @@ -371,17 +388,6 @@ INLINE void cfftf1(uint16_t n, complex_t *c, complex_t *ch, else passf3(ido, l1, ch, c, &wa[iw], &wa[ix2], isign); - na = 1 - na; - break; - case 4: - ix2 = iw + ido; - ix3 = ix2 + ido; - - if (na == 0) - passf4(ido, l1, c, ch, &wa[iw], &wa[ix2], &wa[ix3], isign); - else - passf4(ido, l1, ch, c, &wa[iw], &wa[ix2], &wa[ix3], isign); - na = 1 - na; break; case 5: @@ -474,7 +480,7 @@ startloop: ifac[1] = nf; #ifndef FIXED_POINT - argh = 2.0*M_PI / (real_t)n; + argh = (real_t)2.0*M_PI / (real_t)n; i = 0; l1 = 1; @@ -500,8 +506,8 @@ startloop: i++; fi++; arg = fi * argld; - RE(wa[i]) = cos(arg); - IM(wa[i]) = sin(arg); + RE(wa[i]) = (real_t)cos(arg); + IM(wa[i]) = (real_t)sin(arg); } if (ip > 5) @@ -553,4 +559,4 @@ void cfftu(cfft_info *cfft) #endif if (cfft) free(cfft); -} \ No newline at end of file +} diff --git a/libfaad2/cfft_tab.h b/libfaad2/cfft_tab.h index 4cf3645a7b..ee7f9249eb 100644 --- a/libfaad2/cfft_tab.h +++ b/libfaad2/cfft_tab.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: cfft_tab.h,v 1.3 2003/07/29 08:20:12 menno Exp $ +** $Id: cfft_tab.h,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ #ifndef __CFFT_TAB_H__ @@ -36,1640 +36,1640 @@ extern "C" { complex_t cfft_tab_512[] = { - { 0x10000000, 0x0 }, - { 0xFFFB110, 0x3243A4 }, - { 0xFFEC430, 0x648558 }, - { 0xFFD3970, 0x96C32C }, - { 0xFFB10F0, 0xC8FB30 }, - { 0xFF84AB0, 0xFB2B75 }, - { 0xFF4E6D0, 0x12D520A }, - { 0xFF0E580, 0x15F6D02 }, - { 0xFEC46D0, 0x1917A6C }, - { 0xFE70B00, 0x1C3785C }, - { 0xFE13240, 0x1F564E6 }, - { 0xFDABCC0, 0x2273E1C }, - { 0xFD3AAC0, 0x259020C }, - { 0xFCBFC90, 0x28AAED8 }, - { 0xFC3B280, 0x2BC428C }, - { 0xFBACCD0, 0x2EDBB3C }, - { 0xFB14BE0, 0x31F1708 }, - { 0xFA73020, 0x3505408 }, - { 0xF9C79D0, 0x381704C }, - { 0xF912980, 0x3B26A00 }, - { 0xF853F80, 0x3E33F34 }, - { 0xF78BC50, 0x413EE08 }, - { 0xF6BA070, 0x44474A0 }, - { 0xF5DEC60, 0x474D110 }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xF40BDD0, 0x4D50430 }, - { 0xF314470, 0x504D728 }, - { 0xF213520, 0x5347898 }, - { 0xF109080, 0x563E6A0 }, - { 0xEFF5730, 0x5931F78 }, - { 0xEED89E0, 0x5C22150 }, - { 0xEDB2930, 0x5F0EA50 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xEB4B0C0, 0x64DCAA0 }, - { 0xEA09A60, 0x67BDE58 }, - { 0xE8BF3B0, 0x6A9B210 }, - { 0xE76BD80, 0x6D74400 }, - { 0xE60F880, 0x7049278 }, - { 0xE4AA590, 0x7319BA8 }, - { 0xE33C5A0, 0x75E5DD8 }, - { 0xE1C5970, 0x78AD750 }, - { 0xE046210, 0x7B70650 }, - { 0xDEBE050, 0x7E2E940 }, - { 0xDD2D530, 0x80E7E40 }, - { 0xDB941A0, 0x839C3D0 }, - { 0xD9F26A0, 0x864B830 }, - { 0xD848530, 0x88F59B0 }, - { 0xD695E50, 0x8B9A6B0 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xD318480, 0x90D3CD0 }, - { 0xD14D3D0, 0x93682B0 }, - { 0xCF7A1F0, 0x95F6DA0 }, - { 0xCD9F020, 0x987FC00 }, - { 0xCBBBF80, 0x9B02C50 }, - { 0xC9D1120, 0x9D7FD20 }, - { 0xC7DE650, 0x9FF6CB0 }, - { 0xC5E4030, 0xA2679A0 }, - { 0xC3E2000, 0xA4D2250 }, - { 0xC1D8700, 0xA736560 }, - { 0xBFC7670, 0xA994150 }, - { 0xBDAEF90, 0xABEB4A0 }, - { 0xBB8F3B0, 0xAE3BDE0 }, - { 0xB968420, 0xB085BB0 }, - { 0xB73A220, 0xB2C8CA0 }, - { 0xB504F30, 0xB504F30 }, - { 0xB2C8C90, 0xB73A230 }, - { 0xB085BA0, 0xB968420 }, - { 0xAE3BDE0, 0xBB8F3B0 }, - { 0xABEB490, 0xBDAEFA0 }, - { 0xA994140, 0xBFC7670 }, - { 0xA736550, 0xC1D8710 }, - { 0xA4D2250, 0xC3E2010 }, - { 0xA267990, 0xC5E4030 }, - { 0x9FF6CA0, 0xC7DE660 }, - { 0x9D7FD10, 0xC9D1120 }, - { 0x9B02C50, 0xCBBBF80 }, - { 0x987FC00, 0xCD9F020 }, - { 0x95F6D90, 0xCF7A1F0 }, - { 0x93682A0, 0xD14D3D0 }, - { 0x90D3CD0, 0xD318490 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x8B9A6B0, 0xD695E50 }, - { 0x88F59B0, 0xD848530 }, - { 0x864B820, 0xD9F26A0 }, - { 0x839C3C0, 0xDB941B0 }, - { 0x80E7E50, 0xDD2D530 }, - { 0x7E2E938, 0xDEBE050 }, - { 0x7B70648, 0xE046220 }, - { 0x78AD738, 0xE1C5980 }, - { 0x75E5DD8, 0xE33C5A0 }, - { 0x7319BA0, 0xE4AA590 }, - { 0x7049268, 0xE60F880 }, - { 0x6D74408, 0xE76BD80 }, - { 0x6A9B208, 0xE8BF3C0 }, - { 0x67BDE48, 0xEA09A70 }, - { 0x64DCA80, 0xEB4B0C0 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x5F0EA40, 0xEDB2930 }, - { 0x5C22138, 0xEED89E0 }, - { 0x5931F78, 0xEFF5730 }, - { 0x563E698, 0xF109080 }, - { 0x5347880, 0xF213530 }, - { 0x504D710, 0xF314480 }, - { 0x4D50430, 0xF40BDD0 }, - { 0x4A50180, 0xF4FA0B0 }, - { 0x474D0F8, 0xF5DEC70 }, - { 0x4447498, 0xF6BA070 }, - { 0x413EE00, 0xF78BC50 }, - { 0x3E33F20, 0xF853F80 }, - { 0x3B26A04, 0xF912980 }, - { 0x3817048, 0xF9C79D0 }, - { 0x35053F8, 0xFA73020 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0x2EDBB3C, 0xFBACCD0 }, - { 0x2BC4280, 0xFC3B280 }, - { 0x28AAEC4, 0xFCBFC90 }, - { 0x2590214, 0xFD3AAC0 }, - { 0x2273E14, 0xFDABCC0 }, - { 0x1F564D8, 0xFE13240 }, - { 0x1C37844, 0xFE70B00 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0x15F6CF6, 0xFF0E580 }, - { 0x12D51F6, 0xFF4E6D0 }, - { 0xFB2B77, 0xFF84AB0 }, - { 0xC8FB29, 0xFFB10F0 }, - { 0x96C31C, 0xFFD3980 }, - { 0x64853F, 0xFFEC430 }, - { 0x3243A1, 0xFFFB110 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFFCDBC47, 0xFFFB110 }, - { 0xFF9B7AAA, 0xFFEC430 }, - { 0xFF693CCD, 0xFFD3970 }, - { 0xFF3704BF, 0xFFB10F0 }, - { 0xFF04D472, 0xFF84AB0 }, - { 0xFED2ADF4, 0xFF4E6D0 }, - { 0xFEA092F2, 0xFF0E580 }, - { 0xFE6E857E, 0xFEC46D0 }, - { 0xFE3C87A4, 0xFE70B00 }, - { 0xFE0A9B12, 0xFE13230 }, - { 0xFDD8C1D4, 0xFDABCB0 }, - { 0xFDA6FDD8, 0xFD3AAC0 }, - { 0xFD755124, 0xFCBFC90 }, - { 0xFD43BD68, 0xFC3B280 }, - { 0xFD1244AC, 0xFBACCD0 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xFCAFABF0, 0xFA73020 }, - { 0xFC7E8FA0, 0xF9C79D0 }, - { 0xFC4D95E8, 0xF912970 }, - { 0xFC1CC0CC, 0xF853F80 }, - { 0xFBEC11F0, 0xF78BC50 }, - { 0xFBBB8B50, 0xF6BA070 }, - { 0xFB8B2EF0, 0xF5DEC60 }, - { 0xFB5AFE68, 0xF4FA0A0 }, - { 0xFB2AFBB8, 0xF40BDD0 }, - { 0xFAFB28E0, 0xF314470 }, - { 0xFACB8768, 0xF213520 }, - { 0xFA9C1950, 0xF109080 }, - { 0xFA6CE070, 0xEFF5720 }, - { 0xFA3DDEB0, 0xEED89E0 }, - { 0xFA0F15A8, 0xEDB2930 }, - { 0xF9E08740, 0xEC835E0 }, - { 0xF9B23568, 0xEB4B0C0 }, - { 0xF98421A8, 0xEA09A60 }, - { 0xF9564E00, 0xE8BF3C0 }, - { 0xF928BC00, 0xE76BD80 }, - { 0xF8FB6D88, 0xE60F870 }, - { 0xF8CE6450, 0xE4AA590 }, - { 0xF8A1A210, 0xE33C590 }, - { 0xF8752898, 0xE1C5970 }, - { 0xF848F988, 0xE046200 }, - { 0xF81D16D0, 0xDEBE060 }, - { 0xF7F181C0, 0xDD2D530 }, - { 0xF7C63C30, 0xDB941A0 }, - { 0xF79B47D0, 0xD9F2690 }, - { 0xF770A640, 0xD848520 }, - { 0xF7465930, 0xD695E40 }, - { 0xF71C6240, 0xD4DB300 }, - { 0xF6F2C340, 0xD318490 }, - { 0xF6C97D60, 0xD14D3D0 }, - { 0xF6A09260, 0xCF7A1F0 }, - { 0xF67803F0, 0xCD9F020 }, - { 0xF64FD390, 0xCBBBF70 }, - { 0xF62802D0, 0xC9D1110 }, - { 0xF6009330, 0xC7DE630 }, - { 0xF5D98670, 0xC5E4040 }, - { 0xF5B2DDB0, 0xC3E2000 }, - { 0xF58C9AA0, 0xC1D8700 }, - { 0xF566BEB0, 0xBFC7660 }, - { 0xF5414B50, 0xBDAEF80 }, - { 0xF51C4200, 0xBB8F390 }, - { 0xF4F7A430, 0xB968400 }, - { 0xF4D37370, 0xB73A230 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF48C5DD0, 0xB2C8C90 }, - { 0xF4697BD0, 0xB085BA0 }, - { 0xF4470C40, 0xAE3BDD0 }, - { 0xF4251050, 0xABEB480 }, - { 0xF4038970, 0xA994120 }, - { 0xF3E27900, 0xA736560 }, - { 0xF3C1DFF0, 0xA4D2250 }, - { 0xF3A1BFC0, 0xA267990 }, - { 0xF38219A0, 0x9FF6CA0 }, - { 0xF362EED0, 0x9D7FD00 }, - { 0xF3444070, 0x9B02C40 }, - { 0xF3260FC0, 0x987FBD0 }, - { 0xF3085E10, 0x95F6D90 }, - { 0xF2EB2C30, 0x93682A0 }, - { 0xF2CE7B70, 0x90D3CC0 }, - { 0xF2B24CE0, 0x8E39D90 }, - { 0xF296A1A0, 0x8B9A690 }, - { 0xF27B7AC0, 0x88F5980 }, - { 0xF260D940, 0x864B800 }, - { 0xF246BE60, 0x839C3D0 }, - { 0xF22D2AD0, 0x80E7E40 }, - { 0xF2141FA0, 0x7E2E928 }, - { 0xF1FB9DE0, 0x7B70640 }, - { 0xF1E3A670, 0x78AD730 }, - { 0xF1CC3A50, 0x75E5DB0 }, - { 0xF1B55A70, 0x7319BB0 }, - { 0xF19F0780, 0x7049278 }, - { 0xF1894280, 0x6D743F8 }, - { 0xF1740C40, 0x6A9B1F8 }, - { 0xF15F6590, 0x67BDE38 }, - { 0xF14B4F40, 0x64DCA78 }, - { 0xF137CA00, 0x61F7880 }, - { 0xF124D6D0, 0x5F0EA58 }, - { 0xF1127620, 0x5C22150 }, - { 0xF100A8D0, 0x5931F70 }, - { 0xF0EF6F70, 0x563E690 }, - { 0xF0DECAD0, 0x5347878 }, - { 0xF0CEBB80, 0x504D700 }, - { 0xF0BF4220, 0x4D50408 }, - { 0xF0B05F50, 0x4A50198 }, - { 0xF0A213A0, 0x474D110 }, - { 0xF0945F90, 0x4447490 }, - { 0xF08743B0, 0x413EDF0 }, - { 0xF07AC080, 0x3E33F14 }, - { 0xF06ED680, 0x3B269D8 }, - { 0xF0638620, 0x3817020 }, - { 0xF058CFE0, 0x350540C }, - { 0xF04EB410, 0x31F1704 }, - { 0xF0453330, 0x2EDBB30 }, - { 0xF03C4D80, 0x2BC4274 }, - { 0xF0340370, 0x28AAEB8 }, - { 0xF02C5540, 0x25901E8 }, - { 0xF0254340, 0x2273DE8 }, - { 0xF01ECDD0, 0x1F564EC }, - { 0xF018F500, 0x1C3785A }, - { 0xF013B930, 0x1917A60 }, - { 0xF00F1A80, 0x15F6CEA }, - { 0xF00B1920, 0x12D51EA }, - { 0xF007B550, 0xFB2B4B }, - { 0xF004EF10, 0xC8FAFD }, - { 0xF002C690, 0x96C330 }, - { 0xF0013BD0, 0x648553 }, - { 0xF0004EF0, 0x324395 }, - { 0x10000000, 0x0 }, - { 0xFFEC430, 0x648558 }, - { 0xFFB10F0, 0xC8FB30 }, - { 0xFF4E6D0, 0x12D520A }, - { 0xFEC46D0, 0x1917A6C }, - { 0xFE13240, 0x1F564E6 }, - { 0xFD3AAC0, 0x259020C }, - { 0xFC3B280, 0x2BC428C }, - { 0xFB14BE0, 0x31F1708 }, - { 0xF9C79D0, 0x381704C }, - { 0xF853F80, 0x3E33F34 }, - { 0xF6BA070, 0x44474A0 }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xF314470, 0x504D728 }, - { 0xF109080, 0x563E6A0 }, - { 0xEED89E0, 0x5C22150 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xEA09A60, 0x67BDE58 }, - { 0xE76BD80, 0x6D74400 }, - { 0xE4AA590, 0x7319BA8 }, - { 0xE1C5970, 0x78AD750 }, - { 0xDEBE050, 0x7E2E940 }, - { 0xDB941A0, 0x839C3D0 }, - { 0xD848530, 0x88F59B0 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xD14D3D0, 0x93682B0 }, - { 0xCD9F020, 0x987FC00 }, - { 0xC9D1120, 0x9D7FD20 }, - { 0xC5E4030, 0xA2679A0 }, - { 0xC1D8700, 0xA736560 }, - { 0xBDAEF90, 0xABEB4A0 }, - { 0xB968420, 0xB085BB0 }, - { 0xB504F30, 0xB504F30 }, - { 0xB085BA0, 0xB968420 }, - { 0xABEB490, 0xBDAEFA0 }, - { 0xA736550, 0xC1D8710 }, - { 0xA267990, 0xC5E4030 }, - { 0x9D7FD10, 0xC9D1120 }, - { 0x987FC00, 0xCD9F020 }, - { 0x93682A0, 0xD14D3D0 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x88F59B0, 0xD848530 }, - { 0x839C3C0, 0xDB941B0 }, - { 0x7E2E938, 0xDEBE050 }, - { 0x78AD738, 0xE1C5980 }, - { 0x7319BA0, 0xE4AA590 }, - { 0x6D74408, 0xE76BD80 }, - { 0x67BDE48, 0xEA09A70 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x5C22138, 0xEED89E0 }, - { 0x563E698, 0xF109080 }, - { 0x504D710, 0xF314480 }, - { 0x4A50180, 0xF4FA0B0 }, - { 0x4447498, 0xF6BA070 }, - { 0x3E33F20, 0xF853F80 }, - { 0x3817048, 0xF9C79D0 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0x2BC4280, 0xFC3B280 }, - { 0x2590214, 0xFD3AAC0 }, - { 0x1F564D8, 0xFE13240 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0x12D51F6, 0xFF4E6D0 }, - { 0xC8FB29, 0xFFB10F0 }, - { 0x64853F, 0xFFEC430 }, - { 0x10000000, 0x0 }, - { 0xFFB10F0, 0xC8FB30 }, - { 0xFEC46D0, 0x1917A6C }, - { 0xFD3AAC0, 0x259020C }, - { 0xFB14BE0, 0x31F1708 }, - { 0xF853F80, 0x3E33F34 }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xF109080, 0x563E6A0 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xE76BD80, 0x6D74400 }, - { 0xE1C5970, 0x78AD750 }, - { 0xDB941A0, 0x839C3D0 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xCD9F020, 0x987FC00 }, - { 0xC5E4030, 0xA2679A0 }, - { 0xBDAEF90, 0xABEB4A0 }, - { 0xB504F30, 0xB504F30 }, - { 0xABEB490, 0xBDAEFA0 }, - { 0xA267990, 0xC5E4030 }, - { 0x987FC00, 0xCD9F020 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x839C3C0, 0xDB941B0 }, - { 0x78AD738, 0xE1C5980 }, - { 0x6D74408, 0xE76BD80 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x563E698, 0xF109080 }, - { 0x4A50180, 0xF4FA0B0 }, - { 0x3E33F20, 0xF853F80 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0x2590214, 0xFD3AAC0 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0xC8FB29, 0xFFB10F0 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFF3704BF, 0xFFB10F0 }, - { 0xFE6E857E, 0xFEC46D0 }, - { 0xFDA6FDD8, 0xFD3AAC0 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xFC1CC0CC, 0xF853F80 }, - { 0xFB5AFE68, 0xF4FA0A0 }, - { 0xFA9C1950, 0xF109080 }, - { 0xF9E08740, 0xEC835E0 }, - { 0xF928BC00, 0xE76BD80 }, - { 0xF8752898, 0xE1C5970 }, - { 0xF7C63C30, 0xDB941A0 }, - { 0xF71C6240, 0xD4DB300 }, - { 0xF67803F0, 0xCD9F020 }, - { 0xF5D98670, 0xC5E4040 }, - { 0xF5414B50, 0xBDAEF80 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF4251050, 0xABEB480 }, - { 0xF3A1BFC0, 0xA267990 }, - { 0xF3260FC0, 0x987FBD0 }, - { 0xF2B24CE0, 0x8E39D90 }, - { 0xF246BE60, 0x839C3D0 }, - { 0xF1E3A670, 0x78AD730 }, - { 0xF1894280, 0x6D743F8 }, - { 0xF137CA00, 0x61F7880 }, - { 0xF0EF6F70, 0x563E690 }, - { 0xF0B05F50, 0x4A50198 }, - { 0xF07AC080, 0x3E33F14 }, - { 0xF04EB410, 0x31F1704 }, - { 0xF02C5540, 0x25901E8 }, - { 0xF013B930, 0x1917A60 }, - { 0xF004EF10, 0xC8FAFD }, - { 0x10000000, 0x0 }, - { 0xFF4E6D0, 0x12D520A }, - { 0xFD3AAC0, 0x259020C }, - { 0xF9C79D0, 0x381704C }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xEED89E0, 0x5C22150 }, - { 0xE76BD80, 0x6D74400 }, - { 0xDEBE050, 0x7E2E940 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xC9D1130, 0x9D7FD10 }, - { 0xBDAEF90, 0xABEB4A0 }, - { 0xB085BA0, 0xB968420 }, - { 0xA267990, 0xC5E4030 }, - { 0x93682B0, 0xD14D3D0 }, - { 0x839C3C0, 0xDB941B0 }, - { 0x7319BA0, 0xE4AA590 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x504D728, 0xF314470 }, - { 0x3E33F40, 0xF853F80 }, - { 0x2BC4280, 0xFC3B280 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0x64855F, 0xFFEC430 }, - { 0xFF3704BF, 0xFFB10F0 }, - { 0xFE0A9B12, 0xFE13230 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xFBBB8B70, 0xF6BA070 }, - { 0xFA9C1970, 0xF109080 }, - { 0xF98421A8, 0xEA09A60 }, - { 0xF8752898, 0xE1C5970 }, - { 0xF770A640, 0xD848520 }, - { 0xF67803F0, 0xCD9F020 }, - { 0xF58C9AA0, 0xC1D8700 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF3E27900, 0xA736560 }, - { 0xF3260FE0, 0x987FC10 }, - { 0xF27B7AE0, 0x88F59C0 }, - { 0xF1E3A690, 0x78AD768 }, - { 0xF15F6590, 0x67BDE38 }, - { 0xF0EF6F70, 0x563E690 }, - { 0xF0945F90, 0x4447490 }, - { 0xF04EB410, 0x31F1704 }, - { 0xF01ECDD0, 0x1F564EC }, - { 0xF004EF10, 0xC8FB3D }, - { 0xF0013BD0, 0xFF9B7ABE }, - { 0xF013B930, 0xFE6E8572 }, - { 0xF03C4D80, 0xFD43BD5C }, - { 0xF07AC080, 0xFC1CC0C0 }, - { 0xF0CEBB90, 0xFAFB28D0 }, - { 0xF137CA20, 0xF9E08758 }, - { 0xF1B55A70, 0xF8CE6460 }, - { 0xF246BE50, 0xF7C63C40 }, - { 0xF2EB2C20, 0xF6C97D70 }, - { 0xF3A1BFB0, 0xF5D98680 }, - { 0xF4697BF0, 0xF4F7A440 }, - { 0xF5414B70, 0xF4251060 }, - { 0xF62802F0, 0xF362EED0 }, - { 0xF71C62A0, 0xF2B24CC0 }, - { 0xF81D16C8, 0xF2141FB0 }, - { 0xF928BC28, 0xF1894270 }, - { 0xFA3DDEA0, 0xF1127630 }, - { 0xFB5AFE98, 0xF0B05F50 }, - { 0xFC7E8F90, 0xF0638630 }, - { 0xFDA6FE04, 0xF02C5540 }, - { 0xFED2ADC2, 0xF00B1930 }, - { 0x10000000, 0x0 }, - { 0xFEC46D0, 0x1917A6C }, - { 0xFB14BE0, 0x31F1708 }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xE1C5970, 0x78AD750 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xC5E4030, 0xA2679A0 }, - { 0xB504F30, 0xB504F30 }, - { 0xA267990, 0xC5E4030 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x78AD738, 0xE1C5980 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x4A50180, 0xF4FA0B0 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0x10000000, 0x0 }, - { 0xFB14BE0, 0x31F1708 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xB504F30, 0xB504F30 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xF9E08740, 0xEC835E0 }, - { 0xF71C6240, 0xD4DB300 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF2B24CE0, 0x8E39D90 }, - { 0xF137CA00, 0x61F7880 }, - { 0xF04EB410, 0x31F1704 }, - { 0x10000000, 0x0 }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xA267990, 0xC5E4030 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xF8752898, 0xE1C5970 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF1E3A690, 0x78AD768 }, - { 0xF04EB410, 0x31F1704 }, - { 0xF013B930, 0xFE6E8572 }, - { 0xF137CA20, 0xF9E08758 }, - { 0xF3A1BFB0, 0xF5D98680 }, - { 0xF71C62A0, 0xF2B24CC0 }, - { 0xFB5AFE98, 0xF0B05F50 }, - { 0x10000000, 0x0 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xB504F30, 0xB504F30 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x10000000, 0x0 }, - { 0xB504F30, 0xB504F30 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0x10000000, 0x0 }, - { 0x61F78A8, 0xEC835E0 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF137CA20, 0xF9E08758 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x3, 0xF0000000 } + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99992472), COEF_CONST(0.01227154) }, + { COEF_CONST(0.99969882), COEF_CONST(0.02454123) }, + { COEF_CONST(0.99932235), COEF_CONST(0.03680722) }, + { COEF_CONST(0.99879545), COEF_CONST(0.04906768) }, + { COEF_CONST(0.99811810), COEF_CONST(0.06132074) }, + { COEF_CONST(0.99729043), COEF_CONST(0.07356457) }, + { COEF_CONST(0.99631262), COEF_CONST(0.08579732) }, + { COEF_CONST(0.99518472), COEF_CONST(0.09801714) }, + { COEF_CONST(0.99390697), COEF_CONST(0.11022221) }, + { COEF_CONST(0.99247956), COEF_CONST(0.12241068) }, + { COEF_CONST(0.99090266), COEF_CONST(0.13458072) }, + { COEF_CONST(0.98917651), COEF_CONST(0.14673047) }, + { COEF_CONST(0.98730141), COEF_CONST(0.15885815) }, + { COEF_CONST(0.98527765), COEF_CONST(0.17096190) }, + { COEF_CONST(0.98310548), COEF_CONST(0.18303989) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.97831738), COEF_CONST(0.20711139) }, + { COEF_CONST(0.97570211), COEF_CONST(0.21910124) }, + { COEF_CONST(0.97293997), COEF_CONST(0.23105812) }, + { COEF_CONST(0.97003126), COEF_CONST(0.24298020) }, + { COEF_CONST(0.96697646), COEF_CONST(0.25486568) }, + { COEF_CONST(0.96377605), COEF_CONST(0.26671278) }, + { COEF_CONST(0.96043050), COEF_CONST(0.27851969) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.95330602), COEF_CONST(0.30200595) }, + { COEF_CONST(0.94952816), COEF_CONST(0.31368175) }, + { COEF_CONST(0.94560730), COEF_CONST(0.32531032) }, + { COEF_CONST(0.94154406), COEF_CONST(0.33688986) }, + { COEF_CONST(0.93733901), COEF_CONST(0.34841868) }, + { COEF_CONST(0.93299282), COEF_CONST(0.35989505) }, + { COEF_CONST(0.92850608), COEF_CONST(0.37131721) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.91911387), COEF_CONST(0.39399207) }, + { COEF_CONST(0.91420972), COEF_CONST(0.40524134) }, + { COEF_CONST(0.90916800), COEF_CONST(0.41642958) }, + { COEF_CONST(0.90398932), COEF_CONST(0.42755508) }, + { COEF_CONST(0.89867449), COEF_CONST(0.43861625) }, + { COEF_CONST(0.89322430), COEF_CONST(0.44961134) }, + { COEF_CONST(0.88763964), COEF_CONST(0.46053872) }, + { COEF_CONST(0.88192123), COEF_CONST(0.47139674) }, + { COEF_CONST(0.87607008), COEF_CONST(0.48218375) }, + { COEF_CONST(0.87008697), COEF_CONST(0.49289823) }, + { COEF_CONST(0.86397284), COEF_CONST(0.50353837) }, + { COEF_CONST(0.85772860), COEF_CONST(0.51410276) }, + { COEF_CONST(0.85135520), COEF_CONST(0.52458972) }, + { COEF_CONST(0.84485358), COEF_CONST(0.53499764) }, + { COEF_CONST(0.83822471), COEF_CONST(0.54532498) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.82458931), COEF_CONST(0.56573182) }, + { COEF_CONST(0.81758481), COEF_CONST(0.57580823) }, + { COEF_CONST(0.81045717), COEF_CONST(0.58579791) }, + { COEF_CONST(0.80320752), COEF_CONST(0.59569931) }, + { COEF_CONST(0.79583687), COEF_CONST(0.60551101) }, + { COEF_CONST(0.78834641), COEF_CONST(0.61523163) }, + { COEF_CONST(0.78073722), COEF_CONST(0.62485951) }, + { COEF_CONST(0.77301043), COEF_CONST(0.63439333) }, + { COEF_CONST(0.76516724), COEF_CONST(0.64383155) }, + { COEF_CONST(0.75720882), COEF_CONST(0.65317285) }, + { COEF_CONST(0.74913639), COEF_CONST(0.66241580) }, + { COEF_CONST(0.74095112), COEF_CONST(0.67155898) }, + { COEF_CONST(0.73265427), COEF_CONST(0.68060100) }, + { COEF_CONST(0.72424710), COEF_CONST(0.68954057) }, + { COEF_CONST(0.71573079), COEF_CONST(0.69837630) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.69837624), COEF_CONST(0.71573085) }, + { COEF_CONST(0.68954051), COEF_CONST(0.72424710) }, + { COEF_CONST(0.68060100), COEF_CONST(0.73265427) }, + { COEF_CONST(0.67155892), COEF_CONST(0.74095118) }, + { COEF_CONST(0.66241574), COEF_CONST(0.74913639) }, + { COEF_CONST(0.65317285), COEF_CONST(0.75720888) }, + { COEF_CONST(0.64383155), COEF_CONST(0.76516730) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.62485945), COEF_CONST(0.78073728) }, + { COEF_CONST(0.61523157), COEF_CONST(0.78834641) }, + { COEF_CONST(0.60551101), COEF_CONST(0.79583693) }, + { COEF_CONST(0.59569931), COEF_CONST(0.80320752) }, + { COEF_CONST(0.58579785), COEF_CONST(0.81045717) }, + { COEF_CONST(0.57580817), COEF_CONST(0.81758481) }, + { COEF_CONST(0.56573176), COEF_CONST(0.82458931) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.54532498), COEF_CONST(0.83822471) }, + { COEF_CONST(0.53499758), COEF_CONST(0.84485358) }, + { COEF_CONST(0.52458966), COEF_CONST(0.85135520) }, + { COEF_CONST(0.51410270), COEF_CONST(0.85772866) }, + { COEF_CONST(0.50353837), COEF_CONST(0.86397284) }, + { COEF_CONST(0.49289817), COEF_CONST(0.87008697) }, + { COEF_CONST(0.48218375), COEF_CONST(0.87607014) }, + { COEF_CONST(0.47139671), COEF_CONST(0.88192129) }, + { COEF_CONST(0.46053869), COEF_CONST(0.88763964) }, + { COEF_CONST(0.44961131), COEF_CONST(0.89322430) }, + { COEF_CONST(0.43861622), COEF_CONST(0.89867449) }, + { COEF_CONST(0.42755505), COEF_CONST(0.90398932) }, + { COEF_CONST(0.41642952), COEF_CONST(0.90916800) }, + { COEF_CONST(0.40524128), COEF_CONST(0.91420978) }, + { COEF_CONST(0.39399201), COEF_CONST(0.91911387) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.37131718), COEF_CONST(0.92850608) }, + { COEF_CONST(0.35989499), COEF_CONST(0.93299282) }, + { COEF_CONST(0.34841865), COEF_CONST(0.93733901) }, + { COEF_CONST(0.33688983), COEF_CONST(0.94154406) }, + { COEF_CONST(0.32531026), COEF_CONST(0.94560736) }, + { COEF_CONST(0.31368172), COEF_CONST(0.94952822) }, + { COEF_CONST(0.30200592), COEF_CONST(0.95330602) }, + { COEF_CONST(0.29028463), COEF_CONST(0.95694035) }, + { COEF_CONST(0.27851966), COEF_CONST(0.96043056) }, + { COEF_CONST(0.26671273), COEF_CONST(0.96377605) }, + { COEF_CONST(0.25486562), COEF_CONST(0.96697646) }, + { COEF_CONST(0.24298014), COEF_CONST(0.97003126) }, + { COEF_CONST(0.23105808), COEF_CONST(0.97293997) }, + { COEF_CONST(0.21910121), COEF_CONST(0.97570211) }, + { COEF_CONST(0.20711134), COEF_CONST(0.97831738) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(0.18303984), COEF_CONST(0.98310548) }, + { COEF_CONST(0.17096186), COEF_CONST(0.98527765) }, + { COEF_CONST(0.15885811), COEF_CONST(0.98730141) }, + { COEF_CONST(0.14673044), COEF_CONST(0.98917651) }, + { COEF_CONST(0.13458067), COEF_CONST(0.99090266) }, + { COEF_CONST(0.12241063), COEF_CONST(0.99247956) }, + { COEF_CONST(0.11022217), COEF_CONST(0.99390697) }, + { COEF_CONST(0.09801710), COEF_CONST(0.99518472) }, + { COEF_CONST(0.08579727), COEF_CONST(0.99631262) }, + { COEF_CONST(0.07356452), COEF_CONST(0.99729043) }, + { COEF_CONST(0.06132070), COEF_CONST(0.99811810) }, + { COEF_CONST(0.04906763), COEF_CONST(0.99879545) }, + { COEF_CONST(0.03680718), COEF_CONST(0.99932241) }, + { COEF_CONST(0.02454119), COEF_CONST(0.99969882) }, + { COEF_CONST(0.01227149), COEF_CONST(0.99992472) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.01227158), COEF_CONST(0.99992472) }, + { COEF_CONST(-0.02454127), COEF_CONST(0.99969882) }, + { COEF_CONST(-0.03680727), COEF_CONST(0.99932235) }, + { COEF_CONST(-0.04906772), COEF_CONST(0.99879545) }, + { COEF_CONST(-0.06132078), COEF_CONST(0.99811810) }, + { COEF_CONST(-0.07356461), COEF_CONST(0.99729043) }, + { COEF_CONST(-0.08579735), COEF_CONST(0.99631262) }, + { COEF_CONST(-0.09801719), COEF_CONST(0.99518472) }, + { COEF_CONST(-0.11022225), COEF_CONST(0.99390697) }, + { COEF_CONST(-0.12241072), COEF_CONST(0.99247950) }, + { COEF_CONST(-0.13458076), COEF_CONST(0.99090260) }, + { COEF_CONST(-0.14673053), COEF_CONST(0.98917651) }, + { COEF_CONST(-0.15885819), COEF_CONST(0.98730141) }, + { COEF_CONST(-0.17096193), COEF_CONST(0.98527765) }, + { COEF_CONST(-0.18303993), COEF_CONST(0.98310548) }, + { COEF_CONST(-0.19509037), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.20711142), COEF_CONST(0.97831738) }, + { COEF_CONST(-0.21910129), COEF_CONST(0.97570211) }, + { COEF_CONST(-0.23105815), COEF_CONST(0.97293991) }, + { COEF_CONST(-0.24298023), COEF_CONST(0.97003126) }, + { COEF_CONST(-0.25486571), COEF_CONST(0.96697646) }, + { COEF_CONST(-0.26671281), COEF_CONST(0.96377605) }, + { COEF_CONST(-0.27851975), COEF_CONST(0.96043050) }, + { COEF_CONST(-0.29028472), COEF_CONST(0.95694029) }, + { COEF_CONST(-0.30200601), COEF_CONST(0.95330602) }, + { COEF_CONST(-0.31368178), COEF_CONST(0.94952816) }, + { COEF_CONST(-0.32531035), COEF_CONST(0.94560730) }, + { COEF_CONST(-0.33688989), COEF_CONST(0.94154406) }, + { COEF_CONST(-0.34841874), COEF_CONST(0.93733895) }, + { COEF_CONST(-0.35989508), COEF_CONST(0.93299282) }, + { COEF_CONST(-0.37131724), COEF_CONST(0.92850608) }, + { COEF_CONST(-0.38268349), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.39399210), COEF_CONST(0.91911387) }, + { COEF_CONST(-0.40524137), COEF_CONST(0.91420972) }, + { COEF_CONST(-0.41642961), COEF_CONST(0.90916800) }, + { COEF_CONST(-0.42755514), COEF_CONST(0.90398932) }, + { COEF_CONST(-0.43861628), COEF_CONST(0.89867443) }, + { COEF_CONST(-0.44961137), COEF_CONST(0.89322430) }, + { COEF_CONST(-0.46053877), COEF_CONST(0.88763958) }, + { COEF_CONST(-0.47139677), COEF_CONST(0.88192123) }, + { COEF_CONST(-0.48218381), COEF_CONST(0.87607002) }, + { COEF_CONST(-0.49289826), COEF_CONST(0.87008703) }, + { COEF_CONST(-0.50353843), COEF_CONST(0.86397284) }, + { COEF_CONST(-0.51410282), COEF_CONST(0.85772860) }, + { COEF_CONST(-0.52458972), COEF_CONST(0.85135514) }, + { COEF_CONST(-0.53499764), COEF_CONST(0.84485352) }, + { COEF_CONST(-0.54532504), COEF_CONST(0.83822465) }, + { COEF_CONST(-0.55557030), COEF_CONST(0.83146954) }, + { COEF_CONST(-0.56573188), COEF_CONST(0.82458931) }, + { COEF_CONST(-0.57580823), COEF_CONST(0.81758481) }, + { COEF_CONST(-0.58579791), COEF_CONST(0.81045717) }, + { COEF_CONST(-0.59569937), COEF_CONST(0.80320752) }, + { COEF_CONST(-0.60551107), COEF_CONST(0.79583687) }, + { COEF_CONST(-0.61523163), COEF_CONST(0.78834635) }, + { COEF_CONST(-0.62485951), COEF_CONST(0.78073710) }, + { COEF_CONST(-0.63439333), COEF_CONST(0.77301049) }, + { COEF_CONST(-0.64383161), COEF_CONST(0.76516724) }, + { COEF_CONST(-0.65317291), COEF_CONST(0.75720882) }, + { COEF_CONST(-0.66241580), COEF_CONST(0.74913633) }, + { COEF_CONST(-0.67155898), COEF_CONST(0.74095106) }, + { COEF_CONST(-0.68060106), COEF_CONST(0.73265415) }, + { COEF_CONST(-0.68954057), COEF_CONST(0.72424698) }, + { COEF_CONST(-0.69837630), COEF_CONST(0.71573085) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.71573085), COEF_CONST(0.69837624) }, + { COEF_CONST(-0.72424716), COEF_CONST(0.68954051) }, + { COEF_CONST(-0.73265433), COEF_CONST(0.68060094) }, + { COEF_CONST(-0.74095118), COEF_CONST(0.67155886) }, + { COEF_CONST(-0.74913645), COEF_CONST(0.66241562) }, + { COEF_CONST(-0.75720888), COEF_CONST(0.65317285) }, + { COEF_CONST(-0.76516730), COEF_CONST(0.64383155) }, + { COEF_CONST(-0.77301049), COEF_CONST(0.63439327) }, + { COEF_CONST(-0.78073728), COEF_CONST(0.62485945) }, + { COEF_CONST(-0.78834647), COEF_CONST(0.61523151) }, + { COEF_CONST(-0.79583693), COEF_CONST(0.60551095) }, + { COEF_CONST(-0.80320758), COEF_CONST(0.59569913) }, + { COEF_CONST(-0.81045723), COEF_CONST(0.58579785) }, + { COEF_CONST(-0.81758487), COEF_CONST(0.57580817) }, + { COEF_CONST(-0.82458937), COEF_CONST(0.56573176) }, + { COEF_CONST(-0.83146966), COEF_CONST(0.55557019) }, + { COEF_CONST(-0.83822477), COEF_CONST(0.54532486) }, + { COEF_CONST(-0.84485358), COEF_CONST(0.53499746) }, + { COEF_CONST(-0.85135525), COEF_CONST(0.52458954) }, + { COEF_CONST(-0.85772866), COEF_CONST(0.51410276) }, + { COEF_CONST(-0.86397290), COEF_CONST(0.50353837) }, + { COEF_CONST(-0.87008703), COEF_CONST(0.49289814) }, + { COEF_CONST(-0.87607014), COEF_CONST(0.48218369) }, + { COEF_CONST(-0.88192129), COEF_CONST(0.47139663) }, + { COEF_CONST(-0.88763964), COEF_CONST(0.46053857) }, + { COEF_CONST(-0.89322436), COEF_CONST(0.44961137) }, + { COEF_CONST(-0.89867449), COEF_CONST(0.43861625) }, + { COEF_CONST(-0.90398932), COEF_CONST(0.42755505) }, + { COEF_CONST(-0.90916800), COEF_CONST(0.41642949) }, + { COEF_CONST(-0.91420978), COEF_CONST(0.40524122) }, + { COEF_CONST(-0.91911387), COEF_CONST(0.39399192) }, + { COEF_CONST(-0.92387956), COEF_CONST(0.38268328) }, + { COEF_CONST(-0.92850614), COEF_CONST(0.37131724) }, + { COEF_CONST(-0.93299282), COEF_CONST(0.35989505) }, + { COEF_CONST(-0.93733907), COEF_CONST(0.34841865) }, + { COEF_CONST(-0.94154412), COEF_CONST(0.33688980) }, + { COEF_CONST(-0.94560736), COEF_CONST(0.32531020) }, + { COEF_CONST(-0.94952822), COEF_CONST(0.31368160) }, + { COEF_CONST(-0.95330608), COEF_CONST(0.30200580) }, + { COEF_CONST(-0.95694035), COEF_CONST(0.29028472) }, + { COEF_CONST(-0.96043056), COEF_CONST(0.27851969) }, + { COEF_CONST(-0.96377611), COEF_CONST(0.26671273) }, + { COEF_CONST(-0.96697646), COEF_CONST(0.25486559) }, + { COEF_CONST(-0.97003126), COEF_CONST(0.24298008) }, + { COEF_CONST(-0.97293997), COEF_CONST(0.23105797) }, + { COEF_CONST(-0.97570217), COEF_CONST(0.21910107) }, + { COEF_CONST(-0.97831738), COEF_CONST(0.20711140) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(-0.98310548), COEF_CONST(0.18303984) }, + { COEF_CONST(-0.98527765), COEF_CONST(0.17096181) }, + { COEF_CONST(-0.98730141), COEF_CONST(0.15885803) }, + { COEF_CONST(-0.98917651), COEF_CONST(0.14673033) }, + { COEF_CONST(-0.99090266), COEF_CONST(0.13458052) }, + { COEF_CONST(-0.99247956), COEF_CONST(0.12241070) }, + { COEF_CONST(-0.99390697), COEF_CONST(0.11022220) }, + { COEF_CONST(-0.99518472), COEF_CONST(0.09801710) }, + { COEF_CONST(-0.99631262), COEF_CONST(0.08579723) }, + { COEF_CONST(-0.99729049), COEF_CONST(0.07356445) }, + { COEF_CONST(-0.99811810), COEF_CONST(0.06132058) }, + { COEF_CONST(-0.99879545), COEF_CONST(0.04906749) }, + { COEF_CONST(-0.99932241), COEF_CONST(0.03680724) }, + { COEF_CONST(-0.99969882), COEF_CONST(0.02454121) }, + { COEF_CONST(-0.99992472), COEF_CONST(0.01227149) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99969882), COEF_CONST(0.02454123) }, + { COEF_CONST(0.99879545), COEF_CONST(0.04906768) }, + { COEF_CONST(0.99729043), COEF_CONST(0.07356457) }, + { COEF_CONST(0.99518472), COEF_CONST(0.09801714) }, + { COEF_CONST(0.99247956), COEF_CONST(0.12241068) }, + { COEF_CONST(0.98917651), COEF_CONST(0.14673047) }, + { COEF_CONST(0.98527765), COEF_CONST(0.17096190) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.97570211), COEF_CONST(0.21910124) }, + { COEF_CONST(0.97003126), COEF_CONST(0.24298020) }, + { COEF_CONST(0.96377605), COEF_CONST(0.26671278) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.94952816), COEF_CONST(0.31368175) }, + { COEF_CONST(0.94154406), COEF_CONST(0.33688986) }, + { COEF_CONST(0.93299282), COEF_CONST(0.35989505) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.91420972), COEF_CONST(0.40524134) }, + { COEF_CONST(0.90398932), COEF_CONST(0.42755508) }, + { COEF_CONST(0.89322430), COEF_CONST(0.44961134) }, + { COEF_CONST(0.88192123), COEF_CONST(0.47139674) }, + { COEF_CONST(0.87008697), COEF_CONST(0.49289823) }, + { COEF_CONST(0.85772860), COEF_CONST(0.51410276) }, + { COEF_CONST(0.84485358), COEF_CONST(0.53499764) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.81758481), COEF_CONST(0.57580823) }, + { COEF_CONST(0.80320752), COEF_CONST(0.59569931) }, + { COEF_CONST(0.78834641), COEF_CONST(0.61523163) }, + { COEF_CONST(0.77301043), COEF_CONST(0.63439333) }, + { COEF_CONST(0.75720882), COEF_CONST(0.65317285) }, + { COEF_CONST(0.74095112), COEF_CONST(0.67155898) }, + { COEF_CONST(0.72424710), COEF_CONST(0.68954057) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.68954051), COEF_CONST(0.72424710) }, + { COEF_CONST(0.67155892), COEF_CONST(0.74095118) }, + { COEF_CONST(0.65317285), COEF_CONST(0.75720888) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.61523157), COEF_CONST(0.78834641) }, + { COEF_CONST(0.59569931), COEF_CONST(0.80320752) }, + { COEF_CONST(0.57580817), COEF_CONST(0.81758481) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.53499758), COEF_CONST(0.84485358) }, + { COEF_CONST(0.51410270), COEF_CONST(0.85772866) }, + { COEF_CONST(0.49289817), COEF_CONST(0.87008697) }, + { COEF_CONST(0.47139671), COEF_CONST(0.88192129) }, + { COEF_CONST(0.44961131), COEF_CONST(0.89322430) }, + { COEF_CONST(0.42755505), COEF_CONST(0.90398932) }, + { COEF_CONST(0.40524128), COEF_CONST(0.91420978) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.35989499), COEF_CONST(0.93299282) }, + { COEF_CONST(0.33688983), COEF_CONST(0.94154406) }, + { COEF_CONST(0.31368172), COEF_CONST(0.94952822) }, + { COEF_CONST(0.29028463), COEF_CONST(0.95694035) }, + { COEF_CONST(0.26671273), COEF_CONST(0.96377605) }, + { COEF_CONST(0.24298014), COEF_CONST(0.97003126) }, + { COEF_CONST(0.21910121), COEF_CONST(0.97570211) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(0.17096186), COEF_CONST(0.98527765) }, + { COEF_CONST(0.14673044), COEF_CONST(0.98917651) }, + { COEF_CONST(0.12241063), COEF_CONST(0.99247956) }, + { COEF_CONST(0.09801710), COEF_CONST(0.99518472) }, + { COEF_CONST(0.07356452), COEF_CONST(0.99729043) }, + { COEF_CONST(0.04906763), COEF_CONST(0.99879545) }, + { COEF_CONST(0.02454119), COEF_CONST(0.99969882) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99879545), COEF_CONST(0.04906768) }, + { COEF_CONST(0.99518472), COEF_CONST(0.09801714) }, + { COEF_CONST(0.98917651), COEF_CONST(0.14673047) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.97003126), COEF_CONST(0.24298020) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.94154406), COEF_CONST(0.33688986) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.90398932), COEF_CONST(0.42755508) }, + { COEF_CONST(0.88192123), COEF_CONST(0.47139674) }, + { COEF_CONST(0.85772860), COEF_CONST(0.51410276) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.80320752), COEF_CONST(0.59569931) }, + { COEF_CONST(0.77301043), COEF_CONST(0.63439333) }, + { COEF_CONST(0.74095112), COEF_CONST(0.67155898) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.67155892), COEF_CONST(0.74095118) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.59569931), COEF_CONST(0.80320752) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.51410270), COEF_CONST(0.85772866) }, + { COEF_CONST(0.47139671), COEF_CONST(0.88192129) }, + { COEF_CONST(0.42755505), COEF_CONST(0.90398932) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.33688983), COEF_CONST(0.94154406) }, + { COEF_CONST(0.29028463), COEF_CONST(0.95694035) }, + { COEF_CONST(0.24298014), COEF_CONST(0.97003126) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(0.14673044), COEF_CONST(0.98917651) }, + { COEF_CONST(0.09801710), COEF_CONST(0.99518472) }, + { COEF_CONST(0.04906763), COEF_CONST(0.99879545) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.04906772), COEF_CONST(0.99879545) }, + { COEF_CONST(-0.09801719), COEF_CONST(0.99518472) }, + { COEF_CONST(-0.14673053), COEF_CONST(0.98917651) }, + { COEF_CONST(-0.19509037), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.24298023), COEF_CONST(0.97003126) }, + { COEF_CONST(-0.29028472), COEF_CONST(0.95694029) }, + { COEF_CONST(-0.33688989), COEF_CONST(0.94154406) }, + { COEF_CONST(-0.38268349), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.42755514), COEF_CONST(0.90398932) }, + { COEF_CONST(-0.47139677), COEF_CONST(0.88192123) }, + { COEF_CONST(-0.51410282), COEF_CONST(0.85772860) }, + { COEF_CONST(-0.55557030), COEF_CONST(0.83146954) }, + { COEF_CONST(-0.59569937), COEF_CONST(0.80320752) }, + { COEF_CONST(-0.63439333), COEF_CONST(0.77301049) }, + { COEF_CONST(-0.67155898), COEF_CONST(0.74095106) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.74095118), COEF_CONST(0.67155886) }, + { COEF_CONST(-0.77301049), COEF_CONST(0.63439327) }, + { COEF_CONST(-0.80320758), COEF_CONST(0.59569913) }, + { COEF_CONST(-0.83146966), COEF_CONST(0.55557019) }, + { COEF_CONST(-0.85772866), COEF_CONST(0.51410276) }, + { COEF_CONST(-0.88192129), COEF_CONST(0.47139663) }, + { COEF_CONST(-0.90398932), COEF_CONST(0.42755505) }, + { COEF_CONST(-0.92387956), COEF_CONST(0.38268328) }, + { COEF_CONST(-0.94154412), COEF_CONST(0.33688980) }, + { COEF_CONST(-0.95694035), COEF_CONST(0.29028472) }, + { COEF_CONST(-0.97003126), COEF_CONST(0.24298008) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(-0.98917651), COEF_CONST(0.14673033) }, + { COEF_CONST(-0.99518472), COEF_CONST(0.09801710) }, + { COEF_CONST(-0.99879545), COEF_CONST(0.04906749) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99729043), COEF_CONST(0.07356457) }, + { COEF_CONST(0.98917651), COEF_CONST(0.14673047) }, + { COEF_CONST(0.97570211), COEF_CONST(0.21910124) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.93299282), COEF_CONST(0.35989505) }, + { COEF_CONST(0.90398932), COEF_CONST(0.42755508) }, + { COEF_CONST(0.87008697), COEF_CONST(0.49289823) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.78834641), COEF_CONST(0.61523157) }, + { COEF_CONST(0.74095112), COEF_CONST(0.67155898) }, + { COEF_CONST(0.68954057), COEF_CONST(0.72424710) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.57580817), COEF_CONST(0.81758481) }, + { COEF_CONST(0.51410276), COEF_CONST(0.85772866) }, + { COEF_CONST(0.44961134), COEF_CONST(0.89322430) }, + { COEF_CONST(0.38268343), COEF_CONST(0.92387950) }, + { COEF_CONST(0.31368175), COEF_CONST(0.94952816) }, + { COEF_CONST(0.24298018), COEF_CONST(0.97003126) }, + { COEF_CONST(0.17096189), COEF_CONST(0.98527765) }, + { COEF_CONST(0.09801713), COEF_CONST(0.99518472) }, + { COEF_CONST(0.02454123), COEF_CONST(0.99969882) }, + { COEF_CONST(-0.04906768), COEF_CONST(0.99879545) }, + { COEF_CONST(-0.12241068), COEF_CONST(0.99247950) }, + { COEF_CONST(-0.19509032), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.26671275), COEF_CONST(0.96377605) }, + { COEF_CONST(-0.33688986), COEF_CONST(0.94154406) }, + { COEF_CONST(-0.40524131), COEF_CONST(0.91420972) }, + { COEF_CONST(-0.47139674), COEF_CONST(0.88192123) }, + { COEF_CONST(-0.53499764), COEF_CONST(0.84485352) }, + { COEF_CONST(-0.59569931), COEF_CONST(0.80320752) }, + { COEF_CONST(-0.65317285), COEF_CONST(0.75720882) }, + { COEF_CONST(-0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.75720882), COEF_CONST(0.65317285) }, + { COEF_CONST(-0.80320752), COEF_CONST(0.59569937) }, + { COEF_CONST(-0.84485358), COEF_CONST(0.53499770) }, + { COEF_CONST(-0.88192129), COEF_CONST(0.47139683) }, + { COEF_CONST(-0.91420978), COEF_CONST(0.40524122) }, + { COEF_CONST(-0.94154406), COEF_CONST(0.33688980) }, + { COEF_CONST(-0.96377605), COEF_CONST(0.26671273) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(-0.99247956), COEF_CONST(0.12241070) }, + { COEF_CONST(-0.99879545), COEF_CONST(0.04906772) }, + { COEF_CONST(-0.99969882), COEF_CONST(-0.02454115) }, + { COEF_CONST(-0.99518472), COEF_CONST(-0.09801727) }, + { COEF_CONST(-0.98527765), COEF_CONST(-0.17096199) }, + { COEF_CONST(-0.97003126), COEF_CONST(-0.24298024) }, + { COEF_CONST(-0.94952816), COEF_CONST(-0.31368178) }, + { COEF_CONST(-0.92387950), COEF_CONST(-0.38268343) }, + { COEF_CONST(-0.89322430), COEF_CONST(-0.44961131) }, + { COEF_CONST(-0.85772860), COEF_CONST(-0.51410270) }, + { COEF_CONST(-0.81758481), COEF_CONST(-0.57580811) }, + { COEF_CONST(-0.77301043), COEF_CONST(-0.63439322) }, + { COEF_CONST(-0.72424710), COEF_CONST(-0.68954062) }, + { COEF_CONST(-0.67155898), COEF_CONST(-0.74095118) }, + { COEF_CONST(-0.61523157), COEF_CONST(-0.78834647) }, + { COEF_CONST(-0.55557024), COEF_CONST(-0.83146977) }, + { COEF_CONST(-0.49289820), COEF_CONST(-0.87008697) }, + { COEF_CONST(-0.42755508), COEF_CONST(-0.90398937) }, + { COEF_CONST(-0.35989502), COEF_CONST(-0.93299276) }, + { COEF_CONST(-0.29028466), COEF_CONST(-0.95694035) }, + { COEF_CONST(-0.21910124), COEF_CONST(-0.97570211) }, + { COEF_CONST(-0.14673047), COEF_CONST(-0.98917651) }, + { COEF_CONST(-0.07356455), COEF_CONST(-0.99729043) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99518472), COEF_CONST(0.09801714) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.88192123), COEF_CONST(0.47139674) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.77301043), COEF_CONST(0.63439333) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.47139671), COEF_CONST(0.88192129) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.29028463), COEF_CONST(0.95694035) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(0.09801710), COEF_CONST(0.99518472) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.19509037), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.38268349), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.55557030), COEF_CONST(0.83146954) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.83146966), COEF_CONST(0.55557019) }, + { COEF_CONST(-0.92387956), COEF_CONST(0.38268328) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.38268343), COEF_CONST(0.92387950) }, + { COEF_CONST(0.09801713), COEF_CONST(0.99518472) }, + { COEF_CONST(-0.19509032), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.47139674), COEF_CONST(0.88192123) }, + { COEF_CONST(-0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.88192129), COEF_CONST(0.47139683) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(-0.99518472), COEF_CONST(-0.09801727) }, + { COEF_CONST(-0.92387950), COEF_CONST(-0.38268343) }, + { COEF_CONST(-0.77301043), COEF_CONST(-0.63439322) }, + { COEF_CONST(-0.55557024), COEF_CONST(-0.83146977) }, + { COEF_CONST(-0.29028466), COEF_CONST(-0.95694035) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.38268343), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.92387950), COEF_CONST(-0.38268343) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.00000001), COEF_CONST(-1.00000000) } }; complex_t cfft_tab_480[] = { - { 0x10000000, 0x0 }, - { 0xFFFA630, 0x359D6F }, - { 0xFFE98B0, 0x6B3885 }, - { 0xFFCD790, 0xA0CEE7 }, - { 0xFFA62F0, 0xD65E3B }, - { 0xFF73AF0, 0x10BE428 }, - { 0xFF35F90, 0x1415E54 }, - { 0xFEED120, 0x176CA68 }, - { 0xFE98FD0, 0x1AC260A }, - { 0xFE39BC0, 0x1E16EE6 }, - { 0xFDCF550, 0x216A2A4 }, - { 0xFD59CB0, 0x24BBEEC }, - { 0xFCD9250, 0x280C170 }, - { 0xFC4D670, 0x2B5A7D4 }, - { 0xFBB6980, 0x2EA6FCC }, - { 0xFB14BE0, 0x31F1708 }, - { 0xFA67E20, 0x3539B38 }, - { 0xF9B0090, 0x387FA0C }, - { 0xF8ED3C0, 0x3BC3138 }, - { 0xF81F840, 0x3F03E70 }, - { 0xF746EA0, 0x4241F70 }, - { 0xF663770, 0x457D1F0 }, - { 0xF575360, 0x48B53B0 }, - { 0xF47C300, 0x4BEA268 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xF26A030, 0x5249DB0 }, - { 0xF150F40, 0x55745E0 }, - { 0xF02D4F0, 0x589B210 }, - { 0xEEFF200, 0x5BBE008 }, - { 0xEDC6770, 0x5EDCDA0 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xEB35E60, 0x650DEF8 }, - { 0xE9DE1D0, 0x681FE48 }, - { 0xE87C120, 0x6B2D490 }, - { 0xE70FD40, 0x6E35FA0 }, - { 0xE599740, 0x7139D58 }, - { 0xE419010, 0x7438B90 }, - { 0xE28E8D0, 0x7732838 }, - { 0xE0FA280, 0x7A27140 }, - { 0xDF5BE60, 0x7D16488 }, - { 0xDDB3D70, 0x8000000 }, - { 0xDC020F0, 0x82E41B0 }, - { 0xDA46A00, 0x85C2770 }, - { 0xD8819E0, 0x889AF60 }, - { 0xD6B31D0, 0x8B6D770 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xD2F9EF0, 0x9100000 }, - { 0xD10F6B0, 0x93BFCA0 }, - { 0xCF1BBD0, 0x9679180 }, - { 0xCD1EF80, 0x992BCD0 }, - { 0xCB19340, 0x9BD7CA0 }, - { 0xC90A870, 0x9E7CF10 }, - { 0xC6F3090, 0xA11B240 }, - { 0xC4D2D10, 0xA3B2460 }, - { 0xC2A9F70, 0xA6423B0 }, - { 0xC078920, 0xA8CAE40 }, - { 0xBE3EBD0, 0xAB4C250 }, - { 0xBBFC8F0, 0xADC5E30 }, - { 0xB9B2230, 0xB038010 }, - { 0xB75F900, 0xB2A2660 }, - { 0xB504F30, 0xB504F30 }, - { 0xB2A2650, 0xB75F910 }, - { 0xB038010, 0xB9B2230 }, - { 0xADC5E20, 0xBBFC900 }, - { 0xAB4C240, 0xBE3EBE0 }, - { 0xA8CAE30, 0xC078930 }, - { 0xA6423A0, 0xC2A9F70 }, - { 0xA3B2460, 0xC4D2D20 }, - { 0xA11B240, 0xC6F30A0 }, - { 0x9E7CF10, 0xC90A880 }, - { 0x9BD7C90, 0xCB19350 }, - { 0x992BCD0, 0xCD1EF90 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x93BFC90, 0xD10F6C0 }, - { 0x9100000, 0xD2F9EF0 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x8B6D760, 0xD6B31E0 }, - { 0x889AF60, 0xD8819E0 }, - { 0x85C2760, 0xDA46A10 }, - { 0x82E41B0, 0xDC020F0 }, - { 0x7FFFFF8, 0xDDB3D80 }, - { 0x7D16470, 0xDF5BE70 }, - { 0x7A27138, 0xE0FA290 }, - { 0x7732828, 0xE28E8D0 }, - { 0x7438B90, 0xE419010 }, - { 0x7139D48, 0xE599740 }, - { 0x6E35F88, 0xE70FD50 }, - { 0x6B2D490, 0xE87C120 }, - { 0x681FE40, 0xE9DE1E0 }, - { 0x650DEE0, 0xEB35E70 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x5EDCD98, 0xEDC6770 }, - { 0x5BBDFF0, 0xEEFF210 }, - { 0x589B208, 0xF02D4F0 }, - { 0x55745D0, 0xF150F40 }, - { 0x5249DB8, 0xF26A030 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x4BEA250, 0xF47C300 }, - { 0x48B53A8, 0xF575360 }, - { 0x457D1E0, 0xF663780 }, - { 0x4241F78, 0xF746EA0 }, - { 0x3F03E68, 0xF81F840 }, - { 0x3BC3124, 0xF8ED3C0 }, - { 0x387FA0C, 0xF9B0090 }, - { 0x3539B2C, 0xFA67E20 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0x2EA6FCC, 0xFBB6980 }, - { 0x2B5A7C4, 0xFC4D670 }, - { 0x280C154, 0xFCD9250 }, - { 0x24BBEE4, 0xFD59CB0 }, - { 0x216A290, 0xFDCF550 }, - { 0x1E16EE6, 0xFE39BC0 }, - { 0x1AC25FE, 0xFE98FD0 }, - { 0x176CA50, 0xFEED120 }, - { 0x1415E50, 0xFF35F90 }, - { 0x10BE418, 0xFF73AF0 }, - { 0xD65E3F, 0xFFA62F0 }, - { 0xA0CEDF, 0xFFCD790 }, - { 0x6B3871, 0xFFE98B0 }, - { 0x359D70, 0xFFFA630 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFFCA6279, 0xFFFA630 }, - { 0xFF94C777, 0xFFE98B0 }, - { 0xFF5F3109, 0xFFCD790 }, - { 0xFF29A1AA, 0xFFA62F0 }, - { 0xFEF41BD0, 0xFF73AF0 }, - { 0xFEBEA198, 0xFF35F90 }, - { 0xFE893598, 0xFEED120 }, - { 0xFE53D9EA, 0xFE98FD0 }, - { 0xFE1E9102, 0xFE39BC0 }, - { 0xFDE95D58, 0xFDCF550 }, - { 0xFDB44104, 0xFD59CB0 }, - { 0xFD7F3E98, 0xFCD9250 }, - { 0xFD4A5824, 0xFC4D670 }, - { 0xFD159020, 0xFBB6980 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xFCAC64BC, 0xFA67E10 }, - { 0xFC7805E0, 0xF9B0080 }, - { 0xFC43CEC4, 0xF8ED3C0 }, - { 0xFC0FC180, 0xF81F840 }, - { 0xFBDBE070, 0xF746EA0 }, - { 0xFBA82E08, 0xF663770 }, - { 0xFB74AC40, 0xF575350 }, - { 0xFB415DA0, 0xF47C300 }, - { 0xFB0E4428, 0xF378700 }, - { 0xFADB6230, 0xF26A030 }, - { 0xFAA8BA20, 0xF150F40 }, - { 0xFA764DE8, 0xF02D4E0 }, - { 0xFA441FF8, 0xEEFF210 }, - { 0xFA123250, 0xEDC6760 }, - { 0xF9E08740, 0xEC835E0 }, - { 0xF9AF2110, 0xEB35E70 }, - { 0xF97E01A8, 0xE9DE1D0 }, - { 0xF94D2B58, 0xE87C110 }, - { 0xF91CA060, 0xE70FD40 }, - { 0xF8EC62C0, 0xE599740 }, - { 0xF8BC7458, 0xE419000 }, - { 0xF88CD7C0, 0xE28E8C0 }, - { 0xF85D8ED0, 0xE0FA290 }, - { 0xF82E9B60, 0xDF5BE50 }, - { 0xF7FFFFF0, 0xDDB3D70 }, - { 0xF7D1BE60, 0xDC020F0 }, - { 0xF7A3D870, 0xDA469F0 }, - { 0xF7765090, 0xD8819E0 }, - { 0xF7492890, 0xD6B31D0 }, - { 0xF71C6240, 0xD4DB300 }, - { 0xF6EFFFF0, 0xD2F9EE0 }, - { 0xF6C40360, 0xD10F6C0 }, - { 0xF6986E90, 0xCF1BBD0 }, - { 0xF66D4320, 0xCD1EF70 }, - { 0xF6428360, 0xCB19340 }, - { 0xF6183100, 0xC90A880 }, - { 0xF5EE4DA0, 0xC6F3080 }, - { 0xF5C4DB90, 0xC4D2D10 }, - { 0xF59BDC60, 0xC2A9F70 }, - { 0xF57351B0, 0xC078910 }, - { 0xF54B3DA0, 0xBE3EBD0 }, - { 0xF523A1D0, 0xBBFC8F0 }, - { 0xF4FC7FD0, 0xB9B2210 }, - { 0xF4D5D9A0, 0xB75F8F0 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF48A06E0, 0xB2A2630 }, - { 0xF464DDC0, 0xB038000 }, - { 0xF4403700, 0xADC5E20 }, - { 0xF41C1410, 0xAB4C220 }, - { 0xF3F876C0, 0xA8CAE20 }, - { 0xF3D56080, 0xA6423A0 }, - { 0xF3B2D2F0, 0xA3B2470 }, - { 0xF390CF50, 0xA11B220 }, - { 0xF36F5780, 0x9E7CF00 }, - { 0xF34E6CC0, 0x9BD7CA0 }, - { 0xF32E1060, 0x992BCB0 }, - { 0xF30E4420, 0x9679170 }, - { 0xF2EF0940, 0x93BFCA0 }, - { 0xF2D060F0, 0x90FFFE0 }, - { 0xF2B24CE0, 0x8E39D90 }, - { 0xF294CE30, 0x8B6D770 }, - { 0xF277E600, 0x889AF30 }, - { 0xF25B95F0, 0x85C2760 }, - { 0xF23FDF10, 0x82E41A0 }, - { 0xF224C290, 0x8000010 }, - { 0xF20A4190, 0x7D16468 }, - { 0xF1F05D70, 0x7A27130 }, - { 0xF1D71730, 0x7732840 }, - { 0xF1BE6FE0, 0x7438B68 }, - { 0xF1A668C0, 0x7139D40 }, - { 0xF18F02C0, 0x6E35FA0 }, - { 0xF1783ED0, 0x6B2D468 }, - { 0xF1621E20, 0x681FE38 }, - { 0xF14CA190, 0x650DEF0 }, - { 0xF137CA00, 0x61F7880 }, - { 0xF1239890, 0x5EDCD88 }, - { 0xF1100DF0, 0x5BBE000 }, - { 0xF0FD2B00, 0x589B1E0 }, - { 0xF0EAF0B0, 0x55745C0 }, - { 0xF0D95FC0, 0x5249DB0 }, - { 0xF0C878E0, 0x4F1BB98 }, - { 0xF0B83CF0, 0x4BEA240 }, - { 0xF0A8ACA0, 0x48B53A0 }, - { 0xF099C890, 0x457D1F8 }, - { 0xF08B9150, 0x4241F50 }, - { 0xF07E07B0, 0x3F03E60 }, - { 0xF0712C40, 0x3BC3138 }, - { 0xF064FF70, 0x387F9E0 }, - { 0xF05981E0, 0x3539B20 }, - { 0xF04EB410, 0x31F1704 }, - { 0xF0449680, 0x2EA6FA0 }, - { 0xF03B2990, 0x2B5A7B8 }, - { 0xF0326DB0, 0x280C168 }, - { 0xF02A6340, 0x24BBEB8 }, - { 0xF0230AB0, 0x216A284 }, - { 0xF01C6440, 0x1E16EDA }, - { 0xF0167030, 0x1AC2612 }, - { 0xF0112ED0, 0x176CA44 }, - { 0xF00CA060, 0x1415E44 }, - { 0xF008C510, 0x10BE42C }, - { 0xF0059D00, 0xD65E13 }, - { 0xF0032870, 0xA0CED3 }, - { 0xF0016750, 0x6B3886 }, - { 0xF00059D0, 0x359D44 }, - { 0x10000000, 0x0 }, - { 0xFFE98B0, 0x6B3885 }, - { 0xFFA62F0, 0xD65E3B }, - { 0xFF35F90, 0x1415E54 }, - { 0xFE98FD0, 0x1AC260A }, - { 0xFDCF550, 0x216A2A4 }, - { 0xFCD9250, 0x280C170 }, - { 0xFBB6980, 0x2EA6FCC }, - { 0xFA67E20, 0x3539B38 }, - { 0xF8ED3C0, 0x3BC3138 }, - { 0xF746EA0, 0x4241F70 }, - { 0xF575360, 0x48B53B0 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xF150F40, 0x55745E0 }, - { 0xEEFF200, 0x5BBE008 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xE9DE1D0, 0x681FE48 }, - { 0xE70FD40, 0x6E35FA0 }, - { 0xE419010, 0x7438B90 }, - { 0xE0FA280, 0x7A27140 }, - { 0xDDB3D70, 0x8000000 }, - { 0xDA46A00, 0x85C2770 }, - { 0xD6B31D0, 0x8B6D770 }, - { 0xD2F9EF0, 0x9100000 }, - { 0xCF1BBD0, 0x9679180 }, - { 0xCB19340, 0x9BD7CA0 }, - { 0xC6F3090, 0xA11B240 }, - { 0xC2A9F70, 0xA6423B0 }, - { 0xBE3EBD0, 0xAB4C250 }, - { 0xB9B2230, 0xB038010 }, - { 0xB504F30, 0xB504F30 }, - { 0xB038010, 0xB9B2230 }, - { 0xAB4C240, 0xBE3EBE0 }, - { 0xA6423A0, 0xC2A9F70 }, - { 0xA11B240, 0xC6F30A0 }, - { 0x9BD7C90, 0xCB19350 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x9100000, 0xD2F9EF0 }, - { 0x8B6D760, 0xD6B31E0 }, - { 0x85C2760, 0xDA46A10 }, - { 0x7FFFFF8, 0xDDB3D80 }, - { 0x7A27138, 0xE0FA290 }, - { 0x7438B90, 0xE419010 }, - { 0x6E35F88, 0xE70FD50 }, - { 0x681FE40, 0xE9DE1E0 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x5BBDFF0, 0xEEFF210 }, - { 0x55745D0, 0xF150F40 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x48B53A8, 0xF575360 }, - { 0x4241F78, 0xF746EA0 }, - { 0x3BC3124, 0xF8ED3C0 }, - { 0x3539B2C, 0xFA67E20 }, - { 0x2EA6FCC, 0xFBB6980 }, - { 0x280C154, 0xFCD9250 }, - { 0x216A290, 0xFDCF550 }, - { 0x1AC25FE, 0xFE98FD0 }, - { 0x1415E50, 0xFF35F90 }, - { 0xD65E3F, 0xFFA62F0 }, - { 0x6B3871, 0xFFE98B0 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFF94C777, 0xFFE98B0 }, - { 0xFF29A1AA, 0xFFA62F0 }, - { 0xFEBEA198, 0xFF35F90 }, - { 0xFE53D9EA, 0xFE98FD0 }, - { 0xFDE95D58, 0xFDCF550 }, - { 0xFD7F3E98, 0xFCD9250 }, - { 0xFD159020, 0xFBB6980 }, - { 0xFCAC64BC, 0xFA67E10 }, - { 0xFC43CEC4, 0xF8ED3C0 }, - { 0xFBDBE070, 0xF746EA0 }, - { 0xFB74AC40, 0xF575350 }, - { 0xFB0E4428, 0xF378700 }, - { 0xFAA8BA20, 0xF150F40 }, - { 0xFA441FF8, 0xEEFF210 }, - { 0xF9E08740, 0xEC835E0 }, - { 0xF97E01A8, 0xE9DE1D0 }, - { 0xF91CA060, 0xE70FD40 }, - { 0xF8BC7458, 0xE419000 }, - { 0xF85D8ED0, 0xE0FA290 }, - { 0x10000000, 0x0 }, - { 0xFFA62F0, 0xD65E3B }, - { 0xFE98FD0, 0x1AC260A }, - { 0xFCD9250, 0x280C170 }, - { 0xFA67E20, 0x3539B38 }, - { 0xF746EA0, 0x4241F70 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xEEFF200, 0x5BBE008 }, - { 0xE9DE1D0, 0x681FE48 }, - { 0xE419010, 0x7438B90 }, - { 0xDDB3D70, 0x8000000 }, - { 0xD6B31D0, 0x8B6D770 }, - { 0xCF1BBD0, 0x9679180 }, - { 0xC6F3090, 0xA11B240 }, - { 0xBE3EBD0, 0xAB4C250 }, - { 0xB504F30, 0xB504F30 }, - { 0xAB4C240, 0xBE3EBE0 }, - { 0xA11B240, 0xC6F30A0 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x8B6D760, 0xD6B31E0 }, - { 0x7FFFFF8, 0xDDB3D80 }, - { 0x7438B90, 0xE419010 }, - { 0x681FE40, 0xE9DE1E0 }, - { 0x5BBDFF0, 0xEEFF210 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x4241F78, 0xF746EA0 }, - { 0x3539B2C, 0xFA67E20 }, - { 0x280C154, 0xFCD9250 }, - { 0x1AC25FE, 0xFE98FD0 }, - { 0xD65E3F, 0xFFA62F0 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFF29A1AA, 0xFFA62F0 }, - { 0xFE53D9EA, 0xFE98FD0 }, - { 0xFD7F3E98, 0xFCD9250 }, - { 0xFCAC64BC, 0xFA67E10 }, - { 0xFBDBE070, 0xF746EA0 }, - { 0xFB0E4428, 0xF378700 }, - { 0xFA441FF8, 0xEEFF210 }, - { 0xF97E01A8, 0xE9DE1D0 }, - { 0xF8BC7458, 0xE419000 }, - { 0xF7FFFFF0, 0xDDB3D70 }, - { 0xF7492890, 0xD6B31D0 }, - { 0xF6986E90, 0xCF1BBD0 }, - { 0xF5EE4DA0, 0xC6F3080 }, - { 0xF54B3DA0, 0xBE3EBD0 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF41C1410, 0xAB4C220 }, - { 0xF390CF50, 0xA11B220 }, - { 0xF30E4420, 0x9679170 }, - { 0xF294CE30, 0x8B6D770 }, - { 0xF224C290, 0x8000010 }, - { 0xF1BE6FE0, 0x7438B68 }, - { 0xF1621E20, 0x681FE38 }, - { 0xF1100DF0, 0x5BBE000 }, - { 0xF0C878E0, 0x4F1BB98 }, - { 0xF08B9150, 0x4241F50 }, - { 0xF05981E0, 0x3539B20 }, - { 0xF0326DB0, 0x280C168 }, - { 0xF0167030, 0x1AC2612 }, - { 0xF0059D00, 0xD65E13 }, - { 0xF0000000, 0xFFFFFFE9 }, - { 0xF0059D10, 0xFF29A1BE }, - { 0xF0167040, 0xFE53D9BE }, - { 0xF0326DC0, 0xFD7F3E6C }, - { 0xF05981F0, 0xFCAC64B0 }, - { 0xF08B9160, 0xFBDBE088 }, - { 0xF0C878F0, 0xFB0E4438 }, - { 0xF1100E00, 0xFA441FD0 }, - { 0xF1621E30, 0xF97E01A0 }, - { 0xF1BE6FF0, 0xF8BC7468 }, - { 0xF224C2B0, 0xF7FFFFD0 }, - { 0xF294CE40, 0xF7492870 }, - { 0xF30E4440, 0xF6986E60 }, - { 0xF390CF70, 0xF5EE4DB0 }, - { 0xF41C1430, 0xF54B3DB0 }, - { 0xF4AFB0F0, 0xF4AFB0B0 }, - { 0xF54B3DD0, 0xF41C1420 }, - { 0xF5EE4DD0, 0xF390CF60 }, - { 0xF6986EB0, 0xF30E4410 }, - { 0xF7492880, 0xF294CE30 }, - { 0x10000000, 0x0 }, - { 0xFF35F90, 0x1415E54 }, - { 0xFCD9250, 0x280C170 }, - { 0xF8ED3C0, 0x3BC3138 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xE419010, 0x7438B90 }, - { 0xDA46A00, 0x85C2770 }, - { 0xCF1BBD0, 0x9679180 }, - { 0xC2A9F70, 0xA6423B0 }, - { 0xB504F30, 0xB504F30 }, - { 0xA6423A0, 0xC2A9F70 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x85C2760, 0xDA46A10 }, - { 0x7438B90, 0xE419010 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x3BC3124, 0xF8ED3C0 }, - { 0x280C154, 0xFCD9250 }, - { 0x1415E50, 0xFF35F90 }, - { 0x10000000, 0x0 }, - { 0xFCD9250, 0x280C170 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xE419010, 0x7438B90 }, - { 0xCF1BBD0, 0x9679180 }, - { 0xB504F30, 0xB504F30 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x7438B90, 0xE419010 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x280C154, 0xFCD9250 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFD7F3E98, 0xFCD9250 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF8BC7458, 0xE419000 }, - { 0xF6986E90, 0xCF1BBD0 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF30E4420, 0x9679170 }, - { 0xF1BE6FE0, 0x7438B68 }, - { 0xF0C878E0, 0x4F1BB98 }, - { 0xF0326DB0, 0x280C168 }, - { 0x10000000, 0x0 }, - { 0xF8ED3C0, 0x3BC3138 }, - { 0xE419010, 0x7438B90 }, - { 0xC2A9F70, 0xA6423B0 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x280C154, 0xFCD9250 }, - { 0xFEBEA198, 0xFF35F90 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF7A3D870, 0xDA469F0 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF25B95F0, 0x85C2760 }, - { 0xF0C878E0, 0x4F1BB98 }, - { 0xF00CA060, 0x1415E44 }, - { 0xF0326DC0, 0xFD7F3E6C }, - { 0xF137CA20, 0xF9E08758 }, - { 0xF30E4440, 0xF6986E60 }, - { 0xF59BDC80, 0xF3D56070 }, - { 0xF8BC74C0, 0xF1BE6FD0 }, - { 0xFC43CEB4, 0xF0712C40 }, - { 0x10000000, 0x0 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xCF1BBD0, 0x9679180 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x10000000, 0x0 }, - { 0xCF1BBD0, 0x9679180 }, - { 0x4F1BBC8, 0xF378710 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF30E4420, 0x9679170 }, - { 0x10000000, 0x0 }, - { 0x9679180, 0xCF1BBD0 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF0C878E0, 0x4F1BB98 }, - { 0xF30E4440, 0xF6986E60 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x4F1BBF0, 0xF0C87900 } + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99991435), COEF_CONST(0.01308960) }, + { COEF_CONST(0.99965733), COEF_CONST(0.02617695) }, + { COEF_CONST(0.99922901), COEF_CONST(0.03925982) }, + { COEF_CONST(0.99862951), COEF_CONST(0.05233596) }, + { COEF_CONST(0.99785894), COEF_CONST(0.06540313) }, + { COEF_CONST(0.99691731), COEF_CONST(0.07845910) }, + { COEF_CONST(0.99580491), COEF_CONST(0.09150162) }, + { COEF_CONST(0.99452192), COEF_CONST(0.10452846) }, + { COEF_CONST(0.99306846), COEF_CONST(0.11753740) }, + { COEF_CONST(0.99144489), COEF_CONST(0.13052620) }, + { COEF_CONST(0.98965138), COEF_CONST(0.14349262) }, + { COEF_CONST(0.98768836), COEF_CONST(0.15643448) }, + { COEF_CONST(0.98555607), COEF_CONST(0.16934951) }, + { COEF_CONST(0.98325491), COEF_CONST(0.18223552) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.97814763), COEF_CONST(0.20791170) }, + { COEF_CONST(0.97534233), COEF_CONST(0.22069745) }, + { COEF_CONST(0.97236991), COEF_CONST(0.23344538) }, + { COEF_CONST(0.96923089), COEF_CONST(0.24615330) }, + { COEF_CONST(0.96592581), COEF_CONST(0.25881904) }, + { COEF_CONST(0.96245521), COEF_CONST(0.27144045) }, + { COEF_CONST(0.95881975), COEF_CONST(0.28401536) }, + { COEF_CONST(0.95501995), COEF_CONST(0.29654160) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.94693011), COEF_CONST(0.32143945) }, + { COEF_CONST(0.94264150), COEF_CONST(0.33380687) }, + { COEF_CONST(0.93819135), COEF_CONST(0.34611708) }, + { COEF_CONST(0.93358040), COEF_CONST(0.35836795) }, + { COEF_CONST(0.92880952), COEF_CONST(0.37055743) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.91879123), COEF_CONST(0.39474389) }, + { COEF_CONST(0.91354543), COEF_CONST(0.40673664) }, + { COEF_CONST(0.90814316), COEF_CONST(0.41865975) }, + { COEF_CONST(0.90258527), COEF_CONST(0.43051112) }, + { COEF_CONST(0.89687276), COEF_CONST(0.44228873) }, + { COEF_CONST(0.89100653), COEF_CONST(0.45399052) }, + { COEF_CONST(0.88498765), COEF_CONST(0.46561453) }, + { COEF_CONST(0.87881708), COEF_CONST(0.47715878) }, + { COEF_CONST(0.87249601), COEF_CONST(0.48862126) }, + { COEF_CONST(0.86602539), COEF_CONST(0.50000000) }, + { COEF_CONST(0.85940641), COEF_CONST(0.51129311) }, + { COEF_CONST(0.85264015), COEF_CONST(0.52249855) }, + { COEF_CONST(0.84572780), COEF_CONST(0.53361452) }, + { COEF_CONST(0.83867055), COEF_CONST(0.54463905) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.82412618), COEF_CONST(0.56640625) }, + { COEF_CONST(0.81664157), COEF_CONST(0.57714522) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.80125380), COEF_CONST(0.59832460) }, + { COEF_CONST(0.79335332), COEF_CONST(0.60876143) }, + { COEF_CONST(0.78531694), COEF_CONST(0.61909395) }, + { COEF_CONST(0.77714592), COEF_CONST(0.62932038) }, + { COEF_CONST(0.76884180), COEF_CONST(0.63943899) }, + { COEF_CONST(0.76040596), COEF_CONST(0.64944810) }, + { COEF_CONST(0.75183982), COEF_CONST(0.65934587) }, + { COEF_CONST(0.74314481), COEF_CONST(0.66913062) }, + { COEF_CONST(0.73432249), COEF_CONST(0.67880076) }, + { COEF_CONST(0.72537434), COEF_CONST(0.68835455) }, + { COEF_CONST(0.71630192), COEF_CONST(0.69779050) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.69779044), COEF_CONST(0.71630198) }, + { COEF_CONST(0.68835455), COEF_CONST(0.72537440) }, + { COEF_CONST(0.67880070), COEF_CONST(0.73432255) }, + { COEF_CONST(0.66913056), COEF_CONST(0.74314487) }, + { COEF_CONST(0.65934581), COEF_CONST(0.75183982) }, + { COEF_CONST(0.64944804), COEF_CONST(0.76040596) }, + { COEF_CONST(0.63943899), COEF_CONST(0.76884186) }, + { COEF_CONST(0.62932038), COEF_CONST(0.77714598) }, + { COEF_CONST(0.61909395), COEF_CONST(0.78531694) }, + { COEF_CONST(0.60876143), COEF_CONST(0.79335338) }, + { COEF_CONST(0.59832460), COEF_CONST(0.80125386) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.57714516), COEF_CONST(0.81664157) }, + { COEF_CONST(0.56640619), COEF_CONST(0.82412618) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.54463899), COEF_CONST(0.83867061) }, + { COEF_CONST(0.53361452), COEF_CONST(0.84572780) }, + { COEF_CONST(0.52249855), COEF_CONST(0.85264021) }, + { COEF_CONST(0.51129305), COEF_CONST(0.85940641) }, + { COEF_CONST(0.49999997), COEF_CONST(0.86602545) }, + { COEF_CONST(0.48862121), COEF_CONST(0.87249607) }, + { COEF_CONST(0.47715873), COEF_CONST(0.87881714) }, + { COEF_CONST(0.46561450), COEF_CONST(0.88498765) }, + { COEF_CONST(0.45399046), COEF_CONST(0.89100653) }, + { COEF_CONST(0.44228867), COEF_CONST(0.89687276) }, + { COEF_CONST(0.43051106), COEF_CONST(0.90258533) }, + { COEF_CONST(0.41865972), COEF_CONST(0.90814316) }, + { COEF_CONST(0.40673661), COEF_CONST(0.91354549) }, + { COEF_CONST(0.39474383), COEF_CONST(0.91879123) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.37055740), COEF_CONST(0.92880958) }, + { COEF_CONST(0.35836792), COEF_CONST(0.93358046) }, + { COEF_CONST(0.34611702), COEF_CONST(0.93819135) }, + { COEF_CONST(0.33380681), COEF_CONST(0.94264150) }, + { COEF_CONST(0.32143945), COEF_CONST(0.94693011) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(0.29654154), COEF_CONST(0.95501995) }, + { COEF_CONST(0.28401530), COEF_CONST(0.95881975) }, + { COEF_CONST(0.27144042), COEF_CONST(0.96245527) }, + { COEF_CONST(0.25881901), COEF_CONST(0.96592581) }, + { COEF_CONST(0.24615325), COEF_CONST(0.96923089) }, + { COEF_CONST(0.23344533), COEF_CONST(0.97236991) }, + { COEF_CONST(0.22069740), COEF_CONST(0.97534233) }, + { COEF_CONST(0.20791166), COEF_CONST(0.97814763) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(0.18223549), COEF_CONST(0.98325491) }, + { COEF_CONST(0.16934946), COEF_CONST(0.98555607) }, + { COEF_CONST(0.15643443), COEF_CONST(0.98768836) }, + { COEF_CONST(0.14349258), COEF_CONST(0.98965138) }, + { COEF_CONST(0.13052616), COEF_CONST(0.99144489) }, + { COEF_CONST(0.11753736), COEF_CONST(0.99306846) }, + { COEF_CONST(0.10452842), COEF_CONST(0.99452192) }, + { COEF_CONST(0.09150158), COEF_CONST(0.99580491) }, + { COEF_CONST(0.07845905), COEF_CONST(0.99691731) }, + { COEF_CONST(0.06540309), COEF_CONST(0.99785894) }, + { COEF_CONST(0.05233591), COEF_CONST(0.99862951) }, + { COEF_CONST(0.03925977), COEF_CONST(0.99922901) }, + { COEF_CONST(0.02617691), COEF_CONST(0.99965733) }, + { COEF_CONST(0.01308955), COEF_CONST(0.99991435) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.01308964), COEF_CONST(0.99991435) }, + { COEF_CONST(-0.02617699), COEF_CONST(0.99965733) }, + { COEF_CONST(-0.03925986), COEF_CONST(0.99922901) }, + { COEF_CONST(-0.05233600), COEF_CONST(0.99862951) }, + { COEF_CONST(-0.06540318), COEF_CONST(0.99785894) }, + { COEF_CONST(-0.07845914), COEF_CONST(0.99691731) }, + { COEF_CONST(-0.09150167), COEF_CONST(0.99580491) }, + { COEF_CONST(-0.10452851), COEF_CONST(0.99452192) }, + { COEF_CONST(-0.11753745), COEF_CONST(0.99306846) }, + { COEF_CONST(-0.13052624), COEF_CONST(0.99144489) }, + { COEF_CONST(-0.14349267), COEF_CONST(0.98965138) }, + { COEF_CONST(-0.15643451), COEF_CONST(0.98768836) }, + { COEF_CONST(-0.16934955), COEF_CONST(0.98555607) }, + { COEF_CONST(-0.18223557), COEF_CONST(0.98325491) }, + { COEF_CONST(-0.19509037), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.20791174), COEF_CONST(0.97814757) }, + { COEF_CONST(-0.22069748), COEF_CONST(0.97534227) }, + { COEF_CONST(-0.23344541), COEF_CONST(0.97236991) }, + { COEF_CONST(-0.24615334), COEF_CONST(0.96923089) }, + { COEF_CONST(-0.25881910), COEF_CONST(0.96592581) }, + { COEF_CONST(-0.27144051), COEF_CONST(0.96245521) }, + { COEF_CONST(-0.28401539), COEF_CONST(0.95881969) }, + { COEF_CONST(-0.29654163), COEF_CONST(0.95501995) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.32143950), COEF_CONST(0.94693011) }, + { COEF_CONST(-0.33380690), COEF_CONST(0.94264150) }, + { COEF_CONST(-0.34611711), COEF_CONST(0.93819129) }, + { COEF_CONST(-0.35836801), COEF_CONST(0.93358046) }, + { COEF_CONST(-0.37055749), COEF_CONST(0.92880952) }, + { COEF_CONST(-0.38268349), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.39474392), COEF_CONST(0.91879123) }, + { COEF_CONST(-0.40673670), COEF_CONST(0.91354543) }, + { COEF_CONST(-0.41865978), COEF_CONST(0.90814310) }, + { COEF_CONST(-0.43051115), COEF_CONST(0.90258527) }, + { COEF_CONST(-0.44228873), COEF_CONST(0.89687276) }, + { COEF_CONST(-0.45399055), COEF_CONST(0.89100647) }, + { COEF_CONST(-0.46561456), COEF_CONST(0.88498759) }, + { COEF_CONST(-0.47715881), COEF_CONST(0.87881714) }, + { COEF_CONST(-0.48862129), COEF_CONST(0.87249595) }, + { COEF_CONST(-0.50000006), COEF_CONST(0.86602539) }, + { COEF_CONST(-0.51129311), COEF_CONST(0.85940641) }, + { COEF_CONST(-0.52249861), COEF_CONST(0.85264009) }, + { COEF_CONST(-0.53361458), COEF_CONST(0.84572780) }, + { COEF_CONST(-0.54463911), COEF_CONST(0.83867055) }, + { COEF_CONST(-0.55557030), COEF_CONST(0.83146954) }, + { COEF_CONST(-0.56640631), COEF_CONST(0.82412612) }, + { COEF_CONST(-0.57714522), COEF_CONST(0.81664157) }, + { COEF_CONST(-0.58778530), COEF_CONST(0.80901700) }, + { COEF_CONST(-0.59832466), COEF_CONST(0.80125374) }, + { COEF_CONST(-0.60876149), COEF_CONST(0.79335332) }, + { COEF_CONST(-0.61909401), COEF_CONST(0.78531694) }, + { COEF_CONST(-0.62932044), COEF_CONST(0.77714586) }, + { COEF_CONST(-0.63943905), COEF_CONST(0.76884180) }, + { COEF_CONST(-0.64944810), COEF_CONST(0.76040596) }, + { COEF_CONST(-0.65934587), COEF_CONST(0.75183970) }, + { COEF_CONST(-0.66913068), COEF_CONST(0.74314481) }, + { COEF_CONST(-0.67880082), COEF_CONST(0.73432249) }, + { COEF_CONST(-0.68835461), COEF_CONST(0.72537428) }, + { COEF_CONST(-0.69779050), COEF_CONST(0.71630186) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.71630198), COEF_CONST(0.69779032) }, + { COEF_CONST(-0.72537440), COEF_CONST(0.68835449) }, + { COEF_CONST(-0.73432255), COEF_CONST(0.67880070) }, + { COEF_CONST(-0.74314487), COEF_CONST(0.66913044) }, + { COEF_CONST(-0.75183988), COEF_CONST(0.65934575) }, + { COEF_CONST(-0.76040602), COEF_CONST(0.64944804) }, + { COEF_CONST(-0.76884186), COEF_CONST(0.63943905) }, + { COEF_CONST(-0.77714598), COEF_CONST(0.62932026) }, + { COEF_CONST(-0.78531694), COEF_CONST(0.61909389) }, + { COEF_CONST(-0.79335338), COEF_CONST(0.60876143) }, + { COEF_CONST(-0.80125386), COEF_CONST(0.59832448) }, + { COEF_CONST(-0.80901706), COEF_CONST(0.58778518) }, + { COEF_CONST(-0.81664157), COEF_CONST(0.57714522) }, + { COEF_CONST(-0.82412624), COEF_CONST(0.56640613) }, + { COEF_CONST(-0.83146966), COEF_CONST(0.55557019) }, + { COEF_CONST(-0.83867061), COEF_CONST(0.54463905) }, + { COEF_CONST(-0.84572786), COEF_CONST(0.53361434) }, + { COEF_CONST(-0.85264021), COEF_CONST(0.52249849) }, + { COEF_CONST(-0.85940647), COEF_CONST(0.51129305) }, + { COEF_CONST(-0.86602545), COEF_CONST(0.50000006) }, + { COEF_CONST(-0.87249607), COEF_CONST(0.48862115) }, + { COEF_CONST(-0.87881714), COEF_CONST(0.47715873) }, + { COEF_CONST(-0.88498765), COEF_CONST(0.46561456) }, + { COEF_CONST(-0.89100653), COEF_CONST(0.45399037) }, + { COEF_CONST(-0.89687276), COEF_CONST(0.44228864) }, + { COEF_CONST(-0.90258533), COEF_CONST(0.43051112) }, + { COEF_CONST(-0.90814322), COEF_CONST(0.41865960) }, + { COEF_CONST(-0.91354549), COEF_CONST(0.40673658) }, + { COEF_CONST(-0.91879123), COEF_CONST(0.39474386) }, + { COEF_CONST(-0.92387956), COEF_CONST(0.38268328) }, + { COEF_CONST(-0.92880958), COEF_CONST(0.37055734) }, + { COEF_CONST(-0.93358046), COEF_CONST(0.35836792) }, + { COEF_CONST(-0.93819135), COEF_CONST(0.34611690) }, + { COEF_CONST(-0.94264150), COEF_CONST(0.33380675) }, + { COEF_CONST(-0.94693017), COEF_CONST(0.32143945) }, + { COEF_CONST(-0.95105654), COEF_CONST(0.30901679) }, + { COEF_CONST(-0.95501995), COEF_CONST(0.29654145) }, + { COEF_CONST(-0.95881975), COEF_CONST(0.28401530) }, + { COEF_CONST(-0.96245527), COEF_CONST(0.27144048) }, + { COEF_CONST(-0.96592587), COEF_CONST(0.25881892) }, + { COEF_CONST(-0.96923095), COEF_CONST(0.24615324) }, + { COEF_CONST(-0.97236997), COEF_CONST(0.23344538) }, + { COEF_CONST(-0.97534233), COEF_CONST(0.22069728) }, + { COEF_CONST(-0.97814763), COEF_CONST(0.20791161) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(-0.98325491), COEF_CONST(0.18223536) }, + { COEF_CONST(-0.98555607), COEF_CONST(0.16934940) }, + { COEF_CONST(-0.98768836), COEF_CONST(0.15643445) }, + { COEF_CONST(-0.98965138), COEF_CONST(0.14349243) }, + { COEF_CONST(-0.99144489), COEF_CONST(0.13052608) }, + { COEF_CONST(-0.99306846), COEF_CONST(0.11753736) }, + { COEF_CONST(-0.99452192), COEF_CONST(0.10452849) }, + { COEF_CONST(-0.99580491), COEF_CONST(0.09150149) }, + { COEF_CONST(-0.99691737), COEF_CONST(0.07845904) }, + { COEF_CONST(-0.99785894), COEF_CONST(0.06540315) }, + { COEF_CONST(-0.99862951), COEF_CONST(0.05233581) }, + { COEF_CONST(-0.99922901), COEF_CONST(0.03925974) }, + { COEF_CONST(-0.99965733), COEF_CONST(0.02617695) }, + { COEF_CONST(-0.99991435), COEF_CONST(0.01308943) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99965733), COEF_CONST(0.02617695) }, + { COEF_CONST(0.99862951), COEF_CONST(0.05233596) }, + { COEF_CONST(0.99691731), COEF_CONST(0.07845910) }, + { COEF_CONST(0.99452192), COEF_CONST(0.10452846) }, + { COEF_CONST(0.99144489), COEF_CONST(0.13052620) }, + { COEF_CONST(0.98768836), COEF_CONST(0.15643448) }, + { COEF_CONST(0.98325491), COEF_CONST(0.18223552) }, + { COEF_CONST(0.97814763), COEF_CONST(0.20791170) }, + { COEF_CONST(0.97236991), COEF_CONST(0.23344538) }, + { COEF_CONST(0.96592581), COEF_CONST(0.25881904) }, + { COEF_CONST(0.95881975), COEF_CONST(0.28401536) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.94264150), COEF_CONST(0.33380687) }, + { COEF_CONST(0.93358040), COEF_CONST(0.35836795) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.91354543), COEF_CONST(0.40673664) }, + { COEF_CONST(0.90258527), COEF_CONST(0.43051112) }, + { COEF_CONST(0.89100653), COEF_CONST(0.45399052) }, + { COEF_CONST(0.87881708), COEF_CONST(0.47715878) }, + { COEF_CONST(0.86602539), COEF_CONST(0.50000000) }, + { COEF_CONST(0.85264015), COEF_CONST(0.52249855) }, + { COEF_CONST(0.83867055), COEF_CONST(0.54463905) }, + { COEF_CONST(0.82412618), COEF_CONST(0.56640625) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.79335332), COEF_CONST(0.60876143) }, + { COEF_CONST(0.77714592), COEF_CONST(0.62932038) }, + { COEF_CONST(0.76040596), COEF_CONST(0.64944810) }, + { COEF_CONST(0.74314481), COEF_CONST(0.66913062) }, + { COEF_CONST(0.72537434), COEF_CONST(0.68835455) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.68835455), COEF_CONST(0.72537440) }, + { COEF_CONST(0.66913056), COEF_CONST(0.74314487) }, + { COEF_CONST(0.64944804), COEF_CONST(0.76040596) }, + { COEF_CONST(0.62932038), COEF_CONST(0.77714598) }, + { COEF_CONST(0.60876143), COEF_CONST(0.79335338) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.56640619), COEF_CONST(0.82412618) }, + { COEF_CONST(0.54463899), COEF_CONST(0.83867061) }, + { COEF_CONST(0.52249855), COEF_CONST(0.85264021) }, + { COEF_CONST(0.49999997), COEF_CONST(0.86602545) }, + { COEF_CONST(0.47715873), COEF_CONST(0.87881714) }, + { COEF_CONST(0.45399046), COEF_CONST(0.89100653) }, + { COEF_CONST(0.43051106), COEF_CONST(0.90258533) }, + { COEF_CONST(0.40673661), COEF_CONST(0.91354549) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.35836792), COEF_CONST(0.93358046) }, + { COEF_CONST(0.33380681), COEF_CONST(0.94264150) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(0.28401530), COEF_CONST(0.95881975) }, + { COEF_CONST(0.25881901), COEF_CONST(0.96592581) }, + { COEF_CONST(0.23344533), COEF_CONST(0.97236991) }, + { COEF_CONST(0.20791166), COEF_CONST(0.97814763) }, + { COEF_CONST(0.18223549), COEF_CONST(0.98325491) }, + { COEF_CONST(0.15643443), COEF_CONST(0.98768836) }, + { COEF_CONST(0.13052616), COEF_CONST(0.99144489) }, + { COEF_CONST(0.10452842), COEF_CONST(0.99452192) }, + { COEF_CONST(0.07845905), COEF_CONST(0.99691731) }, + { COEF_CONST(0.05233591), COEF_CONST(0.99862951) }, + { COEF_CONST(0.02617691), COEF_CONST(0.99965733) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.02617699), COEF_CONST(0.99965733) }, + { COEF_CONST(-0.05233600), COEF_CONST(0.99862951) }, + { COEF_CONST(-0.07845914), COEF_CONST(0.99691731) }, + { COEF_CONST(-0.10452851), COEF_CONST(0.99452192) }, + { COEF_CONST(-0.13052624), COEF_CONST(0.99144489) }, + { COEF_CONST(-0.15643451), COEF_CONST(0.98768836) }, + { COEF_CONST(-0.18223557), COEF_CONST(0.98325491) }, + { COEF_CONST(-0.20791174), COEF_CONST(0.97814757) }, + { COEF_CONST(-0.23344541), COEF_CONST(0.97236991) }, + { COEF_CONST(-0.25881910), COEF_CONST(0.96592581) }, + { COEF_CONST(-0.28401539), COEF_CONST(0.95881969) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.33380690), COEF_CONST(0.94264150) }, + { COEF_CONST(-0.35836801), COEF_CONST(0.93358046) }, + { COEF_CONST(-0.38268349), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.40673670), COEF_CONST(0.91354543) }, + { COEF_CONST(-0.43051115), COEF_CONST(0.90258527) }, + { COEF_CONST(-0.45399055), COEF_CONST(0.89100647) }, + { COEF_CONST(-0.47715881), COEF_CONST(0.87881714) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99862951), COEF_CONST(0.05233596) }, + { COEF_CONST(0.99452192), COEF_CONST(0.10452846) }, + { COEF_CONST(0.98768836), COEF_CONST(0.15643448) }, + { COEF_CONST(0.97814763), COEF_CONST(0.20791170) }, + { COEF_CONST(0.96592581), COEF_CONST(0.25881904) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.93358040), COEF_CONST(0.35836795) }, + { COEF_CONST(0.91354543), COEF_CONST(0.40673664) }, + { COEF_CONST(0.89100653), COEF_CONST(0.45399052) }, + { COEF_CONST(0.86602539), COEF_CONST(0.50000000) }, + { COEF_CONST(0.83867055), COEF_CONST(0.54463905) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.77714592), COEF_CONST(0.62932038) }, + { COEF_CONST(0.74314481), COEF_CONST(0.66913062) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.66913056), COEF_CONST(0.74314487) }, + { COEF_CONST(0.62932038), COEF_CONST(0.77714598) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.54463899), COEF_CONST(0.83867061) }, + { COEF_CONST(0.49999997), COEF_CONST(0.86602545) }, + { COEF_CONST(0.45399046), COEF_CONST(0.89100653) }, + { COEF_CONST(0.40673661), COEF_CONST(0.91354549) }, + { COEF_CONST(0.35836792), COEF_CONST(0.93358046) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(0.25881901), COEF_CONST(0.96592581) }, + { COEF_CONST(0.20791166), COEF_CONST(0.97814763) }, + { COEF_CONST(0.15643443), COEF_CONST(0.98768836) }, + { COEF_CONST(0.10452842), COEF_CONST(0.99452192) }, + { COEF_CONST(0.05233591), COEF_CONST(0.99862951) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.05233600), COEF_CONST(0.99862951) }, + { COEF_CONST(-0.10452851), COEF_CONST(0.99452192) }, + { COEF_CONST(-0.15643451), COEF_CONST(0.98768836) }, + { COEF_CONST(-0.20791174), COEF_CONST(0.97814757) }, + { COEF_CONST(-0.25881910), COEF_CONST(0.96592581) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.35836801), COEF_CONST(0.93358046) }, + { COEF_CONST(-0.40673670), COEF_CONST(0.91354543) }, + { COEF_CONST(-0.45399055), COEF_CONST(0.89100647) }, + { COEF_CONST(-0.50000006), COEF_CONST(0.86602539) }, + { COEF_CONST(-0.54463911), COEF_CONST(0.83867055) }, + { COEF_CONST(-0.58778530), COEF_CONST(0.80901700) }, + { COEF_CONST(-0.62932044), COEF_CONST(0.77714586) }, + { COEF_CONST(-0.66913068), COEF_CONST(0.74314481) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.74314487), COEF_CONST(0.66913044) }, + { COEF_CONST(-0.77714598), COEF_CONST(0.62932026) }, + { COEF_CONST(-0.80901706), COEF_CONST(0.58778518) }, + { COEF_CONST(-0.83867061), COEF_CONST(0.54463905) }, + { COEF_CONST(-0.86602545), COEF_CONST(0.50000006) }, + { COEF_CONST(-0.89100653), COEF_CONST(0.45399037) }, + { COEF_CONST(-0.91354549), COEF_CONST(0.40673658) }, + { COEF_CONST(-0.93358046), COEF_CONST(0.35836792) }, + { COEF_CONST(-0.95105654), COEF_CONST(0.30901679) }, + { COEF_CONST(-0.96592587), COEF_CONST(0.25881892) }, + { COEF_CONST(-0.97814763), COEF_CONST(0.20791161) }, + { COEF_CONST(-0.98768836), COEF_CONST(0.15643445) }, + { COEF_CONST(-0.99452192), COEF_CONST(0.10452849) }, + { COEF_CONST(-0.99862951), COEF_CONST(0.05233581) }, + { COEF_CONST(-1.00000000), COEF_CONST(-0.00000009) }, + { COEF_CONST(-0.99862951), COEF_CONST(-0.05233599) }, + { COEF_CONST(-0.99452186), COEF_CONST(-0.10452867) }, + { COEF_CONST(-0.98768830), COEF_CONST(-0.15643461) }, + { COEF_CONST(-0.97814757), COEF_CONST(-0.20791179) }, + { COEF_CONST(-0.96592581), COEF_CONST(-0.25881907) }, + { COEF_CONST(-0.95105648), COEF_CONST(-0.30901697) }, + { COEF_CONST(-0.93358040), COEF_CONST(-0.35836810) }, + { COEF_CONST(-0.91354543), COEF_CONST(-0.40673673) }, + { COEF_CONST(-0.89100647), COEF_CONST(-0.45399055) }, + { COEF_CONST(-0.86602533), COEF_CONST(-0.50000018) }, + { COEF_CONST(-0.83867049), COEF_CONST(-0.54463917) }, + { COEF_CONST(-0.80901694), COEF_CONST(-0.58778536) }, + { COEF_CONST(-0.77714592), COEF_CONST(-0.62932044) }, + { COEF_CONST(-0.74314475), COEF_CONST(-0.66913062) }, + { COEF_CONST(-0.70710671), COEF_CONST(-0.70710689) }, + { COEF_CONST(-0.66913050), COEF_CONST(-0.74314487) }, + { COEF_CONST(-0.62932032), COEF_CONST(-0.77714598) }, + { COEF_CONST(-0.58778518), COEF_CONST(-0.80901712) }, + { COEF_CONST(-0.54463893), COEF_CONST(-0.83867055) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99691731), COEF_CONST(0.07845910) }, + { COEF_CONST(0.98768836), COEF_CONST(0.15643448) }, + { COEF_CONST(0.97236991), COEF_CONST(0.23344538) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.89100653), COEF_CONST(0.45399052) }, + { COEF_CONST(0.85264015), COEF_CONST(0.52249855) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.76040596), COEF_CONST(0.64944810) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.64944804), COEF_CONST(0.76040596) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.52249855), COEF_CONST(0.85264021) }, + { COEF_CONST(0.45399046), COEF_CONST(0.89100653) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(0.23344533), COEF_CONST(0.97236991) }, + { COEF_CONST(0.15643443), COEF_CONST(0.98768836) }, + { COEF_CONST(0.07845905), COEF_CONST(0.99691731) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.98768836), COEF_CONST(0.15643448) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.89100653), COEF_CONST(0.45399052) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.45399046), COEF_CONST(0.89100653) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(0.15643443), COEF_CONST(0.98768836) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.15643451), COEF_CONST(0.98768836) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.45399055), COEF_CONST(0.89100647) }, + { COEF_CONST(-0.58778530), COEF_CONST(0.80901700) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.80901706), COEF_CONST(0.58778518) }, + { COEF_CONST(-0.89100653), COEF_CONST(0.45399037) }, + { COEF_CONST(-0.95105654), COEF_CONST(0.30901679) }, + { COEF_CONST(-0.98768836), COEF_CONST(0.15643445) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.97236991), COEF_CONST(0.23344538) }, + { COEF_CONST(0.89100653), COEF_CONST(0.45399052) }, + { COEF_CONST(0.76040596), COEF_CONST(0.64944810) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.15643443), COEF_CONST(0.98768836) }, + { COEF_CONST(-0.07845914), COEF_CONST(0.99691731) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.52249861), COEF_CONST(0.85264009) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.85264021), COEF_CONST(0.52249849) }, + { COEF_CONST(-0.95105654), COEF_CONST(0.30901679) }, + { COEF_CONST(-0.99691737), COEF_CONST(0.07845904) }, + { COEF_CONST(-0.98768830), COEF_CONST(-0.15643461) }, + { COEF_CONST(-0.92387950), COEF_CONST(-0.38268343) }, + { COEF_CONST(-0.80901694), COEF_CONST(-0.58778536) }, + { COEF_CONST(-0.64944798), COEF_CONST(-0.76040608) }, + { COEF_CONST(-0.45399040), COEF_CONST(-0.89100665) }, + { COEF_CONST(-0.23344524), COEF_CONST(-0.97236991) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.80901706), COEF_CONST(0.58778518) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.95105654), COEF_CONST(0.30901679) }, + { COEF_CONST(-0.80901694), COEF_CONST(-0.58778536) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.30901712), COEF_CONST(-0.95105648) } }; complex_t cfft_tab_64[] = { - { 0x10000000, 0x0 }, - { 0xFEC46D0, 0x1917A6C }, - { 0xFB14BE0, 0x31F1708 }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xE1C5970, 0x78AD750 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xC5E4030, 0xA2679A0 }, - { 0xB504F30, 0xB504F30 }, - { 0xA267990, 0xC5E4030 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x78AD738, 0xE1C5980 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x4A50180, 0xF4FA0B0 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0x10000000, 0x0 }, - { 0xFB14BE0, 0x31F1708 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xB504F30, 0xB504F30 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xF9E08740, 0xEC835E0 }, - { 0xF71C6240, 0xD4DB300 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF2B24CE0, 0x8E39D90 }, - { 0xF137CA00, 0x61F7880 }, - { 0xF04EB410, 0x31F1704 }, - { 0x10000000, 0x0 }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xA267990, 0xC5E4030 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xF8752898, 0xE1C5970 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF1E3A690, 0x78AD768 }, - { 0xF04EB410, 0x31F1704 }, - { 0xF013B930, 0xFE6E8572 }, - { 0xF137CA20, 0xF9E08758 }, - { 0xF3A1BFB0, 0xF5D98680 }, - { 0xF71C62A0, 0xF2B24CC0 }, - { 0xFB5AFE98, 0xF0B05F50 }, - { 0x10000000, 0x0 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xB504F30, 0xB504F30 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x10000000, 0x0 }, - { 0xB504F30, 0xB504F30 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0x10000000, 0x0 }, - { 0x61F78A8, 0xEC835E0 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF137CA20, 0xF9E08758 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x3, 0xF0000000 } + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99518472), COEF_CONST(0.09801714) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.88192123), COEF_CONST(0.47139674) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.77301043), COEF_CONST(0.63439333) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.47139671), COEF_CONST(0.88192129) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.29028463), COEF_CONST(0.95694035) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(0.09801710), COEF_CONST(0.99518472) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.19509037), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.38268349), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.55557030), COEF_CONST(0.83146954) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.83146966), COEF_CONST(0.55557019) }, + { COEF_CONST(-0.92387956), COEF_CONST(0.38268328) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.38268343), COEF_CONST(0.92387950) }, + { COEF_CONST(0.09801713), COEF_CONST(0.99518472) }, + { COEF_CONST(-0.19509032), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.47139674), COEF_CONST(0.88192123) }, + { COEF_CONST(-0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.88192129), COEF_CONST(0.47139683) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(-0.99518472), COEF_CONST(-0.09801727) }, + { COEF_CONST(-0.92387950), COEF_CONST(-0.38268343) }, + { COEF_CONST(-0.77301043), COEF_CONST(-0.63439322) }, + { COEF_CONST(-0.55557024), COEF_CONST(-0.83146977) }, + { COEF_CONST(-0.29028466), COEF_CONST(-0.95694035) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.38268343), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.92387950), COEF_CONST(-0.38268343) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.00000001), COEF_CONST(-1.00000000) } }; complex_t cfft_tab_60[] = { - { 0x10000000, 0x0 }, - { 0xFE98FD0, 0x1AC260A }, - { 0xFA67E20, 0x3539B38 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xE9DE1D0, 0x681FE48 }, - { 0xDDB3D70, 0x8000000 }, - { 0xCF1BBD0, 0x9679180 }, - { 0xBE3EBD0, 0xAB4C250 }, - { 0xAB4C240, 0xBE3EBE0 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x7FFFFF8, 0xDDB3D80 }, - { 0x681FE40, 0xE9DE1E0 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x3539B2C, 0xFA67E20 }, - { 0x1AC25FE, 0xFE98FD0 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFE53D9EA, 0xFE98FD0 }, - { 0xFCAC64BC, 0xFA67E10 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF97E01A8, 0xE9DE1D0 }, - { 0x10000000, 0x0 }, - { 0xFA67E20, 0x3539B38 }, - { 0xE9DE1D0, 0x681FE48 }, - { 0xCF1BBD0, 0x9679180 }, - { 0xAB4C240, 0xBE3EBE0 }, - { 0x7FFFFF8, 0xDDB3D80 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x1AC25FE, 0xFE98FD0 }, - { 0xFE53D9EA, 0xFE98FD0 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF7FFFFF0, 0xDDB3D70 }, - { 0xF54B3DA0, 0xBE3EBD0 }, - { 0xF30E4420, 0x9679170 }, - { 0xF1621E20, 0x681FE38 }, - { 0xF05981E0, 0x3539B20 }, - { 0xF0000000, 0xFFFFFFE9 }, - { 0xF05981F0, 0xFCAC64B0 }, - { 0xF1621E30, 0xF97E01A0 }, - { 0xF30E4440, 0xF6986E60 }, - { 0xF54B3DD0, 0xF41C1420 }, - { 0x10000000, 0x0 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xCF1BBD0, 0x9679180 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x10000000, 0x0 }, - { 0xCF1BBD0, 0x9679180 }, - { 0x4F1BBC8, 0xF378710 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF30E4420, 0x9679170 }, - { 0x10000000, 0x0 }, - { 0x9679180, 0xCF1BBD0 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF0C878E0, 0x4F1BB98 }, - { 0xF30E4440, 0xF6986E60 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x4F1BBF0, 0xF0C87900 } + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99452192), COEF_CONST(0.10452846) }, + { COEF_CONST(0.97814763), COEF_CONST(0.20791170) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.91354543), COEF_CONST(0.40673664) }, + { COEF_CONST(0.86602539), COEF_CONST(0.50000000) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.74314481), COEF_CONST(0.66913062) }, + { COEF_CONST(0.66913056), COEF_CONST(0.74314487) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.49999997), COEF_CONST(0.86602545) }, + { COEF_CONST(0.40673661), COEF_CONST(0.91354549) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(0.20791166), COEF_CONST(0.97814763) }, + { COEF_CONST(0.10452842), COEF_CONST(0.99452192) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.10452851), COEF_CONST(0.99452192) }, + { COEF_CONST(-0.20791174), COEF_CONST(0.97814757) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.40673670), COEF_CONST(0.91354543) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.97814763), COEF_CONST(0.20791170) }, + { COEF_CONST(0.91354543), COEF_CONST(0.40673664) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.66913056), COEF_CONST(0.74314487) }, + { COEF_CONST(0.49999997), COEF_CONST(0.86602545) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(0.10452842), COEF_CONST(0.99452192) }, + { COEF_CONST(-0.10452851), COEF_CONST(0.99452192) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.50000006), COEF_CONST(0.86602539) }, + { COEF_CONST(-0.66913068), COEF_CONST(0.74314481) }, + { COEF_CONST(-0.80901706), COEF_CONST(0.58778518) }, + { COEF_CONST(-0.91354549), COEF_CONST(0.40673658) }, + { COEF_CONST(-0.97814763), COEF_CONST(0.20791161) }, + { COEF_CONST(-1.00000000), COEF_CONST(-0.00000009) }, + { COEF_CONST(-0.97814757), COEF_CONST(-0.20791179) }, + { COEF_CONST(-0.91354543), COEF_CONST(-0.40673673) }, + { COEF_CONST(-0.80901694), COEF_CONST(-0.58778536) }, + { COEF_CONST(-0.66913050), COEF_CONST(-0.74314487) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.80901706), COEF_CONST(0.58778518) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.95105654), COEF_CONST(0.30901679) }, + { COEF_CONST(-0.80901694), COEF_CONST(-0.58778536) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.30901712), COEF_CONST(-0.95105648) } }; #ifdef LD_DEC complex_t cfft_tab_256[] = { - { 0x10000000, 0x0 }, - { 0xFFEC430, 0x648558 }, - { 0xFFB10F0, 0xC8FB30 }, - { 0xFF4E6D0, 0x12D520A }, - { 0xFEC46D0, 0x1917A6C }, - { 0xFE13240, 0x1F564E6 }, - { 0xFD3AAC0, 0x259020C }, - { 0xFC3B280, 0x2BC428C }, - { 0xFB14BE0, 0x31F1708 }, - { 0xF9C79D0, 0x381704C }, - { 0xF853F80, 0x3E33F34 }, - { 0xF6BA070, 0x44474A0 }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xF314470, 0x504D728 }, - { 0xF109080, 0x563E6A0 }, - { 0xEED89E0, 0x5C22150 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xEA09A60, 0x67BDE58 }, - { 0xE76BD80, 0x6D74400 }, - { 0xE4AA590, 0x7319BA8 }, - { 0xE1C5970, 0x78AD750 }, - { 0xDEBE050, 0x7E2E940 }, - { 0xDB941A0, 0x839C3D0 }, - { 0xD848530, 0x88F59B0 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xD14D3D0, 0x93682B0 }, - { 0xCD9F020, 0x987FC00 }, - { 0xC9D1120, 0x9D7FD20 }, - { 0xC5E4030, 0xA2679A0 }, - { 0xC1D8700, 0xA736560 }, - { 0xBDAEF90, 0xABEB4A0 }, - { 0xB968420, 0xB085BB0 }, - { 0xB504F30, 0xB504F30 }, - { 0xB085BA0, 0xB968420 }, - { 0xABEB490, 0xBDAEFA0 }, - { 0xA736550, 0xC1D8710 }, - { 0xA267990, 0xC5E4030 }, - { 0x9D7FD10, 0xC9D1120 }, - { 0x987FC00, 0xCD9F020 }, - { 0x93682A0, 0xD14D3D0 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x88F59B0, 0xD848530 }, - { 0x839C3C0, 0xDB941B0 }, - { 0x7E2E938, 0xDEBE050 }, - { 0x78AD738, 0xE1C5980 }, - { 0x7319BA0, 0xE4AA590 }, - { 0x6D74408, 0xE76BD80 }, - { 0x67BDE48, 0xEA09A70 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x5C22138, 0xEED89E0 }, - { 0x563E698, 0xF109080 }, - { 0x504D710, 0xF314480 }, - { 0x4A50180, 0xF4FA0B0 }, - { 0x4447498, 0xF6BA070 }, - { 0x3E33F20, 0xF853F80 }, - { 0x3817048, 0xF9C79D0 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0x2BC4280, 0xFC3B280 }, - { 0x2590214, 0xFD3AAC0 }, - { 0x1F564D8, 0xFE13240 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0x12D51F6, 0xFF4E6D0 }, - { 0xC8FB29, 0xFFB10F0 }, - { 0x64853F, 0xFFEC430 }, - { 0x10000000, 0x0 }, - { 0xFFB10F0, 0xC8FB30 }, - { 0xFEC46D0, 0x1917A6C }, - { 0xFD3AAC0, 0x259020C }, - { 0xFB14BE0, 0x31F1708 }, - { 0xF853F80, 0x3E33F34 }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xF109080, 0x563E6A0 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xE76BD80, 0x6D74400 }, - { 0xE1C5970, 0x78AD750 }, - { 0xDB941A0, 0x839C3D0 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xCD9F020, 0x987FC00 }, - { 0xC5E4030, 0xA2679A0 }, - { 0xBDAEF90, 0xABEB4A0 }, - { 0xB504F30, 0xB504F30 }, - { 0xABEB490, 0xBDAEFA0 }, - { 0xA267990, 0xC5E4030 }, - { 0x987FC00, 0xCD9F020 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x839C3C0, 0xDB941B0 }, - { 0x78AD738, 0xE1C5980 }, - { 0x6D74408, 0xE76BD80 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x563E698, 0xF109080 }, - { 0x4A50180, 0xF4FA0B0 }, - { 0x3E33F20, 0xF853F80 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0x2590214, 0xFD3AAC0 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0xC8FB29, 0xFFB10F0 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFF3704BF, 0xFFB10F0 }, - { 0xFE6E857E, 0xFEC46D0 }, - { 0xFDA6FDD8, 0xFD3AAC0 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xFC1CC0CC, 0xF853F80 }, - { 0xFB5AFE68, 0xF4FA0A0 }, - { 0xFA9C1950, 0xF109080 }, - { 0xF9E08740, 0xEC835E0 }, - { 0xF928BC00, 0xE76BD80 }, - { 0xF8752898, 0xE1C5970 }, - { 0xF7C63C30, 0xDB941A0 }, - { 0xF71C6240, 0xD4DB300 }, - { 0xF67803F0, 0xCD9F020 }, - { 0xF5D98670, 0xC5E4040 }, - { 0xF5414B50, 0xBDAEF80 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF4251050, 0xABEB480 }, - { 0xF3A1BFC0, 0xA267990 }, - { 0xF3260FC0, 0x987FBD0 }, - { 0xF2B24CE0, 0x8E39D90 }, - { 0xF246BE60, 0x839C3D0 }, - { 0xF1E3A670, 0x78AD730 }, - { 0xF1894280, 0x6D743F8 }, - { 0xF137CA00, 0x61F7880 }, - { 0xF0EF6F70, 0x563E690 }, - { 0xF0B05F50, 0x4A50198 }, - { 0xF07AC080, 0x3E33F14 }, - { 0xF04EB410, 0x31F1704 }, - { 0xF02C5540, 0x25901E8 }, - { 0xF013B930, 0x1917A60 }, - { 0xF004EF10, 0xC8FAFD }, - { 0x10000000, 0x0 }, - { 0xFF4E6D0, 0x12D520A }, - { 0xFD3AAC0, 0x259020C }, - { 0xF9C79D0, 0x381704C }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xEED89E0, 0x5C22150 }, - { 0xE76BD80, 0x6D74400 }, - { 0xDEBE050, 0x7E2E940 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xC9D1130, 0x9D7FD10 }, - { 0xBDAEF90, 0xABEB4A0 }, - { 0xB085BA0, 0xB968420 }, - { 0xA267990, 0xC5E4030 }, - { 0x93682B0, 0xD14D3D0 }, - { 0x839C3C0, 0xDB941B0 }, - { 0x7319BA0, 0xE4AA590 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x504D728, 0xF314470 }, - { 0x3E33F40, 0xF853F80 }, - { 0x2BC4280, 0xFC3B280 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0x64855F, 0xFFEC430 }, - { 0xFF3704BF, 0xFFB10F0 }, - { 0xFE0A9B12, 0xFE13230 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xFBBB8B70, 0xF6BA070 }, - { 0xFA9C1970, 0xF109080 }, - { 0xF98421A8, 0xEA09A60 }, - { 0xF8752898, 0xE1C5970 }, - { 0xF770A640, 0xD848520 }, - { 0xF67803F0, 0xCD9F020 }, - { 0xF58C9AA0, 0xC1D8700 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF3E27900, 0xA736560 }, - { 0xF3260FE0, 0x987FC10 }, - { 0xF27B7AE0, 0x88F59C0 }, - { 0xF1E3A690, 0x78AD768 }, - { 0xF15F6590, 0x67BDE38 }, - { 0xF0EF6F70, 0x563E690 }, - { 0xF0945F90, 0x4447490 }, - { 0xF04EB410, 0x31F1704 }, - { 0xF01ECDD0, 0x1F564EC }, - { 0xF004EF10, 0xC8FB3D }, - { 0xF0013BD0, 0xFF9B7ABE }, - { 0xF013B930, 0xFE6E8572 }, - { 0xF03C4D80, 0xFD43BD5C }, - { 0xF07AC080, 0xFC1CC0C0 }, - { 0xF0CEBB90, 0xFAFB28D0 }, - { 0xF137CA20, 0xF9E08758 }, - { 0xF1B55A70, 0xF8CE6460 }, - { 0xF246BE50, 0xF7C63C40 }, - { 0xF2EB2C20, 0xF6C97D70 }, - { 0xF3A1BFB0, 0xF5D98680 }, - { 0xF4697BF0, 0xF4F7A440 }, - { 0xF5414B70, 0xF4251060 }, - { 0xF62802F0, 0xF362EED0 }, - { 0xF71C62A0, 0xF2B24CC0 }, - { 0xF81D16C8, 0xF2141FB0 }, - { 0xF928BC28, 0xF1894270 }, - { 0xFA3DDEA0, 0xF1127630 }, - { 0xFB5AFE98, 0xF0B05F50 }, - { 0xFC7E8F90, 0xF0638630 }, - { 0xFDA6FE04, 0xF02C5540 }, - { 0xFED2ADC2, 0xF00B1930 }, - { 0x10000000, 0x0 }, - { 0xFEC46D0, 0x1917A6C }, - { 0xFB14BE0, 0x31F1708 }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xE1C5970, 0x78AD750 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xC5E4030, 0xA2679A0 }, - { 0xB504F30, 0xB504F30 }, - { 0xA267990, 0xC5E4030 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x78AD738, 0xE1C5980 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x4A50180, 0xF4FA0B0 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0x10000000, 0x0 }, - { 0xFB14BE0, 0x31F1708 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xB504F30, 0xB504F30 }, - { 0x8E39D90, 0xD4DB320 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x31F16F0, 0xFB14BF0 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xF9E08740, 0xEC835E0 }, - { 0xF71C6240, 0xD4DB300 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF2B24CE0, 0x8E39D90 }, - { 0xF137CA00, 0x61F7880 }, - { 0xF04EB410, 0x31F1704 }, - { 0x10000000, 0x0 }, - { 0xF4FA0B0, 0x4A50188 }, - { 0xD4DB310, 0x8E39DA0 }, - { 0xA267990, 0xC5E4030 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x1917A6A, 0xFEC46D0 }, - { 0xFCE0E8F8, 0xFB14BE0 }, - { 0xF8752898, 0xE1C5970 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF1E3A690, 0x78AD768 }, - { 0xF04EB410, 0x31F1704 }, - { 0xF013B930, 0xFE6E8572 }, - { 0xF137CA20, 0xF9E08758 }, - { 0xF3A1BFB0, 0xF5D98680 }, - { 0xF71C62A0, 0xF2B24CC0 }, - { 0xFB5AFE98, 0xF0B05F50 }, - { 0x10000000, 0x0 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xB504F30, 0xB504F30 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x10000000, 0x0 }, - { 0xB504F30, 0xB504F30 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0x10000000, 0x0 }, - { 0x61F78A8, 0xEC835E0 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF137CA20, 0xF9E08758 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x3, 0xF0000000 } + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99969882), COEF_CONST(0.02454123) }, + { COEF_CONST(0.99879545), COEF_CONST(0.04906768) }, + { COEF_CONST(0.99729043), COEF_CONST(0.07356457) }, + { COEF_CONST(0.99518472), COEF_CONST(0.09801714) }, + { COEF_CONST(0.99247956), COEF_CONST(0.12241068) }, + { COEF_CONST(0.98917651), COEF_CONST(0.14673047) }, + { COEF_CONST(0.98527765), COEF_CONST(0.17096190) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.97570211), COEF_CONST(0.21910124) }, + { COEF_CONST(0.97003126), COEF_CONST(0.24298020) }, + { COEF_CONST(0.96377605), COEF_CONST(0.26671278) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.94952816), COEF_CONST(0.31368175) }, + { COEF_CONST(0.94154406), COEF_CONST(0.33688986) }, + { COEF_CONST(0.93299282), COEF_CONST(0.35989505) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.91420972), COEF_CONST(0.40524134) }, + { COEF_CONST(0.90398932), COEF_CONST(0.42755508) }, + { COEF_CONST(0.89322430), COEF_CONST(0.44961134) }, + { COEF_CONST(0.88192123), COEF_CONST(0.47139674) }, + { COEF_CONST(0.87008697), COEF_CONST(0.49289823) }, + { COEF_CONST(0.85772860), COEF_CONST(0.51410276) }, + { COEF_CONST(0.84485358), COEF_CONST(0.53499764) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.81758481), COEF_CONST(0.57580823) }, + { COEF_CONST(0.80320752), COEF_CONST(0.59569931) }, + { COEF_CONST(0.78834641), COEF_CONST(0.61523163) }, + { COEF_CONST(0.77301043), COEF_CONST(0.63439333) }, + { COEF_CONST(0.75720882), COEF_CONST(0.65317285) }, + { COEF_CONST(0.74095112), COEF_CONST(0.67155898) }, + { COEF_CONST(0.72424710), COEF_CONST(0.68954057) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.68954051), COEF_CONST(0.72424710) }, + { COEF_CONST(0.67155892), COEF_CONST(0.74095118) }, + { COEF_CONST(0.65317285), COEF_CONST(0.75720888) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.61523157), COEF_CONST(0.78834641) }, + { COEF_CONST(0.59569931), COEF_CONST(0.80320752) }, + { COEF_CONST(0.57580817), COEF_CONST(0.81758481) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.53499758), COEF_CONST(0.84485358) }, + { COEF_CONST(0.51410270), COEF_CONST(0.85772866) }, + { COEF_CONST(0.49289817), COEF_CONST(0.87008697) }, + { COEF_CONST(0.47139671), COEF_CONST(0.88192129) }, + { COEF_CONST(0.44961131), COEF_CONST(0.89322430) }, + { COEF_CONST(0.42755505), COEF_CONST(0.90398932) }, + { COEF_CONST(0.40524128), COEF_CONST(0.91420978) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.35989499), COEF_CONST(0.93299282) }, + { COEF_CONST(0.33688983), COEF_CONST(0.94154406) }, + { COEF_CONST(0.31368172), COEF_CONST(0.94952822) }, + { COEF_CONST(0.29028463), COEF_CONST(0.95694035) }, + { COEF_CONST(0.26671273), COEF_CONST(0.96377605) }, + { COEF_CONST(0.24298014), COEF_CONST(0.97003126) }, + { COEF_CONST(0.21910121), COEF_CONST(0.97570211) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(0.17096186), COEF_CONST(0.98527765) }, + { COEF_CONST(0.14673044), COEF_CONST(0.98917651) }, + { COEF_CONST(0.12241063), COEF_CONST(0.99247956) }, + { COEF_CONST(0.09801710), COEF_CONST(0.99518472) }, + { COEF_CONST(0.07356452), COEF_CONST(0.99729043) }, + { COEF_CONST(0.04906763), COEF_CONST(0.99879545) }, + { COEF_CONST(0.02454119), COEF_CONST(0.99969882) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99879545), COEF_CONST(0.04906768) }, + { COEF_CONST(0.99518472), COEF_CONST(0.09801714) }, + { COEF_CONST(0.98917651), COEF_CONST(0.14673047) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.97003126), COEF_CONST(0.24298020) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.94154406), COEF_CONST(0.33688986) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.90398932), COEF_CONST(0.42755508) }, + { COEF_CONST(0.88192123), COEF_CONST(0.47139674) }, + { COEF_CONST(0.85772860), COEF_CONST(0.51410276) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.80320752), COEF_CONST(0.59569931) }, + { COEF_CONST(0.77301043), COEF_CONST(0.63439333) }, + { COEF_CONST(0.74095112), COEF_CONST(0.67155898) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.67155892), COEF_CONST(0.74095118) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.59569931), COEF_CONST(0.80320752) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.51410270), COEF_CONST(0.85772866) }, + { COEF_CONST(0.47139671), COEF_CONST(0.88192129) }, + { COEF_CONST(0.42755505), COEF_CONST(0.90398932) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.33688983), COEF_CONST(0.94154406) }, + { COEF_CONST(0.29028463), COEF_CONST(0.95694035) }, + { COEF_CONST(0.24298014), COEF_CONST(0.97003126) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(0.14673044), COEF_CONST(0.98917651) }, + { COEF_CONST(0.09801710), COEF_CONST(0.99518472) }, + { COEF_CONST(0.04906763), COEF_CONST(0.99879545) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.04906772), COEF_CONST(0.99879545) }, + { COEF_CONST(-0.09801719), COEF_CONST(0.99518472) }, + { COEF_CONST(-0.14673053), COEF_CONST(0.98917651) }, + { COEF_CONST(-0.19509037), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.24298023), COEF_CONST(0.97003126) }, + { COEF_CONST(-0.29028472), COEF_CONST(0.95694029) }, + { COEF_CONST(-0.33688989), COEF_CONST(0.94154406) }, + { COEF_CONST(-0.38268349), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.42755514), COEF_CONST(0.90398932) }, + { COEF_CONST(-0.47139677), COEF_CONST(0.88192123) }, + { COEF_CONST(-0.51410282), COEF_CONST(0.85772860) }, + { COEF_CONST(-0.55557030), COEF_CONST(0.83146954) }, + { COEF_CONST(-0.59569937), COEF_CONST(0.80320752) }, + { COEF_CONST(-0.63439333), COEF_CONST(0.77301049) }, + { COEF_CONST(-0.67155898), COEF_CONST(0.74095106) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.74095118), COEF_CONST(0.67155886) }, + { COEF_CONST(-0.77301049), COEF_CONST(0.63439327) }, + { COEF_CONST(-0.80320758), COEF_CONST(0.59569913) }, + { COEF_CONST(-0.83146966), COEF_CONST(0.55557019) }, + { COEF_CONST(-0.85772866), COEF_CONST(0.51410276) }, + { COEF_CONST(-0.88192129), COEF_CONST(0.47139663) }, + { COEF_CONST(-0.90398932), COEF_CONST(0.42755505) }, + { COEF_CONST(-0.92387956), COEF_CONST(0.38268328) }, + { COEF_CONST(-0.94154412), COEF_CONST(0.33688980) }, + { COEF_CONST(-0.95694035), COEF_CONST(0.29028472) }, + { COEF_CONST(-0.97003126), COEF_CONST(0.24298008) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(-0.98917651), COEF_CONST(0.14673033) }, + { COEF_CONST(-0.99518472), COEF_CONST(0.09801710) }, + { COEF_CONST(-0.99879545), COEF_CONST(0.04906749) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99729043), COEF_CONST(0.07356457) }, + { COEF_CONST(0.98917651), COEF_CONST(0.14673047) }, + { COEF_CONST(0.97570211), COEF_CONST(0.21910124) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.93299282), COEF_CONST(0.35989505) }, + { COEF_CONST(0.90398932), COEF_CONST(0.42755508) }, + { COEF_CONST(0.87008697), COEF_CONST(0.49289823) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.78834641), COEF_CONST(0.61523157) }, + { COEF_CONST(0.74095112), COEF_CONST(0.67155898) }, + { COEF_CONST(0.68954057), COEF_CONST(0.72424710) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.57580817), COEF_CONST(0.81758481) }, + { COEF_CONST(0.51410276), COEF_CONST(0.85772866) }, + { COEF_CONST(0.44961134), COEF_CONST(0.89322430) }, + { COEF_CONST(0.38268343), COEF_CONST(0.92387950) }, + { COEF_CONST(0.31368175), COEF_CONST(0.94952816) }, + { COEF_CONST(0.24298018), COEF_CONST(0.97003126) }, + { COEF_CONST(0.17096189), COEF_CONST(0.98527765) }, + { COEF_CONST(0.09801713), COEF_CONST(0.99518472) }, + { COEF_CONST(0.02454123), COEF_CONST(0.99969882) }, + { COEF_CONST(-0.04906768), COEF_CONST(0.99879545) }, + { COEF_CONST(-0.12241068), COEF_CONST(0.99247950) }, + { COEF_CONST(-0.19509032), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.26671275), COEF_CONST(0.96377605) }, + { COEF_CONST(-0.33688986), COEF_CONST(0.94154406) }, + { COEF_CONST(-0.40524131), COEF_CONST(0.91420972) }, + { COEF_CONST(-0.47139674), COEF_CONST(0.88192123) }, + { COEF_CONST(-0.53499764), COEF_CONST(0.84485352) }, + { COEF_CONST(-0.59569931), COEF_CONST(0.80320752) }, + { COEF_CONST(-0.65317285), COEF_CONST(0.75720882) }, + { COEF_CONST(-0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.75720882), COEF_CONST(0.65317285) }, + { COEF_CONST(-0.80320752), COEF_CONST(0.59569937) }, + { COEF_CONST(-0.84485358), COEF_CONST(0.53499770) }, + { COEF_CONST(-0.88192129), COEF_CONST(0.47139683) }, + { COEF_CONST(-0.91420978), COEF_CONST(0.40524122) }, + { COEF_CONST(-0.94154406), COEF_CONST(0.33688980) }, + { COEF_CONST(-0.96377605), COEF_CONST(0.26671273) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(-0.99247956), COEF_CONST(0.12241070) }, + { COEF_CONST(-0.99879545), COEF_CONST(0.04906772) }, + { COEF_CONST(-0.99969882), COEF_CONST(-0.02454115) }, + { COEF_CONST(-0.99518472), COEF_CONST(-0.09801727) }, + { COEF_CONST(-0.98527765), COEF_CONST(-0.17096199) }, + { COEF_CONST(-0.97003126), COEF_CONST(-0.24298024) }, + { COEF_CONST(-0.94952816), COEF_CONST(-0.31368178) }, + { COEF_CONST(-0.92387950), COEF_CONST(-0.38268343) }, + { COEF_CONST(-0.89322430), COEF_CONST(-0.44961131) }, + { COEF_CONST(-0.85772860), COEF_CONST(-0.51410270) }, + { COEF_CONST(-0.81758481), COEF_CONST(-0.57580811) }, + { COEF_CONST(-0.77301043), COEF_CONST(-0.63439322) }, + { COEF_CONST(-0.72424710), COEF_CONST(-0.68954062) }, + { COEF_CONST(-0.67155898), COEF_CONST(-0.74095118) }, + { COEF_CONST(-0.61523157), COEF_CONST(-0.78834647) }, + { COEF_CONST(-0.55557024), COEF_CONST(-0.83146977) }, + { COEF_CONST(-0.49289820), COEF_CONST(-0.87008697) }, + { COEF_CONST(-0.42755508), COEF_CONST(-0.90398937) }, + { COEF_CONST(-0.35989502), COEF_CONST(-0.93299276) }, + { COEF_CONST(-0.29028466), COEF_CONST(-0.95694035) }, + { COEF_CONST(-0.21910124), COEF_CONST(-0.97570211) }, + { COEF_CONST(-0.14673047), COEF_CONST(-0.98917651) }, + { COEF_CONST(-0.07356455), COEF_CONST(-0.99729043) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99518472), COEF_CONST(0.09801714) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.88192123), COEF_CONST(0.47139674) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.77301043), COEF_CONST(0.63439333) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.47139671), COEF_CONST(0.88192129) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.29028463), COEF_CONST(0.95694035) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(0.09801710), COEF_CONST(0.99518472) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.98078525), COEF_CONST(0.19509032) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.55557019), COEF_CONST(0.83146966) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.19509028), COEF_CONST(0.98078531) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.19509037), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.38268349), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.55557030), COEF_CONST(0.83146954) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.83146966), COEF_CONST(0.55557019) }, + { COEF_CONST(-0.92387956), COEF_CONST(0.38268328) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.95694035), COEF_CONST(0.29028466) }, + { COEF_CONST(0.83146960), COEF_CONST(0.55557024) }, + { COEF_CONST(0.63439327), COEF_CONST(0.77301043) }, + { COEF_CONST(0.38268343), COEF_CONST(0.92387950) }, + { COEF_CONST(0.09801713), COEF_CONST(0.99518472) }, + { COEF_CONST(-0.19509032), COEF_CONST(0.98078525) }, + { COEF_CONST(-0.47139674), COEF_CONST(0.88192123) }, + { COEF_CONST(-0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.88192129), COEF_CONST(0.47139683) }, + { COEF_CONST(-0.98078531), COEF_CONST(0.19509031) }, + { COEF_CONST(-0.99518472), COEF_CONST(-0.09801727) }, + { COEF_CONST(-0.92387950), COEF_CONST(-0.38268343) }, + { COEF_CONST(-0.77301043), COEF_CONST(-0.63439322) }, + { COEF_CONST(-0.55557024), COEF_CONST(-0.83146977) }, + { COEF_CONST(-0.29028466), COEF_CONST(-0.95694035) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.38268343), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.92387950), COEF_CONST(-0.38268343) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.00000001), COEF_CONST(-1.00000000) } }; complex_t cfft_tab_240[] = { - { 0x10000000, 0x0 }, - { 0xFFE98B0, 0x6B3885 }, - { 0xFFA62F0, 0xD65E3B }, - { 0xFF35F90, 0x1415E54 }, - { 0xFE98FD0, 0x1AC260A }, - { 0xFDCF550, 0x216A2A4 }, - { 0xFCD9250, 0x280C170 }, - { 0xFBB6980, 0x2EA6FCC }, - { 0xFA67E20, 0x3539B38 }, - { 0xF8ED3C0, 0x3BC3138 }, - { 0xF746EA0, 0x4241F70 }, - { 0xF575360, 0x48B53B0 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xF150F40, 0x55745E0 }, - { 0xEEFF200, 0x5BBE008 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xE9DE1D0, 0x681FE48 }, - { 0xE70FD40, 0x6E35FA0 }, - { 0xE419010, 0x7438B90 }, - { 0xE0FA280, 0x7A27140 }, - { 0xDDB3D70, 0x8000000 }, - { 0xDA46A00, 0x85C2770 }, - { 0xD6B31D0, 0x8B6D770 }, - { 0xD2F9EF0, 0x9100000 }, - { 0xCF1BBD0, 0x9679180 }, - { 0xCB19340, 0x9BD7CA0 }, - { 0xC6F3090, 0xA11B240 }, - { 0xC2A9F70, 0xA6423B0 }, - { 0xBE3EBD0, 0xAB4C250 }, - { 0xB9B2230, 0xB038010 }, - { 0xB504F30, 0xB504F30 }, - { 0xB038010, 0xB9B2230 }, - { 0xAB4C240, 0xBE3EBE0 }, - { 0xA6423A0, 0xC2A9F70 }, - { 0xA11B240, 0xC6F30A0 }, - { 0x9BD7C90, 0xCB19350 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x9100000, 0xD2F9EF0 }, - { 0x8B6D760, 0xD6B31E0 }, - { 0x85C2760, 0xDA46A10 }, - { 0x7FFFFF8, 0xDDB3D80 }, - { 0x7A27138, 0xE0FA290 }, - { 0x7438B90, 0xE419010 }, - { 0x6E35F88, 0xE70FD50 }, - { 0x681FE40, 0xE9DE1E0 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x5BBDFF0, 0xEEFF210 }, - { 0x55745D0, 0xF150F40 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x48B53A8, 0xF575360 }, - { 0x4241F78, 0xF746EA0 }, - { 0x3BC3124, 0xF8ED3C0 }, - { 0x3539B2C, 0xFA67E20 }, - { 0x2EA6FCC, 0xFBB6980 }, - { 0x280C154, 0xFCD9250 }, - { 0x216A290, 0xFDCF550 }, - { 0x1AC25FE, 0xFE98FD0 }, - { 0x1415E50, 0xFF35F90 }, - { 0xD65E3F, 0xFFA62F0 }, - { 0x6B3871, 0xFFE98B0 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFF94C777, 0xFFE98B0 }, - { 0xFF29A1AA, 0xFFA62F0 }, - { 0xFEBEA198, 0xFF35F90 }, - { 0xFE53D9EA, 0xFE98FD0 }, - { 0xFDE95D58, 0xFDCF550 }, - { 0xFD7F3E98, 0xFCD9250 }, - { 0xFD159020, 0xFBB6980 }, - { 0xFCAC64BC, 0xFA67E10 }, - { 0xFC43CEC4, 0xF8ED3C0 }, - { 0xFBDBE070, 0xF746EA0 }, - { 0xFB74AC40, 0xF575350 }, - { 0xFB0E4428, 0xF378700 }, - { 0xFAA8BA20, 0xF150F40 }, - { 0xFA441FF8, 0xEEFF210 }, - { 0xF9E08740, 0xEC835E0 }, - { 0xF97E01A8, 0xE9DE1D0 }, - { 0xF91CA060, 0xE70FD40 }, - { 0xF8BC7458, 0xE419000 }, - { 0xF85D8ED0, 0xE0FA290 }, - { 0x10000000, 0x0 }, - { 0xFFA62F0, 0xD65E3B }, - { 0xFE98FD0, 0x1AC260A }, - { 0xFCD9250, 0x280C170 }, - { 0xFA67E20, 0x3539B38 }, - { 0xF746EA0, 0x4241F70 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xEEFF200, 0x5BBE008 }, - { 0xE9DE1D0, 0x681FE48 }, - { 0xE419010, 0x7438B90 }, - { 0xDDB3D70, 0x8000000 }, - { 0xD6B31D0, 0x8B6D770 }, - { 0xCF1BBD0, 0x9679180 }, - { 0xC6F3090, 0xA11B240 }, - { 0xBE3EBD0, 0xAB4C250 }, - { 0xB504F30, 0xB504F30 }, - { 0xAB4C240, 0xBE3EBE0 }, - { 0xA11B240, 0xC6F30A0 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x8B6D760, 0xD6B31E0 }, - { 0x7FFFFF8, 0xDDB3D80 }, - { 0x7438B90, 0xE419010 }, - { 0x681FE40, 0xE9DE1E0 }, - { 0x5BBDFF0, 0xEEFF210 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x4241F78, 0xF746EA0 }, - { 0x3539B2C, 0xFA67E20 }, - { 0x280C154, 0xFCD9250 }, - { 0x1AC25FE, 0xFE98FD0 }, - { 0xD65E3F, 0xFFA62F0 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFF29A1AA, 0xFFA62F0 }, - { 0xFE53D9EA, 0xFE98FD0 }, - { 0xFD7F3E98, 0xFCD9250 }, - { 0xFCAC64BC, 0xFA67E10 }, - { 0xFBDBE070, 0xF746EA0 }, - { 0xFB0E4428, 0xF378700 }, - { 0xFA441FF8, 0xEEFF210 }, - { 0xF97E01A8, 0xE9DE1D0 }, - { 0xF8BC7458, 0xE419000 }, - { 0xF7FFFFF0, 0xDDB3D70 }, - { 0xF7492890, 0xD6B31D0 }, - { 0xF6986E90, 0xCF1BBD0 }, - { 0xF5EE4DA0, 0xC6F3080 }, - { 0xF54B3DA0, 0xBE3EBD0 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF41C1410, 0xAB4C220 }, - { 0xF390CF50, 0xA11B220 }, - { 0xF30E4420, 0x9679170 }, - { 0xF294CE30, 0x8B6D770 }, - { 0xF224C290, 0x8000010 }, - { 0xF1BE6FE0, 0x7438B68 }, - { 0xF1621E20, 0x681FE38 }, - { 0xF1100DF0, 0x5BBE000 }, - { 0xF0C878E0, 0x4F1BB98 }, - { 0xF08B9150, 0x4241F50 }, - { 0xF05981E0, 0x3539B20 }, - { 0xF0326DB0, 0x280C168 }, - { 0xF0167030, 0x1AC2612 }, - { 0xF0059D00, 0xD65E13 }, - { 0xF0000000, 0xFFFFFFE9 }, - { 0xF0059D10, 0xFF29A1BE }, - { 0xF0167040, 0xFE53D9BE }, - { 0xF0326DC0, 0xFD7F3E6C }, - { 0xF05981F0, 0xFCAC64B0 }, - { 0xF08B9160, 0xFBDBE088 }, - { 0xF0C878F0, 0xFB0E4438 }, - { 0xF1100E00, 0xFA441FD0 }, - { 0xF1621E30, 0xF97E01A0 }, - { 0xF1BE6FF0, 0xF8BC7468 }, - { 0xF224C2B0, 0xF7FFFFD0 }, - { 0xF294CE40, 0xF7492870 }, - { 0xF30E4440, 0xF6986E60 }, - { 0xF390CF70, 0xF5EE4DB0 }, - { 0xF41C1430, 0xF54B3DB0 }, - { 0xF4AFB0F0, 0xF4AFB0B0 }, - { 0xF54B3DD0, 0xF41C1420 }, - { 0xF5EE4DD0, 0xF390CF60 }, - { 0xF6986EB0, 0xF30E4410 }, - { 0xF7492880, 0xF294CE30 }, - { 0x10000000, 0x0 }, - { 0xFF35F90, 0x1415E54 }, - { 0xFCD9250, 0x280C170 }, - { 0xF8ED3C0, 0x3BC3138 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xEC835E0, 0x61F78B0 }, - { 0xE419010, 0x7438B90 }, - { 0xDA46A00, 0x85C2770 }, - { 0xCF1BBD0, 0x9679180 }, - { 0xC2A9F70, 0xA6423B0 }, - { 0xB504F30, 0xB504F30 }, - { 0xA6423A0, 0xC2A9F70 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x85C2760, 0xDA46A10 }, - { 0x7438B90, 0xE419010 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x3BC3124, 0xF8ED3C0 }, - { 0x280C154, 0xFCD9250 }, - { 0x1415E50, 0xFF35F90 }, - { 0x10000000, 0x0 }, - { 0xFCD9250, 0x280C170 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xE419010, 0x7438B90 }, - { 0xCF1BBD0, 0x9679180 }, - { 0xB504F30, 0xB504F30 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x7438B90, 0xE419010 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x280C154, 0xFCD9250 }, - { 0xFFFFFFF5, 0x10000000 }, - { 0xFD7F3E98, 0xFCD9250 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF8BC7458, 0xE419000 }, - { 0xF6986E90, 0xCF1BBD0 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF30E4420, 0x9679170 }, - { 0xF1BE6FE0, 0x7438B68 }, - { 0xF0C878E0, 0x4F1BB98 }, - { 0xF0326DB0, 0x280C168 }, - { 0x10000000, 0x0 }, - { 0xF8ED3C0, 0x3BC3138 }, - { 0xE419010, 0x7438B90 }, - { 0xC2A9F70, 0xA6423B0 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x61F78A8, 0xEC835E0 }, - { 0x280C154, 0xFCD9250 }, - { 0xFEBEA198, 0xFF35F90 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF7A3D870, 0xDA469F0 }, - { 0xF4AFB0D0, 0xB504F30 }, - { 0xF25B95F0, 0x85C2760 }, - { 0xF0C878E0, 0x4F1BB98 }, - { 0xF00CA060, 0x1415E44 }, - { 0xF0326DC0, 0xFD7F3E6C }, - { 0xF137CA20, 0xF9E08758 }, - { 0xF30E4440, 0xF6986E60 }, - { 0xF59BDC80, 0xF3D56070 }, - { 0xF8BC74C0, 0xF1BE6FD0 }, - { 0xFC43CEB4, 0xF0712C40 }, - { 0x10000000, 0x0 }, - { 0xF378710, 0x4F1BBD0 }, - { 0xCF1BBD0, 0x9679180 }, - { 0x9679180, 0xCF1BBD0 }, - { 0x4F1BBC8, 0xF378710 }, - { 0x10000000, 0x0 }, - { 0xCF1BBD0, 0x9679180 }, - { 0x4F1BBC8, 0xF378710 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF30E4420, 0x9679170 }, - { 0x10000000, 0x0 }, - { 0x9679180, 0xCF1BBD0 }, - { 0xFB0E4428, 0xF378700 }, - { 0xF0C878E0, 0x4F1BB98 }, - { 0xF30E4440, 0xF6986E60 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x10000000, 0x0 }, - { 0x4F1BBF0, 0xF0C87900 } + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99965733), COEF_CONST(0.02617695) }, + { COEF_CONST(0.99862951), COEF_CONST(0.05233596) }, + { COEF_CONST(0.99691731), COEF_CONST(0.07845910) }, + { COEF_CONST(0.99452192), COEF_CONST(0.10452846) }, + { COEF_CONST(0.99144489), COEF_CONST(0.13052620) }, + { COEF_CONST(0.98768836), COEF_CONST(0.15643448) }, + { COEF_CONST(0.98325491), COEF_CONST(0.18223552) }, + { COEF_CONST(0.97814763), COEF_CONST(0.20791170) }, + { COEF_CONST(0.97236991), COEF_CONST(0.23344538) }, + { COEF_CONST(0.96592581), COEF_CONST(0.25881904) }, + { COEF_CONST(0.95881975), COEF_CONST(0.28401536) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.94264150), COEF_CONST(0.33380687) }, + { COEF_CONST(0.93358040), COEF_CONST(0.35836795) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.91354543), COEF_CONST(0.40673664) }, + { COEF_CONST(0.90258527), COEF_CONST(0.43051112) }, + { COEF_CONST(0.89100653), COEF_CONST(0.45399052) }, + { COEF_CONST(0.87881708), COEF_CONST(0.47715878) }, + { COEF_CONST(0.86602539), COEF_CONST(0.50000000) }, + { COEF_CONST(0.85264015), COEF_CONST(0.52249855) }, + { COEF_CONST(0.83867055), COEF_CONST(0.54463905) }, + { COEF_CONST(0.82412618), COEF_CONST(0.56640625) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.79335332), COEF_CONST(0.60876143) }, + { COEF_CONST(0.77714592), COEF_CONST(0.62932038) }, + { COEF_CONST(0.76040596), COEF_CONST(0.64944810) }, + { COEF_CONST(0.74314481), COEF_CONST(0.66913062) }, + { COEF_CONST(0.72537434), COEF_CONST(0.68835455) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.68835455), COEF_CONST(0.72537440) }, + { COEF_CONST(0.66913056), COEF_CONST(0.74314487) }, + { COEF_CONST(0.64944804), COEF_CONST(0.76040596) }, + { COEF_CONST(0.62932038), COEF_CONST(0.77714598) }, + { COEF_CONST(0.60876143), COEF_CONST(0.79335338) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.56640619), COEF_CONST(0.82412618) }, + { COEF_CONST(0.54463899), COEF_CONST(0.83867061) }, + { COEF_CONST(0.52249855), COEF_CONST(0.85264021) }, + { COEF_CONST(0.49999997), COEF_CONST(0.86602545) }, + { COEF_CONST(0.47715873), COEF_CONST(0.87881714) }, + { COEF_CONST(0.45399046), COEF_CONST(0.89100653) }, + { COEF_CONST(0.43051106), COEF_CONST(0.90258533) }, + { COEF_CONST(0.40673661), COEF_CONST(0.91354549) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.35836792), COEF_CONST(0.93358046) }, + { COEF_CONST(0.33380681), COEF_CONST(0.94264150) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(0.28401530), COEF_CONST(0.95881975) }, + { COEF_CONST(0.25881901), COEF_CONST(0.96592581) }, + { COEF_CONST(0.23344533), COEF_CONST(0.97236991) }, + { COEF_CONST(0.20791166), COEF_CONST(0.97814763) }, + { COEF_CONST(0.18223549), COEF_CONST(0.98325491) }, + { COEF_CONST(0.15643443), COEF_CONST(0.98768836) }, + { COEF_CONST(0.13052616), COEF_CONST(0.99144489) }, + { COEF_CONST(0.10452842), COEF_CONST(0.99452192) }, + { COEF_CONST(0.07845905), COEF_CONST(0.99691731) }, + { COEF_CONST(0.05233591), COEF_CONST(0.99862951) }, + { COEF_CONST(0.02617691), COEF_CONST(0.99965733) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.02617699), COEF_CONST(0.99965733) }, + { COEF_CONST(-0.05233600), COEF_CONST(0.99862951) }, + { COEF_CONST(-0.07845914), COEF_CONST(0.99691731) }, + { COEF_CONST(-0.10452851), COEF_CONST(0.99452192) }, + { COEF_CONST(-0.13052624), COEF_CONST(0.99144489) }, + { COEF_CONST(-0.15643451), COEF_CONST(0.98768836) }, + { COEF_CONST(-0.18223557), COEF_CONST(0.98325491) }, + { COEF_CONST(-0.20791174), COEF_CONST(0.97814757) }, + { COEF_CONST(-0.23344541), COEF_CONST(0.97236991) }, + { COEF_CONST(-0.25881910), COEF_CONST(0.96592581) }, + { COEF_CONST(-0.28401539), COEF_CONST(0.95881969) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.33380690), COEF_CONST(0.94264150) }, + { COEF_CONST(-0.35836801), COEF_CONST(0.93358046) }, + { COEF_CONST(-0.38268349), COEF_CONST(0.92387950) }, + { COEF_CONST(-0.40673670), COEF_CONST(0.91354543) }, + { COEF_CONST(-0.43051115), COEF_CONST(0.90258527) }, + { COEF_CONST(-0.45399055), COEF_CONST(0.89100647) }, + { COEF_CONST(-0.47715881), COEF_CONST(0.87881714) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99862951), COEF_CONST(0.05233596) }, + { COEF_CONST(0.99452192), COEF_CONST(0.10452846) }, + { COEF_CONST(0.98768836), COEF_CONST(0.15643448) }, + { COEF_CONST(0.97814763), COEF_CONST(0.20791170) }, + { COEF_CONST(0.96592581), COEF_CONST(0.25881904) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.93358040), COEF_CONST(0.35836795) }, + { COEF_CONST(0.91354543), COEF_CONST(0.40673664) }, + { COEF_CONST(0.89100653), COEF_CONST(0.45399052) }, + { COEF_CONST(0.86602539), COEF_CONST(0.50000000) }, + { COEF_CONST(0.83867055), COEF_CONST(0.54463905) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.77714592), COEF_CONST(0.62932038) }, + { COEF_CONST(0.74314481), COEF_CONST(0.66913062) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.66913056), COEF_CONST(0.74314487) }, + { COEF_CONST(0.62932038), COEF_CONST(0.77714598) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.54463899), COEF_CONST(0.83867061) }, + { COEF_CONST(0.49999997), COEF_CONST(0.86602545) }, + { COEF_CONST(0.45399046), COEF_CONST(0.89100653) }, + { COEF_CONST(0.40673661), COEF_CONST(0.91354549) }, + { COEF_CONST(0.35836792), COEF_CONST(0.93358046) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(0.25881901), COEF_CONST(0.96592581) }, + { COEF_CONST(0.20791166), COEF_CONST(0.97814763) }, + { COEF_CONST(0.15643443), COEF_CONST(0.98768836) }, + { COEF_CONST(0.10452842), COEF_CONST(0.99452192) }, + { COEF_CONST(0.05233591), COEF_CONST(0.99862951) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.05233600), COEF_CONST(0.99862951) }, + { COEF_CONST(-0.10452851), COEF_CONST(0.99452192) }, + { COEF_CONST(-0.15643451), COEF_CONST(0.98768836) }, + { COEF_CONST(-0.20791174), COEF_CONST(0.97814757) }, + { COEF_CONST(-0.25881910), COEF_CONST(0.96592581) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.35836801), COEF_CONST(0.93358046) }, + { COEF_CONST(-0.40673670), COEF_CONST(0.91354543) }, + { COEF_CONST(-0.45399055), COEF_CONST(0.89100647) }, + { COEF_CONST(-0.50000006), COEF_CONST(0.86602539) }, + { COEF_CONST(-0.54463911), COEF_CONST(0.83867055) }, + { COEF_CONST(-0.58778530), COEF_CONST(0.80901700) }, + { COEF_CONST(-0.62932044), COEF_CONST(0.77714586) }, + { COEF_CONST(-0.66913068), COEF_CONST(0.74314481) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.74314487), COEF_CONST(0.66913044) }, + { COEF_CONST(-0.77714598), COEF_CONST(0.62932026) }, + { COEF_CONST(-0.80901706), COEF_CONST(0.58778518) }, + { COEF_CONST(-0.83867061), COEF_CONST(0.54463905) }, + { COEF_CONST(-0.86602545), COEF_CONST(0.50000006) }, + { COEF_CONST(-0.89100653), COEF_CONST(0.45399037) }, + { COEF_CONST(-0.91354549), COEF_CONST(0.40673658) }, + { COEF_CONST(-0.93358046), COEF_CONST(0.35836792) }, + { COEF_CONST(-0.95105654), COEF_CONST(0.30901679) }, + { COEF_CONST(-0.96592587), COEF_CONST(0.25881892) }, + { COEF_CONST(-0.97814763), COEF_CONST(0.20791161) }, + { COEF_CONST(-0.98768836), COEF_CONST(0.15643445) }, + { COEF_CONST(-0.99452192), COEF_CONST(0.10452849) }, + { COEF_CONST(-0.99862951), COEF_CONST(0.05233581) }, + { COEF_CONST(-1.00000000), COEF_CONST(-0.00000009) }, + { COEF_CONST(-0.99862951), COEF_CONST(-0.05233599) }, + { COEF_CONST(-0.99452186), COEF_CONST(-0.10452867) }, + { COEF_CONST(-0.98768830), COEF_CONST(-0.15643461) }, + { COEF_CONST(-0.97814757), COEF_CONST(-0.20791179) }, + { COEF_CONST(-0.96592581), COEF_CONST(-0.25881907) }, + { COEF_CONST(-0.95105648), COEF_CONST(-0.30901697) }, + { COEF_CONST(-0.93358040), COEF_CONST(-0.35836810) }, + { COEF_CONST(-0.91354543), COEF_CONST(-0.40673673) }, + { COEF_CONST(-0.89100647), COEF_CONST(-0.45399055) }, + { COEF_CONST(-0.86602533), COEF_CONST(-0.50000018) }, + { COEF_CONST(-0.83867049), COEF_CONST(-0.54463917) }, + { COEF_CONST(-0.80901694), COEF_CONST(-0.58778536) }, + { COEF_CONST(-0.77714592), COEF_CONST(-0.62932044) }, + { COEF_CONST(-0.74314475), COEF_CONST(-0.66913062) }, + { COEF_CONST(-0.70710671), COEF_CONST(-0.70710689) }, + { COEF_CONST(-0.66913050), COEF_CONST(-0.74314487) }, + { COEF_CONST(-0.62932032), COEF_CONST(-0.77714598) }, + { COEF_CONST(-0.58778518), COEF_CONST(-0.80901712) }, + { COEF_CONST(-0.54463893), COEF_CONST(-0.83867055) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.99691731), COEF_CONST(0.07845910) }, + { COEF_CONST(0.98768836), COEF_CONST(0.15643448) }, + { COEF_CONST(0.97236991), COEF_CONST(0.23344538) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.92387950), COEF_CONST(0.38268346) }, + { COEF_CONST(0.89100653), COEF_CONST(0.45399052) }, + { COEF_CONST(0.85264015), COEF_CONST(0.52249855) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.76040596), COEF_CONST(0.64944810) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.64944804), COEF_CONST(0.76040596) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.52249855), COEF_CONST(0.85264021) }, + { COEF_CONST(0.45399046), COEF_CONST(0.89100653) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(0.23344533), COEF_CONST(0.97236991) }, + { COEF_CONST(0.15643443), COEF_CONST(0.98768836) }, + { COEF_CONST(0.07845905), COEF_CONST(0.99691731) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.98768836), COEF_CONST(0.15643448) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.89100653), COEF_CONST(0.45399052) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.70710677), COEF_CONST(0.70710677) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.45399046), COEF_CONST(0.89100653) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(0.15643443), COEF_CONST(0.98768836) }, + { COEF_CONST(-0.00000004), COEF_CONST(1.00000000) }, + { COEF_CONST(-0.15643451), COEF_CONST(0.98768836) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.45399055), COEF_CONST(0.89100647) }, + { COEF_CONST(-0.58778530), COEF_CONST(0.80901700) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.80901706), COEF_CONST(0.58778518) }, + { COEF_CONST(-0.89100653), COEF_CONST(0.45399037) }, + { COEF_CONST(-0.95105654), COEF_CONST(0.30901679) }, + { COEF_CONST(-0.98768836), COEF_CONST(0.15643445) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.97236991), COEF_CONST(0.23344538) }, + { COEF_CONST(0.89100653), COEF_CONST(0.45399052) }, + { COEF_CONST(0.76040596), COEF_CONST(0.64944810) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.38268340), COEF_CONST(0.92387950) }, + { COEF_CONST(0.15643443), COEF_CONST(0.98768836) }, + { COEF_CONST(-0.07845914), COEF_CONST(0.99691731) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.52249861), COEF_CONST(0.85264009) }, + { COEF_CONST(-0.70710683), COEF_CONST(0.70710677) }, + { COEF_CONST(-0.85264021), COEF_CONST(0.52249849) }, + { COEF_CONST(-0.95105654), COEF_CONST(0.30901679) }, + { COEF_CONST(-0.99691737), COEF_CONST(0.07845904) }, + { COEF_CONST(-0.98768830), COEF_CONST(-0.15643461) }, + { COEF_CONST(-0.92387950), COEF_CONST(-0.38268343) }, + { COEF_CONST(-0.80901694), COEF_CONST(-0.58778536) }, + { COEF_CONST(-0.64944798), COEF_CONST(-0.76040608) }, + { COEF_CONST(-0.45399040), COEF_CONST(-0.89100665) }, + { COEF_CONST(-0.23344524), COEF_CONST(-0.97236991) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.95105654), COEF_CONST(0.30901700) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.80901700), COEF_CONST(0.58778524) }, + { COEF_CONST(0.30901697), COEF_CONST(0.95105654) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.80901706), COEF_CONST(0.58778518) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.58778524), COEF_CONST(0.80901700) }, + { COEF_CONST(-0.30901703), COEF_CONST(0.95105648) }, + { COEF_CONST(-0.95105654), COEF_CONST(0.30901679) }, + { COEF_CONST(-0.80901694), COEF_CONST(-0.58778536) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(1.00000000), COEF_CONST(0.00000000) }, + { COEF_CONST(0.30901712), COEF_CONST(-0.95105648) } }; #endif diff --git a/libfaad2/common.c b/libfaad2/common.c index 7c1a1b4434..956e331c32 100644 --- a/libfaad2/common.c +++ b/libfaad2/common.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: common.c,v 1.6 2003/07/29 08:20:12 menno Exp $ +** $Id: common.c,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ /* just some common functions that could be used anywhere */ @@ -35,7 +35,6 @@ /* Returns the sample rate index based on the samplerate */ uint8_t get_sr_index(uint32_t samplerate) { - if (16428320 <= samplerate) return 11; if (92017 <= samplerate) return 0; if (75132 <= samplerate) return 1; if (55426 <= samplerate) return 2; @@ -47,10 +46,26 @@ uint8_t get_sr_index(uint32_t samplerate) if (13856 <= samplerate) return 8; if (11502 <= samplerate) return 9; if (9391 <= samplerate) return 10; + if (16428320 <= samplerate) return 11; return 11; } +/* Returns the sample rate based on the sample rate index */ +uint32_t get_sample_rate(uint8_t sr_index) +{ + static const uint32_t sample_rates[] = + { + 96000, 88200, 64000, 48000, 44100, 32000, + 24000, 22050, 16000, 12000, 11025, 8000 + }; + + if (sr_index < 12) + return sample_rates[sr_index]; + + return 0; +} + /* Returns 0 if an object type is decodable, otherwise returns -1 */ int8_t can_decode_ot(uint8_t object_type) { diff --git a/libfaad2/common.h b/libfaad2/common.h index c622913ae0..2b0c204fee 100644 --- a/libfaad2/common.h +++ b/libfaad2/common.h @@ -242,8 +242,8 @@ char *strchr(), *strrchr(); #define MUL_C_C(A,B) ((A)*(B)) #define MUL_R_C(A,B) ((A)*(B)) - #define REAL_CONST(A) ((real_t)A) - #define COEF_CONST(A) ((real_t)A) + #define REAL_CONST(A) ((real_t)(A)) + #define COEF_CONST(A) ((real_t)(A)) #else /* Normal floating point operation */ @@ -253,8 +253,8 @@ char *strchr(), *strrchr(); #define MUL_C_C(A,B) ((A)*(B)) #define MUL_R_C(A,B) ((A)*(B)) - #define REAL_CONST(A) ((real_t)A) - #define COEF_CONST(A) ((real_t)A) + #define REAL_CONST(A) ((real_t)(A)) + #define COEF_CONST(A) ((real_t)(A)) #ifdef __ICL /* only Intel C compiler has fmath ??? */ @@ -307,6 +307,7 @@ typedef real_t complex_t[2]; int32_t int_log2(int32_t val); uint32_t random_int(void); uint8_t get_sr_index(uint32_t samplerate); +uint32_t get_sample_rate(uint8_t sr_index); int8_t can_decode_ot(uint8_t object_type); #ifndef M_PI diff --git a/libfaad2/decoder.c b/libfaad2/decoder.c index ee1bba71d3..866239d010 100644 --- a/libfaad2/decoder.c +++ b/libfaad2/decoder.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: decoder.c,v 1.62 2003/07/29 08:20:12 menno Exp $ +** $Id: decoder.c,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ #include "common.h" @@ -34,7 +34,6 @@ #include "decoder.h" #include "mp4.h" #include "syntax.h" -#include "specrec.h" #include "tns.h" #include "pns.h" #include "is.h" @@ -146,6 +145,12 @@ faacDecHandle FAADAPI faacDecOpen() #if POW_TABLE_SIZE hDecoder->pow2_table = (real_t*)malloc(POW_TABLE_SIZE*sizeof(real_t)); + if (!hDecoder->pow2_table) + { + free(hDecoder); + hDecoder = NULL; + return hDecoder; + } build_tables(hDecoder->pow2_table); #endif @@ -154,21 +159,44 @@ faacDecHandle FAADAPI faacDecOpen() faacDecConfigurationPtr FAADAPI faacDecGetCurrentConfiguration(faacDecHandle hDecoder) { + if (hDecoder) + { faacDecConfigurationPtr config = &(hDecoder->config); return config; + } + + return NULL; } uint8_t FAADAPI faacDecSetConfiguration(faacDecHandle hDecoder, faacDecConfigurationPtr config) { + if (hDecoder && config) + { + /* check if we can decode this object type */ + if (can_decode_ot(config->defObjectType) < 0) + return 0; hDecoder->config.defObjectType = config->defObjectType; + + /* samplerate: anything but 0 should be possible */ + if (config->defSampleRate == 0) + return 0; hDecoder->config.defSampleRate = config->defSampleRate; + + /* check output format */ + if ((config->outputFormat < 1) || (config->outputFormat > 9)) + return 0; hDecoder->config.outputFormat = config->outputFormat; + + if (config->downMatrix > 1) hDecoder->config.downMatrix = config->downMatrix; /* OK */ return 1; + } + + return 0; } int32_t FAADAPI faacDecInit(faacDecHandle hDecoder, uint8_t *buffer, @@ -180,9 +208,12 @@ int32_t FAADAPI faacDecInit(faacDecHandle hDecoder, uint8_t *buffer, adif_header adif; adts_header adts; + if ((hDecoder == NULL) || (samplerate == NULL) || (channels == NULL)) + return -1; + hDecoder->sf_index = get_sr_index(hDecoder->config.defSampleRate); hDecoder->object_type = hDecoder->config.defObjectType; - *samplerate = sample_rates[hDecoder->sf_index]; + *samplerate = get_sample_rate(hDecoder->sf_index); *channels = 1; if (buffer != NULL) @@ -199,9 +230,9 @@ int32_t FAADAPI faacDecInit(faacDecHandle hDecoder, uint8_t *buffer, faad_byte_align(&ld); hDecoder->sf_index = adif.pce[0].sf_index; - hDecoder->object_type = adif.pce[0].object_type; + hDecoder->object_type = adif.pce[0].object_type + 1; - *samplerate = sample_rates[hDecoder->sf_index]; + *samplerate = get_sample_rate(hDecoder->sf_index); *channels = adif.pce[0].channels; memcpy(&(hDecoder->pce), &(adif.pce[0]), sizeof(program_config)); @@ -213,12 +244,13 @@ int32_t FAADAPI faacDecInit(faacDecHandle hDecoder, uint8_t *buffer, } else if (faad_showbits(&ld, 12) == 0xfff) { hDecoder->adts_header_present = 1; + adts.old_format = hDecoder->config.useOldADTSFormat; adts_frame(&adts, &ld); hDecoder->sf_index = adts.sf_index; - hDecoder->object_type = adts.profile; + hDecoder->object_type = adts.profile + 1; - *samplerate = sample_rates[hDecoder->sf_index]; + *samplerate = get_sample_rate(hDecoder->sf_index); *channels = (adts.channel_configuration > 6) ? 2 : adts.channel_configuration; } @@ -232,6 +264,15 @@ int32_t FAADAPI faacDecInit(faacDecHandle hDecoder, uint8_t *buffer, } hDecoder->channelConfiguration = *channels; +#ifdef SBR_DEC + /* implicit signalling */ + if (*samplerate <= 24000) + { + *samplerate *= 2; + hDecoder->forceUpSampling = 1; + } +#endif + /* must be done before frameLength is divided by 2 for LD */ #ifdef SSR_DEC if (hDecoder->object_type == SSR) @@ -250,7 +291,7 @@ int32_t FAADAPI faacDecInit(faacDecHandle hDecoder, uint8_t *buffer, #ifndef FIXED_POINT if (hDecoder->config.outputFormat >= FAAD_FMT_DITHER_LOWEST) - Init_Dither(16, hDecoder->config.outputFormat - FAAD_FMT_DITHER_LOWEST); + Init_Dither(16, (uint8_t)(hDecoder->config.outputFormat - FAAD_FMT_DITHER_LOWEST)); #endif return bits; @@ -264,9 +305,6 @@ int8_t FAADAPI faacDecInit2(faacDecHandle hDecoder, uint8_t *pBuffer, int8_t rc; mp4AudioSpecificConfig mp4ASC; - hDecoder->adif_header_present = 0; - hDecoder->adts_header_present = 0; - if((hDecoder == NULL) || (pBuffer == NULL) || (SizeOfDecoderSpecificInfo < 2) @@ -276,6 +314,9 @@ int8_t FAADAPI faacDecInit2(faacDecHandle hDecoder, uint8_t *pBuffer, return -1; } + hDecoder->adif_header_present = 0; + hDecoder->adts_header_present = 0; + /* decode the audio specific config */ rc = AudioSpecificConfig2(pBuffer, SizeOfDecoderSpecificInfo, &mp4ASC, &(hDecoder->pce)); @@ -291,21 +332,22 @@ int8_t FAADAPI faacDecInit2(faacDecHandle hDecoder, uint8_t *pBuffer, } hDecoder->sf_index = mp4ASC.samplingFrequencyIndex; hDecoder->object_type = mp4ASC.objectTypeIndex; +#ifdef ERROR_RESILIENCE hDecoder->aacSectionDataResilienceFlag = mp4ASC.aacSectionDataResilienceFlag; hDecoder->aacScalefactorDataResilienceFlag = mp4ASC.aacScalefactorDataResilienceFlag; hDecoder->aacSpectralDataResilienceFlag = mp4ASC.aacSpectralDataResilienceFlag; +#endif #ifdef SBR_DEC hDecoder->sbr_present_flag = mp4ASC.sbr_present_flag; + hDecoder->forceUpSampling = mp4ASC.forceUpSampling; /* AAC core decoder samplerate is 2 times as low */ - if (hDecoder->sbr_present_flag == 1) + if (hDecoder->sbr_present_flag == 1 || hDecoder->forceUpSampling == 1) { hDecoder->sf_index = get_sr_index(mp4ASC.samplingFrequency / 2); } #endif - if (hDecoder->object_type < 5) - hDecoder->object_type--; /* For AAC differs from MPEG-4 */ if (rc != 0) { return rc; @@ -329,7 +371,7 @@ int8_t FAADAPI faacDecInit2(faacDecHandle hDecoder, uint8_t *pBuffer, #ifndef FIXED_POINT if (hDecoder->config.outputFormat >= FAAD_FMT_DITHER_LOWEST) - Init_Dither(16, hDecoder->config.outputFormat - FAAD_FMT_DITHER_LOWEST); + Init_Dither(16, (uint8_t)(hDecoder->config.outputFormat - FAAD_FMT_DITHER_LOWEST)); #endif return 0; @@ -342,20 +384,44 @@ int8_t FAADAPI faacDecInitDRM(faacDecHandle hDecoder, uint32_t samplerate, hDecoder->config.defObjectType = DRM_ER_LC; hDecoder->config.defSampleRate = samplerate; +#ifdef ERROR_RESILIENCE // This shoudl always be defined for DRM hDecoder->aacSectionDataResilienceFlag = 1; /* VCB11 */ hDecoder->aacScalefactorDataResilienceFlag = 0; /* no RVLC */ hDecoder->aacSpectralDataResilienceFlag = 1; /* HCR */ +#endif hDecoder->frameLength = 960; hDecoder->sf_index = get_sr_index(hDecoder->config.defSampleRate); hDecoder->object_type = hDecoder->config.defObjectType; - hDecoder->channelConfiguration = channels; + + if ((channels == DRMCH_STEREO) || (channels == DRMCH_SBR_STEREO)) + hDecoder->channelConfiguration = 2; + else + hDecoder->channelConfiguration = 1; + +#ifdef SBR_DEC +#ifdef DRM + if (channels == DRMCH_SBR_LC_STEREO) + hDecoder->lcstereo_flag = 1; + else + hDecoder->lcstereo_flag = 0; + + if ((channels == DRMCH_MONO) || (channels == DRMCH_STEREO)) + hDecoder->sbr_present_flag = 0; + else + hDecoder->sbr_present_flag = 1; + + /* Reset sbr for new initialization */ + sbrDecodeEnd(hDecoder->sbr[0]); + hDecoder->sbr[0] = NULL; +#endif +#endif /* must be done before frameLength is divided by 2 for LD */ hDecoder->fb = filter_bank_init(hDecoder->frameLength); #ifndef FIXED_POINT if (hDecoder->config.outputFormat >= FAAD_FMT_DITHER_LOWEST) - Init_Dither(16, hDecoder->config.outputFormat - FAAD_FMT_DITHER_LOWEST); + Init_Dither(16, (uint8_t)(hDecoder->config.outputFormat - FAAD_FMT_DITHER_LOWEST)); #endif return 0; @@ -425,7 +491,7 @@ void FAADAPI faacDecPostSeekReset(faacDecHandle hDecoder, int32_t frame) } } -void create_channel_config(faacDecHandle hDecoder, faacDecFrameInfo *hInfo) +static void create_channel_config(faacDecHandle hDecoder, faacDecFrameInfo *hInfo) { hInfo->num_front_channels = 0; hInfo->num_side_channels = 0; @@ -640,52 +706,78 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, uint8_t channels = 0, ch_ele = 0; uint8_t output_channels = 0; bitfile *ld = (bitfile*)malloc(sizeof(bitfile)); + uint32_t bitsconsumed; +#ifdef DRM + uint8_t *revbuffer; + uint8_t *prevbufstart; + uint8_t *pbufend; +#endif - /* local copys of globals */ - uint8_t sf_index = hDecoder->sf_index; - uint8_t object_type = hDecoder->object_type; - uint8_t channelConfiguration = hDecoder->channelConfiguration; + /* local copy of globals */ + uint8_t sf_index, object_type, channelConfiguration, outputFormat; + uint8_t *window_shape_prev; + uint16_t frame_len; #ifdef MAIN_DEC - pred_state **pred_stat = hDecoder->pred_stat; + pred_state **pred_stat; #endif #ifdef LTP_DEC - real_t **lt_pred_stat = hDecoder->lt_pred_stat; -#endif -#ifndef FIXED_POINT -#if POW_TABLE_SIZE - real_t *pow2_table = hDecoder->pow2_table; -#else - real_t *pow2_table = NULL; + real_t **lt_pred_stat; #endif -#endif - uint8_t *window_shape_prev = hDecoder->window_shape_prev; - real_t **time_out = hDecoder->time_out; + real_t **time_out; #ifdef SBR_DEC - real_t **time_out2 = hDecoder->time_out2; + real_t **time_out2; #endif #ifdef SSR_DEC - real_t **ssr_overlap = hDecoder->ssr_overlap; - real_t **prev_fmd = hDecoder->prev_fmd; + real_t **ssr_overlap, **prev_fmd; #endif - fb_info *fb = hDecoder->fb; - drc_info *drc = hDecoder->drc; - uint8_t outputFormat = hDecoder->config.outputFormat; + fb_info *fb; + drc_info *drc; #ifdef LTP_DEC - uint16_t *ltp_lag = hDecoder->ltp_lag; + uint16_t *ltp_lag; #endif - program_config *pce = &hDecoder->pce; + program_config *pce; + void *sample_buffer; element *syntax_elements[MAX_SYNTAX_ELEMENTS]; element **elements; - int16_t *spec_data[MAX_CHANNELS]; real_t *spec_coef[MAX_CHANNELS]; - uint16_t frame_len = hDecoder->frameLength; + /* safety checks */ + if ((hDecoder == NULL) || (hInfo == NULL) || (buffer == NULL) || (ld == NULL)) + { + return NULL; + } - void *sample_buffer; + sf_index = hDecoder->sf_index; + object_type = hDecoder->object_type; + channelConfiguration = hDecoder->channelConfiguration; +#ifdef MAIN_DEC + pred_stat = hDecoder->pred_stat; +#endif +#ifdef LTP_DEC + lt_pred_stat = hDecoder->lt_pred_stat; +#endif + window_shape_prev = hDecoder->window_shape_prev; + time_out = hDecoder->time_out; +#ifdef SBR_DEC + time_out2 = hDecoder->time_out2; +#endif +#ifdef SSR_DEC + ssr_overlap = hDecoder->ssr_overlap; + prev_fmd = hDecoder->prev_fmd; +#endif + fb = hDecoder->fb; + drc = hDecoder->drc; + outputFormat = hDecoder->config.outputFormat; +#ifdef LTP_DEC + ltp_lag = hDecoder->ltp_lag; +#endif + pce = &hDecoder->pce; + frame_len = hDecoder->frameLength; memset(hInfo, 0, sizeof(faacDecFrameInfo)); + memset(hDecoder->internal_channel, 0, MAX_CHANNELS*sizeof(hDecoder->internal_channel[0])); /* initialize the bitstream */ faad_initbits(ld, buffer, buffer_size); @@ -700,6 +792,7 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, if (hDecoder->adts_header_present) { + adts.old_format = hDecoder->config.useOldADTSFormat; if ((hInfo->error = adts_frame(&adts, ld)) > 0) goto error; @@ -717,7 +810,7 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, /* decode the complete bitstream */ elements = raw_data_block(hDecoder, hInfo, ld, syntax_elements, - spec_data, spec_coef, pce, drc); + spec_coef, pce, drc); ch_ele = hDecoder->fr_ch_ele; channels = hDecoder->fr_channels; @@ -727,7 +820,8 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, /* no more bit reading after this */ - hInfo->bytesconsumed = bit2byte(faad_get_processed_bits(ld)); + bitsconsumed = faad_get_processed_bits(ld); + hInfo->bytesconsumed = bit2byte(bitsconsumed); if (ld->error) { hInfo->error = 14; @@ -737,6 +831,43 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, if (ld) free(ld); ld = NULL; +#ifdef DRM +#ifdef SBR_DEC + if ((hDecoder->sbr_present_flag == 1) && (hDecoder->object_type == DRM_ER_LC)) + { + if (bitsconsumed + 8 > buffer_size*8) + { + hInfo->error = 14; + goto error; + } + + hDecoder->sbr_used[0] = 1; + + if (!hDecoder->sbr[0]) + hDecoder->sbr[0] = sbrDecodeInit(hDecoder->frameLength, 1); + + /* Reverse bit reading of SBR data in DRM audio frame */ + revbuffer = (uint8_t*)malloc(buffer_size*sizeof(uint8_t)); + prevbufstart = revbuffer; + pbufend = &buffer[buffer_size - 1]; + for (i = 0; i < buffer_size; i++) + *prevbufstart++ = tabFlipbits[*pbufend--]; + + /* Set SBR data */ + hDecoder->sbr[0]->data = revbuffer; + /* consider 8 bits from AAC-CRC */ + hDecoder->sbr[0]->data_size_bits = buffer_size*8 - bitsconsumed - 8; + hDecoder->sbr[0]->data_size = + bit2byte(hDecoder->sbr[0]->data_size_bits + 8); + + hDecoder->sbr[0]->lcstereo_flag = hDecoder->lcstereo_flag; + + hDecoder->sbr[0]->sample_rate = get_sample_rate(hDecoder->sf_index); + hDecoder->sbr[0]->sample_rate *= 2; + } +#endif +#endif + if (!hDecoder->adts_header_present && !hDecoder->adif_header_present) { if (channels != hDecoder->channelConfiguration) @@ -764,7 +895,17 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, /* number of channels in this frame */ hInfo->channels = output_channels; /* samplerate */ - hInfo->samplerate = sample_rates[hDecoder->sf_index]; + hInfo->samplerate = get_sample_rate(hDecoder->sf_index); + /* object type */ + hInfo->object_type = hDecoder->object_type; + /* sbr */ + hInfo->sbr = NO_SBR; + /* header type */ + hInfo->header_type = RAW; + if (hDecoder->adif_header_present) + hInfo->header_type = ADIF; + if (hDecoder->adts_header_present) + hInfo->header_type = ADTS; /* check if frame has channel elements */ if (channels == 0) @@ -776,7 +917,7 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, if (hDecoder->sample_buffer == NULL) { #ifdef SBR_DEC - if (hDecoder->sbr_present_flag == 1) + if ((hDecoder->sbr_present_flag == 1) || (hDecoder->forceUpSampling == 1)) { if (hDecoder->config.outputFormat == FAAD_FMT_DOUBLE) hDecoder->sample_buffer = malloc(2*frame_len*channels*sizeof(double)); @@ -795,31 +936,6 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, sample_buffer = hDecoder->sample_buffer; - /* noiseless coding is done, the rest of the tools come now */ - for (ch = 0; ch < channels; ch++) - { - ic_stream *ics; - - /* find the syntax element to which this channel belongs */ - if (syntax_elements[hDecoder->channel_element[ch]]->channel == ch) - ics = &(syntax_elements[hDecoder->channel_element[ch]]->ics1); - else if (syntax_elements[hDecoder->channel_element[ch]]->paired_channel == ch) - ics = &(syntax_elements[hDecoder->channel_element[ch]]->ics2); - - /* inverse quantization */ - inverse_quantization(spec_coef[ch], spec_data[ch], frame_len); - - /* apply scalefactors */ -#ifdef FIXED_POINT - apply_scalefactors(hDecoder, ics, spec_coef[ch], frame_len); -#else - apply_scalefactors(ics, spec_coef[ch], pow2_table, frame_len); -#endif - - /* deinterleave short block grouping */ - if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) - quant_to_spec(ics, spec_coef[ch], frame_len); - } /* Because for ms, is and pns both channels spectral coefficients are needed we have to restart running through all channels here. @@ -850,9 +966,9 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, /* pns decoding */ if ((!right_channel) && (pch != -1) && (ics->ms_mask_present)) - pns_decode(ics, icsr, spec_coef[ch], spec_coef[pch], frame_len, 1); + pns_decode(ics, icsr, spec_coef[ch], spec_coef[pch], frame_len, 1, object_type); else if ((pch == -1) || ((pch != -1) && (!ics->ms_mask_present))) - pns_decode(ics, NULL, spec_coef[ch], NULL, frame_len, 0); + pns_decode(ics, NULL, spec_coef[ch], NULL, frame_len, 0, object_type); if (!right_channel && (pch != -1)) { @@ -992,10 +1108,22 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, } #ifdef SBR_DEC - if (hDecoder->sbr_present_flag == 1) + if ((hDecoder->sbr_present_flag == 1) || (hDecoder->forceUpSampling == 1)) { for (i = 0; i < ch_ele; i++) { + /* following case can happen when forceUpSampling == 1 */ + if (hDecoder->sbr[i] == NULL) + { + hDecoder->sbr[i] = sbrDecodeInit(hDecoder->frameLength +#ifdef DRM + , 0 +#endif + ); + hDecoder->sbr[i]->data = NULL; + hDecoder->sbr[i]->data_size = 0; + } + if (syntax_elements[i]->paired_channel != -1) { memcpy(time_out2[syntax_elements[i]->channel], @@ -1005,19 +1133,27 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, sbrDecodeFrame(hDecoder->sbr[i], time_out2[syntax_elements[i]->channel], time_out2[syntax_elements[i]->paired_channel], ID_CPE, - hDecoder->postSeekResetFlag); + hDecoder->postSeekResetFlag, hDecoder->forceUpSampling); } else { memcpy(time_out2[syntax_elements[i]->channel], time_out[syntax_elements[i]->channel], frame_len*sizeof(real_t)); sbrDecodeFrame(hDecoder->sbr[i], time_out2[syntax_elements[i]->channel], NULL, ID_SCE, - hDecoder->postSeekResetFlag); + hDecoder->postSeekResetFlag, hDecoder->forceUpSampling); } } frame_len *= 2; hInfo->samples *= 2; hInfo->samplerate *= 2; + /* sbr */ + if (hDecoder->sbr_present_flag == 1) + { + hInfo->object_type = HE_AAC; + hInfo->sbr = SBR_UPSAMPLED; + } else { + hInfo->sbr = NO_SBR_UPSAMPLED; + } sample_buffer = output_to_PCM(hDecoder, time_out2, sample_buffer, output_channels, frame_len, outputFormat); @@ -1029,13 +1165,6 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, } #endif - /* gapless playback */ - if (hDecoder->samplesLeft != 0) - { - hInfo->samples = hDecoder->samplesLeft*channels; - } - hDecoder->samplesLeft = 0; - hDecoder->postSeekResetFlag = 0; hDecoder->frame++; @@ -1045,32 +1174,6 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, #endif if (hDecoder->frame <= 1) hInfo->samples = 0; - -#if 0 - if (hDecoder->frame == 2 && hDecoder->sbr_present_flag == 1) - { - uint8_t samplesize; - switch (outputFormat) - { - case FAAD_FMT_16BIT: case FAAD_FMT_16BIT_DITHER: - case FAAD_FMT_16BIT_L_SHAPE: case FAAD_FMT_16BIT_M_SHAPE: - case FAAD_FMT_16BIT_H_SHAPE: - samplesize = 2; - break; - case FAAD_FMT_24BIT: - case FAAD_FMT_32BIT: - case FAAD_FMT_FLOAT: - samplesize = 4; - break; - case FAAD_FMT_DOUBLE: - samplesize = 8; - break; - } - hInfo->samples = 512*channels; - memmove(sample_buffer, (void*)((char*)sample_buffer + 1536*channels*samplesize), hInfo->samples*samplesize); - } -#endif - #ifdef LD_DEC } else { /* LD encoders will give lower delay */ @@ -1083,7 +1186,6 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, for (ch = 0; ch < channels; ch++) { if (spec_coef[ch]) free(spec_coef[ch]); - if (spec_data[ch]) free(spec_data[ch]); } for (i = 0; i < ch_ele; i++) @@ -1106,7 +1208,6 @@ error: for (ch = 0; ch < channels; ch++) { if (spec_coef[ch]) free(spec_coef[ch]); - if (spec_data[ch]) free(spec_data[ch]); } for (i = 0; i < ch_ele; i++) diff --git a/libfaad2/decoder.h b/libfaad2/decoder.h index ab0b5a0ce7..c77a10ddbc 100644 --- a/libfaad2/decoder.h +++ b/libfaad2/decoder.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: decoder.h,v 1.26 2003/07/29 08:20:12 menno Exp $ +** $Id: decoder.h,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ #ifndef __DECODER_H__ @@ -111,6 +111,8 @@ int8_t FAADAPI faacDecInitDRM(faacDecHandle hDecoder, uint32_t samplerate, void FAADAPI faacDecClose(faacDecHandle hDecoder); +void FAADAPI faacDecPostSeekReset(faacDecHandle hDecoder, int32_t frame); + void* FAADAPI faacDecDecode(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, uint8_t *buffer, @@ -118,16 +120,13 @@ void* FAADAPI faacDecDecode(faacDecHandle hDecoder, element *decode_sce_lfe(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, bitfile *ld, - int16_t **spec_data, real_t **spec_coef, - uint8_t id_syn_ele); + real_t **spec_coef, uint8_t id_syn_ele); element *decode_cpe(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, bitfile *ld, - int16_t **spec_data, real_t **spec_coef, - uint8_t id_syn_ele); + real_t **spec_coef, uint8_t id_syn_ele); element **raw_data_block(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, bitfile *ld, element **elements, - int16_t **spec_data, real_t **spec_coef, - program_config *pce, drc_info *drc); + real_t **spec_coef, program_config *pce, drc_info *drc); #ifdef _WIN32 #pragma pack(pop) diff --git a/libfaad2/dither.c b/libfaad2/dither.c index fb5df5b0df..06b973eeb9 100644 --- a/libfaad2/dither.c +++ b/libfaad2/dither.c @@ -108,7 +108,7 @@ scalar16 ( const float32_t* x, const float32_t* y ) void -Init_Dither ( unsigned char bits, unsigned char shapingtype ) +Init_Dither ( uint8_t bits, uint8_t shapingtype ) { static uint8_t default_dither [] = { 92, 92, 88, 84, 81, 78, 74, 67, 0, 0 }; static const float32_t* F [] = { F44_0, F44_1, F44_2, F44_3 }; @@ -124,7 +124,7 @@ Init_Dither ( unsigned char bits, unsigned char shapingtype ) Dither.FilterCoeff = F [shapingtype]; Dither.Mask = ((uint64_t)-1) << (32 - bits); Dither.Add = 0.5 * ((1L << (32 - bits)) - 1); - Dither.Dither = 0.01*default_dither[index] / (((int64_t)1) << bits); + Dither.Dither = (float32_t)0.01*default_dither[index] / (((int64_t)1) << bits); } #endif diff --git a/libfaad2/dither.h b/libfaad2/dither.h index 34fb319966..9b0277565e 100644 --- a/libfaad2/dither.h +++ b/libfaad2/dither.h @@ -36,7 +36,7 @@ uint32_t random_int ( void ); extern double scalar16 ( const float32_t* x, const float32_t* y ); extern double Random_Equi ( double mult ); extern double Random_Triangular ( double mult ); -void Init_Dither ( unsigned char bits, unsigned char shapingtype ); +void Init_Dither ( uint8_t bits, uint8_t shapingtype ); #endif diff --git a/libfaad2/drc.c b/libfaad2/drc.c index 10a1998d9b..d8af2ebbfc 100644 --- a/libfaad2/drc.c +++ b/libfaad2/drc.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: drc.c,v 1.13 2003/07/29 08:20:12 menno Exp $ +** $Id: drc.c,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ #include "common.h" @@ -127,9 +127,9 @@ void drc_decode(drc_info *drc, real_t *spec) #ifndef FIXED_POINT /* Decode DRC gain factor */ if (drc->dyn_rng_sgn[bd]) /* compress */ - exp = -drc->ctrl1 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/24.0; + exp = -drc->ctrl1 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/REAL_CONST(24.0); else /* boost */ - exp = drc->ctrl2 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/24.0; + exp = drc->ctrl2 * (drc->dyn_rng_ctl[bd] - (DRC_REF_LEVEL - drc->prog_ref_level))/REAL_CONST(24.0); factor = (real_t)pow(2.0, exp); /* Apply gain factor */ diff --git a/libfaad2/faad.h b/libfaad2/faad.h index c483aaee37..8e9629b9fe 100644 --- a/libfaad2/faad.h +++ b/libfaad2/faad.h @@ -1,19 +1,19 @@ /* ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding ** Copyright (C) 2003 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 +** 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 @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: faad.h,v 1.26 2003/07/29 08:20:11 menno Exp $ +** $Id: faad.h,v 1.33 2003/09/24 19:55:34 menno Exp $ **/ #ifndef __AACDEC_H__ @@ -46,10 +46,11 @@ extern "C" { #define FAAD2_VERSION "2.0 RC1 " /* object types for AAC */ -#define MAIN 0 -#define LC 1 -#define SSR 2 -#define LTP 3 +#define MAIN 1 +#define LC 2 +#define SSR 3 +#define LTP 4 +#define HE_AAC 5 #define ER_LC 17 #define ER_LTP 19 #define LD 23 @@ -60,6 +61,12 @@ extern "C" { #define ADIF 1 #define ADTS 2 +/* SBR signalling */ +#define NO_SBR 0 +#define SBR_UPSAMPLED 1 +#define SBR_DOWNSAMPLED 2 +#define NO_SBR_UPSAMPLED 3 + /* library output formats */ #define FAAD_FMT_16BIT 1 #define FAAD_FMT_24BIT 2 @@ -91,6 +98,13 @@ extern "C" { #define LFE_CHANNEL (9) #define UNKNOWN_CHANNEL (0) +/* DRM channel definitions */ +#define DRMCH_MONO 1 +#define DRMCH_STEREO 2 +#define DRMCH_SBR_MONO 3 +#define DRMCH_SBR_LC_STEREO 4 +#define DRMCH_SBR_STEREO 5 + /* A decode call can eat up to FAAD_MIN_STREAMSIZE bytes per decoded channel, so at least so much bytes per channel should be available in this stream */ @@ -118,6 +132,7 @@ typedef struct mp4AudioSpecificConfig unsigned char epConfig; char sbr_present_flag; + char forceUpSampling; } mp4AudioSpecificConfig; typedef struct faacDecConfiguration @@ -126,6 +141,7 @@ typedef struct faacDecConfiguration unsigned long defSampleRate; unsigned char outputFormat; unsigned char downMatrix; + unsigned char useOldADTSFormat; } faacDecConfiguration, *faacDecConfigurationPtr; typedef struct faacDecFrameInfo @@ -136,6 +152,15 @@ typedef struct faacDecFrameInfo unsigned char error; unsigned long samplerate; + /* SBR: 0: off, 1: on; upsample, 2: on; downsampled, 3: off; upsampled */ + unsigned char sbr; + + /* MPEG-4 ObjectType */ + unsigned char object_type; + + /* AAC header type; MP4 will be signalled as RAW also */ + unsigned char header_type; + /* multichannel configuration */ unsigned char num_front_channels; unsigned char num_side_channels; @@ -171,6 +196,8 @@ char FAADAPI faacDecInit2(faacDecHandle hDecoder, unsigned char *pBuffer, char FAADAPI faacDecInitDRM(faacDecHandle hDecoder, unsigned long samplerate, unsigned char channels); +void FAADAPI faacDecPostSeekReset(faacDecHandle hDecoder, long frame); + void FAADAPI faacDecClose(faacDecHandle hDecoder); void* FAADAPI faacDecDecode(faacDecHandle hDecoder, diff --git a/libfaad2/filtbank.c b/libfaad2/filtbank.c index a78ba42173..377156e222 100644 --- a/libfaad2/filtbank.c +++ b/libfaad2/filtbank.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: filtbank.c,v 1.25 2003/07/29 08:20:12 menno Exp $ +** $Id: filtbank.c,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ #include "common.h" @@ -191,17 +191,31 @@ void ifilter_bank(fb_info *fb, uint8_t window_sequence, uint8_t window_shape, { case ONLY_LONG_SEQUENCE: imdct(fb, freq_in, transf_buf, 2*nlong); - for (i = nlong-1; i >= 0; i--) + for (i = 0; i < nlong; i+=4) { time_out[i] = time_out[nlong+i] + MUL_R_C(transf_buf[i],window_long_prev[i]); + time_out[i+1] = time_out[nlong+i+1] + MUL_R_C(transf_buf[i+1],window_long_prev[i+1]); + time_out[i+2] = time_out[nlong+i+2] + MUL_R_C(transf_buf[i+2],window_long_prev[i+2]); + time_out[i+3] = time_out[nlong+i+3] + MUL_R_C(transf_buf[i+3],window_long_prev[i+3]); + } + for (i = 0; i < nlong; i+=4) + { time_out[nlong+i] = MUL_R_C(transf_buf[nlong+i],window_long[nlong-1-i]); + time_out[nlong+i+1] = MUL_R_C(transf_buf[nlong+i+1],window_long[nlong-2-i]); + time_out[nlong+i+2] = MUL_R_C(transf_buf[nlong+i+2],window_long[nlong-3-i]); + time_out[nlong+i+3] = MUL_R_C(transf_buf[nlong+i+3],window_long[nlong-4-i]); } break; case LONG_START_SEQUENCE: imdct(fb, freq_in, transf_buf, 2*nlong); - for (i = 0; i < nlong; i++) + for (i = 0; i < nlong; i+=4) + { time_out[i] = time_out[nlong+i] + MUL_R_C(transf_buf[i],window_long_prev[i]); + time_out[i+1] = time_out[nlong+i+1] + MUL_R_C(transf_buf[i+1],window_long_prev[i+1]); + time_out[i+2] = time_out[nlong+i+2] + MUL_R_C(transf_buf[i+2],window_long_prev[i+2]); + time_out[i+3] = time_out[nlong+i+3] + MUL_R_C(transf_buf[i+3],window_long_prev[i+3]); + } for (i = 0; i < nflat_ls; i++) time_out[nlong+i] = transf_buf[nlong+i]; for (i = 0; i < nshort; i++) diff --git a/libfaad2/filtbank.h b/libfaad2/filtbank.h index 22bdfbba7a..de9bba5a78 100644 --- a/libfaad2/filtbank.h +++ b/libfaad2/filtbank.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: filtbank.h,v 1.11 2003/07/29 08:20:12 menno Exp $ +** $Id: filtbank.h,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ #ifndef __FILTBANK_H__ @@ -32,7 +32,6 @@ extern "C" { #endif -#include "mdct.h" fb_info *filter_bank_init(uint16_t frame_len); void filter_bank_end(fb_info *fb); diff --git a/libfaad2/fixed.h b/libfaad2/fixed.h index 0c0c4d8c09..4cca15cdef 100644 --- a/libfaad2/fixed.h +++ b/libfaad2/fixed.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: fixed.h,v 1.9 2003/07/29 08:20:12 menno Exp $ +** $Id: fixed.h,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ #ifndef __FIXED_H__ @@ -35,15 +35,15 @@ extern "C" { #define COEF_BITS 28 #define COEF_PRECISION (1 << COEF_BITS) -#define REAL_BITS 15 //7 +#define REAL_BITS 14 // MAXIMUM OF 14 FOR FIXED POINT SBR #define REAL_PRECISION (1 << REAL_BITS) typedef int32_t real_t; -#define REAL_CONST(A) ((real_t)(A*(REAL_PRECISION))) -#define COEF_CONST(A) ((real_t)(A*(COEF_PRECISION))) +#define REAL_CONST(A) ((real_t)((A)*(REAL_PRECISION))) +#define COEF_CONST(A) ((real_t)((A)*(COEF_PRECISION))) #if defined(_WIN32) && !defined(_WIN32_WCE) diff --git a/libfaad2/hcr.c b/libfaad2/hcr.c index 25946e5d6e..d27ed170b9 100644 --- a/libfaad2/hcr.c +++ b/libfaad2/hcr.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: hcr.c,v 1.5 2003/07/29 08:20:12 menno Exp $ +** $Id: hcr.c,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ @@ -38,226 +38,12 @@ #include "pulse.h" #include "analysis.h" #include "bits.h" -#include "codebook/hcb.h" +#include "huffman.h" /* Implements the HCR11 tool as described in ISO/IEC 14496-3/Amd.1, 8.5.3.3 */ #ifdef ERROR_RESILIENCE -typedef struct -{ - /* bit input */ - uint32_t bufa; - uint32_t bufb; - int8_t len; -} bits_t; - - -static INLINE uint32_t showbits(bits_t *ld, uint8_t bits) -{ - if (bits == 0) return 0; - if (ld->len <= 32){ - /* huffman_spectral_data_2 needs to read more than may be available, bits maybe - > ld->len, deliver 0 than */ - if (ld->len >= bits) - return ((ld->bufa >> (ld->len - bits)) & (0xFFFFFFFF >> (32 - bits))); - else - return ((ld->bufa << (bits - ld->len)) & (0xFFFFFFFF >> (32 - bits))); - } else { - if ((ld->len - bits) < 32) - { - return ( (ld->bufb & (0xFFFFFFFF >> (64 - ld->len))) << (bits - ld->len + 32)) | - (ld->bufa >> (ld->len - bits)); - } else { - return ((ld->bufb >> (ld->len - bits - 32)) & (0xFFFFFFFF >> (32 - bits))); - } - } -} - -/* return 1 if position is outside of buffer, 0 otherwise */ -static INLINE int8_t flushbits( bits_t *ld, uint8_t bits) -{ - ld->len -= bits; - - if (ld->len <0) - { - ld->len = 0; - return 1; - } else { - return 0; - } -} - - -static INLINE int8_t getbits(bits_t *ld, uint8_t n, uint32_t *result) -{ - *result = showbits(ld, n); - return flushbits(ld, n); -} - -static INLINE int8_t get1bit(bits_t *ld, uint8_t *result) -{ - uint32_t res; - int8_t ret; - - ret = getbits(ld, 1, &res); - *result = (int8_t)(res & 1); - return ret; -} - -/* Special version of huffman_spectral_data adapted from huffman.h -Will not read from a bitfile but a bits_t structure. -Will keep track of the bits decoded and return the number of bits remaining. -Do not read more than ld->len, return -1 if codeword would be longer */ - -static int8_t huffman_spectral_data_2(uint8_t cb, bits_t *ld, int16_t *sp ) -{ - uint32_t cw; - uint16_t offset = 0; - uint8_t extra_bits; - uint8_t i; - uint8_t save_cb = cb; - - - switch (cb) - { - case 1: /* 2-step method for data quadruples */ - case 2: - case 4: - - cw = showbits(ld, hcbN[cb]); - offset = hcb_table[cb][cw].offset; - extra_bits = hcb_table[cb][cw].extra_bits; - - if (extra_bits) - { - /* we know for sure it's more than hcbN[cb] bits long */ - if ( flushbits(ld, hcbN[cb]) ) return -1; - offset += (uint16_t)showbits(ld, extra_bits); - if ( flushbits(ld, hcb_2_quad_table[cb][offset].bits - hcbN[cb]) ) return -1; - } else { - if ( flushbits(ld, hcb_2_quad_table[cb][offset].bits) ) return -1; - } - - sp[0] = hcb_2_quad_table[cb][offset].x; - sp[1] = hcb_2_quad_table[cb][offset].y; - sp[2] = hcb_2_quad_table[cb][offset].v; - sp[3] = hcb_2_quad_table[cb][offset].w; - break; - - case 6: /* 2-step method for data pairs */ - case 8: - case 10: - case 11: - /* VCB11 uses codebook 11 */ - case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: - case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: - - /* TODO: If ER is used, some extra error checking should be done */ - if (cb >= 16) - cb = 11; - - cw = showbits(ld, hcbN[cb]); - offset = hcb_table[cb][cw].offset; - extra_bits = hcb_table[cb][cw].extra_bits; - - if (extra_bits) - { - /* we know for sure it's more than hcbN[cb] bits long */ - if ( flushbits(ld, hcbN[cb]) ) return -1; - offset += (uint16_t)showbits(ld, extra_bits); - if ( flushbits(ld, hcb_2_pair_table[cb][offset].bits - hcbN[cb]) ) return -1; - } else { - if ( flushbits(ld, hcb_2_pair_table[cb][offset].bits) ) return -1; - } - sp[0] = hcb_2_pair_table[cb][offset].x; - sp[1] = hcb_2_pair_table[cb][offset].y; - break; - - case 3: /* binary search for data quadruples */ - - while (!hcb3[offset].is_leaf) - { - uint8_t b; - - if ( get1bit(ld, &b) ) return -1; - offset += hcb3[offset].data[b]; - } - - sp[0] = hcb3[offset].data[0]; - sp[1] = hcb3[offset].data[1]; - sp[2] = hcb3[offset].data[2]; - sp[3] = hcb3[offset].data[3]; - - break; - - case 5: /* binary search for data pairs */ - case 7: - case 9: - - while (!hcb_bin_table[cb][offset].is_leaf) - { - uint8_t b; - - if (get1bit(ld, &b) ) return -1; - offset += hcb_bin_table[cb][offset].data[b]; - } - - sp[0] = hcb_bin_table[cb][offset].data[0]; - sp[1] = hcb_bin_table[cb][offset].data[1]; - - break; - } - - /* decode sign bits */ - if (unsigned_cb[cb]) { - - for(i = 0; i < ((cb < FIRST_PAIR_HCB) ? QUAD_LEN : PAIR_LEN); i++) - { - if(sp[i]) - { - uint8_t b; - if ( get1bit(ld, &b) ) return -1; - if (b != 0) { - sp[i] = -sp[i]; - } - } - } - } - - /* decode huffman escape bits */ - if ((cb == ESC_HCB) || (cb >= 16)) - { - uint8_t k; - for (k = 0; k < 2; k++) - { - if ((sp[k] == 16) || (sp[k] == -16)) - { - uint8_t neg, i; - int32_t j; - uint32_t off; - - neg = (sp[k] < 0) ? 1 : 0; - - for (i = 4; ; i++) - { - uint8_t b; - if (get1bit(ld, &b)) - return -1; - if (b == 0) - break; - } -// TODO: here we would need to test "off" if VCB11 is used! - if (getbits(ld, i, &off)) - return -1; - j = off + (1<len; -} - /* rewind len (max. 32) bits so that the MSB becomes LSB */ static uint32_t rewind_word( uint32_t W, uint8_t len) @@ -304,7 +90,7 @@ static void rewind_bits(bits_t * r) r->bufb = hw; } else { - lw = showbits(r, r->len ); + lw = showbits_hcr(r, r->len ); r->bufa = rewind_word( lw, r->len); r->bufb = 0; } @@ -322,14 +108,14 @@ static void concat_bits( bits_t * a, bits_t * b) lwa = a->bufa; hwa = a->bufb & (0xFFFFFFFF >> (64 - a->len)); } else { - lwa = showbits(a, a->len ); + lwa = showbits_hcr(a, a->len ); hwa = 0; } if (b->len >=32) { lwb = b->bufa; hwb = (b->bufb & (0xFFFFFFFF >> (64 - b->len)) ) | ( lwa << (b->len - 32)); } else { - lwb = showbits(b, b->len ) | (lwa << (b->len)); + lwb = showbits_hcr(b, b->len ) | (lwa << (b->len)); hwb = (lwa >> (32 - b->len)) | (hwa << (b->len)); } @@ -493,12 +279,12 @@ uint8_t reordered_spectral_data(faacDecHandle hDecoder, ic_stream *ics, bitfile if (Segment[ numberOfSegments-1 ].len > 32) { Segment[ numberOfSegments-1 ].bufb = hw + - showbits(&Segment[ numberOfSegments-1 ], Segment[ numberOfSegments-1 ].len - 32); + showbits_hcr(&Segment[ numberOfSegments-1 ], Segment[ numberOfSegments-1 ].len - 32); Segment[ numberOfSegments-1 ].bufa = lw + - showbits(&Segment[ numberOfSegments-1 ], 32); + showbits_hcr(&Segment[ numberOfSegments-1 ], 32); } else { Segment[ numberOfSegments-1 ].bufa = lw + - showbits(&Segment[ numberOfSegments-1 ], Segment[ numberOfSegments-1 ].len); + showbits_hcr(&Segment[ numberOfSegments-1 ], Segment[ numberOfSegments-1 ].len); Segment[ numberOfSegments-1 ].bufb = hw; } Segment[ numberOfSegments-1 ].len += additional_bits; diff --git a/libfaad2/huffman.c b/libfaad2/huffman.c new file mode 100644 index 0000000000..62831ad8df --- /dev/null +++ b/libfaad2/huffman.c @@ -0,0 +1,503 @@ +/* +** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding +** Copyright (C) 2003 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: huffman.c,v 1.4 2003/09/09 18:12:00 menno Exp $ +**/ + +#include "common.h" +#include "structs.h" + +#include +#ifdef ANALYSIS +#include +#endif + +#include "bits.h" +#include "huffman.h" +#include "codebook/hcb.h" + + +int8_t huffman_scale_factor(bitfile *ld) +{ + uint16_t offset = 0; + + while (hcb_sf[offset][1]) + { + uint8_t b = faad_get1bit(ld + DEBUGVAR(1,255,"huffman_scale_factor()")); + offset += hcb_sf[offset][b]; + + if (offset > 240) + { + /* printf("ERROR: offset into hcb_sf = %d >240!\n", offset); */ + return -1; + } + } + + return hcb_sf[offset][0]; +} + + +hcb *hcb_table[] = { + 0, hcb1_1, hcb2_1, 0, hcb4_1, 0, hcb6_1, 0, hcb8_1, 0, hcb10_1, hcb11_1 +}; + +hcb_2_quad *hcb_2_quad_table[] = { + 0, hcb1_2, hcb2_2, 0, hcb4_2, 0, 0, 0, 0, 0, 0, 0 +}; + +hcb_2_pair *hcb_2_pair_table[] = { + 0, 0, 0, 0, 0, 0, hcb6_2, 0, hcb8_2, 0, hcb10_2, hcb11_2 +}; + +hcb_bin_pair *hcb_bin_table[] = { + 0, 0, 0, 0, 0, hcb5, 0, hcb7, 0, hcb9, 0, 0 +}; + +uint8_t hcbN[] = { 0, 5, 5, 0, 5, 0, 5, 0, 5, 0, 6, 5 }; + +/* defines whether a huffman codebook is unsigned or not */ +/* Table 4.6.2 */ +uint8_t unsigned_cb[] = { 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, + /* codebook 16 to 31 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 +}; + +int hcb_2_quad_table_size[] = { 0, 114, 86, 0, 185, 0, 0, 0, 0, 0, 0, 0 }; +int hcb_2_pair_table_size[] = { 0, 0, 0, 0, 0, 0, 126, 0, 83, 0, 210, 373 }; +int hcb_bin_table_size[] = { 0, 0, 0, 161, 0, 161, 0, 127, 0, 337, 0, 0 }; + +static INLINE void huffman_sign_bits(bitfile *ld, int16_t *sp, uint8_t len) +{ + uint8_t i; + + for (i = 0; i < len; i++) + { + if(sp[i]) + { + if(faad_get1bit(ld + DEBUGVAR(1,5,"huffman_sign_bits(): sign bit")) & 1) + { + sp[i] = -sp[i]; + } + } + } +} + +static INLINE int16_t huffman_getescape(bitfile *ld, int16_t sp) +{ + uint8_t neg, i; + int16_t j; + int32_t off; + + if (sp < 0) + { + if (sp != -16) + return sp; + neg = 1; + } else { + if(sp != 16) + return sp; + neg = 0; + } + + for (i = 4; ; i++) + { + if (faad_get1bit(ld + DEBUGVAR(1,6,"huffman_getescape(): escape size")) == 0) + { + break; + } + } + + off = faad_getbits(ld, i + DEBUGVAR(1,9,"huffman_getescape(): escape")); + + j = off + (1< hcb_2_quad_table_size[cb]) + { + /* printf("ERROR: offset into hcb_2_quad_table = %d >%d!\n", offset, + hcb_2_quad_table_size[cb]); */ + return 10; + } + + sp[0] = hcb_2_quad_table[cb][offset].x; + sp[1] = hcb_2_quad_table[cb][offset].y; + sp[2] = hcb_2_quad_table[cb][offset].v; + sp[3] = hcb_2_quad_table[cb][offset].w; + + return 0; +} + +static uint8_t huffman_2step_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp) +{ + uint8_t err = huffman_2step_quad(cb, ld, sp); + huffman_sign_bits(ld, sp, QUAD_LEN); + + return err; +} + +static uint8_t huffman_2step_pair(uint8_t cb, bitfile *ld, int16_t *sp) +{ + uint32_t cw; + uint16_t offset = 0; + uint8_t extra_bits; + + cw = faad_showbits(ld, hcbN[cb]); + offset = hcb_table[cb][cw].offset; + extra_bits = hcb_table[cb][cw].extra_bits; + + if (extra_bits) + { + /* we know for sure it's more than hcbN[cb] bits long */ + faad_flushbits(ld, hcbN[cb]); + offset += (uint16_t)faad_showbits(ld, extra_bits); + faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits - hcbN[cb]); + } else { + faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits); + } + + if (offset > hcb_2_pair_table_size[cb]) + { + /* printf("ERROR: offset into hcb_2_pair_table = %d >%d!\n", offset, + hcb_2_pair_table_size[cb]); */ + return 10; + } + + sp[0] = hcb_2_pair_table[cb][offset].x; + sp[1] = hcb_2_pair_table[cb][offset].y; + + return 0; +} + +static huffman_2step_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp) +{ + uint8_t err = huffman_2step_pair(cb, ld, sp); + huffman_sign_bits(ld, sp, PAIR_LEN); + + return err; +} + +static uint8_t huffman_binary_quad(uint8_t cb, bitfile *ld, int16_t *sp) +{ + uint16_t offset = 0; + + while (!hcb3[offset].is_leaf) + { + uint8_t b = faad_get1bit(ld + DEBUGVAR(1,255,"huffman_spectral_data():3")); + offset += hcb3[offset].data[b]; + } + + if (offset > hcb_bin_table_size[cb]) + { + /* printf("ERROR: offset into hcb_bin_table = %d >%d!\n", offset, + hcb_bin_table_size[cb]); */ + return 10; + } + + sp[0] = hcb3[offset].data[0]; + sp[1] = hcb3[offset].data[1]; + sp[2] = hcb3[offset].data[2]; + sp[3] = hcb3[offset].data[3]; + + return 0; +} + +static uint8_t huffman_binary_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp) +{ + uint8_t err = huffman_binary_quad(cb, ld, sp); + huffman_sign_bits(ld, sp, QUAD_LEN); + + return err; +} + +static uint8_t huffman_binary_pair(uint8_t cb, bitfile *ld, int16_t *sp) +{ + uint16_t offset = 0; + + while (!hcb_bin_table[cb][offset].is_leaf) + { + uint8_t b = faad_get1bit(ld + DEBUGVAR(1,255,"huffman_spectral_data():9")); + offset += hcb_bin_table[cb][offset].data[b]; + } + + if (offset > hcb_bin_table_size[cb]) + { + /* printf("ERROR: offset into hcb_bin_table = %d >%d!\n", offset, + hcb_bin_table_size[cb]); */ + return 10; + } + + sp[0] = hcb_bin_table[cb][offset].data[0]; + sp[1] = hcb_bin_table[cb][offset].data[1]; + + return 0; +} + +static uint8_t huffman_binary_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp) +{ + uint8_t err = huffman_binary_pair(cb, ld, sp); + huffman_sign_bits(ld, sp, PAIR_LEN); + + return err; +} + +static int16_t huffman_codebook(uint8_t i) +{ + static const uint32_t data = 16428320; + if (i == 0) return (int16_t)(data >> 16) & 0xFFFF; + else return (int16_t)data & 0xFFFF; +} + +uint8_t huffman_spectral_data(uint8_t cb, bitfile *ld, int16_t *sp) +{ + switch (cb) + { + case 1: /* 2-step method for data quadruples */ + case 2: + return huffman_2step_quad(cb, ld, sp); + case 3: /* binary search for data quadruples */ + return huffman_binary_quad_sign(cb, ld, sp); + case 4: /* 2-step method for data quadruples */ + return huffman_2step_quad_sign(cb, ld, sp); + case 5: /* binary search for data pairs */ + return huffman_binary_pair(cb, ld, sp); + case 6: /* 2-step method for data pairs */ + return huffman_2step_pair(cb, ld, sp); + case 7: /* binary search for data pairs */ + case 9: + return huffman_binary_pair_sign(cb, ld, sp); + case 8: /* 2-step method for data pairs */ + case 10: + return huffman_2step_pair_sign(cb, ld, sp); + case 12: { + uint8_t err = huffman_2step_quad(1, ld, sp); + sp[0] = huffman_codebook(0); sp[1] = huffman_codebook(1); + return err; } + case 11: +#ifdef ERROR_RESILIENCE + /* VCB11 uses codebook 11 */ + case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: + case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: + /* TODO: If ER is used, some extra error checking should be done */ +#endif + { + uint8_t err = huffman_2step_pair_sign(11, ld, sp); + sp[0] = huffman_getescape(ld, sp[0]); + sp[1] = huffman_getescape(ld, sp[1]); + return err; + } + default: + /* Non existent codebook number, something went wrong */ + return 11; + } + + return 0; +} + + +#ifdef ERROR_RESILIENCE + +/* Special version of huffman_spectral_data +Will not read from a bitfile but a bits_t structure. +Will keep track of the bits decoded and return the number of bits remaining. +Do not read more than ld->len, return -1 if codeword would be longer */ + +int8_t huffman_spectral_data_2(uint8_t cb, bits_t *ld, int16_t *sp) +{ + uint32_t cw; + uint16_t offset = 0; + uint8_t extra_bits; + uint8_t i; + uint8_t save_cb = cb; + + + switch (cb) + { + case 1: /* 2-step method for data quadruples */ + case 2: + case 4: + + cw = showbits_hcr(ld, hcbN[cb]); + offset = hcb_table[cb][cw].offset; + extra_bits = hcb_table[cb][cw].extra_bits; + + if (extra_bits) + { + /* we know for sure it's more than hcbN[cb] bits long */ + if ( flushbits_hcr(ld, hcbN[cb]) ) return -1; + offset += (uint16_t)showbits_hcr(ld, extra_bits); + if ( flushbits_hcr(ld, hcb_2_quad_table[cb][offset].bits - hcbN[cb]) ) return -1; + } else { + if ( flushbits_hcr(ld, hcb_2_quad_table[cb][offset].bits) ) return -1; + } + + sp[0] = hcb_2_quad_table[cb][offset].x; + sp[1] = hcb_2_quad_table[cb][offset].y; + sp[2] = hcb_2_quad_table[cb][offset].v; + sp[3] = hcb_2_quad_table[cb][offset].w; + break; + + case 6: /* 2-step method for data pairs */ + case 8: + case 10: + case 11: + /* VCB11 uses codebook 11 */ + case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: + case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: + + /* TODO: If ER is used, some extra error checking should be done */ + if (cb >= 16) + cb = 11; + + cw = showbits_hcr(ld, hcbN[cb]); + offset = hcb_table[cb][cw].offset; + extra_bits = hcb_table[cb][cw].extra_bits; + + if (extra_bits) + { + /* we know for sure it's more than hcbN[cb] bits long */ + if ( flushbits_hcr(ld, hcbN[cb]) ) return -1; + offset += (uint16_t)showbits_hcr(ld, extra_bits); + if ( flushbits_hcr(ld, hcb_2_pair_table[cb][offset].bits - hcbN[cb]) ) return -1; + } else { + if ( flushbits_hcr(ld, hcb_2_pair_table[cb][offset].bits) ) return -1; + } + sp[0] = hcb_2_pair_table[cb][offset].x; + sp[1] = hcb_2_pair_table[cb][offset].y; + break; + + case 3: /* binary search for data quadruples */ + + while (!hcb3[offset].is_leaf) + { + uint8_t b; + + if ( get1bit_hcr(ld, &b) ) return -1; + offset += hcb3[offset].data[b]; + } + + sp[0] = hcb3[offset].data[0]; + sp[1] = hcb3[offset].data[1]; + sp[2] = hcb3[offset].data[2]; + sp[3] = hcb3[offset].data[3]; + + break; + + case 5: /* binary search for data pairs */ + case 7: + case 9: + + while (!hcb_bin_table[cb][offset].is_leaf) + { + uint8_t b; + + if (get1bit_hcr(ld, &b) ) return -1; + offset += hcb_bin_table[cb][offset].data[b]; + } + + sp[0] = hcb_bin_table[cb][offset].data[0]; + sp[1] = hcb_bin_table[cb][offset].data[1]; + + break; + } + + /* decode sign bits */ + if (unsigned_cb[cb]) { + + for(i = 0; i < ((cb < FIRST_PAIR_HCB) ? QUAD_LEN : PAIR_LEN); i++) + { + if(sp[i]) + { + uint8_t b; + if ( get1bit_hcr(ld, &b) ) return -1; + if (b != 0) { + sp[i] = -sp[i]; + } + } + } + } + + /* decode huffman escape bits */ + if ((cb == ESC_HCB) || (cb >= 16)) + { + uint8_t k; + for (k = 0; k < 2; k++) + { + if ((sp[k] == 16) || (sp[k] == -16)) + { + uint8_t neg, i; + int32_t j; + uint32_t off; + + neg = (sp[k] < 0) ? 1 : 0; + + for (i = 4; ; i++) + { + uint8_t b; + if (get1bit_hcr(ld, &b)) + return -1; + if (b == 0) + break; + } +// TODO: here we would need to test "off" if VCB11 is used! + if (getbits_hcr(ld, i, &off)) + return -1; + j = off + (1<len; +} + +#endif + diff --git a/libfaad2/huffman.h b/libfaad2/huffman.h index 09079bd877..30b70fcc4e 100644 --- a/libfaad2/huffman.h +++ b/libfaad2/huffman.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: huffman.h,v 1.13 2003/07/29 08:20:12 menno Exp $ +** $Id: huffman.h,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ #ifndef __HUFFMAN_H__ @@ -32,317 +32,24 @@ extern "C" { #endif -#include -#ifdef ANALYSIS -#include -#endif -#include "bits.h" -#include "codebook/hcb.h" - - -static INLINE int8_t huffman_scale_factor(bitfile *ld) -{ - uint16_t offset = 0; - - while (hcb_sf[offset][1]) - { - uint8_t b = faad_get1bit(ld - DEBUGVAR(1,255,"huffman_scale_factor()")); - offset += hcb_sf[offset][b]; - - if (offset > 240) - { - /* printf("ERROR: offset into hcb_sf = %d >240!\n", offset); */ - return -1; - } - } - - return hcb_sf[offset][0]; -} - - -hcb *hcb_table[] = { - 0, hcb1_1, hcb2_1, 0, hcb4_1, 0, hcb6_1, 0, hcb8_1, 0, hcb10_1, hcb11_1 -}; - -hcb_2_quad *hcb_2_quad_table[] = { - 0, hcb1_2, hcb2_2, 0, hcb4_2, 0, 0, 0, 0, 0, 0, 0 -}; - -hcb_2_pair *hcb_2_pair_table[] = { - 0, 0, 0, 0, 0, 0, hcb6_2, 0, hcb8_2, 0, hcb10_2, hcb11_2 -}; - -hcb_bin_pair *hcb_bin_table[] = { - 0, 0, 0, 0, 0, hcb5, 0, hcb7, 0, hcb9, 0, 0 -}; - -uint8_t hcbN[] = { 0, 5, 5, 0, 5, 0, 5, 0, 5, 0, 6, 5 }; - -/* defines whether a huffman codebook is unsigned or not */ -/* Table 4.6.2 */ -uint8_t unsigned_cb[] = { 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, - /* codebook 16 to 31 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 -}; - -int hcb_2_quad_table_size[] = { 0, 114, 86, 0, 185, 0, 0, 0, 0, 0, 0, 0 }; -int hcb_2_pair_table_size[] = { 0, 0, 0, 0, 0, 0, 126, 0, 83, 0, 210, 373 }; -int hcb_bin_table_size[] = { 0, 0, 0, 161, 0, 161, 0, 127, 0, 337, 0, 0 }; - -static INLINE void huffman_sign_bits(bitfile *ld, int16_t *sp, uint8_t len) -{ - uint8_t i; - - for(i = 0; i < len; i++) - { - if(sp[i]) - { - if(faad_get1bit(ld - DEBUGVAR(1,5,"huffman_sign_bits(): sign bit")) & 1) - { - sp[i] = -sp[i]; - } - } - } -} - -static INLINE int16_t huffman_getescape(bitfile *ld, int16_t sp) -{ - uint8_t neg, i; - int16_t j; - int32_t off; - - if (sp < 0) { - if(sp != -16) - return sp; - neg = 1; - } else { - if(sp != 16) - return sp; - neg = 0; - } - - for (i = 4; ; i++) - { - if (faad_get1bit(ld - DEBUGVAR(1,6,"huffman_getescape(): escape size")) == 0) - { - break; - } - } - - off = faad_getbits(ld, i - DEBUGVAR(1,9,"huffman_getescape(): escape")); - - j = off + (1< hcb_2_quad_table_size[cb]) - { - /* printf("ERROR: offset into hcb_2_quad_table = %d >%d!\n", offset, - hcb_2_quad_table_size[cb]); */ - return 10; - } - - sp[0] = hcb_2_quad_table[cb][offset].x; - sp[1] = hcb_2_quad_table[cb][offset].y; - sp[2] = hcb_2_quad_table[cb][offset].v; - sp[3] = hcb_2_quad_table[cb][offset].w; - - return 0; -} - -static uint8_t huffman_2step_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp) -{ - uint8_t err = huffman_2step_quad(cb, ld, sp); - huffman_sign_bits(ld, sp, QUAD_LEN); - - return err; -} - -static uint8_t huffman_2step_pair(uint8_t cb, bitfile *ld, int16_t *sp) -{ - uint32_t cw; - uint16_t offset = 0; - uint8_t extra_bits; - - cw = faad_showbits(ld, hcbN[cb]); - offset = hcb_table[cb][cw].offset; - extra_bits = hcb_table[cb][cw].extra_bits; - - if (extra_bits) - { - /* we know for sure it's more than hcbN[cb] bits long */ - faad_flushbits(ld, hcbN[cb]); - offset += (uint16_t)faad_showbits(ld, extra_bits); - faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits - hcbN[cb]); - } else { - faad_flushbits(ld, hcb_2_pair_table[cb][offset].bits); - } - - if (offset > hcb_2_pair_table_size[cb]) - { - /* printf("ERROR: offset into hcb_2_pair_table = %d >%d!\n", offset, - hcb_2_pair_table_size[cb]); */ - return 10; - } - - sp[0] = hcb_2_pair_table[cb][offset].x; - sp[1] = hcb_2_pair_table[cb][offset].y; - - return 0; -} - -static huffman_2step_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp) -{ - uint8_t err = huffman_2step_pair(cb, ld, sp); - huffman_sign_bits(ld, sp, PAIR_LEN); - - return err; -} - -static uint8_t huffman_binary_quad(uint8_t cb, bitfile *ld, int16_t *sp) -{ - uint16_t offset = 0; - - while (!hcb3[offset].is_leaf) - { - uint8_t b = faad_get1bit(ld - DEBUGVAR(1,255,"huffman_spectral_data():3")); - offset += hcb3[offset].data[b]; - } - - if (offset > hcb_bin_table_size[cb]) - { - /* printf("ERROR: offset into hcb_bin_table = %d >%d!\n", offset, - hcb_bin_table_size[cb]); */ - return 10; - } - - sp[0] = hcb3[offset].data[0]; - sp[1] = hcb3[offset].data[1]; - sp[2] = hcb3[offset].data[2]; - sp[3] = hcb3[offset].data[3]; - - return 0; -} - -static uint8_t huffman_binary_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp) -{ - uint8_t err = huffman_binary_quad(cb, ld, sp); - huffman_sign_bits(ld, sp, QUAD_LEN); - - return err; -} - -static uint8_t huffman_binary_pair(uint8_t cb, bitfile *ld, int16_t *sp) -{ - uint16_t offset = 0; - - while (!hcb_bin_table[cb][offset].is_leaf) - { - uint8_t b = faad_get1bit(ld - DEBUGVAR(1,255,"huffman_spectral_data():9")); - offset += hcb_bin_table[cb][offset].data[b]; - } - - if (offset > hcb_bin_table_size[cb]) - { - /* printf("ERROR: offset into hcb_bin_table = %d >%d!\n", offset, - hcb_bin_table_size[cb]); */ - return 10; - } - - sp[0] = hcb_bin_table[cb][offset].data[0]; - sp[1] = hcb_bin_table[cb][offset].data[1]; - - return 0; -} - -static uint8_t huffman_binary_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp) -{ - uint8_t err = huffman_binary_pair(cb, ld, sp); - huffman_sign_bits(ld, sp, PAIR_LEN); - - return err; -} - -static int16_t huffman_codebook(uint8_t i) -{ - static const uint32_t data = 16428320; - if (i == 0) return (int16_t)(data >> 16) & 0xFFFF; - else return (int16_t)data & 0xFFFF; -} - -static INLINE uint8_t huffman_spectral_data(uint8_t cb, bitfile *ld, int16_t *sp) -{ - switch (cb) - { - case 1: /* 2-step method for data quadruples */ - case 2: - return huffman_2step_quad(cb, ld, sp); - case 3: /* binary search for data quadruples */ - return huffman_binary_quad_sign(cb, ld, sp); - case 4: /* 2-step method for data quadruples */ - return huffman_2step_quad_sign(cb, ld, sp); - case 5: /* binary search for data pairs */ - return huffman_binary_pair(cb, ld, sp); - case 6: /* 2-step method for data pairs */ - return huffman_2step_pair(cb, ld, sp); - case 7: /* binary search for data pairs */ - case 9: - return huffman_binary_pair_sign(cb, ld, sp); - case 8: /* 2-step method for data pairs */ - case 10: - return huffman_2step_pair_sign(cb, ld, sp); - case 12: { - uint8_t err = huffman_2step_quad(1, ld, sp); - sp[0] = huffman_codebook(0); sp[1] = huffman_codebook(1); - return err; } - case 11: +static INLINE void huffman_sign_bits(bitfile *ld, int16_t *sp, uint8_t len); +static INLINE int16_t huffman_getescape(bitfile *ld, int16_t sp); +static uint8_t huffman_2step_quad(uint8_t cb, bitfile *ld, int16_t *sp); +static uint8_t huffman_2step_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp); +static uint8_t huffman_2step_pair(uint8_t cb, bitfile *ld, int16_t *sp); +static huffman_2step_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp); +static uint8_t huffman_binary_quad(uint8_t cb, bitfile *ld, int16_t *sp); +static uint8_t huffman_binary_quad_sign(uint8_t cb, bitfile *ld, int16_t *sp); +static uint8_t huffman_binary_pair(uint8_t cb, bitfile *ld, int16_t *sp); +static uint8_t huffman_binary_pair_sign(uint8_t cb, bitfile *ld, int16_t *sp); +static int16_t huffman_codebook(uint8_t i); + +int8_t huffman_scale_factor(bitfile *ld); +uint8_t huffman_spectral_data(uint8_t cb, bitfile *ld, int16_t *sp); #ifdef ERROR_RESILIENCE - /* VCB11 uses codebook 11 */ - case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: - case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: - /* TODO: If ER is used, some extra error checking should be done */ +int8_t huffman_spectral_data_2(uint8_t cb, bits_t *ld, int16_t *sp); #endif - { - uint8_t err = huffman_2step_pair_sign(11, ld, sp); - sp[0] = huffman_getescape(ld, sp[0]); - sp[1] = huffman_getescape(ld, sp[1]); - return err; - } - default: - /* Non existent codebook number, something went wrong */ - return 11; - } - - return 0; -} #ifdef __cplusplus } diff --git a/libfaad2/iq_table.h b/libfaad2/iq_table.h index 2054c03a9b..aefa88d7bc 100644 --- a/libfaad2/iq_table.h +++ b/libfaad2/iq_table.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: iq_table.h,v 1.4 2003/07/29 08:20:12 menno Exp $ +** $Id: iq_table.h,v 1.1 2003/08/30 22:30:21 arpi Exp $ **/ #ifndef IQ_TABLE_H__ @@ -32,8 +32,6 @@ extern "C" { #endif -/* !!!DON'T CHANGE IQ_TABLE_SIZE!!! */ -#define IQ_TABLE_SIZE 1026 #ifndef FIXED_POINT @@ -42,6 +40,9 @@ extern "C" { #pragma warning(disable:4244) #endif +/* !!!DON'T CHANGE IQ_TABLE_SIZE!!! */ +#define IQ_TABLE_SIZE 1026 + static real_t iq_table[] = { 0.0000000000, @@ -1074,1034 +1075,8203 @@ static real_t iq_table[] = #else +/* !!!DON'T CHANGE IQ_TABLE_SIZE!!! */ +#define IQ_TABLE_SIZE 8192 + static real_t iq_table[] = { - REAL_CONST(0.0000000000/8), - REAL_CONST(1.0000000000/8), - REAL_CONST(2.5198421478/8), - REAL_CONST(4.3267488480/8), - REAL_CONST(6.3496041298/8), - REAL_CONST(8.5498800278/8), - REAL_CONST(10.9027233124/8), - REAL_CONST(13.3905181885/8), - REAL_CONST(16.0000000000/8), - REAL_CONST(18.7207546234/8), - REAL_CONST(21.5443477631/8), - REAL_CONST(24.4637813568/8), - REAL_CONST(27.4731426239/8), - REAL_CONST(30.5673503876/8), - REAL_CONST(33.7419929504/8), - REAL_CONST(36.9931793213/8), - REAL_CONST(40.3174743652/8), - REAL_CONST(43.7117881775/8), - REAL_CONST(47.1733436584/8), - REAL_CONST(50.6996307373/8), - REAL_CONST(54.2883529663/8), - REAL_CONST(57.9374084473/8), - REAL_CONST(61.6448669434/8), - REAL_CONST(65.4089431763/8), - REAL_CONST(69.2279815674/8), - REAL_CONST(73.1004409790/8), - REAL_CONST(77.0248947144/8), - REAL_CONST(81.0000000000/8), - REAL_CONST(85.0244903564/8), - REAL_CONST(89.0971908569/8), - REAL_CONST(93.2169723511/8), - REAL_CONST(97.3827972412/8), - REAL_CONST(101.5936660767/8), - REAL_CONST(105.8486328125/8), - REAL_CONST(110.1468048096/8), - REAL_CONST(114.4873199463/8), - REAL_CONST(118.8693847656/8), - REAL_CONST(123.2922058105/8), - REAL_CONST(127.7550659180/8), - REAL_CONST(132.2572479248/8), - REAL_CONST(136.7980804443/8), - REAL_CONST(141.3769073486/8), - REAL_CONST(145.9931182861/8), - REAL_CONST(150.6461181641/8), - REAL_CONST(155.3353271484/8), - REAL_CONST(160.0601959229/8), - REAL_CONST(164.8202056885/8), - REAL_CONST(169.6148223877/8), - REAL_CONST(174.4435729980/8), - REAL_CONST(179.3059844971/8), - REAL_CONST(184.2015686035/8), - REAL_CONST(189.1299133301/8), - REAL_CONST(194.0905761719/8), - REAL_CONST(199.0831451416/8), - REAL_CONST(204.1072082520/8), - REAL_CONST(209.1623840332/8), - REAL_CONST(214.2482910156/8), - REAL_CONST(219.3645629883/8), - REAL_CONST(224.5108489990/8), - REAL_CONST(229.6867828369/8), - REAL_CONST(234.8920593262/8), - REAL_CONST(240.1263275146/8), - REAL_CONST(245.3892822266/8), - REAL_CONST(250.6806030273/8), - REAL_CONST(256.0000000000/8), - REAL_CONST(261.3471679688/8), - REAL_CONST(266.7218322754/8), - REAL_CONST(272.1237182617/8), - REAL_CONST(277.5525512695/8), - REAL_CONST(283.0080566406/8), - REAL_CONST(288.4899597168/8), - REAL_CONST(293.9980468750/8), - REAL_CONST(299.5320739746/8), - REAL_CONST(305.0917663574/8), - REAL_CONST(310.6769104004/8), - REAL_CONST(316.2872619629/8), - REAL_CONST(321.9226074219/8), - REAL_CONST(327.5827026367/8), - REAL_CONST(333.2673645020/8), - REAL_CONST(338.9763793945/8), - REAL_CONST(344.7095642090/8), - REAL_CONST(350.4666442871/8), - REAL_CONST(356.2474670410/8), - REAL_CONST(362.0518798828/8), - REAL_CONST(367.8796081543/8), - REAL_CONST(373.7305297852/8), - REAL_CONST(379.6044311523/8), - REAL_CONST(385.5011291504/8), - REAL_CONST(391.4205017090/8), - REAL_CONST(397.3623046875/8), - REAL_CONST(403.3264160156/8), - REAL_CONST(409.3126831055/8), - REAL_CONST(415.3208923340/8), - REAL_CONST(421.3508911133/8), - REAL_CONST(427.4025878906/8), - REAL_CONST(433.4757385254/8), - REAL_CONST(439.5702819824/8), - REAL_CONST(445.6859741211/8), - REAL_CONST(451.8227539063/8), - REAL_CONST(457.9804382324/8), - REAL_CONST(464.1588745117/8), - REAL_CONST(470.3579711914/8), - REAL_CONST(476.5775451660/8), - REAL_CONST(482.8174743652/8), - REAL_CONST(489.0776062012/8), - REAL_CONST(495.3578796387/8), - REAL_CONST(501.6580810547/8), - REAL_CONST(507.9781494141/8), - REAL_CONST(514.3179321289/8), - REAL_CONST(520.6773071289/8), - REAL_CONST(527.0562133789/8), - REAL_CONST(533.4544067383/8), - REAL_CONST(539.8718872070/8), - REAL_CONST(546.3084716797/8), - REAL_CONST(552.7640380859/8), - REAL_CONST(559.2385864258/8), - REAL_CONST(565.7318725586/8), - REAL_CONST(572.2438964844/8), - REAL_CONST(578.7744140625/8), - REAL_CONST(585.3234863281/8), - REAL_CONST(591.8908691406/8), - REAL_CONST(598.4765625000/8), - REAL_CONST(605.0804443359/8), - REAL_CONST(611.7023315430/8), - REAL_CONST(618.3422241211/8), - REAL_CONST(625.0000000000/8), - REAL_CONST(631.6755371094/8), - REAL_CONST(638.3687744141/8), - REAL_CONST(645.0795898438/8), - REAL_CONST(651.8078613281/8), - REAL_CONST(658.5535888672/8), - REAL_CONST(665.3166503906/8), - REAL_CONST(672.0969238281/8), - REAL_CONST(678.8943481445/8), - REAL_CONST(685.7088012695/8), - REAL_CONST(692.5402832031/8), - REAL_CONST(699.3886108398/8), - REAL_CONST(706.2537231445/8), - REAL_CONST(713.1356201172/8), - REAL_CONST(720.0341186523/8), - REAL_CONST(726.9491577148/8), - REAL_CONST(733.8807373047/8), - REAL_CONST(740.8286743164/8), - REAL_CONST(747.7929687500/8), - REAL_CONST(754.7734985352/8), - REAL_CONST(761.7702636719/8), - REAL_CONST(768.7830810547/8), - REAL_CONST(775.8118896484/8), - REAL_CONST(782.8567504883/8), - REAL_CONST(789.9174194336/8), - REAL_CONST(796.9938964844/8), - REAL_CONST(804.0861816406/8), - REAL_CONST(811.1940917969/8), - REAL_CONST(818.3176269531/8), - REAL_CONST(825.4566650391/8), - REAL_CONST(832.6112060547/8), - REAL_CONST(839.7811889648/8), - REAL_CONST(846.9664306641/8), - REAL_CONST(854.1669921875/8), - REAL_CONST(861.3827514648/8), - REAL_CONST(868.6136474609/8), - REAL_CONST(875.8596191406/8), - REAL_CONST(883.1206054688/8), - REAL_CONST(890.3965454102/8), - REAL_CONST(897.6873779297/8), - REAL_CONST(904.9931030273/8), - REAL_CONST(912.3135375977/8), - REAL_CONST(919.6486816406/8), - REAL_CONST(926.9985351563/8), - REAL_CONST(934.3629150391/8), - REAL_CONST(941.7418823242/8), - REAL_CONST(949.1353759766/8), - REAL_CONST(956.5432128906/8), - REAL_CONST(963.9654541016/8), - REAL_CONST(971.4020385742/8), - REAL_CONST(978.8528442383/8), - REAL_CONST(986.3178710938/8), - REAL_CONST(993.7969970703/8), - REAL_CONST(1001.2902832031/8), - REAL_CONST(1008.7976074219/8), - REAL_CONST(1016.3189086914/8), - REAL_CONST(1023.8541870117/8), - REAL_CONST(1031.4033203125/8), - REAL_CONST(1038.9663085938/8), - REAL_CONST(1046.5430908203/8), - REAL_CONST(1054.1335449219/8), - REAL_CONST(1061.7377929688/8), - REAL_CONST(1069.3555908203/8), - REAL_CONST(1076.9870605469/8), - REAL_CONST(1084.6319580078/8), - REAL_CONST(1092.2904052734/8), - REAL_CONST(1099.9624023438/8), - REAL_CONST(1107.6477050781/8), - REAL_CONST(1115.3463134766/8), - REAL_CONST(1123.0583496094/8), - REAL_CONST(1130.7835693359/8), - REAL_CONST(1138.5219726563/8), - REAL_CONST(1146.2736816406/8), - REAL_CONST(1154.0383300781/8), - REAL_CONST(1161.8161621094/8), - REAL_CONST(1169.6070556641/8), - REAL_CONST(1177.4110107422/8), - REAL_CONST(1185.2277832031/8), - REAL_CONST(1193.0574951172/8), - REAL_CONST(1200.9001464844/8), - REAL_CONST(1208.7554931641/8), - REAL_CONST(1216.6237792969/8), - REAL_CONST(1224.5047607422/8), - REAL_CONST(1232.3983154297/8), - REAL_CONST(1240.3046875000/8), - REAL_CONST(1248.2236328125/8), - REAL_CONST(1256.1551513672/8), - REAL_CONST(1264.0991210938/8), - REAL_CONST(1272.0557861328/8), - REAL_CONST(1280.0247802734/8), - REAL_CONST(1288.0062255859/8), - REAL_CONST(1296.0000000000/8), - REAL_CONST(1304.0062255859/8), - REAL_CONST(1312.0246582031/8), - REAL_CONST(1320.0554199219/8), - REAL_CONST(1328.0983886719/8), - REAL_CONST(1336.1535644531/8), - REAL_CONST(1344.2208251953/8), - REAL_CONST(1352.3002929688/8), - REAL_CONST(1360.3918457031/8), - REAL_CONST(1368.4954833984/8), - REAL_CONST(1376.6110839844/8), - REAL_CONST(1384.7386474609/8), - REAL_CONST(1392.8781738281/8), - REAL_CONST(1401.0295410156/8), - REAL_CONST(1409.1928710938/8), - REAL_CONST(1417.3680419922/8), - REAL_CONST(1425.5550537109/8), - REAL_CONST(1433.7537841797/8), - REAL_CONST(1441.9642333984/8), - REAL_CONST(1450.1864013672/8), - REAL_CONST(1458.4201660156/8), - REAL_CONST(1466.6656494141/8), - REAL_CONST(1474.9227294922/8), - REAL_CONST(1483.1914062500/8), - REAL_CONST(1491.4715576172/8), - REAL_CONST(1499.7633056641/8), - REAL_CONST(1508.0665283203/8), - REAL_CONST(1516.3811035156/8), - REAL_CONST(1524.7071533203/8), - REAL_CONST(1533.0445556641/8), - REAL_CONST(1541.3933105469/8), - REAL_CONST(1549.7534179688/8), - REAL_CONST(1558.1247558594/8), - REAL_CONST(1566.5074462891/8), - REAL_CONST(1574.9013671875/8), - REAL_CONST(1583.3063964844/8), - REAL_CONST(1591.7226562500/8), - REAL_CONST(1600.1500244141/8), - REAL_CONST(1608.5885009766/8), - REAL_CONST(1617.0380859375/8), - REAL_CONST(1625.4986572266/8), - REAL_CONST(1633.9703369141/8), - REAL_CONST(1642.4530029297/8), - REAL_CONST(1650.9465332031/8), - REAL_CONST(1659.4511718750/8), - REAL_CONST(1667.9665527344/8), - REAL_CONST(1676.4929199219/8), - REAL_CONST(1685.0301513672/8), - REAL_CONST(1693.5781250000/8), - REAL_CONST(1702.1369628906/8), - REAL_CONST(1710.7065429688/8), - REAL_CONST(1719.2868652344/8), - REAL_CONST(1727.8779296875/8), - REAL_CONST(1736.4797363281/8), - REAL_CONST(1745.0920410156/8), - REAL_CONST(1753.7152099609/8), - REAL_CONST(1762.3488769531/8), - REAL_CONST(1770.9930419922/8), - REAL_CONST(1779.6479492188/8), - REAL_CONST(1788.3132324219/8), - REAL_CONST(1796.9891357422/8), - REAL_CONST(1805.6754150391/8), - REAL_CONST(1814.3721923828/8), - REAL_CONST(1823.0794677734/8), - REAL_CONST(1831.7971191406/8), - REAL_CONST(1840.5251464844/8), - REAL_CONST(1849.2635498047/8), - REAL_CONST(1858.0123291016/8), - REAL_CONST(1866.7713623047/8), - REAL_CONST(1875.5406494141/8), - REAL_CONST(1884.3201904297/8), - REAL_CONST(1893.1101074219/8), - REAL_CONST(1901.9101562500/8), - REAL_CONST(1910.7203369141/8), - REAL_CONST(1919.5407714844/8), - REAL_CONST(1928.3712158203/8), - REAL_CONST(1937.2119140625/8), - REAL_CONST(1946.0627441406/8), - REAL_CONST(1954.9235839844/8), - REAL_CONST(1963.7944335938/8), - REAL_CONST(1972.6752929688/8), - REAL_CONST(1981.5662841797/8), - REAL_CONST(1990.4671630859/8), - REAL_CONST(1999.3780517578/8), - REAL_CONST(2008.2988281250/8), - REAL_CONST(2017.2296142578/8), - REAL_CONST(2026.1701660156/8), - REAL_CONST(2035.1207275391/8), - REAL_CONST(2044.0810546875/8), - REAL_CONST(2053.0512695313/8), - REAL_CONST(2062.0312500000/8), - REAL_CONST(2071.0209960938/8), - REAL_CONST(2080.0205078125/8), - REAL_CONST(2089.0297851563/8), - REAL_CONST(2098.0488281250/8), - REAL_CONST(2107.0776367188/8), - REAL_CONST(2116.1159667969/8), - REAL_CONST(2125.1640625000/8), - REAL_CONST(2134.2216796875/8), - REAL_CONST(2143.2890625000/8), - REAL_CONST(2152.3659667969/8), - REAL_CONST(2161.4523925781/8), - REAL_CONST(2170.5485839844/8), - REAL_CONST(2179.6540527344/8), - REAL_CONST(2188.7692871094/8), - REAL_CONST(2197.8937988281/8), - REAL_CONST(2207.0278320313/8), - REAL_CONST(2216.1713867188/8), - REAL_CONST(2225.3244628906/8), - REAL_CONST(2234.4868164063/8), - REAL_CONST(2243.6586914063/8), - REAL_CONST(2252.8398437500/8), - REAL_CONST(2262.0305175781/8), - REAL_CONST(2271.2304687500/8), - REAL_CONST(2280.4396972656/8), - REAL_CONST(2289.6582031250/8), - REAL_CONST(2298.8859863281/8), - REAL_CONST(2308.1230468750/8), - REAL_CONST(2317.3696289063/8), - REAL_CONST(2326.6250000000/8), - REAL_CONST(2335.8898925781/8), - REAL_CONST(2345.1638183594/8), - REAL_CONST(2354.4470214844/8), - REAL_CONST(2363.7395019531/8), - REAL_CONST(2373.0410156250/8), - REAL_CONST(2382.3515625000/8), - REAL_CONST(2391.6711425781/8), - REAL_CONST(2401.0000000000/8), - REAL_CONST(2410.3378906250/8), - REAL_CONST(2419.6848144531/8), - REAL_CONST(2429.0407714844/8), - REAL_CONST(2438.4057617188/8), - REAL_CONST(2447.7797851563/8), - REAL_CONST(2457.1625976563/8), - REAL_CONST(2466.5544433594/8), - REAL_CONST(2475.9553222656/8), - REAL_CONST(2485.3652343750/8), - REAL_CONST(2494.7839355469/8), - REAL_CONST(2504.2116699219/8), - REAL_CONST(2513.6479492188/8), - REAL_CONST(2523.0935058594/8), - REAL_CONST(2532.5476074219/8), - REAL_CONST(2542.0107421875/8), - REAL_CONST(2551.4824218750/8), - REAL_CONST(2560.9631347656/8), - REAL_CONST(2570.4526367188/8), - REAL_CONST(2579.9509277344/8), - REAL_CONST(2589.4577636719/8), - REAL_CONST(2598.9733886719/8), - REAL_CONST(2608.4978027344/8), - REAL_CONST(2618.0310058594/8), - REAL_CONST(2627.5727539063/8), - REAL_CONST(2637.1232910156/8), - REAL_CONST(2646.6823730469/8), - REAL_CONST(2656.2500000000/8), - REAL_CONST(2665.8264160156/8), - REAL_CONST(2675.4113769531/8), - REAL_CONST(2685.0051269531/8), - REAL_CONST(2694.6071777344/8), - REAL_CONST(2704.2180175781/8), - REAL_CONST(2713.8371582031/8), - REAL_CONST(2723.4650878906/8), - REAL_CONST(2733.1013183594/8), - REAL_CONST(2742.7460937500/8), - REAL_CONST(2752.3994140625/8), - REAL_CONST(2762.0612792969/8), - REAL_CONST(2771.7314453125/8), - REAL_CONST(2781.4101562500/8), - REAL_CONST(2791.0971679688/8), - REAL_CONST(2800.7927246094/8), - REAL_CONST(2810.4965820313/8), - REAL_CONST(2820.2089843750/8), - REAL_CONST(2829.9296875000/8), - REAL_CONST(2839.6586914063/8), - REAL_CONST(2849.3959960938/8), - REAL_CONST(2859.1416015625/8), - REAL_CONST(2868.8957519531/8), - REAL_CONST(2878.6579589844/8), - REAL_CONST(2888.4284667969/8), - REAL_CONST(2898.2075195313/8), - REAL_CONST(2907.9943847656/8), - REAL_CONST(2917.7897949219/8), - REAL_CONST(2927.5935058594/8), - REAL_CONST(2937.4052734375/8), - REAL_CONST(2947.2250976563/8), - REAL_CONST(2957.0534667969/8), - REAL_CONST(2966.8896484375/8), - REAL_CONST(2976.7341308594/8), - REAL_CONST(2986.5869140625/8), - REAL_CONST(2996.4477539063/8), - REAL_CONST(3006.3166503906/8), - REAL_CONST(3016.1936035156/8), - REAL_CONST(3026.0786132813/8), - REAL_CONST(3035.9719238281/8), - REAL_CONST(3045.8730468750/8), - REAL_CONST(3055.7824707031/8), - REAL_CONST(3065.6997070313/8), - REAL_CONST(3075.6252441406/8), - REAL_CONST(3085.5585937500/8), - REAL_CONST(3095.5000000000/8), - REAL_CONST(3105.4492187500/8), - REAL_CONST(3115.4067382813/8), - REAL_CONST(3125.3718261719/8), - REAL_CONST(3135.3452148438/8), - REAL_CONST(3145.3264160156/8), - REAL_CONST(3155.3154296875/8), - REAL_CONST(3165.3125000000/8), - REAL_CONST(3175.3173828125/8), - REAL_CONST(3185.3303222656/8), - REAL_CONST(3195.3510742188/8), - REAL_CONST(3205.3796386719/8), - REAL_CONST(3215.4160156250/8), - REAL_CONST(3225.4602050781/8), - REAL_CONST(3235.5122070313/8), - REAL_CONST(3245.5722656250/8), - REAL_CONST(3255.6398925781/8), - REAL_CONST(3265.7153320313/8), - REAL_CONST(3275.7985839844/8), - REAL_CONST(3285.8896484375/8), - REAL_CONST(3295.9885253906/8), - REAL_CONST(3306.0949707031/8), - REAL_CONST(3316.2092285156/8), - REAL_CONST(3326.3310546875/8), - REAL_CONST(3336.4606933594/8), - REAL_CONST(3346.5981445313/8), - REAL_CONST(3356.7431640625/8), - REAL_CONST(3366.8959960938/8), - REAL_CONST(3377.0563964844/8), - REAL_CONST(3387.2243652344/8), - REAL_CONST(3397.3999023438/8), - REAL_CONST(3407.5832519531/8), - REAL_CONST(3417.7741699219/8), - REAL_CONST(3427.9726562500/8), - REAL_CONST(3438.1787109375/8), - REAL_CONST(3448.3923339844/8), - REAL_CONST(3458.6137695313/8), - REAL_CONST(3468.8425292969/8), - REAL_CONST(3479.0788574219/8), - REAL_CONST(3489.3227539063/8), - REAL_CONST(3499.5742187500/8), - REAL_CONST(3509.8330078125/8), - REAL_CONST(3520.0993652344/8), - REAL_CONST(3530.3732910156/8), - REAL_CONST(3540.6547851563/8), - REAL_CONST(3550.9436035156/8), - REAL_CONST(3561.2399902344/8), - REAL_CONST(3571.5437011719/8), - REAL_CONST(3581.8549804688/8), - REAL_CONST(3592.1735839844/8), - REAL_CONST(3602.4995117188/8), - REAL_CONST(3612.8330078125/8), - REAL_CONST(3623.1738281250/8), - REAL_CONST(3633.5219726563/8), - REAL_CONST(3643.8776855469/8), - REAL_CONST(3654.2407226563/8), - REAL_CONST(3664.6108398438/8), - REAL_CONST(3674.9885253906/8), - REAL_CONST(3685.3735351563/8), - REAL_CONST(3695.7658691406/8), - REAL_CONST(3706.1655273438/8), - REAL_CONST(3716.5725097656/8), - REAL_CONST(3726.9865722656/8), - REAL_CONST(3737.4082031250/8), - REAL_CONST(3747.8369140625/8), - REAL_CONST(3758.2729492188/8), - REAL_CONST(3768.7163085938/8), - REAL_CONST(3779.1667480469/8), - REAL_CONST(3789.6245117188/8), - REAL_CONST(3800.0893554688/8), - REAL_CONST(3810.5615234375/8), - REAL_CONST(3821.0410156250/8), - REAL_CONST(3831.5275878906/8), - REAL_CONST(3842.0212402344/8), - REAL_CONST(3852.5222167969/8), - REAL_CONST(3863.0302734375/8), - REAL_CONST(3873.5454101563/8), - REAL_CONST(3884.0678710938/8), - REAL_CONST(3894.5974121094/8), - REAL_CONST(3905.1340332031/8), - REAL_CONST(3915.6777343750/8), - REAL_CONST(3926.2285156250/8), - REAL_CONST(3936.7863769531/8), - REAL_CONST(3947.3513183594/8), - REAL_CONST(3957.9235839844/8), - REAL_CONST(3968.5026855469/8), - REAL_CONST(3979.0888671875/8), - REAL_CONST(3989.6821289063/8), - REAL_CONST(4000.2824707031/8), - REAL_CONST(4010.8896484375/8), - REAL_CONST(4021.5039062500/8), - REAL_CONST(4032.1252441406/8), - REAL_CONST(4042.7536621094/8), - REAL_CONST(4053.3889160156/8), - REAL_CONST(4064.0312500000/8), - REAL_CONST(4074.6806640625/8), - REAL_CONST(4085.3369140625/8), - REAL_CONST(4096.0000000000/8), - REAL_CONST(4106.6699218750/8), - REAL_CONST(4117.3471679688/8), - REAL_CONST(4128.0312500000/8), - REAL_CONST(4138.7221679688/8), - REAL_CONST(4149.4199218750/8), - REAL_CONST(4160.1245117188/8), - REAL_CONST(4170.8364257813/8), - REAL_CONST(4181.5546875000/8), - REAL_CONST(4192.2802734375/8), - REAL_CONST(4203.0122070313/8), - REAL_CONST(4213.7514648438/8), - REAL_CONST(4224.4975585938/8), - REAL_CONST(4235.2500000000/8), - REAL_CONST(4246.0097656250/8), - REAL_CONST(4256.7763671875/8), - REAL_CONST(4267.5493164063/8), - REAL_CONST(4278.3295898438/8), - REAL_CONST(4289.1162109375/8), - REAL_CONST(4299.9101562500/8), - REAL_CONST(4310.7104492188/8), - REAL_CONST(4321.5175781250/8), - REAL_CONST(4332.3315429688/8), - REAL_CONST(4343.1523437500/8), - REAL_CONST(4353.9794921875/8), - REAL_CONST(4364.8139648438/8), - REAL_CONST(4375.6547851563/8), - REAL_CONST(4386.5024414063/8), - REAL_CONST(4397.3564453125/8), - REAL_CONST(4408.2177734375/8), - REAL_CONST(4419.0854492188/8), - REAL_CONST(4429.9594726563/8), - REAL_CONST(4440.8408203125/8), - REAL_CONST(4451.7285156250/8), - REAL_CONST(4462.6230468750/8), - REAL_CONST(4473.5239257813/8), - REAL_CONST(4484.4316406250/8), - REAL_CONST(4495.3461914063/8), - REAL_CONST(4506.2670898438/8), - REAL_CONST(4517.1948242188/8), - REAL_CONST(4528.1289062500/8), - REAL_CONST(4539.0698242188/8), - REAL_CONST(4550.0170898438/8), - REAL_CONST(4560.9711914063/8), - REAL_CONST(4571.9316406250/8), - REAL_CONST(4582.8989257813/8), - REAL_CONST(4593.8725585938/8), - REAL_CONST(4604.8525390625/8), - REAL_CONST(4615.8393554688/8), - REAL_CONST(4626.8330078125/8), - REAL_CONST(4637.8330078125/8), - REAL_CONST(4648.8393554688/8), - REAL_CONST(4659.8520507813/8), - REAL_CONST(4670.8715820313/8), - REAL_CONST(4681.8974609375/8), - REAL_CONST(4692.9301757813/8), - REAL_CONST(4703.9687500000/8), - REAL_CONST(4715.0141601563/8), - REAL_CONST(4726.0664062500/8), - REAL_CONST(4737.1245117188/8), - REAL_CONST(4748.1894531250/8), - REAL_CONST(4759.2607421875/8), - REAL_CONST(4770.3383789063/8), - REAL_CONST(4781.4223632813/8), - REAL_CONST(4792.5131835938/8), - REAL_CONST(4803.6103515625/8), - REAL_CONST(4814.7133789063/8), - REAL_CONST(4825.8232421875/8), - REAL_CONST(4836.9394531250/8), - REAL_CONST(4848.0620117188/8), - REAL_CONST(4859.1909179688/8), - REAL_CONST(4870.3266601563/8), - REAL_CONST(4881.4682617188/8), - REAL_CONST(4892.6162109375/8), - REAL_CONST(4903.7705078125/8), - REAL_CONST(4914.9316406250/8), - REAL_CONST(4926.0986328125/8), - REAL_CONST(4937.2719726563/8), - REAL_CONST(4948.4516601563/8), - REAL_CONST(4959.6381835938/8), - REAL_CONST(4970.8305664063/8), - REAL_CONST(4982.0292968750/8), - REAL_CONST(4993.2338867188/8), - REAL_CONST(5004.4453125000/8), - REAL_CONST(5015.6630859375/8), - REAL_CONST(5026.8867187500/8), - REAL_CONST(5038.1171875000/8), - REAL_CONST(5049.3535156250/8), - REAL_CONST(5060.5961914063/8), - REAL_CONST(5071.8447265625/8), - REAL_CONST(5083.1000976563/8), - REAL_CONST(5094.3613281250/8), - REAL_CONST(5105.6289062500/8), - REAL_CONST(5116.9028320313/8), - REAL_CONST(5128.1826171875/8), - REAL_CONST(5139.4692382813/8), - REAL_CONST(5150.7617187500/8), - REAL_CONST(5162.0600585938/8), - REAL_CONST(5173.3647460938/8), - REAL_CONST(5184.6757812500/8), - REAL_CONST(5195.9931640625/8), - REAL_CONST(5207.3164062500/8), - REAL_CONST(5218.6459960938/8), - REAL_CONST(5229.9814453125/8), - REAL_CONST(5241.3232421875/8), - REAL_CONST(5252.6713867188/8), - REAL_CONST(5264.0253906250/8), - REAL_CONST(5275.3852539063/8), - REAL_CONST(5286.7519531250/8), - REAL_CONST(5298.1240234375/8), - REAL_CONST(5309.5029296875/8), - REAL_CONST(5320.8872070313/8), - REAL_CONST(5332.2778320313/8), - REAL_CONST(5343.6748046875/8), - REAL_CONST(5355.0776367188/8), - REAL_CONST(5366.4868164063/8), - REAL_CONST(5377.9018554688/8), - REAL_CONST(5389.3227539063/8), - REAL_CONST(5400.7500000000/8), - REAL_CONST(5412.1831054688/8), - REAL_CONST(5423.6220703125/8), - REAL_CONST(5435.0673828125/8), - REAL_CONST(5446.5190429688/8), - REAL_CONST(5457.9760742188/8), - REAL_CONST(5469.4394531250/8), - REAL_CONST(5480.9086914063/8), - REAL_CONST(5492.3842773438/8), - REAL_CONST(5503.8657226563/8), - REAL_CONST(5515.3530273438/8), - REAL_CONST(5526.8461914063/8), - REAL_CONST(5538.3452148438/8), - REAL_CONST(5549.8505859375/8), - REAL_CONST(5561.3618164063/8), - REAL_CONST(5572.8789062500/8), - REAL_CONST(5584.4023437500/8), - REAL_CONST(5595.9311523438/8), - REAL_CONST(5607.4663085938/8), - REAL_CONST(5619.0073242188/8), - REAL_CONST(5630.5541992188/8), - REAL_CONST(5642.1069335938/8), - REAL_CONST(5653.6655273438/8), - REAL_CONST(5665.2304687500/8), - REAL_CONST(5676.8007812500/8), - REAL_CONST(5688.3774414063/8), - REAL_CONST(5699.9594726563/8), - REAL_CONST(5711.5478515625/8), - REAL_CONST(5723.1420898438/8), - REAL_CONST(5734.7421875000/8), - REAL_CONST(5746.3476562500/8), - REAL_CONST(5757.9594726563/8), - REAL_CONST(5769.5771484375/8), - REAL_CONST(5781.2006835938/8), - REAL_CONST(5792.8300781250/8), - REAL_CONST(5804.4648437500/8), - REAL_CONST(5816.1059570313/8), - REAL_CONST(5827.7524414063/8), - REAL_CONST(5839.4052734375/8), - REAL_CONST(5851.0634765625/8), - REAL_CONST(5862.7280273438/8), - REAL_CONST(5874.3979492188/8), - REAL_CONST(5886.0737304688/8), - REAL_CONST(5897.7553710938/8), - REAL_CONST(5909.4428710938/8), - REAL_CONST(5921.1357421875/8), - REAL_CONST(5932.8349609375/8), - REAL_CONST(5944.5395507813/8), - REAL_CONST(5956.2500000000/8), - REAL_CONST(5967.9663085938/8), - REAL_CONST(5979.6884765625/8), - REAL_CONST(5991.4160156250/8), - REAL_CONST(6003.1494140625/8), - REAL_CONST(6014.8886718750/8), - REAL_CONST(6026.6337890625/8), - REAL_CONST(6038.3842773438/8), - REAL_CONST(6050.1411132813/8), - REAL_CONST(6061.9028320313/8), - REAL_CONST(6073.6708984375/8), - REAL_CONST(6085.4443359375/8), - REAL_CONST(6097.2236328125/8), - REAL_CONST(6109.0083007813/8), - REAL_CONST(6120.7993164063/8), - REAL_CONST(6132.5952148438/8), - REAL_CONST(6144.3974609375/8), - REAL_CONST(6156.2050781250/8), - REAL_CONST(6168.0180664063/8), - REAL_CONST(6179.8374023438/8), - REAL_CONST(6191.6616210938/8), - REAL_CONST(6203.4921875000/8), - REAL_CONST(6215.3281250000/8), - REAL_CONST(6227.1694335938/8), - REAL_CONST(6239.0166015625/8), - REAL_CONST(6250.8696289063/8), - REAL_CONST(6262.7280273438/8), - REAL_CONST(6274.5917968750/8), - REAL_CONST(6286.4614257813/8), - REAL_CONST(6298.3369140625/8), - REAL_CONST(6310.2177734375/8), - REAL_CONST(6322.1040039063/8), - REAL_CONST(6333.9960937500/8), - REAL_CONST(6345.8940429688/8), - REAL_CONST(6357.7968750000/8), - REAL_CONST(6369.7055664063/8), - REAL_CONST(6381.6201171875/8), - REAL_CONST(6393.5400390625/8), - REAL_CONST(6405.4653320313/8), - REAL_CONST(6417.3964843750/8), - REAL_CONST(6429.3330078125/8), - REAL_CONST(6441.2753906250/8), - REAL_CONST(6453.2226562500/8), - REAL_CONST(6465.1757812500/8), - REAL_CONST(6477.1347656250/8), - REAL_CONST(6489.0991210938/8), - REAL_CONST(6501.0688476563/8), - REAL_CONST(6513.0439453125/8), - REAL_CONST(6525.0249023438/8), - REAL_CONST(6537.0107421875/8), - REAL_CONST(6549.0029296875/8), - REAL_CONST(6561.0000000000/8), - REAL_CONST(6573.0029296875/8), - REAL_CONST(6585.0107421875/8), - REAL_CONST(6597.0249023438/8), - REAL_CONST(6609.0439453125/8), - REAL_CONST(6621.0683593750/8), - REAL_CONST(6633.0986328125/8), - REAL_CONST(6645.1342773438/8), - REAL_CONST(6657.1752929688/8), - REAL_CONST(6669.2216796875/8), - REAL_CONST(6681.2734375000/8), - REAL_CONST(6693.3310546875/8), - REAL_CONST(6705.3935546875/8), - REAL_CONST(6717.4619140625/8), - REAL_CONST(6729.5356445313/8), - REAL_CONST(6741.6142578125/8), - REAL_CONST(6753.6987304688/8), - REAL_CONST(6765.7885742188/8), - REAL_CONST(6777.8842773438/8), - REAL_CONST(6789.9848632813/8), - REAL_CONST(6802.0908203125/8), - REAL_CONST(6814.2021484375/8), - REAL_CONST(6826.3188476563/8), - REAL_CONST(6838.4414062500/8), - REAL_CONST(6850.5688476563/8), - REAL_CONST(6862.7016601563/8), - REAL_CONST(6874.8403320313/8), - REAL_CONST(6886.9838867188/8), - REAL_CONST(6899.1328125000/8), - REAL_CONST(6911.2871093750/8), - REAL_CONST(6923.4467773438/8), - REAL_CONST(6935.6118164063/8), - REAL_CONST(6947.7822265625/8), - REAL_CONST(6959.9580078125/8), - REAL_CONST(6972.1391601563/8), - REAL_CONST(6984.3256835938/8), - REAL_CONST(6996.5170898438/8), - REAL_CONST(7008.7143554688/8), - REAL_CONST(7020.9165039063/8), - REAL_CONST(7033.1245117188/8), - REAL_CONST(7045.3374023438/8), - REAL_CONST(7057.5556640625/8), - REAL_CONST(7069.7788085938/8), - REAL_CONST(7082.0078125000/8), - REAL_CONST(7094.2416992188/8), - REAL_CONST(7106.4814453125/8), - REAL_CONST(7118.7260742188/8), - REAL_CONST(7130.9755859375/8), - REAL_CONST(7143.2309570313/8), - REAL_CONST(7155.4912109375/8), - REAL_CONST(7167.7568359375/8), - REAL_CONST(7180.0278320313/8), - REAL_CONST(7192.3041992188/8), - REAL_CONST(7204.5854492188/8), - REAL_CONST(7216.8720703125/8), - REAL_CONST(7229.1640625000/8), - REAL_CONST(7241.4614257813/8), - REAL_CONST(7253.7636718750/8), - REAL_CONST(7266.0712890625/8), - REAL_CONST(7278.3837890625/8), - REAL_CONST(7290.7016601563/8), - REAL_CONST(7303.0249023438/8), - REAL_CONST(7315.3535156250/8), - REAL_CONST(7327.6870117188/8), - REAL_CONST(7340.0258789063/8), - REAL_CONST(7352.3696289063/8), - REAL_CONST(7364.7187500000/8), - REAL_CONST(7377.0732421875/8), - REAL_CONST(7389.4326171875/8), - REAL_CONST(7401.7973632813/8), - REAL_CONST(7414.1669921875/8), - REAL_CONST(7426.5419921875/8), - REAL_CONST(7438.9223632813/8), - REAL_CONST(7451.3076171875/8), - REAL_CONST(7463.6982421875/8), - REAL_CONST(7476.0937500000/8), - REAL_CONST(7488.4941406250/8), - REAL_CONST(7500.9003906250/8), - REAL_CONST(7513.3110351563/8), - REAL_CONST(7525.7275390625/8), - REAL_CONST(7538.1484375000/8), - REAL_CONST(7550.5751953125/8), - REAL_CONST(7563.0063476563/8), - REAL_CONST(7575.4428710938/8), - REAL_CONST(7587.8847656250/8), - REAL_CONST(7600.3315429688/8), - REAL_CONST(7612.7836914063/8), - REAL_CONST(7625.2407226563/8), - REAL_CONST(7637.7026367188/8), - REAL_CONST(7650.1699218750/8), - REAL_CONST(7662.6420898438/8), - REAL_CONST(7675.1191406250/8), - REAL_CONST(7687.6015625000/8), - REAL_CONST(7700.0893554688/8), - REAL_CONST(7712.5815429688/8), - REAL_CONST(7725.0795898438/8), - REAL_CONST(7737.5820312500/8), - REAL_CONST(7750.0898437500/8), - REAL_CONST(7762.6025390625/8), - REAL_CONST(7775.1201171875/8), - REAL_CONST(7787.6430664063/8), - REAL_CONST(7800.1708984375/8), - REAL_CONST(7812.7041015625/8), - REAL_CONST(7825.2416992188/8), - REAL_CONST(7837.7846679688/8), - REAL_CONST(7850.3330078125/8), - REAL_CONST(7862.8857421875/8), - REAL_CONST(7875.4438476563/8), - REAL_CONST(7888.0068359375/8), - REAL_CONST(7900.5747070313/8), - REAL_CONST(7913.1479492188/8), - REAL_CONST(7925.7260742188/8), - REAL_CONST(7938.3090820313/8), - REAL_CONST(7950.8969726563/8), - REAL_CONST(7963.4897460938/8), - REAL_CONST(7976.0878906250/8), - REAL_CONST(7988.6909179688/8), - REAL_CONST(8001.2988281250/8), - REAL_CONST(8013.9116210938/8), - REAL_CONST(8026.5292968750/8), - REAL_CONST(8039.1523437500/8), - REAL_CONST(8051.7797851563/8), - REAL_CONST(8064.4125976563/8), - REAL_CONST(8077.0502929688/8), - REAL_CONST(8089.6928710938/8), - REAL_CONST(8102.3403320313/8), - REAL_CONST(8114.9931640625/8), - REAL_CONST(8127.6503906250/8), - REAL_CONST(8140.3129882813/8), - REAL_CONST(8152.9799804688/8), - REAL_CONST(8165.6523437500/8), - REAL_CONST(8178.3295898438/8), - REAL_CONST(8191.0117187500/8), - REAL_CONST(8203.6982421875/8), - REAL_CONST(8216.3906250000/8), - REAL_CONST(8229.0869140625/8), - REAL_CONST(8241.7890625000/8), - REAL_CONST(8254.4951171875/8), - REAL_CONST(8267.2070312500/8), - REAL_CONST(8279.9228515625/8), - REAL_CONST(8292.6445312500/8), - REAL_CONST(8305.3701171875/8), - REAL_CONST(8318.1015625000/8), - REAL_CONST(8330.8369140625/8), - REAL_CONST(8343.5781250000/8), - REAL_CONST(8356.3232421875/8), - REAL_CONST(8369.0742187500/8), - REAL_CONST(8381.8291015625/8), - REAL_CONST(8394.5898437500/8), - REAL_CONST(8407.3544921875/8), - REAL_CONST(8420.1240234375/8), - REAL_CONST(8432.8994140625/8), - REAL_CONST(8445.6787109375/8), - REAL_CONST(8458.4628906250/8), - REAL_CONST(8471.2519531250/8), - REAL_CONST(8484.0458984375/8), - REAL_CONST(8496.8447265625/8), - REAL_CONST(8509.6484375000/8), - REAL_CONST(8522.4570312500/8), - REAL_CONST(8535.2705078125/8), - REAL_CONST(8548.0888671875/8), - REAL_CONST(8560.9111328125/8), - REAL_CONST(8573.7392578125/8), - REAL_CONST(8586.5722656250/8), - REAL_CONST(8599.4091796875/8), - REAL_CONST(8612.2509765625/8), - REAL_CONST(8625.0986328125/8), - REAL_CONST(8637.9501953125/8), - REAL_CONST(8650.8066406250/8), - REAL_CONST(8663.6679687500/8), - REAL_CONST(8676.5332031250/8), - REAL_CONST(8689.4042968750/8), - REAL_CONST(8702.2802734375/8), - REAL_CONST(8715.1601562500/8), - REAL_CONST(8728.0458984375/8), - REAL_CONST(8740.9355468750/8), - REAL_CONST(8753.8300781250/8), - REAL_CONST(8766.7294921875/8), - REAL_CONST(8779.6337890625/8), - REAL_CONST(8792.5419921875/8), - REAL_CONST(8805.4560546875/8), - REAL_CONST(8818.3740234375/8), - REAL_CONST(8831.2968750000/8), - REAL_CONST(8844.2246093750/8), - REAL_CONST(8857.1572265625/8), - REAL_CONST(8870.0947265625/8), - REAL_CONST(8883.0371093750/8), - REAL_CONST(8895.9833984375/8), - REAL_CONST(8908.9345703125/8), - REAL_CONST(8921.8906250000/8), - REAL_CONST(8934.8515625000/8), - REAL_CONST(8947.8173828125/8), - REAL_CONST(8960.7871093750/8), - REAL_CONST(8973.7626953125/8), - REAL_CONST(8986.7421875000/8), - REAL_CONST(8999.7265625000/8), - REAL_CONST(9012.7148437500/8), - REAL_CONST(9025.7089843750/8), - REAL_CONST(9038.7070312500/8), - REAL_CONST(9051.7099609375/8), - REAL_CONST(9064.7177734375/8), - REAL_CONST(9077.7304687500/8), - REAL_CONST(9090.7470703125/8), - REAL_CONST(9103.7685546875/8), - REAL_CONST(9116.7949218750/8), - REAL_CONST(9129.8261718750/8), - REAL_CONST(9142.8613281250/8), - REAL_CONST(9155.9023437500/8), - REAL_CONST(9168.9472656250/8), - REAL_CONST(9181.9960937500/8), - REAL_CONST(9195.0507812500/8), - REAL_CONST(9208.1093750000/8), - REAL_CONST(9221.1728515625/8), - REAL_CONST(9234.2412109375/8), - REAL_CONST(9247.3134765625/8), - REAL_CONST(9260.3906250000/8), - REAL_CONST(9273.4726562500/8), - REAL_CONST(9286.5595703125/8), - REAL_CONST(9299.6503906250/8), - REAL_CONST(9312.7460937500/8), - REAL_CONST(9325.8466796875/8), - REAL_CONST(9338.9521484375/8), - REAL_CONST(9352.0615234375/8), - REAL_CONST(9365.1757812500/8), - REAL_CONST(9378.2949218750/8), - REAL_CONST(9391.4179687500/8), - REAL_CONST(9404.5458984375/8), - REAL_CONST(9417.6787109375/8), - REAL_CONST(9430.8154296875/8), - REAL_CONST(9443.9570312500/8), - REAL_CONST(9457.1035156250/8), - REAL_CONST(9470.2539062500/8), - REAL_CONST(9483.4101562500/8), - REAL_CONST(9496.5693359375/8), - REAL_CONST(9509.7343750000/8), - REAL_CONST(9522.9033203125/8), - REAL_CONST(9536.0771484375/8), - REAL_CONST(9549.2548828125/8), - REAL_CONST(9562.4384765625/8), - REAL_CONST(9575.6250000000/8), - REAL_CONST(9588.8173828125/8), - REAL_CONST(9602.0136718750/8), - REAL_CONST(9615.2148437500/8), - REAL_CONST(9628.4199218750/8), - REAL_CONST(9641.6298828125/8), - REAL_CONST(9654.8447265625/8), - REAL_CONST(9668.0634765625/8), - REAL_CONST(9681.2871093750/8), - REAL_CONST(9694.5146484375/8), - REAL_CONST(9707.7470703125/8), - REAL_CONST(9720.9843750000/8), - REAL_CONST(9734.2265625000/8), - REAL_CONST(9747.4726562500/8), - REAL_CONST(9760.7226562500/8), - REAL_CONST(9773.9775390625/8), - REAL_CONST(9787.2373046875/8), - REAL_CONST(9800.5019531250/8), - REAL_CONST(9813.7705078125/8), - REAL_CONST(9827.0429687500/8), - REAL_CONST(9840.3212890625/8), - REAL_CONST(9853.6025390625/8), - REAL_CONST(9866.8896484375/8), - REAL_CONST(9880.1806640625/8), - REAL_CONST(9893.4755859375/8), - REAL_CONST(9906.7753906250/8), - REAL_CONST(9920.0800781250/8), - REAL_CONST(9933.3886718750/8), - REAL_CONST(9946.7021484375/8), - REAL_CONST(9960.0195312500/8), - REAL_CONST(9973.3417968750/8), - REAL_CONST(9986.6689453125/8), - REAL_CONST(10000.0000000000/8), - REAL_CONST(10013.3359375000/8), - REAL_CONST(10026.6757812500/8), - REAL_CONST(10040.0195312500/8), - REAL_CONST(10053.3691406250/8), - REAL_CONST(10066.7216796875/8), - REAL_CONST(10080.0800781250/8), - REAL_CONST(10093.4423828125/8), - REAL_CONST(10106.8085937500/8), - REAL_CONST(10120.1796875000/8), - REAL_CONST(10133.5546875000/8), - REAL_CONST(10146.9345703125/8), - REAL_CONST(10160.3193359375/8), - REAL_CONST(10173.7080078125/8), - REAL_CONST(10187.1005859375/8), - REAL_CONST(10200.4980468750/8), - REAL_CONST(10213.9003906250/8), - REAL_CONST(10227.3066406250/8), - REAL_CONST(10240.7167968750/8), - REAL_CONST(10254.1318359375/8), - REAL_CONST(10267.5517578125/8), - REAL_CONST(10280.9755859375/8), - REAL_CONST(10294.4033203125/8), - REAL_CONST(10307.8359375000/8), - REAL_CONST(10321.2734375000/8), - REAL_CONST(10334.7148437500/8) + REAL_CONST(0.000000/8.0), + REAL_CONST(1.000000/8.0), + REAL_CONST(2.519842/8.0), + REAL_CONST(4.326749/8.0), + REAL_CONST(6.349604/8.0), + REAL_CONST(8.549880/8.0), + REAL_CONST(10.902724/8.0), + REAL_CONST(13.390518/8.0), + REAL_CONST(16.000000/8.0), + REAL_CONST(18.720754/8.0), + REAL_CONST(21.544347/8.0), + REAL_CONST(24.463781/8.0), + REAL_CONST(27.473142/8.0), + REAL_CONST(30.567351/8.0), + REAL_CONST(33.741992/8.0), + REAL_CONST(36.993181/8.0), + REAL_CONST(40.317474/8.0), + REAL_CONST(43.711787/8.0), + REAL_CONST(47.173345/8.0), + REAL_CONST(50.699631/8.0), + REAL_CONST(54.288352/8.0), + REAL_CONST(57.937408/8.0), + REAL_CONST(61.644865/8.0), + REAL_CONST(65.408941/8.0), + REAL_CONST(69.227979/8.0), + REAL_CONST(73.100443/8.0), + REAL_CONST(77.024898/8.0), + REAL_CONST(81.000000/8.0), + REAL_CONST(85.024491/8.0), + REAL_CONST(89.097188/8.0), + REAL_CONST(93.216975/8.0), + REAL_CONST(97.382800/8.0), + REAL_CONST(101.593667/8.0), + REAL_CONST(105.848633/8.0), + REAL_CONST(110.146801/8.0), + REAL_CONST(114.487321/8.0), + REAL_CONST(118.869381/8.0), + REAL_CONST(123.292209/8.0), + REAL_CONST(127.755065/8.0), + REAL_CONST(132.257246/8.0), + REAL_CONST(136.798076/8.0), + REAL_CONST(141.376907/8.0), + REAL_CONST(145.993119/8.0), + REAL_CONST(150.646117/8.0), + REAL_CONST(155.335327/8.0), + REAL_CONST(160.060199/8.0), + REAL_CONST(164.820202/8.0), + REAL_CONST(169.614826/8.0), + REAL_CONST(174.443577/8.0), + REAL_CONST(179.305980/8.0), + REAL_CONST(184.201575/8.0), + REAL_CONST(189.129918/8.0), + REAL_CONST(194.090580/8.0), + REAL_CONST(199.083145/8.0), + REAL_CONST(204.107210/8.0), + REAL_CONST(209.162385/8.0), + REAL_CONST(214.248292/8.0), + REAL_CONST(219.364564/8.0), + REAL_CONST(224.510845/8.0), + REAL_CONST(229.686789/8.0), + REAL_CONST(234.892058/8.0), + REAL_CONST(240.126328/8.0), + REAL_CONST(245.389280/8.0), + REAL_CONST(250.680604/8.0), + REAL_CONST(256.000000/8.0), + REAL_CONST(261.347174/8.0), + REAL_CONST(266.721841/8.0), + REAL_CONST(272.123723/8.0), + REAL_CONST(277.552547/8.0), + REAL_CONST(283.008049/8.0), + REAL_CONST(288.489971/8.0), + REAL_CONST(293.998060/8.0), + REAL_CONST(299.532071/8.0), + REAL_CONST(305.091761/8.0), + REAL_CONST(310.676898/8.0), + REAL_CONST(316.287249/8.0), + REAL_CONST(321.922592/8.0), + REAL_CONST(327.582707/8.0), + REAL_CONST(333.267377/8.0), + REAL_CONST(338.976394/8.0), + REAL_CONST(344.709550/8.0), + REAL_CONST(350.466646/8.0), + REAL_CONST(356.247482/8.0), + REAL_CONST(362.051866/8.0), + REAL_CONST(367.879608/8.0), + REAL_CONST(373.730522/8.0), + REAL_CONST(379.604427/8.0), + REAL_CONST(385.501143/8.0), + REAL_CONST(391.420496/8.0), + REAL_CONST(397.362314/8.0), + REAL_CONST(403.326427/8.0), + REAL_CONST(409.312672/8.0), + REAL_CONST(415.320884/8.0), + REAL_CONST(421.350905/8.0), + REAL_CONST(427.402579/8.0), + REAL_CONST(433.475750/8.0), + REAL_CONST(439.570269/8.0), + REAL_CONST(445.685987/8.0), + REAL_CONST(451.822757/8.0), + REAL_CONST(457.980436/8.0), + REAL_CONST(464.158883/8.0), + REAL_CONST(470.357960/8.0), + REAL_CONST(476.577530/8.0), + REAL_CONST(482.817459/8.0), + REAL_CONST(489.077615/8.0), + REAL_CONST(495.357868/8.0), + REAL_CONST(501.658090/8.0), + REAL_CONST(507.978156/8.0), + REAL_CONST(514.317941/8.0), + REAL_CONST(520.677324/8.0), + REAL_CONST(527.056184/8.0), + REAL_CONST(533.454404/8.0), + REAL_CONST(539.871867/8.0), + REAL_CONST(546.308458/8.0), + REAL_CONST(552.764065/8.0), + REAL_CONST(559.238575/8.0), + REAL_CONST(565.731879/8.0), + REAL_CONST(572.243870/8.0), + REAL_CONST(578.774440/8.0), + REAL_CONST(585.323483/8.0), + REAL_CONST(591.890898/8.0), + REAL_CONST(598.476581/8.0), + REAL_CONST(605.080431/8.0), + REAL_CONST(611.702349/8.0), + REAL_CONST(618.342238/8.0), + REAL_CONST(625.000000/8.0), + REAL_CONST(631.675540/8.0), + REAL_CONST(638.368763/8.0), + REAL_CONST(645.079578/8.0), + REAL_CONST(651.807891/8.0), + REAL_CONST(658.553612/8.0), + REAL_CONST(665.316653/8.0), + REAL_CONST(672.096925/8.0), + REAL_CONST(678.894340/8.0), + REAL_CONST(685.708813/8.0), + REAL_CONST(692.540258/8.0), + REAL_CONST(699.388593/8.0), + REAL_CONST(706.253733/8.0), + REAL_CONST(713.135597/8.0), + REAL_CONST(720.034104/8.0), + REAL_CONST(726.949174/8.0), + REAL_CONST(733.880729/8.0), + REAL_CONST(740.828689/8.0), + REAL_CONST(747.792979/8.0), + REAL_CONST(754.773522/8.0), + REAL_CONST(761.770242/8.0), + REAL_CONST(768.783065/8.0), + REAL_CONST(775.811917/8.0), + REAL_CONST(782.856726/8.0), + REAL_CONST(789.917420/8.0), + REAL_CONST(796.993927/8.0), + REAL_CONST(804.086177/8.0), + REAL_CONST(811.194101/8.0), + REAL_CONST(818.317630/8.0), + REAL_CONST(825.456695/8.0), + REAL_CONST(832.611230/8.0), + REAL_CONST(839.781167/8.0), + REAL_CONST(846.966442/8.0), + REAL_CONST(854.166988/8.0), + REAL_CONST(861.382741/8.0), + REAL_CONST(868.613637/8.0), + REAL_CONST(875.859614/8.0), + REAL_CONST(883.120608/8.0), + REAL_CONST(890.396558/8.0), + REAL_CONST(897.687403/8.0), + REAL_CONST(904.993081/8.0), + REAL_CONST(912.313534/8.0), + REAL_CONST(919.648701/8.0), + REAL_CONST(926.998523/8.0), + REAL_CONST(934.362944/8.0), + REAL_CONST(941.741904/8.0), + REAL_CONST(949.135347/8.0), + REAL_CONST(956.543216/8.0), + REAL_CONST(963.965455/8.0), + REAL_CONST(971.402010/8.0), + REAL_CONST(978.852824/8.0), + REAL_CONST(986.317844/8.0), + REAL_CONST(993.797016/8.0), + REAL_CONST(1001.290286/8.0), + REAL_CONST(1008.797602/8.0), + REAL_CONST(1016.318911/8.0), + REAL_CONST(1023.854161/8.0), + REAL_CONST(1031.403302/8.0), + REAL_CONST(1038.966281/8.0), + REAL_CONST(1046.543049/8.0), + REAL_CONST(1054.133555/8.0), + REAL_CONST(1061.737750/8.0), + REAL_CONST(1069.355585/8.0), + REAL_CONST(1076.987011/8.0), + REAL_CONST(1084.631981/8.0), + REAL_CONST(1092.290445/8.0), + REAL_CONST(1099.962357/8.0), + REAL_CONST(1107.647670/8.0), + REAL_CONST(1115.346337/8.0), + REAL_CONST(1123.058312/8.0), + REAL_CONST(1130.783550/8.0), + REAL_CONST(1138.522004/8.0), + REAL_CONST(1146.273630/8.0), + REAL_CONST(1154.038383/8.0), + REAL_CONST(1161.816220/8.0), + REAL_CONST(1169.607095/8.0), + REAL_CONST(1177.410967/8.0), + REAL_CONST(1185.227790/8.0), + REAL_CONST(1193.057524/8.0), + REAL_CONST(1200.900125/8.0), + REAL_CONST(1208.755551/8.0), + REAL_CONST(1216.623760/8.0), + REAL_CONST(1224.504712/8.0), + REAL_CONST(1232.398364/8.0), + REAL_CONST(1240.304677/8.0), + REAL_CONST(1248.223610/8.0), + REAL_CONST(1256.155123/8.0), + REAL_CONST(1264.099175/8.0), + REAL_CONST(1272.055728/8.0), + REAL_CONST(1280.024742/8.0), + REAL_CONST(1288.006179/8.0), + REAL_CONST(1296.000000/8.0), + REAL_CONST(1304.006167/8.0), + REAL_CONST(1312.024641/8.0), + REAL_CONST(1320.055385/8.0), + REAL_CONST(1328.098362/8.0), + REAL_CONST(1336.153535/8.0), + REAL_CONST(1344.220866/8.0), + REAL_CONST(1352.300320/8.0), + REAL_CONST(1360.391859/8.0), + REAL_CONST(1368.495449/8.0), + REAL_CONST(1376.611053/8.0), + REAL_CONST(1384.738635/8.0), + REAL_CONST(1392.878162/8.0), + REAL_CONST(1401.029597/8.0), + REAL_CONST(1409.192905/8.0), + REAL_CONST(1417.368054/8.0), + REAL_CONST(1425.555007/8.0), + REAL_CONST(1433.753732/8.0), + REAL_CONST(1441.964195/8.0), + REAL_CONST(1450.186361/8.0), + REAL_CONST(1458.420199/8.0), + REAL_CONST(1466.665675/8.0), + REAL_CONST(1474.922755/8.0), + REAL_CONST(1483.191409/8.0), + REAL_CONST(1491.471603/8.0), + REAL_CONST(1499.763305/8.0), + REAL_CONST(1508.066484/8.0), + REAL_CONST(1516.381107/8.0), + REAL_CONST(1524.707144/8.0), + REAL_CONST(1533.044563/8.0), + REAL_CONST(1541.393333/8.0), + REAL_CONST(1549.753423/8.0), + REAL_CONST(1558.124804/8.0), + REAL_CONST(1566.507443/8.0), + REAL_CONST(1574.901312/8.0), + REAL_CONST(1583.306381/8.0), + REAL_CONST(1591.722619/8.0), + REAL_CONST(1600.149996/8.0), + REAL_CONST(1608.588485/8.0), + REAL_CONST(1617.038055/8.0), + REAL_CONST(1625.498677/8.0), + REAL_CONST(1633.970323/8.0), + REAL_CONST(1642.452964/8.0), + REAL_CONST(1650.946572/8.0), + REAL_CONST(1659.451118/8.0), + REAL_CONST(1667.966574/8.0), + REAL_CONST(1676.492913/8.0), + REAL_CONST(1685.030106/8.0), + REAL_CONST(1693.578126/8.0), + REAL_CONST(1702.136946/8.0), + REAL_CONST(1710.706539/8.0), + REAL_CONST(1719.286878/8.0), + REAL_CONST(1727.877935/8.0), + REAL_CONST(1736.479684/8.0), + REAL_CONST(1745.092099/8.0), + REAL_CONST(1753.715153/8.0), + REAL_CONST(1762.348820/8.0), + REAL_CONST(1770.993074/8.0), + REAL_CONST(1779.647889/8.0), + REAL_CONST(1788.313239/8.0), + REAL_CONST(1796.989100/8.0), + REAL_CONST(1805.675445/8.0), + REAL_CONST(1814.372248/8.0), + REAL_CONST(1823.079487/8.0), + REAL_CONST(1831.797134/8.0), + REAL_CONST(1840.525165/8.0), + REAL_CONST(1849.263556/8.0), + REAL_CONST(1858.012283/8.0), + REAL_CONST(1866.771320/8.0), + REAL_CONST(1875.540644/8.0), + REAL_CONST(1884.320231/8.0), + REAL_CONST(1893.110056/8.0), + REAL_CONST(1901.910095/8.0), + REAL_CONST(1910.720326/8.0), + REAL_CONST(1919.540725/8.0), + REAL_CONST(1928.371268/8.0), + REAL_CONST(1937.211932/8.0), + REAL_CONST(1946.062693/8.0), + REAL_CONST(1954.923530/8.0), + REAL_CONST(1963.794418/8.0), + REAL_CONST(1972.675336/8.0), + REAL_CONST(1981.566261/8.0), + REAL_CONST(1990.467169/8.0), + REAL_CONST(1999.378040/8.0), + REAL_CONST(2008.298850/8.0), + REAL_CONST(2017.229578/8.0), + REAL_CONST(2026.170201/8.0), + REAL_CONST(2035.120698/8.0), + REAL_CONST(2044.081047/8.0), + REAL_CONST(2053.051227/8.0), + REAL_CONST(2062.031215/8.0), + REAL_CONST(2071.020990/8.0), + REAL_CONST(2080.020532/8.0), + REAL_CONST(2089.029819/8.0), + REAL_CONST(2098.048830/8.0), + REAL_CONST(2107.077544/8.0), + REAL_CONST(2116.115940/8.0), + REAL_CONST(2125.163998/8.0), + REAL_CONST(2134.221697/8.0), + REAL_CONST(2143.289017/8.0), + REAL_CONST(2152.365936/8.0), + REAL_CONST(2161.452435/8.0), + REAL_CONST(2170.548495/8.0), + REAL_CONST(2179.654093/8.0), + REAL_CONST(2188.769212/8.0), + REAL_CONST(2197.893830/8.0), + REAL_CONST(2207.027929/8.0), + REAL_CONST(2216.171488/8.0), + REAL_CONST(2225.324488/8.0), + REAL_CONST(2234.486909/8.0), + REAL_CONST(2243.658733/8.0), + REAL_CONST(2252.839939/8.0), + REAL_CONST(2262.030510/8.0), + REAL_CONST(2271.230425/8.0), + REAL_CONST(2280.439666/8.0), + REAL_CONST(2289.658214/8.0), + REAL_CONST(2298.886050/8.0), + REAL_CONST(2308.123156/8.0), + REAL_CONST(2317.369513/8.0), + REAL_CONST(2326.625102/8.0), + REAL_CONST(2335.889905/8.0), + REAL_CONST(2345.163905/8.0), + REAL_CONST(2354.447082/8.0), + REAL_CONST(2363.739418/8.0), + REAL_CONST(2373.040896/8.0), + REAL_CONST(2382.351497/8.0), + REAL_CONST(2391.671205/8.0), + REAL_CONST(2401.000000/8.0), + REAL_CONST(2410.337866/8.0), + REAL_CONST(2419.684784/8.0), + REAL_CONST(2429.040737/8.0), + REAL_CONST(2438.405709/8.0), + REAL_CONST(2447.779680/8.0), + REAL_CONST(2457.162635/8.0), + REAL_CONST(2466.554556/8.0), + REAL_CONST(2475.955426/8.0), + REAL_CONST(2485.365228/8.0), + REAL_CONST(2494.783945/8.0), + REAL_CONST(2504.211560/8.0), + REAL_CONST(2513.648057/8.0), + REAL_CONST(2523.093418/8.0), + REAL_CONST(2532.547627/8.0), + REAL_CONST(2542.010668/8.0), + REAL_CONST(2551.482524/8.0), + REAL_CONST(2560.963179/8.0), + REAL_CONST(2570.452617/8.0), + REAL_CONST(2579.950820/8.0), + REAL_CONST(2589.457774/8.0), + REAL_CONST(2598.973461/8.0), + REAL_CONST(2608.497867/8.0), + REAL_CONST(2618.030975/8.0), + REAL_CONST(2627.572769/8.0), + REAL_CONST(2637.123233/8.0), + REAL_CONST(2646.682352/8.0), + REAL_CONST(2656.250110/8.0), + REAL_CONST(2665.826492/8.0), + REAL_CONST(2675.411482/8.0), + REAL_CONST(2685.005064/8.0), + REAL_CONST(2694.607223/8.0), + REAL_CONST(2704.217944/8.0), + REAL_CONST(2713.837212/8.0), + REAL_CONST(2723.465012/8.0), + REAL_CONST(2733.101328/8.0), + REAL_CONST(2742.746145/8.0), + REAL_CONST(2752.399449/8.0), + REAL_CONST(2762.061224/8.0), + REAL_CONST(2771.731456/8.0), + REAL_CONST(2781.410129/8.0), + REAL_CONST(2791.097231/8.0), + REAL_CONST(2800.792744/8.0), + REAL_CONST(2810.496656/8.0), + REAL_CONST(2820.208951/8.0), + REAL_CONST(2829.929616/8.0), + REAL_CONST(2839.658635/8.0), + REAL_CONST(2849.395994/8.0), + REAL_CONST(2859.141679/8.0), + REAL_CONST(2868.895677/8.0), + REAL_CONST(2878.657972/8.0), + REAL_CONST(2888.428550/8.0), + REAL_CONST(2898.207399/8.0), + REAL_CONST(2907.994503/8.0), + REAL_CONST(2917.789849/8.0), + REAL_CONST(2927.593423/8.0), + REAL_CONST(2937.405211/8.0), + REAL_CONST(2947.225199/8.0), + REAL_CONST(2957.053374/8.0), + REAL_CONST(2966.889722/8.0), + REAL_CONST(2976.734230/8.0), + REAL_CONST(2986.586884/8.0), + REAL_CONST(2996.447670/8.0), + REAL_CONST(3006.316576/8.0), + REAL_CONST(3016.193588/8.0), + REAL_CONST(3026.078692/8.0), + REAL_CONST(3035.971875/8.0), + REAL_CONST(3045.873125/8.0), + REAL_CONST(3055.782428/8.0), + REAL_CONST(3065.699771/8.0), + REAL_CONST(3075.625140/8.0), + REAL_CONST(3085.558524/8.0), + REAL_CONST(3095.499909/8.0), + REAL_CONST(3105.449282/8.0), + REAL_CONST(3115.406631/8.0), + REAL_CONST(3125.371943/8.0), + REAL_CONST(3135.345204/8.0), + REAL_CONST(3145.326403/8.0), + REAL_CONST(3155.315526/8.0), + REAL_CONST(3165.312562/8.0), + REAL_CONST(3175.317497/8.0), + REAL_CONST(3185.330320/8.0), + REAL_CONST(3195.351017/8.0), + REAL_CONST(3205.379577/8.0), + REAL_CONST(3215.415987/8.0), + REAL_CONST(3225.460235/8.0), + REAL_CONST(3235.512308/8.0), + REAL_CONST(3245.572195/8.0), + REAL_CONST(3255.639884/8.0), + REAL_CONST(3265.715361/8.0), + REAL_CONST(3275.798616/8.0), + REAL_CONST(3285.889637/8.0), + REAL_CONST(3295.988410/8.0), + REAL_CONST(3306.094926/8.0), + REAL_CONST(3316.209171/8.0), + REAL_CONST(3326.331133/8.0), + REAL_CONST(3336.460802/8.0), + REAL_CONST(3346.598165/8.0), + REAL_CONST(3356.743211/8.0), + REAL_CONST(3366.895929/8.0), + REAL_CONST(3377.056305/8.0), + REAL_CONST(3387.224330/8.0), + REAL_CONST(3397.399991/8.0), + REAL_CONST(3407.583277/8.0), + REAL_CONST(3417.774177/8.0), + REAL_CONST(3427.972680/8.0), + REAL_CONST(3438.178773/8.0), + REAL_CONST(3448.392446/8.0), + REAL_CONST(3458.613687/8.0), + REAL_CONST(3468.842486/8.0), + REAL_CONST(3479.078831/8.0), + REAL_CONST(3489.322711/8.0), + REAL_CONST(3499.574115/8.0), + REAL_CONST(3509.833032/8.0), + REAL_CONST(3520.099451/8.0), + REAL_CONST(3530.373360/8.0), + REAL_CONST(3540.654750/8.0), + REAL_CONST(3550.943610/8.0), + REAL_CONST(3561.239927/8.0), + REAL_CONST(3571.543692/8.0), + REAL_CONST(3581.854894/8.0), + REAL_CONST(3592.173523/8.0), + REAL_CONST(3602.499566/8.0), + REAL_CONST(3612.833015/8.0), + REAL_CONST(3623.173857/8.0), + REAL_CONST(3633.522084/8.0), + REAL_CONST(3643.877683/8.0), + REAL_CONST(3654.240646/8.0), + REAL_CONST(3664.610960/8.0), + REAL_CONST(3674.988617/8.0), + REAL_CONST(3685.373604/8.0), + REAL_CONST(3695.765913/8.0), + REAL_CONST(3706.165533/8.0), + REAL_CONST(3716.572453/8.0), + REAL_CONST(3726.986664/8.0), + REAL_CONST(3737.408154/8.0), + REAL_CONST(3747.836915/8.0), + REAL_CONST(3758.272936/8.0), + REAL_CONST(3768.716206/8.0), + REAL_CONST(3779.166716/8.0), + REAL_CONST(3789.624455/8.0), + REAL_CONST(3800.089415/8.0), + REAL_CONST(3810.561584/8.0), + REAL_CONST(3821.040953/8.0), + REAL_CONST(3831.527512/8.0), + REAL_CONST(3842.021251/8.0), + REAL_CONST(3852.522160/8.0), + REAL_CONST(3863.030230/8.0), + REAL_CONST(3873.545451/8.0), + REAL_CONST(3884.067812/8.0), + REAL_CONST(3894.597305/8.0), + REAL_CONST(3905.133920/8.0), + REAL_CONST(3915.677647/8.0), + REAL_CONST(3926.228477/8.0), + REAL_CONST(3936.786399/8.0), + REAL_CONST(3947.351405/8.0), + REAL_CONST(3957.923485/8.0), + REAL_CONST(3968.502630/8.0), + REAL_CONST(3979.088830/8.0), + REAL_CONST(3989.682075/8.0), + REAL_CONST(4000.282357/8.0), + REAL_CONST(4010.889666/8.0), + REAL_CONST(4021.503992/8.0), + REAL_CONST(4032.125327/8.0), + REAL_CONST(4042.753661/8.0), + REAL_CONST(4053.388986/8.0), + REAL_CONST(4064.031291/8.0), + REAL_CONST(4074.680568/8.0), + REAL_CONST(4085.336807/8.0), + REAL_CONST(4096.000000/8.0), + REAL_CONST(4106.670137/8.0), + REAL_CONST(4117.347210/8.0), + REAL_CONST(4128.031209/8.0), + REAL_CONST(4138.722126/8.0), + REAL_CONST(4149.419951/8.0), + REAL_CONST(4160.124676/8.0), + REAL_CONST(4170.836292/8.0), + REAL_CONST(4181.554789/8.0), + REAL_CONST(4192.280159/8.0), + REAL_CONST(4203.012394/8.0), + REAL_CONST(4213.751484/8.0), + REAL_CONST(4224.497421/8.0), + REAL_CONST(4235.250196/8.0), + REAL_CONST(4246.009800/8.0), + REAL_CONST(4256.776225/8.0), + REAL_CONST(4267.549462/8.0), + REAL_CONST(4278.329502/8.0), + REAL_CONST(4289.116337/8.0), + REAL_CONST(4299.909959/8.0), + REAL_CONST(4310.710358/8.0), + REAL_CONST(4321.517527/8.0), + REAL_CONST(4332.331456/8.0), + REAL_CONST(4343.152138/8.0), + REAL_CONST(4353.979564/8.0), + REAL_CONST(4364.813725/8.0), + REAL_CONST(4375.654614/8.0), + REAL_CONST(4386.502221/8.0), + REAL_CONST(4397.356539/8.0), + REAL_CONST(4408.217559/8.0), + REAL_CONST(4419.085273/8.0), + REAL_CONST(4429.959673/8.0), + REAL_CONST(4440.840751/8.0), + REAL_CONST(4451.728498/8.0), + REAL_CONST(4462.622906/8.0), + REAL_CONST(4473.523967/8.0), + REAL_CONST(4484.431673/8.0), + REAL_CONST(4495.346016/8.0), + REAL_CONST(4506.266988/8.0), + REAL_CONST(4517.194581/8.0), + REAL_CONST(4528.128786/8.0), + REAL_CONST(4539.069597/8.0), + REAL_CONST(4550.017004/8.0), + REAL_CONST(4560.971000/8.0), + REAL_CONST(4571.931576/8.0), + REAL_CONST(4582.898726/8.0), + REAL_CONST(4593.872441/8.0), + REAL_CONST(4604.852714/8.0), + REAL_CONST(4615.839536/8.0), + REAL_CONST(4626.832899/8.0), + REAL_CONST(4637.832797/8.0), + REAL_CONST(4648.839221/8.0), + REAL_CONST(4659.852163/8.0), + REAL_CONST(4670.871616/8.0), + REAL_CONST(4681.897572/8.0), + REAL_CONST(4692.930024/8.0), + REAL_CONST(4703.968963/8.0), + REAL_CONST(4715.014383/8.0), + REAL_CONST(4726.066275/8.0), + REAL_CONST(4737.124632/8.0), + REAL_CONST(4748.189446/8.0), + REAL_CONST(4759.260711/8.0), + REAL_CONST(4770.338417/8.0), + REAL_CONST(4781.422559/8.0), + REAL_CONST(4792.513128/8.0), + REAL_CONST(4803.610117/8.0), + REAL_CONST(4814.713519/8.0), + REAL_CONST(4825.823326/8.0), + REAL_CONST(4836.939531/8.0), + REAL_CONST(4848.062126/8.0), + REAL_CONST(4859.191105/8.0), + REAL_CONST(4870.326459/8.0), + REAL_CONST(4881.468181/8.0), + REAL_CONST(4892.616265/8.0), + REAL_CONST(4903.770703/8.0), + REAL_CONST(4914.931488/8.0), + REAL_CONST(4926.098612/8.0), + REAL_CONST(4937.272069/8.0), + REAL_CONST(4948.451851/8.0), + REAL_CONST(4959.637951/8.0), + REAL_CONST(4970.830361/8.0), + REAL_CONST(4982.029076/8.0), + REAL_CONST(4993.234087/8.0), + REAL_CONST(5004.445388/8.0), + REAL_CONST(5015.662972/8.0), + REAL_CONST(5026.886831/8.0), + REAL_CONST(5038.116959/8.0), + REAL_CONST(5049.353348/8.0), + REAL_CONST(5060.595992/8.0), + REAL_CONST(5071.844883/8.0), + REAL_CONST(5083.100016/8.0), + REAL_CONST(5094.361382/8.0), + REAL_CONST(5105.628975/8.0), + REAL_CONST(5116.902788/8.0), + REAL_CONST(5128.182814/8.0), + REAL_CONST(5139.469046/8.0), + REAL_CONST(5150.761478/8.0), + REAL_CONST(5162.060103/8.0), + REAL_CONST(5173.364914/8.0), + REAL_CONST(5184.675904/8.0), + REAL_CONST(5195.993066/8.0), + REAL_CONST(5207.316394/8.0), + REAL_CONST(5218.645881/8.0), + REAL_CONST(5229.981521/8.0), + REAL_CONST(5241.323306/8.0), + REAL_CONST(5252.671230/8.0), + REAL_CONST(5264.025286/8.0), + REAL_CONST(5275.385468/8.0), + REAL_CONST(5286.751770/8.0), + REAL_CONST(5298.124183/8.0), + REAL_CONST(5309.502703/8.0), + REAL_CONST(5320.887323/8.0), + REAL_CONST(5332.278035/8.0), + REAL_CONST(5343.674833/8.0), + REAL_CONST(5355.077712/8.0), + REAL_CONST(5366.486664/8.0), + REAL_CONST(5377.901683/8.0), + REAL_CONST(5389.322762/8.0), + REAL_CONST(5400.749896/8.0), + REAL_CONST(5412.183077/8.0), + REAL_CONST(5423.622300/8.0), + REAL_CONST(5435.067557/8.0), + REAL_CONST(5446.518843/8.0), + REAL_CONST(5457.976152/8.0), + REAL_CONST(5469.439476/8.0), + REAL_CONST(5480.908810/8.0), + REAL_CONST(5492.384147/8.0), + REAL_CONST(5503.865481/8.0), + REAL_CONST(5515.352806/8.0), + REAL_CONST(5526.846116/8.0), + REAL_CONST(5538.345404/8.0), + REAL_CONST(5549.850664/8.0), + REAL_CONST(5561.361890/8.0), + REAL_CONST(5572.879076/8.0), + REAL_CONST(5584.402215/8.0), + REAL_CONST(5595.931301/8.0), + REAL_CONST(5607.466329/8.0), + REAL_CONST(5619.007292/8.0), + REAL_CONST(5630.554185/8.0), + REAL_CONST(5642.107000/8.0), + REAL_CONST(5653.665732/8.0), + REAL_CONST(5665.230375/8.0), + REAL_CONST(5676.800923/8.0), + REAL_CONST(5688.377370/8.0), + REAL_CONST(5699.959709/8.0), + REAL_CONST(5711.547936/8.0), + REAL_CONST(5723.142043/8.0), + REAL_CONST(5734.742025/8.0), + REAL_CONST(5746.347876/8.0), + REAL_CONST(5757.959590/8.0), + REAL_CONST(5769.577162/8.0), + REAL_CONST(5781.200584/8.0), + REAL_CONST(5792.829852/8.0), + REAL_CONST(5804.464959/8.0), + REAL_CONST(5816.105900/8.0), + REAL_CONST(5827.752668/8.0), + REAL_CONST(5839.405259/8.0), + REAL_CONST(5851.063665/8.0), + REAL_CONST(5862.727882/8.0), + REAL_CONST(5874.397904/8.0), + REAL_CONST(5886.073724/8.0), + REAL_CONST(5897.755337/8.0), + REAL_CONST(5909.442738/8.0), + REAL_CONST(5921.135920/8.0), + REAL_CONST(5932.834878/8.0), + REAL_CONST(5944.539606/8.0), + REAL_CONST(5956.250098/8.0), + REAL_CONST(5967.966350/8.0), + REAL_CONST(5979.688354/8.0), + REAL_CONST(5991.416106/8.0), + REAL_CONST(6003.149600/8.0), + REAL_CONST(6014.888830/8.0), + REAL_CONST(6026.633791/8.0), + REAL_CONST(6038.384476/8.0), + REAL_CONST(6050.140882/8.0), + REAL_CONST(6061.903001/8.0), + REAL_CONST(6073.670828/8.0), + REAL_CONST(6085.444359/8.0), + REAL_CONST(6097.223586/8.0), + REAL_CONST(6109.008506/8.0), + REAL_CONST(6120.799112/8.0), + REAL_CONST(6132.595399/8.0), + REAL_CONST(6144.397361/8.0), + REAL_CONST(6156.204993/8.0), + REAL_CONST(6168.018289/8.0), + REAL_CONST(6179.837245/8.0), + REAL_CONST(6191.661854/8.0), + REAL_CONST(6203.492112/8.0), + REAL_CONST(6215.328012/8.0), + REAL_CONST(6227.169550/8.0), + REAL_CONST(6239.016720/8.0), + REAL_CONST(6250.869517/8.0), + REAL_CONST(6262.727935/8.0), + REAL_CONST(6274.591969/8.0), + REAL_CONST(6286.461614/8.0), + REAL_CONST(6298.336865/8.0), + REAL_CONST(6310.217716/8.0), + REAL_CONST(6322.104162/8.0), + REAL_CONST(6333.996197/8.0), + REAL_CONST(6345.893817/8.0), + REAL_CONST(6357.797016/8.0), + REAL_CONST(6369.705789/8.0), + REAL_CONST(6381.620131/8.0), + REAL_CONST(6393.540036/8.0), + REAL_CONST(6405.465500/8.0), + REAL_CONST(6417.396517/8.0), + REAL_CONST(6429.333082/8.0), + REAL_CONST(6441.275190/8.0), + REAL_CONST(6453.222835/8.0), + REAL_CONST(6465.176013/8.0), + REAL_CONST(6477.134719/8.0), + REAL_CONST(6489.098947/8.0), + REAL_CONST(6501.068692/8.0), + REAL_CONST(6513.043949/8.0), + REAL_CONST(6525.024714/8.0), + REAL_CONST(6537.010981/8.0), + REAL_CONST(6549.002744/8.0), + REAL_CONST(6561.000000/8.0), + REAL_CONST(6573.002743/8.0), + REAL_CONST(6585.010967/8.0), + REAL_CONST(6597.024669/8.0), + REAL_CONST(6609.043842/8.0), + REAL_CONST(6621.068483/8.0), + REAL_CONST(6633.098585/8.0), + REAL_CONST(6645.134145/8.0), + REAL_CONST(6657.175157/8.0), + REAL_CONST(6669.221616/8.0), + REAL_CONST(6681.273517/8.0), + REAL_CONST(6693.330855/8.0), + REAL_CONST(6705.393626/8.0), + REAL_CONST(6717.461825/8.0), + REAL_CONST(6729.535446/8.0), + REAL_CONST(6741.614485/8.0), + REAL_CONST(6753.698937/8.0), + REAL_CONST(6765.788798/8.0), + REAL_CONST(6777.884061/8.0), + REAL_CONST(6789.984723/8.0), + REAL_CONST(6802.090779/8.0), + REAL_CONST(6814.202223/8.0), + REAL_CONST(6826.319052/8.0), + REAL_CONST(6838.441259/8.0), + REAL_CONST(6850.568842/8.0), + REAL_CONST(6862.701794/8.0), + REAL_CONST(6874.840111/8.0), + REAL_CONST(6886.983788/8.0), + REAL_CONST(6899.132821/8.0), + REAL_CONST(6911.287205/8.0), + REAL_CONST(6923.446935/8.0), + REAL_CONST(6935.612006/8.0), + REAL_CONST(6947.782414/8.0), + REAL_CONST(6959.958154/8.0), + REAL_CONST(6972.139221/8.0), + REAL_CONST(6984.325611/8.0), + REAL_CONST(6996.517319/8.0), + REAL_CONST(7008.714341/8.0), + REAL_CONST(7020.916672/8.0), + REAL_CONST(7033.124306/8.0), + REAL_CONST(7045.337241/8.0), + REAL_CONST(7057.555470/8.0), + REAL_CONST(7069.778990/8.0), + REAL_CONST(7082.007795/8.0), + REAL_CONST(7094.241882/8.0), + REAL_CONST(7106.481246/8.0), + REAL_CONST(7118.725881/8.0), + REAL_CONST(7130.975785/8.0), + REAL_CONST(7143.230951/8.0), + REAL_CONST(7155.491376/8.0), + REAL_CONST(7167.757056/8.0), + REAL_CONST(7180.027984/8.0), + REAL_CONST(7192.304158/8.0), + REAL_CONST(7204.585573/8.0), + REAL_CONST(7216.872224/8.0), + REAL_CONST(7229.164106/8.0), + REAL_CONST(7241.461216/8.0), + REAL_CONST(7253.763548/8.0), + REAL_CONST(7266.071099/8.0), + REAL_CONST(7278.383864/8.0), + REAL_CONST(7290.701838/8.0), + REAL_CONST(7303.025018/8.0), + REAL_CONST(7315.353398/8.0), + REAL_CONST(7327.686975/8.0), + REAL_CONST(7340.025743/8.0), + REAL_CONST(7352.369699/8.0), + REAL_CONST(7364.718839/8.0), + REAL_CONST(7377.073157/8.0), + REAL_CONST(7389.432650/8.0), + REAL_CONST(7401.797314/8.0), + REAL_CONST(7414.167143/8.0), + REAL_CONST(7426.542134/8.0), + REAL_CONST(7438.922282/8.0), + REAL_CONST(7451.307583/8.0), + REAL_CONST(7463.698033/8.0), + REAL_CONST(7476.093627/8.0), + REAL_CONST(7488.494362/8.0), + REAL_CONST(7500.900233/8.0), + REAL_CONST(7513.311235/8.0), + REAL_CONST(7525.727365/8.0), + REAL_CONST(7538.148618/8.0), + REAL_CONST(7550.574989/8.0), + REAL_CONST(7563.006476/8.0), + REAL_CONST(7575.443073/8.0), + REAL_CONST(7587.884777/8.0), + REAL_CONST(7600.331583/8.0), + REAL_CONST(7612.783487/8.0), + REAL_CONST(7625.240485/8.0), + REAL_CONST(7637.702572/8.0), + REAL_CONST(7650.169745/8.0), + REAL_CONST(7662.641999/8.0), + REAL_CONST(7675.119331/8.0), + REAL_CONST(7687.601736/8.0), + REAL_CONST(7700.089209/8.0), + REAL_CONST(7712.581748/8.0), + REAL_CONST(7725.079347/8.0), + REAL_CONST(7737.582003/8.0), + REAL_CONST(7750.089712/8.0), + REAL_CONST(7762.602469/8.0), + REAL_CONST(7775.120271/8.0), + REAL_CONST(7787.643113/8.0), + REAL_CONST(7800.170991/8.0), + REAL_CONST(7812.703902/8.0), + REAL_CONST(7825.241841/8.0), + REAL_CONST(7837.784804/8.0), + REAL_CONST(7850.332787/8.0), + REAL_CONST(7862.885787/8.0), + REAL_CONST(7875.443798/8.0), + REAL_CONST(7888.006818/8.0), + REAL_CONST(7900.574842/8.0), + REAL_CONST(7913.147866/8.0), + REAL_CONST(7925.725887/8.0), + REAL_CONST(7938.308900/8.0), + REAL_CONST(7950.896901/8.0), + REAL_CONST(7963.489886/8.0), + REAL_CONST(7976.087852/8.0), + REAL_CONST(7988.690794/8.0), + REAL_CONST(8001.298709/8.0), + REAL_CONST(8013.911593/8.0), + REAL_CONST(8026.529441/8.0), + REAL_CONST(8039.152250/8.0), + REAL_CONST(8051.780016/8.0), + REAL_CONST(8064.412735/8.0), + REAL_CONST(8077.050403/8.0), + REAL_CONST(8089.693017/8.0), + REAL_CONST(8102.340572/8.0), + REAL_CONST(8114.993064/8.0), + REAL_CONST(8127.650490/8.0), + REAL_CONST(8140.312846/8.0), + REAL_CONST(8152.980128/8.0), + REAL_CONST(8165.652333/8.0), + REAL_CONST(8178.329455/8.0), + REAL_CONST(8191.011492/8.0), + REAL_CONST(8203.698440/8.0), + REAL_CONST(8216.390295/8.0), + REAL_CONST(8229.087053/8.0), + REAL_CONST(8241.788711/8.0), + REAL_CONST(8254.495264/8.0), + REAL_CONST(8267.206709/8.0), + REAL_CONST(8279.923042/8.0), + REAL_CONST(8292.644259/8.0), + REAL_CONST(8305.370357/8.0), + REAL_CONST(8318.101332/8.0), + REAL_CONST(8330.837180/8.0), + REAL_CONST(8343.577897/8.0), + REAL_CONST(8356.323480/8.0), + REAL_CONST(8369.073925/8.0), + REAL_CONST(8381.829228/8.0), + REAL_CONST(8394.589385/8.0), + REAL_CONST(8407.354394/8.0), + REAL_CONST(8420.124249/8.0), + REAL_CONST(8432.898948/8.0), + REAL_CONST(8445.678487/8.0), + REAL_CONST(8458.462862/8.0), + REAL_CONST(8471.252070/8.0), + REAL_CONST(8484.046106/8.0), + REAL_CONST(8496.844968/8.0), + REAL_CONST(8509.648651/8.0), + REAL_CONST(8522.457152/8.0), + REAL_CONST(8535.270468/8.0), + REAL_CONST(8548.088594/8.0), + REAL_CONST(8560.911527/8.0), + REAL_CONST(8573.739264/8.0), + REAL_CONST(8586.571801/8.0), + REAL_CONST(8599.409134/8.0), + REAL_CONST(8612.251259/8.0), + REAL_CONST(8625.098174/8.0), + REAL_CONST(8637.949875/8.0), + REAL_CONST(8650.806357/8.0), + REAL_CONST(8663.667618/8.0), + REAL_CONST(8676.533654/8.0), + REAL_CONST(8689.404461/8.0), + REAL_CONST(8702.280037/8.0), + REAL_CONST(8715.160376/8.0), + REAL_CONST(8728.045476/8.0), + REAL_CONST(8740.935334/8.0), + REAL_CONST(8753.829945/8.0), + REAL_CONST(8766.729307/8.0), + REAL_CONST(8779.633415/8.0), + REAL_CONST(8792.542267/8.0), + REAL_CONST(8805.455858/8.0), + REAL_CONST(8818.374186/8.0), + REAL_CONST(8831.297247/8.0), + REAL_CONST(8844.225037/8.0), + REAL_CONST(8857.157553/8.0), + REAL_CONST(8870.094791/8.0), + REAL_CONST(8883.036748/8.0), + REAL_CONST(8895.983422/8.0), + REAL_CONST(8908.934807/8.0), + REAL_CONST(8921.890901/8.0), + REAL_CONST(8934.851700/8.0), + REAL_CONST(8947.817201/8.0), + REAL_CONST(8960.787401/8.0), + REAL_CONST(8973.762296/8.0), + REAL_CONST(8986.741882/8.0), + REAL_CONST(8999.726157/8.0), + REAL_CONST(9012.715117/8.0), + REAL_CONST(9025.708758/8.0), + REAL_CONST(9038.707077/8.0), + REAL_CONST(9051.710072/8.0), + REAL_CONST(9064.717737/8.0), + REAL_CONST(9077.730071/8.0), + REAL_CONST(9090.747070/8.0), + REAL_CONST(9103.768730/8.0), + REAL_CONST(9116.795048/8.0), + REAL_CONST(9129.826021/8.0), + REAL_CONST(9142.861645/8.0), + REAL_CONST(9155.901917/8.0), + REAL_CONST(9168.946835/8.0), + REAL_CONST(9181.996393/8.0), + REAL_CONST(9195.050590/8.0), + REAL_CONST(9208.109422/8.0), + REAL_CONST(9221.172885/8.0), + REAL_CONST(9234.240977/8.0), + REAL_CONST(9247.313694/8.0), + REAL_CONST(9260.391032/8.0), + REAL_CONST(9273.472989/8.0), + REAL_CONST(9286.559562/8.0), + REAL_CONST(9299.650746/8.0), + REAL_CONST(9312.746539/8.0), + REAL_CONST(9325.846938/8.0), + REAL_CONST(9338.951939/8.0), + REAL_CONST(9352.061539/8.0), + REAL_CONST(9365.175734/8.0), + REAL_CONST(9378.294523/8.0), + REAL_CONST(9391.417901/8.0), + REAL_CONST(9404.545865/8.0), + REAL_CONST(9417.678412/8.0), + REAL_CONST(9430.815538/8.0), + REAL_CONST(9443.957242/8.0), + REAL_CONST(9457.103518/8.0), + REAL_CONST(9470.254365/8.0), + REAL_CONST(9483.409779/8.0), + REAL_CONST(9496.569757/8.0), + REAL_CONST(9509.734296/8.0), + REAL_CONST(9522.903392/8.0), + REAL_CONST(9536.077043/8.0), + REAL_CONST(9549.255245/8.0), + REAL_CONST(9562.437995/8.0), + REAL_CONST(9575.625290/8.0), + REAL_CONST(9588.817127/8.0), + REAL_CONST(9602.013503/8.0), + REAL_CONST(9615.214414/8.0), + REAL_CONST(9628.419858/8.0), + REAL_CONST(9641.629831/8.0), + REAL_CONST(9654.844330/8.0), + REAL_CONST(9668.063353/8.0), + REAL_CONST(9681.286896/8.0), + REAL_CONST(9694.514956/8.0), + REAL_CONST(9707.747529/8.0), + REAL_CONST(9720.984614/8.0), + REAL_CONST(9734.226206/8.0), + REAL_CONST(9747.472303/8.0), + REAL_CONST(9760.722902/8.0), + REAL_CONST(9773.977999/8.0), + REAL_CONST(9787.237592/8.0), + REAL_CONST(9800.501677/8.0), + REAL_CONST(9813.770252/8.0), + REAL_CONST(9827.043313/8.0), + REAL_CONST(9840.320858/8.0), + REAL_CONST(9853.602883/8.0), + REAL_CONST(9866.889385/8.0), + REAL_CONST(9880.180361/8.0), + REAL_CONST(9893.475809/8.0), + REAL_CONST(9906.775725/8.0), + REAL_CONST(9920.080107/8.0), + REAL_CONST(9933.388951/8.0), + REAL_CONST(9946.702254/8.0), + REAL_CONST(9960.020013/8.0), + REAL_CONST(9973.342226/8.0), + REAL_CONST(9986.668889/8.0), + REAL_CONST(10000.000000/8.0), + REAL_CONST(10013.335555/8.0), + REAL_CONST(10026.675552/8.0), + REAL_CONST(10040.019987/8.0), + REAL_CONST(10053.368857/8.0), + REAL_CONST(10066.722161/8.0), + REAL_CONST(10080.079894/8.0), + REAL_CONST(10093.442053/8.0), + REAL_CONST(10106.808637/8.0), + REAL_CONST(10120.179641/8.0), + REAL_CONST(10133.555064/8.0), + REAL_CONST(10146.934901/8.0), + REAL_CONST(10160.319151/8.0), + REAL_CONST(10173.707810/8.0), + REAL_CONST(10187.100875/8.0), + REAL_CONST(10200.498344/8.0), + REAL_CONST(10213.900213/8.0), + REAL_CONST(10227.306480/8.0), + REAL_CONST(10240.717141/8.0), + REAL_CONST(10254.132195/8.0), + REAL_CONST(10267.551638/8.0), + REAL_CONST(10280.975466/8.0), + REAL_CONST(10294.403678/8.0), + REAL_CONST(10307.836271/8.0), + REAL_CONST(10321.273241/8.0), + REAL_CONST(10334.714585/8.0), + REAL_CONST(10348.160302/8.0), + REAL_CONST(10361.610388/8.0), + REAL_CONST(10375.064840/8.0), + REAL_CONST(10388.523655/8.0), + REAL_CONST(10401.986831/8.0), + REAL_CONST(10415.454364/8.0), + REAL_CONST(10428.926253/8.0), + REAL_CONST(10442.402493/8.0), + REAL_CONST(10455.883083/8.0), + REAL_CONST(10469.368019/8.0), + REAL_CONST(10482.857299/8.0), + REAL_CONST(10496.350920/8.0), + REAL_CONST(10509.848879/8.0), + REAL_CONST(10523.351173/8.0), + REAL_CONST(10536.857800/8.0), + REAL_CONST(10550.368756/8.0), + REAL_CONST(10563.884040/8.0), + REAL_CONST(10577.403647/8.0), + REAL_CONST(10590.927576/8.0), + REAL_CONST(10604.455824/8.0), + REAL_CONST(10617.988388/8.0), + REAL_CONST(10631.525265/8.0), + REAL_CONST(10645.066452/8.0), + REAL_CONST(10658.611947/8.0), + REAL_CONST(10672.161747/8.0), + REAL_CONST(10685.715849/8.0), + REAL_CONST(10699.274250/8.0), + REAL_CONST(10712.836948/8.0), + REAL_CONST(10726.403941/8.0), + REAL_CONST(10739.975224/8.0), + REAL_CONST(10753.550797/8.0), + REAL_CONST(10767.130655/8.0), + REAL_CONST(10780.714796/8.0), + REAL_CONST(10794.303218/8.0), + REAL_CONST(10807.895918/8.0), + REAL_CONST(10821.492892/8.0), + REAL_CONST(10835.094140/8.0), + REAL_CONST(10848.699656/8.0), + REAL_CONST(10862.309440/8.0), + REAL_CONST(10875.923489/8.0), + REAL_CONST(10889.541799/8.0), + REAL_CONST(10903.164368/8.0), + REAL_CONST(10916.791193/8.0), + REAL_CONST(10930.422273/8.0), + REAL_CONST(10944.057603/8.0), + REAL_CONST(10957.697182/8.0), + REAL_CONST(10971.341006/8.0), + REAL_CONST(10984.989074/8.0), + REAL_CONST(10998.641382/8.0), + REAL_CONST(11012.297928/8.0), + REAL_CONST(11025.958709/8.0), + REAL_CONST(11039.623723/8.0), + REAL_CONST(11053.292967/8.0), + REAL_CONST(11066.966438/8.0), + REAL_CONST(11080.644134/8.0), + REAL_CONST(11094.326053/8.0), + REAL_CONST(11108.012190/8.0), + REAL_CONST(11121.702545/8.0), + REAL_CONST(11135.397114/8.0), + REAL_CONST(11149.095895/8.0), + REAL_CONST(11162.798885/8.0), + REAL_CONST(11176.506082/8.0), + REAL_CONST(11190.217483/8.0), + REAL_CONST(11203.933085/8.0), + REAL_CONST(11217.652886/8.0), + REAL_CONST(11231.376883/8.0), + REAL_CONST(11245.105074/8.0), + REAL_CONST(11258.837456/8.0), + REAL_CONST(11272.574027/8.0), + REAL_CONST(11286.314784/8.0), + REAL_CONST(11300.059724/8.0), + REAL_CONST(11313.808846/8.0), + REAL_CONST(11327.562145/8.0), + REAL_CONST(11341.319621/8.0), + REAL_CONST(11355.081270/8.0), + REAL_CONST(11368.847090/8.0), + REAL_CONST(11382.617078/8.0), + REAL_CONST(11396.391232/8.0), + REAL_CONST(11410.169549/8.0), + REAL_CONST(11423.952027/8.0), + REAL_CONST(11437.738663/8.0), + REAL_CONST(11451.529455/8.0), + REAL_CONST(11465.324400/8.0), + REAL_CONST(11479.123496/8.0), + REAL_CONST(11492.926740/8.0), + REAL_CONST(11506.734130/8.0), + REAL_CONST(11520.545663/8.0), + REAL_CONST(11534.361337/8.0), + REAL_CONST(11548.181150/8.0), + REAL_CONST(11562.005097/8.0), + REAL_CONST(11575.833179/8.0), + REAL_CONST(11589.665391/8.0), + REAL_CONST(11603.501732/8.0), + REAL_CONST(11617.342198/8.0), + REAL_CONST(11631.186788/8.0), + REAL_CONST(11645.035499/8.0), + REAL_CONST(11658.888329/8.0), + REAL_CONST(11672.745275/8.0), + REAL_CONST(11686.606334/8.0), + REAL_CONST(11700.471505/8.0), + REAL_CONST(11714.340784/8.0), + REAL_CONST(11728.214170/8.0), + REAL_CONST(11742.091660/8.0), + REAL_CONST(11755.973251/8.0), + REAL_CONST(11769.858942/8.0), + REAL_CONST(11783.748729/8.0), + REAL_CONST(11797.642610/8.0), + REAL_CONST(11811.540583/8.0), + REAL_CONST(11825.442646/8.0), + REAL_CONST(11839.348796/8.0), + REAL_CONST(11853.259030/8.0), + REAL_CONST(11867.173347/8.0), + REAL_CONST(11881.091743/8.0), + REAL_CONST(11895.014217/8.0), + REAL_CONST(11908.940766/8.0), + REAL_CONST(11922.871387/8.0), + REAL_CONST(11936.806079/8.0), + REAL_CONST(11950.744839/8.0), + REAL_CONST(11964.687665/8.0), + REAL_CONST(11978.634553/8.0), + REAL_CONST(11992.585503/8.0), + REAL_CONST(12006.540511/8.0), + REAL_CONST(12020.499575/8.0), + REAL_CONST(12034.462692/8.0), + REAL_CONST(12048.429861/8.0), + REAL_CONST(12062.401080/8.0), + REAL_CONST(12076.376345/8.0), + REAL_CONST(12090.355654/8.0), + REAL_CONST(12104.339005/8.0), + REAL_CONST(12118.326396/8.0), + REAL_CONST(12132.317824/8.0), + REAL_CONST(12146.313287/8.0), + REAL_CONST(12160.312783/8.0), + REAL_CONST(12174.316310/8.0), + REAL_CONST(12188.323864/8.0), + REAL_CONST(12202.335444/8.0), + REAL_CONST(12216.351048/8.0), + REAL_CONST(12230.370673/8.0), + REAL_CONST(12244.394316/8.0), + REAL_CONST(12258.421976/8.0), + REAL_CONST(12272.453650/8.0), + REAL_CONST(12286.489336/8.0), + REAL_CONST(12300.529032/8.0), + REAL_CONST(12314.572735/8.0), + REAL_CONST(12328.620443/8.0), + REAL_CONST(12342.672154/8.0), + REAL_CONST(12356.727866/8.0), + REAL_CONST(12370.787575/8.0), + REAL_CONST(12384.851281/8.0), + REAL_CONST(12398.918980/8.0), + REAL_CONST(12412.990671/8.0), + REAL_CONST(12427.066351/8.0), + REAL_CONST(12441.146017/8.0), + REAL_CONST(12455.229668/8.0), + REAL_CONST(12469.317302/8.0), + REAL_CONST(12483.408916/8.0), + REAL_CONST(12497.504507/8.0), + REAL_CONST(12511.604075/8.0), + REAL_CONST(12525.707615/8.0), + REAL_CONST(12539.815127/8.0), + REAL_CONST(12553.926608/8.0), + REAL_CONST(12568.042055/8.0), + REAL_CONST(12582.161467/8.0), + REAL_CONST(12596.284841/8.0), + REAL_CONST(12610.412175/8.0), + REAL_CONST(12624.543467/8.0), + REAL_CONST(12638.678715/8.0), + REAL_CONST(12652.817915/8.0), + REAL_CONST(12666.961067/8.0), + REAL_CONST(12681.108168/8.0), + REAL_CONST(12695.259216/8.0), + REAL_CONST(12709.414208/8.0), + REAL_CONST(12723.573143/8.0), + REAL_CONST(12737.736018/8.0), + REAL_CONST(12751.902830/8.0), + REAL_CONST(12766.073579/8.0), + REAL_CONST(12780.248261/8.0), + REAL_CONST(12794.426874/8.0), + REAL_CONST(12808.609417/8.0), + REAL_CONST(12822.795886/8.0), + REAL_CONST(12836.986281/8.0), + REAL_CONST(12851.180598/8.0), + REAL_CONST(12865.378836/8.0), + REAL_CONST(12879.580992/8.0), + REAL_CONST(12893.787065/8.0), + REAL_CONST(12907.997051/8.0), + REAL_CONST(12922.210950/8.0), + REAL_CONST(12936.428758/8.0), + REAL_CONST(12950.650474/8.0), + REAL_CONST(12964.876095/8.0), + REAL_CONST(12979.105619/8.0), + REAL_CONST(12993.339045/8.0), + REAL_CONST(13007.576370/8.0), + REAL_CONST(13021.817591/8.0), + REAL_CONST(13036.062708/8.0), + REAL_CONST(13050.311717/8.0), + REAL_CONST(13064.564616/8.0), + REAL_CONST(13078.821404/8.0), + REAL_CONST(13093.082079/8.0), + REAL_CONST(13107.346637/8.0), + REAL_CONST(13121.615077/8.0), + REAL_CONST(13135.887398/8.0), + REAL_CONST(13150.163596/8.0), + REAL_CONST(13164.443670/8.0), + REAL_CONST(13178.727617/8.0), + REAL_CONST(13193.015436/8.0), + REAL_CONST(13207.307125/8.0), + REAL_CONST(13221.602680/8.0), + REAL_CONST(13235.902101/8.0), + REAL_CONST(13250.205385/8.0), + REAL_CONST(13264.512531/8.0), + REAL_CONST(13278.823535/8.0), + REAL_CONST(13293.138396/8.0), + REAL_CONST(13307.457112/8.0), + REAL_CONST(13321.779680/8.0), + REAL_CONST(13336.106100/8.0), + REAL_CONST(13350.436367/8.0), + REAL_CONST(13364.770482/8.0), + REAL_CONST(13379.108441/8.0), + REAL_CONST(13393.450242/8.0), + REAL_CONST(13407.795884/8.0), + REAL_CONST(13422.145364/8.0), + REAL_CONST(13436.498680/8.0), + REAL_CONST(13450.855830/8.0), + REAL_CONST(13465.216813/8.0), + REAL_CONST(13479.581625/8.0), + REAL_CONST(13493.950266/8.0), + REAL_CONST(13508.322733/8.0), + REAL_CONST(13522.699024/8.0), + REAL_CONST(13537.079136/8.0), + REAL_CONST(13551.463069/8.0), + REAL_CONST(13565.850819/8.0), + REAL_CONST(13580.242386/8.0), + REAL_CONST(13594.637766/8.0), + REAL_CONST(13609.036958/8.0), + REAL_CONST(13623.439960/8.0), + REAL_CONST(13637.846770/8.0), + REAL_CONST(13652.257385/8.0), + REAL_CONST(13666.671804/8.0), + REAL_CONST(13681.090025/8.0), + REAL_CONST(13695.512046/8.0), + REAL_CONST(13709.937865/8.0), + REAL_CONST(13724.367479/8.0), + REAL_CONST(13738.800887/8.0), + REAL_CONST(13753.238087/8.0), + REAL_CONST(13767.679077/8.0), + REAL_CONST(13782.123854/8.0), + REAL_CONST(13796.572417/8.0), + REAL_CONST(13811.024765/8.0), + REAL_CONST(13825.480893/8.0), + REAL_CONST(13839.940802/8.0), + REAL_CONST(13854.404489/8.0), + REAL_CONST(13868.871952/8.0), + REAL_CONST(13883.343188/8.0), + REAL_CONST(13897.818197/8.0), + REAL_CONST(13912.296976/8.0), + REAL_CONST(13926.779522/8.0), + REAL_CONST(13941.265835/8.0), + REAL_CONST(13955.755912/8.0), + REAL_CONST(13970.249751/8.0), + REAL_CONST(13984.747351/8.0), + REAL_CONST(13999.248708/8.0), + REAL_CONST(14013.753822/8.0), + REAL_CONST(14028.262691/8.0), + REAL_CONST(14042.775312/8.0), + REAL_CONST(14057.291683/8.0), + REAL_CONST(14071.811803/8.0), + REAL_CONST(14086.335669/8.0), + REAL_CONST(14100.863281/8.0), + REAL_CONST(14115.394635/8.0), + REAL_CONST(14129.929730/8.0), + REAL_CONST(14144.468564/8.0), + REAL_CONST(14159.011135/8.0), + REAL_CONST(14173.557441/8.0), + REAL_CONST(14188.107480/8.0), + REAL_CONST(14202.661250/8.0), + REAL_CONST(14217.218750/8.0), + REAL_CONST(14231.779977/8.0), + REAL_CONST(14246.344930/8.0), + REAL_CONST(14260.913606/8.0), + REAL_CONST(14275.486004/8.0), + REAL_CONST(14290.062122/8.0), + REAL_CONST(14304.641958/8.0), + REAL_CONST(14319.225510/8.0), + REAL_CONST(14333.812776/8.0), + REAL_CONST(14348.403754/8.0), + REAL_CONST(14362.998443/8.0), + REAL_CONST(14377.596840/8.0), + REAL_CONST(14392.198943/8.0), + REAL_CONST(14406.804752/8.0), + REAL_CONST(14421.414263/8.0), + REAL_CONST(14436.027475/8.0), + REAL_CONST(14450.644386/8.0), + REAL_CONST(14465.264995/8.0), + REAL_CONST(14479.889298/8.0), + REAL_CONST(14494.517296/8.0), + REAL_CONST(14509.148984/8.0), + REAL_CONST(14523.784363/8.0), + REAL_CONST(14538.423430/8.0), + REAL_CONST(14553.066182/8.0), + REAL_CONST(14567.712619/8.0), + REAL_CONST(14582.362738/8.0), + REAL_CONST(14597.016537/8.0), + REAL_CONST(14611.674015/8.0), + REAL_CONST(14626.335170/8.0), + REAL_CONST(14641.000000/8.0), + REAL_CONST(14655.668503/8.0), + REAL_CONST(14670.340677/8.0), + REAL_CONST(14685.016521/8.0), + REAL_CONST(14699.696032/8.0), + REAL_CONST(14714.379209/8.0), + REAL_CONST(14729.066050/8.0), + REAL_CONST(14743.756553/8.0), + REAL_CONST(14758.450716/8.0), + REAL_CONST(14773.148537/8.0), + REAL_CONST(14787.850016/8.0), + REAL_CONST(14802.555149/8.0), + REAL_CONST(14817.263935/8.0), + REAL_CONST(14831.976372/8.0), + REAL_CONST(14846.692459/8.0), + REAL_CONST(14861.412193/8.0), + REAL_CONST(14876.135573/8.0), + REAL_CONST(14890.862597/8.0), + REAL_CONST(14905.593263/8.0), + REAL_CONST(14920.327569/8.0), + REAL_CONST(14935.065514/8.0), + REAL_CONST(14949.807096/8.0), + REAL_CONST(14964.552313/8.0), + REAL_CONST(14979.301163/8.0), + REAL_CONST(14994.053644/8.0), + REAL_CONST(15008.809755/8.0), + REAL_CONST(15023.569493/8.0), + REAL_CONST(15038.332858/8.0), + REAL_CONST(15053.099847/8.0), + REAL_CONST(15067.870458/8.0), + REAL_CONST(15082.644690/8.0), + REAL_CONST(15097.422541/8.0), + REAL_CONST(15112.204010/8.0), + REAL_CONST(15126.989093/8.0), + REAL_CONST(15141.777790/8.0), + REAL_CONST(15156.570099/8.0), + REAL_CONST(15171.366018/8.0), + REAL_CONST(15186.165546/8.0), + REAL_CONST(15200.968679/8.0), + REAL_CONST(15215.775418/8.0), + REAL_CONST(15230.585760/8.0), + REAL_CONST(15245.399703/8.0), + REAL_CONST(15260.217246/8.0), + REAL_CONST(15275.038386/8.0), + REAL_CONST(15289.863123/8.0), + REAL_CONST(15304.691453/8.0), + REAL_CONST(15319.523377/8.0), + REAL_CONST(15334.358891/8.0), + REAL_CONST(15349.197994/8.0), + REAL_CONST(15364.040685/8.0), + REAL_CONST(15378.886961/8.0), + REAL_CONST(15393.736821/8.0), + REAL_CONST(15408.590264/8.0), + REAL_CONST(15423.447287/8.0), + REAL_CONST(15438.307888/8.0), + REAL_CONST(15453.172066/8.0), + REAL_CONST(15468.039820/8.0), + REAL_CONST(15482.911148/8.0), + REAL_CONST(15497.786047/8.0), + REAL_CONST(15512.664516/8.0), + REAL_CONST(15527.546554/8.0), + REAL_CONST(15542.432158/8.0), + REAL_CONST(15557.321327/8.0), + REAL_CONST(15572.214060/8.0), + REAL_CONST(15587.110354/8.0), + REAL_CONST(15602.010208/8.0), + REAL_CONST(15616.913620/8.0), + REAL_CONST(15631.820589/8.0), + REAL_CONST(15646.731113/8.0), + REAL_CONST(15661.645189/8.0), + REAL_CONST(15676.562817/8.0), + REAL_CONST(15691.483995/8.0), + REAL_CONST(15706.408720/8.0), + REAL_CONST(15721.336993/8.0), + REAL_CONST(15736.268809/8.0), + REAL_CONST(15751.204169/8.0), + REAL_CONST(15766.143070/8.0), + REAL_CONST(15781.085510/8.0), + REAL_CONST(15796.031489/8.0), + REAL_CONST(15810.981003/8.0), + REAL_CONST(15825.934053/8.0), + REAL_CONST(15840.890635/8.0), + REAL_CONST(15855.850748/8.0), + REAL_CONST(15870.814391/8.0), + REAL_CONST(15885.781562/8.0), + REAL_CONST(15900.752259/8.0), + REAL_CONST(15915.726481/8.0), + REAL_CONST(15930.704226/8.0), + REAL_CONST(15945.685492/8.0), + REAL_CONST(15960.670278/8.0), + REAL_CONST(15975.658581/8.0), + REAL_CONST(15990.650401/8.0), + REAL_CONST(16005.645736/8.0), + REAL_CONST(16020.644583/8.0), + REAL_CONST(16035.646942/8.0), + REAL_CONST(16050.652811/8.0), + REAL_CONST(16065.662188/8.0), + REAL_CONST(16080.675071/8.0), + REAL_CONST(16095.691459/8.0), + REAL_CONST(16110.711350/8.0), + REAL_CONST(16125.734743/8.0), + REAL_CONST(16140.761636/8.0), + REAL_CONST(16155.792027/8.0), + REAL_CONST(16170.825914/8.0), + REAL_CONST(16185.863297/8.0), + REAL_CONST(16200.904173/8.0), + REAL_CONST(16215.948541/8.0), + REAL_CONST(16230.996399/8.0), + REAL_CONST(16246.047746/8.0), + REAL_CONST(16261.102579/8.0), + REAL_CONST(16276.160898/8.0), + REAL_CONST(16291.222700/8.0), + REAL_CONST(16306.287985/8.0), + REAL_CONST(16321.356750/8.0), + REAL_CONST(16336.428994/8.0), + REAL_CONST(16351.504716/8.0), + REAL_CONST(16366.583913/8.0), + REAL_CONST(16381.666584/8.0), + REAL_CONST(16396.752727/8.0), + REAL_CONST(16411.842341/8.0), + REAL_CONST(16426.935425/8.0), + REAL_CONST(16442.031976/8.0), + REAL_CONST(16457.131994/8.0), + REAL_CONST(16472.235476/8.0), + REAL_CONST(16487.342421/8.0), + REAL_CONST(16502.452827/8.0), + REAL_CONST(16517.566693/8.0), + REAL_CONST(16532.684017/8.0), + REAL_CONST(16547.804797/8.0), + REAL_CONST(16562.929033/8.0), + REAL_CONST(16578.056722/8.0), + REAL_CONST(16593.187863/8.0), + REAL_CONST(16608.322454/8.0), + REAL_CONST(16623.460494/8.0), + REAL_CONST(16638.601981/8.0), + REAL_CONST(16653.746913/8.0), + REAL_CONST(16668.895290/8.0), + REAL_CONST(16684.047109/8.0), + REAL_CONST(16699.202368/8.0), + REAL_CONST(16714.361068/8.0), + REAL_CONST(16729.523204/8.0), + REAL_CONST(16744.688777/8.0), + REAL_CONST(16759.857785/8.0), + REAL_CONST(16775.030226/8.0), + REAL_CONST(16790.206098/8.0), + REAL_CONST(16805.385400/8.0), + REAL_CONST(16820.568131/8.0), + REAL_CONST(16835.754288/8.0), + REAL_CONST(16850.943871/8.0), + REAL_CONST(16866.136877/8.0), + REAL_CONST(16881.333306/8.0), + REAL_CONST(16896.533156/8.0), + REAL_CONST(16911.736424/8.0), + REAL_CONST(16926.943110/8.0), + REAL_CONST(16942.153213/8.0), + REAL_CONST(16957.366730/8.0), + REAL_CONST(16972.583659/8.0), + REAL_CONST(16987.804001/8.0), + REAL_CONST(17003.027752/8.0), + REAL_CONST(17018.254912/8.0), + REAL_CONST(17033.485479/8.0), + REAL_CONST(17048.719451/8.0), + REAL_CONST(17063.956826/8.0), + REAL_CONST(17079.197605/8.0), + REAL_CONST(17094.441784/8.0), + REAL_CONST(17109.689362/8.0), + REAL_CONST(17124.940338/8.0), + REAL_CONST(17140.194711/8.0), + REAL_CONST(17155.452478/8.0), + REAL_CONST(17170.713638/8.0), + REAL_CONST(17185.978190/8.0), + REAL_CONST(17201.246133/8.0), + REAL_CONST(17216.517464/8.0), + REAL_CONST(17231.792182/8.0), + REAL_CONST(17247.070287/8.0), + REAL_CONST(17262.351775/8.0), + REAL_CONST(17277.636646/8.0), + REAL_CONST(17292.924898/8.0), + REAL_CONST(17308.216530/8.0), + REAL_CONST(17323.511541/8.0), + REAL_CONST(17338.809928/8.0), + REAL_CONST(17354.111690/8.0), + REAL_CONST(17369.416826/8.0), + REAL_CONST(17384.725335/8.0), + REAL_CONST(17400.037214/8.0), + REAL_CONST(17415.352462/8.0), + REAL_CONST(17430.671079/8.0), + REAL_CONST(17445.993061/8.0), + REAL_CONST(17461.318409/8.0), + REAL_CONST(17476.647120/8.0), + REAL_CONST(17491.979193/8.0), + REAL_CONST(17507.314626/8.0), + REAL_CONST(17522.653419/8.0), + REAL_CONST(17537.995569/8.0), + REAL_CONST(17553.341074/8.0), + REAL_CONST(17568.689935/8.0), + REAL_CONST(17584.042149/8.0), + REAL_CONST(17599.397714/8.0), + REAL_CONST(17614.756629/8.0), + REAL_CONST(17630.118893/8.0), + REAL_CONST(17645.484505/8.0), + REAL_CONST(17660.853462/8.0), + REAL_CONST(17676.225764/8.0), + REAL_CONST(17691.601408/8.0), + REAL_CONST(17706.980394/8.0), + REAL_CONST(17722.362720/8.0), + REAL_CONST(17737.748384/8.0), + REAL_CONST(17753.137386/8.0), + REAL_CONST(17768.529723/8.0), + REAL_CONST(17783.925394/8.0), + REAL_CONST(17799.324399/8.0), + REAL_CONST(17814.726734/8.0), + REAL_CONST(17830.132399/8.0), + REAL_CONST(17845.541393/8.0), + REAL_CONST(17860.953714/8.0), + REAL_CONST(17876.369360/8.0), + REAL_CONST(17891.788331/8.0), + REAL_CONST(17907.210624/8.0), + REAL_CONST(17922.636238/8.0), + REAL_CONST(17938.065173/8.0), + REAL_CONST(17953.497425/8.0), + REAL_CONST(17968.932995/8.0), + REAL_CONST(17984.371880/8.0), + REAL_CONST(17999.814079/8.0), + REAL_CONST(18015.259591/8.0), + REAL_CONST(18030.708415/8.0), + REAL_CONST(18046.160548/8.0), + REAL_CONST(18061.615990/8.0), + REAL_CONST(18077.074738/8.0), + REAL_CONST(18092.536793/8.0), + REAL_CONST(18108.002151/8.0), + REAL_CONST(18123.470813/8.0), + REAL_CONST(18138.942775/8.0), + REAL_CONST(18154.418038/8.0), + REAL_CONST(18169.896599/8.0), + REAL_CONST(18185.378458/8.0), + REAL_CONST(18200.863612/8.0), + REAL_CONST(18216.352060/8.0), + REAL_CONST(18231.843802/8.0), + REAL_CONST(18247.338835/8.0), + REAL_CONST(18262.837158/8.0), + REAL_CONST(18278.338770/8.0), + REAL_CONST(18293.843670/8.0), + REAL_CONST(18309.351855/8.0), + REAL_CONST(18324.863325/8.0), + REAL_CONST(18340.378078/8.0), + REAL_CONST(18355.896113/8.0), + REAL_CONST(18371.417429/8.0), + REAL_CONST(18386.942023/8.0), + REAL_CONST(18402.469895/8.0), + REAL_CONST(18418.001044/8.0), + REAL_CONST(18433.535467/8.0), + REAL_CONST(18449.073164/8.0), + REAL_CONST(18464.614133/8.0), + REAL_CONST(18480.158372/8.0), + REAL_CONST(18495.705881/8.0), + REAL_CONST(18511.256658/8.0), + REAL_CONST(18526.810702/8.0), + REAL_CONST(18542.368011/8.0), + REAL_CONST(18557.928583/8.0), + REAL_CONST(18573.492419/8.0), + REAL_CONST(18589.059515/8.0), + REAL_CONST(18604.629871/8.0), + REAL_CONST(18620.203486/8.0), + REAL_CONST(18635.780358/8.0), + REAL_CONST(18651.360485/8.0), + REAL_CONST(18666.943867/8.0), + REAL_CONST(18682.530502/8.0), + REAL_CONST(18698.120388/8.0), + REAL_CONST(18713.713525/8.0), + REAL_CONST(18729.309910/8.0), + REAL_CONST(18744.909543/8.0), + REAL_CONST(18760.512422/8.0), + REAL_CONST(18776.118546/8.0), + REAL_CONST(18791.727914/8.0), + REAL_CONST(18807.340524/8.0), + REAL_CONST(18822.956374/8.0), + REAL_CONST(18838.575465/8.0), + REAL_CONST(18854.197793/8.0), + REAL_CONST(18869.823358/8.0), + REAL_CONST(18885.452158/8.0), + REAL_CONST(18901.084193/8.0), + REAL_CONST(18916.719460/8.0), + REAL_CONST(18932.357959/8.0), + REAL_CONST(18947.999687/8.0), + REAL_CONST(18963.644645/8.0), + REAL_CONST(18979.292830/8.0), + REAL_CONST(18994.944241/8.0), + REAL_CONST(19010.598877/8.0), + REAL_CONST(19026.256736/8.0), + REAL_CONST(19041.917817/8.0), + REAL_CONST(19057.582120/8.0), + REAL_CONST(19073.249641/8.0), + REAL_CONST(19088.920381/8.0), + REAL_CONST(19104.594338/8.0), + REAL_CONST(19120.271510/8.0), + REAL_CONST(19135.951896/8.0), + REAL_CONST(19151.635495/8.0), + REAL_CONST(19167.322306/8.0), + REAL_CONST(19183.012327/8.0), + REAL_CONST(19198.705557/8.0), + REAL_CONST(19214.401994/8.0), + REAL_CONST(19230.101638/8.0), + REAL_CONST(19245.804487/8.0), + REAL_CONST(19261.510539/8.0), + REAL_CONST(19277.219794/8.0), + REAL_CONST(19292.932250/8.0), + REAL_CONST(19308.647906/8.0), + REAL_CONST(19324.366760/8.0), + REAL_CONST(19340.088811/8.0), + REAL_CONST(19355.814058/8.0), + REAL_CONST(19371.542500/8.0), + REAL_CONST(19387.274135/8.0), + REAL_CONST(19403.008962/8.0), + REAL_CONST(19418.746980/8.0), + REAL_CONST(19434.488187/8.0), + REAL_CONST(19450.232582/8.0), + REAL_CONST(19465.980164/8.0), + REAL_CONST(19481.730931/8.0), + REAL_CONST(19497.484883/8.0), + REAL_CONST(19513.242017/8.0), + REAL_CONST(19529.002334/8.0), + REAL_CONST(19544.765830/8.0), + REAL_CONST(19560.532506/8.0), + REAL_CONST(19576.302359/8.0), + REAL_CONST(19592.075389/8.0), + REAL_CONST(19607.851595/8.0), + REAL_CONST(19623.630974/8.0), + REAL_CONST(19639.413526/8.0), + REAL_CONST(19655.199249/8.0), + REAL_CONST(19670.988143/8.0), + REAL_CONST(19686.780205/8.0), + REAL_CONST(19702.575435/8.0), + REAL_CONST(19718.373831/8.0), + REAL_CONST(19734.175393/8.0), + REAL_CONST(19749.980118/8.0), + REAL_CONST(19765.788005/8.0), + REAL_CONST(19781.599054/8.0), + REAL_CONST(19797.413263/8.0), + REAL_CONST(19813.230631/8.0), + REAL_CONST(19829.051156/8.0), + REAL_CONST(19844.874837/8.0), + REAL_CONST(19860.701674/8.0), + REAL_CONST(19876.531664/8.0), + REAL_CONST(19892.364806/8.0), + REAL_CONST(19908.201100/8.0), + REAL_CONST(19924.040543/8.0), + REAL_CONST(19939.883136/8.0), + REAL_CONST(19955.728875/8.0), + REAL_CONST(19971.577761/8.0), + REAL_CONST(19987.429792/8.0), + REAL_CONST(20003.284967/8.0), + REAL_CONST(20019.143283/8.0), + REAL_CONST(20035.004742/8.0), + REAL_CONST(20050.869340/8.0), + REAL_CONST(20066.737076/8.0), + REAL_CONST(20082.607951/8.0), + REAL_CONST(20098.481961/8.0), + REAL_CONST(20114.359107/8.0), + REAL_CONST(20130.239386/8.0), + REAL_CONST(20146.122798/8.0), + REAL_CONST(20162.009341/8.0), + REAL_CONST(20177.899014/8.0), + REAL_CONST(20193.791815/8.0), + REAL_CONST(20209.687745/8.0), + REAL_CONST(20225.586801/8.0), + REAL_CONST(20241.488982/8.0), + REAL_CONST(20257.394286/8.0), + REAL_CONST(20273.302714/8.0), + REAL_CONST(20289.214263/8.0), + REAL_CONST(20305.128932/8.0), + REAL_CONST(20321.046720/8.0), + REAL_CONST(20336.967626/8.0), + REAL_CONST(20352.891648/8.0), + REAL_CONST(20368.818786/8.0), + REAL_CONST(20384.749038/8.0), + REAL_CONST(20400.682403/8.0), + REAL_CONST(20416.618879/8.0), + REAL_CONST(20432.558466/8.0), + REAL_CONST(20448.501162/8.0), + REAL_CONST(20464.446967/8.0), + REAL_CONST(20480.395878/8.0), + REAL_CONST(20496.347894/8.0), + REAL_CONST(20512.303016/8.0), + REAL_CONST(20528.261240/8.0), + REAL_CONST(20544.222566/8.0), + REAL_CONST(20560.186993/8.0), + REAL_CONST(20576.154520/8.0), + REAL_CONST(20592.125145/8.0), + REAL_CONST(20608.098867/8.0), + REAL_CONST(20624.075685/8.0), + REAL_CONST(20640.055598/8.0), + REAL_CONST(20656.038605/8.0), + REAL_CONST(20672.024704/8.0), + REAL_CONST(20688.013894/8.0), + REAL_CONST(20704.006174/8.0), + REAL_CONST(20720.001543/8.0), + REAL_CONST(20736.000000/8.0), + REAL_CONST(20752.001543/8.0), + REAL_CONST(20768.006171/8.0), + REAL_CONST(20784.013884/8.0), + REAL_CONST(20800.024679/8.0), + REAL_CONST(20816.038555/8.0), + REAL_CONST(20832.055513/8.0), + REAL_CONST(20848.075549/8.0), + REAL_CONST(20864.098664/8.0), + REAL_CONST(20880.124856/8.0), + REAL_CONST(20896.154123/8.0), + REAL_CONST(20912.186465/8.0), + REAL_CONST(20928.221880/8.0), + REAL_CONST(20944.260368/8.0), + REAL_CONST(20960.301926/8.0), + REAL_CONST(20976.346555/8.0), + REAL_CONST(20992.394252/8.0), + REAL_CONST(21008.445017/8.0), + REAL_CONST(21024.498848/8.0), + REAL_CONST(21040.555744/8.0), + REAL_CONST(21056.615704/8.0), + REAL_CONST(21072.678727/8.0), + REAL_CONST(21088.744812/8.0), + REAL_CONST(21104.813957/8.0), + REAL_CONST(21120.886161/8.0), + REAL_CONST(21136.961424/8.0), + REAL_CONST(21153.039743/8.0), + REAL_CONST(21169.121119/8.0), + REAL_CONST(21185.205549/8.0), + REAL_CONST(21201.293033/8.0), + REAL_CONST(21217.383569/8.0), + REAL_CONST(21233.477156/8.0), + REAL_CONST(21249.573794/8.0), + REAL_CONST(21265.673480/8.0), + REAL_CONST(21281.776214/8.0), + REAL_CONST(21297.881994/8.0), + REAL_CONST(21313.990820/8.0), + REAL_CONST(21330.102690/8.0), + REAL_CONST(21346.217604/8.0), + REAL_CONST(21362.335559/8.0), + REAL_CONST(21378.456556/8.0), + REAL_CONST(21394.580591/8.0), + REAL_CONST(21410.707666/8.0), + REAL_CONST(21426.837778/8.0), + REAL_CONST(21442.970926/8.0), + REAL_CONST(21459.107109/8.0), + REAL_CONST(21475.246326/8.0), + REAL_CONST(21491.388576/8.0), + REAL_CONST(21507.533858/8.0), + REAL_CONST(21523.682170/8.0), + REAL_CONST(21539.833512/8.0), + REAL_CONST(21555.987882/8.0), + REAL_CONST(21572.145279/8.0), + REAL_CONST(21588.305702/8.0), + REAL_CONST(21604.469150/8.0), + REAL_CONST(21620.635622/8.0), + REAL_CONST(21636.805116/8.0), + REAL_CONST(21652.977632/8.0), + REAL_CONST(21669.153169/8.0), + REAL_CONST(21685.331724/8.0), + REAL_CONST(21701.513298/8.0), + REAL_CONST(21717.697888/8.0), + REAL_CONST(21733.885495/8.0), + REAL_CONST(21750.076116/8.0), + REAL_CONST(21766.269750/8.0), + REAL_CONST(21782.466398/8.0), + REAL_CONST(21798.666056/8.0), + REAL_CONST(21814.868725/8.0), + REAL_CONST(21831.074403/8.0), + REAL_CONST(21847.283089/8.0), + REAL_CONST(21863.494782/8.0), + REAL_CONST(21879.709481/8.0), + REAL_CONST(21895.927184/8.0), + REAL_CONST(21912.147891/8.0), + REAL_CONST(21928.371600/8.0), + REAL_CONST(21944.598311/8.0), + REAL_CONST(21960.828022/8.0), + REAL_CONST(21977.060732/8.0), + REAL_CONST(21993.296440/8.0), + REAL_CONST(22009.535145/8.0), + REAL_CONST(22025.776846/8.0), + REAL_CONST(22042.021541/8.0), + REAL_CONST(22058.269230/8.0), + REAL_CONST(22074.519912/8.0), + REAL_CONST(22090.773585/8.0), + REAL_CONST(22107.030248/8.0), + REAL_CONST(22123.289900/8.0), + REAL_CONST(22139.552540/8.0), + REAL_CONST(22155.818168/8.0), + REAL_CONST(22172.086781/8.0), + REAL_CONST(22188.358379/8.0), + REAL_CONST(22204.632961/8.0), + REAL_CONST(22220.910525/8.0), + REAL_CONST(22237.191071/8.0), + REAL_CONST(22253.474598/8.0), + REAL_CONST(22269.761103/8.0), + REAL_CONST(22286.050587/8.0), + REAL_CONST(22302.343048/8.0), + REAL_CONST(22318.638485/8.0), + REAL_CONST(22334.936897/8.0), + REAL_CONST(22351.238283/8.0), + REAL_CONST(22367.542642/8.0), + REAL_CONST(22383.849973/8.0), + REAL_CONST(22400.160274/8.0), + REAL_CONST(22416.473545/8.0), + REAL_CONST(22432.789784/8.0), + REAL_CONST(22449.108990/8.0), + REAL_CONST(22465.431163/8.0), + REAL_CONST(22481.756301/8.0), + REAL_CONST(22498.084404/8.0), + REAL_CONST(22514.415469/8.0), + REAL_CONST(22530.749496/8.0), + REAL_CONST(22547.086485/8.0), + REAL_CONST(22563.426433/8.0), + REAL_CONST(22579.769340/8.0), + REAL_CONST(22596.115205/8.0), + REAL_CONST(22612.464026/8.0), + REAL_CONST(22628.815803/8.0), + REAL_CONST(22645.170535/8.0), + REAL_CONST(22661.528220/8.0), + REAL_CONST(22677.888857/8.0), + REAL_CONST(22694.252446/8.0), + REAL_CONST(22710.618985/8.0), + REAL_CONST(22726.988473/8.0), + REAL_CONST(22743.360909/8.0), + REAL_CONST(22759.736292/8.0), + REAL_CONST(22776.114621/8.0), + REAL_CONST(22792.495896/8.0), + REAL_CONST(22808.880114/8.0), + REAL_CONST(22825.267275/8.0), + REAL_CONST(22841.657378/8.0), + REAL_CONST(22858.050421/8.0), + REAL_CONST(22874.446404/8.0), + REAL_CONST(22890.845326/8.0), + REAL_CONST(22907.247185/8.0), + REAL_CONST(22923.651981/8.0), + REAL_CONST(22940.059712/8.0), + REAL_CONST(22956.470378/8.0), + REAL_CONST(22972.883977/8.0), + REAL_CONST(22989.300508/8.0), + REAL_CONST(23005.719971/8.0), + REAL_CONST(23022.142364/8.0), + REAL_CONST(23038.567686/8.0), + REAL_CONST(23054.995936/8.0), + REAL_CONST(23071.427113/8.0), + REAL_CONST(23087.861216/8.0), + REAL_CONST(23104.298245/8.0), + REAL_CONST(23120.738197/8.0), + REAL_CONST(23137.181072/8.0), + REAL_CONST(23153.626869/8.0), + REAL_CONST(23170.075587/8.0), + REAL_CONST(23186.527224/8.0), + REAL_CONST(23202.981781/8.0), + REAL_CONST(23219.439255/8.0), + REAL_CONST(23235.899646/8.0), + REAL_CONST(23252.362952/8.0), + REAL_CONST(23268.829173/8.0), + REAL_CONST(23285.298308/8.0), + REAL_CONST(23301.770356/8.0), + REAL_CONST(23318.245314/8.0), + REAL_CONST(23334.723184/8.0), + REAL_CONST(23351.203963/8.0), + REAL_CONST(23367.687650/8.0), + REAL_CONST(23384.174245/8.0), + REAL_CONST(23400.663746/8.0), + REAL_CONST(23417.156152/8.0), + REAL_CONST(23433.651463/8.0), + REAL_CONST(23450.149677/8.0), + REAL_CONST(23466.650794/8.0), + REAL_CONST(23483.154812/8.0), + REAL_CONST(23499.661730/8.0), + REAL_CONST(23516.171547/8.0), + REAL_CONST(23532.684263/8.0), + REAL_CONST(23549.199876/8.0), + REAL_CONST(23565.718385/8.0), + REAL_CONST(23582.239789/8.0), + REAL_CONST(23598.764087/8.0), + REAL_CONST(23615.291279/8.0), + REAL_CONST(23631.821363/8.0), + REAL_CONST(23648.354338/8.0), + REAL_CONST(23664.890203/8.0), + REAL_CONST(23681.428957/8.0), + REAL_CONST(23697.970599/8.0), + REAL_CONST(23714.515128/8.0), + REAL_CONST(23731.062544/8.0), + REAL_CONST(23747.612844/8.0), + REAL_CONST(23764.166029/8.0), + REAL_CONST(23780.722096/8.0), + REAL_CONST(23797.281046/8.0), + REAL_CONST(23813.842877/8.0), + REAL_CONST(23830.407588/8.0), + REAL_CONST(23846.975178/8.0), + REAL_CONST(23863.545646/8.0), + REAL_CONST(23880.118991/8.0), + REAL_CONST(23896.695212/8.0), + REAL_CONST(23913.274308/8.0), + REAL_CONST(23929.856278/8.0), + REAL_CONST(23946.441122/8.0), + REAL_CONST(23963.028837/8.0), + REAL_CONST(23979.619424/8.0), + REAL_CONST(23996.212880/8.0), + REAL_CONST(24012.809206/8.0), + REAL_CONST(24029.408400/8.0), + REAL_CONST(24046.010461/8.0), + REAL_CONST(24062.615388/8.0), + REAL_CONST(24079.223180/8.0), + REAL_CONST(24095.833837/8.0), + REAL_CONST(24112.447356/8.0), + REAL_CONST(24129.063738/8.0), + REAL_CONST(24145.682981/8.0), + REAL_CONST(24162.305084/8.0), + REAL_CONST(24178.930046/8.0), + REAL_CONST(24195.557867/8.0), + REAL_CONST(24212.188545/8.0), + REAL_CONST(24228.822079/8.0), + REAL_CONST(24245.458468/8.0), + REAL_CONST(24262.097712/8.0), + REAL_CONST(24278.739809/8.0), + REAL_CONST(24295.384759/8.0), + REAL_CONST(24312.032559/8.0), + REAL_CONST(24328.683211/8.0), + REAL_CONST(24345.336711/8.0), + REAL_CONST(24361.993060/8.0), + REAL_CONST(24378.652257/8.0), + REAL_CONST(24395.314300/8.0), + REAL_CONST(24411.979189/8.0), + REAL_CONST(24428.646922/8.0), + REAL_CONST(24445.317499/8.0), + REAL_CONST(24461.990918/8.0), + REAL_CONST(24478.667179/8.0), + REAL_CONST(24495.346281/8.0), + REAL_CONST(24512.028223/8.0), + REAL_CONST(24528.713003/8.0), + REAL_CONST(24545.400621/8.0), + REAL_CONST(24562.091076/8.0), + REAL_CONST(24578.784367/8.0), + REAL_CONST(24595.480492/8.0), + REAL_CONST(24612.179452/8.0), + REAL_CONST(24628.881244/8.0), + REAL_CONST(24645.585869/8.0), + REAL_CONST(24662.293325/8.0), + REAL_CONST(24679.003610/8.0), + REAL_CONST(24695.716725/8.0), + REAL_CONST(24712.432668/8.0), + REAL_CONST(24729.151438/8.0), + REAL_CONST(24745.873035/8.0), + REAL_CONST(24762.597457/8.0), + REAL_CONST(24779.324703/8.0), + REAL_CONST(24796.054772/8.0), + REAL_CONST(24812.787665/8.0), + REAL_CONST(24829.523378/8.0), + REAL_CONST(24846.261912/8.0), + REAL_CONST(24863.003266/8.0), + REAL_CONST(24879.747438/8.0), + REAL_CONST(24896.494428/8.0), + REAL_CONST(24913.244235/8.0), + REAL_CONST(24929.996857/8.0), + REAL_CONST(24946.752295/8.0), + REAL_CONST(24963.510546/8.0), + REAL_CONST(24980.271610/8.0), + REAL_CONST(24997.035487/8.0), + REAL_CONST(25013.802174/8.0), + REAL_CONST(25030.571672/8.0), + REAL_CONST(25047.343978/8.0), + REAL_CONST(25064.119093/8.0), + REAL_CONST(25080.897016/8.0), + REAL_CONST(25097.677744/8.0), + REAL_CONST(25114.461279/8.0), + REAL_CONST(25131.247617/8.0), + REAL_CONST(25148.036759/8.0), + REAL_CONST(25164.828704/8.0), + REAL_CONST(25181.623451/8.0), + REAL_CONST(25198.420998/8.0), + REAL_CONST(25215.221345/8.0), + REAL_CONST(25232.024491/8.0), + REAL_CONST(25248.830435/8.0), + REAL_CONST(25265.639176/8.0), + REAL_CONST(25282.450713/8.0), + REAL_CONST(25299.265045/8.0), + REAL_CONST(25316.082172/8.0), + REAL_CONST(25332.902091/8.0), + REAL_CONST(25349.724804/8.0), + REAL_CONST(25366.550307/8.0), + REAL_CONST(25383.378601/8.0), + REAL_CONST(25400.209685/8.0), + REAL_CONST(25417.043558/8.0), + REAL_CONST(25433.880218/8.0), + REAL_CONST(25450.719665/8.0), + REAL_CONST(25467.561898/8.0), + REAL_CONST(25484.406916/8.0), + REAL_CONST(25501.254718/8.0), + REAL_CONST(25518.105303/8.0), + REAL_CONST(25534.958670/8.0), + REAL_CONST(25551.814819/8.0), + REAL_CONST(25568.673748/8.0), + REAL_CONST(25585.535457/8.0), + REAL_CONST(25602.399944/8.0), + REAL_CONST(25619.267209/8.0), + REAL_CONST(25636.137250/8.0), + REAL_CONST(25653.010067/8.0), + REAL_CONST(25669.885660/8.0), + REAL_CONST(25686.764026/8.0), + REAL_CONST(25703.645165/8.0), + REAL_CONST(25720.529077/8.0), + REAL_CONST(25737.415759/8.0), + REAL_CONST(25754.305213/8.0), + REAL_CONST(25771.197435/8.0), + REAL_CONST(25788.092426/8.0), + REAL_CONST(25804.990185/8.0), + REAL_CONST(25821.890710/8.0), + REAL_CONST(25838.794002/8.0), + REAL_CONST(25855.700058/8.0), + REAL_CONST(25872.608878/8.0), + REAL_CONST(25889.520461/8.0), + REAL_CONST(25906.434807/8.0), + REAL_CONST(25923.351914/8.0), + REAL_CONST(25940.271781/8.0), + REAL_CONST(25957.194407/8.0), + REAL_CONST(25974.119793/8.0), + REAL_CONST(25991.047936/8.0), + REAL_CONST(26007.978835/8.0), + REAL_CONST(26024.912491/8.0), + REAL_CONST(26041.848902/8.0), + REAL_CONST(26058.788067/8.0), + REAL_CONST(26075.729985/8.0), + REAL_CONST(26092.674655/8.0), + REAL_CONST(26109.622077/8.0), + REAL_CONST(26126.572249/8.0), + REAL_CONST(26143.525171/8.0), + REAL_CONST(26160.480842/8.0), + REAL_CONST(26177.439260/8.0), + REAL_CONST(26194.400426/8.0), + REAL_CONST(26211.364337/8.0), + REAL_CONST(26228.330994/8.0), + REAL_CONST(26245.300395/8.0), + REAL_CONST(26262.272540/8.0), + REAL_CONST(26279.247427/8.0), + REAL_CONST(26296.225056/8.0), + REAL_CONST(26313.205425/8.0), + REAL_CONST(26330.188534/8.0), + REAL_CONST(26347.174383/8.0), + REAL_CONST(26364.162969/8.0), + REAL_CONST(26381.154293/8.0), + REAL_CONST(26398.148353/8.0), + REAL_CONST(26415.145148/8.0), + REAL_CONST(26432.144678/8.0), + REAL_CONST(26449.146942/8.0), + REAL_CONST(26466.151939/8.0), + REAL_CONST(26483.159667/8.0), + REAL_CONST(26500.170127/8.0), + REAL_CONST(26517.183317/8.0), + REAL_CONST(26534.199236/8.0), + REAL_CONST(26551.217883/8.0), + REAL_CONST(26568.239258/8.0), + REAL_CONST(26585.263360/8.0), + REAL_CONST(26602.290188/8.0), + REAL_CONST(26619.319740/8.0), + REAL_CONST(26636.352017/8.0), + REAL_CONST(26653.387017/8.0), + REAL_CONST(26670.424739/8.0), + REAL_CONST(26687.465183/8.0), + REAL_CONST(26704.508347/8.0), + REAL_CONST(26721.554231/8.0), + REAL_CONST(26738.602834/8.0), + REAL_CONST(26755.654154/8.0), + REAL_CONST(26772.708192/8.0), + REAL_CONST(26789.764947/8.0), + REAL_CONST(26806.824416/8.0), + REAL_CONST(26823.886600/8.0), + REAL_CONST(26840.951498/8.0), + REAL_CONST(26858.019109/8.0), + REAL_CONST(26875.089431/8.0), + REAL_CONST(26892.162465/8.0), + REAL_CONST(26909.238209/8.0), + REAL_CONST(26926.316662/8.0), + REAL_CONST(26943.397823/8.0), + REAL_CONST(26960.481693/8.0), + REAL_CONST(26977.568269/8.0), + REAL_CONST(26994.657551/8.0), + REAL_CONST(27011.749538/8.0), + REAL_CONST(27028.844229/8.0), + REAL_CONST(27045.941624/8.0), + REAL_CONST(27063.041721/8.0), + REAL_CONST(27080.144520/8.0), + REAL_CONST(27097.250020/8.0), + REAL_CONST(27114.358219/8.0), + REAL_CONST(27131.469118/8.0), + REAL_CONST(27148.582715/8.0), + REAL_CONST(27165.699009/8.0), + REAL_CONST(27182.818000/8.0), + REAL_CONST(27199.939687/8.0), + REAL_CONST(27217.064068/8.0), + REAL_CONST(27234.191144/8.0), + REAL_CONST(27251.320912/8.0), + REAL_CONST(27268.453373/8.0), + REAL_CONST(27285.588525/8.0), + REAL_CONST(27302.726368/8.0), + REAL_CONST(27319.866901/8.0), + REAL_CONST(27337.010122/8.0), + REAL_CONST(27354.156032/8.0), + REAL_CONST(27371.304629/8.0), + REAL_CONST(27388.455912/8.0), + REAL_CONST(27405.609881/8.0), + REAL_CONST(27422.766535/8.0), + REAL_CONST(27439.925872/8.0), + REAL_CONST(27457.087893/8.0), + REAL_CONST(27474.252595/8.0), + REAL_CONST(27491.419979/8.0), + REAL_CONST(27508.590044/8.0), + REAL_CONST(27525.762788/8.0), + REAL_CONST(27542.938211/8.0), + REAL_CONST(27560.116312/8.0), + REAL_CONST(27577.297090/8.0), + REAL_CONST(27594.480545/8.0), + REAL_CONST(27611.666675/8.0), + REAL_CONST(27628.855480/8.0), + REAL_CONST(27646.046959/8.0), + REAL_CONST(27663.241110/8.0), + REAL_CONST(27680.437934/8.0), + REAL_CONST(27697.637429/8.0), + REAL_CONST(27714.839595/8.0), + REAL_CONST(27732.044430/8.0), + REAL_CONST(27749.251934/8.0), + REAL_CONST(27766.462107/8.0), + REAL_CONST(27783.674946/8.0), + REAL_CONST(27800.890452/8.0), + REAL_CONST(27818.108624/8.0), + REAL_CONST(27835.329460/8.0), + REAL_CONST(27852.552960/8.0), + REAL_CONST(27869.779123/8.0), + REAL_CONST(27887.007948/8.0), + REAL_CONST(27904.239435/8.0), + REAL_CONST(27921.473583/8.0), + REAL_CONST(27938.710390/8.0), + REAL_CONST(27955.949856/8.0), + REAL_CONST(27973.191981/8.0), + REAL_CONST(27990.436763/8.0), + REAL_CONST(28007.684201/8.0), + REAL_CONST(28024.934295/8.0), + REAL_CONST(28042.187044/8.0), + REAL_CONST(28059.442447/8.0), + REAL_CONST(28076.700503/8.0), + REAL_CONST(28093.961211/8.0), + REAL_CONST(28111.224571/8.0), + REAL_CONST(28128.490582/8.0), + REAL_CONST(28145.759243/8.0), + REAL_CONST(28163.030554/8.0), + REAL_CONST(28180.304512/8.0), + REAL_CONST(28197.581118/8.0), + REAL_CONST(28214.860371/8.0), + REAL_CONST(28232.142270/8.0), + REAL_CONST(28249.426814/8.0), + REAL_CONST(28266.714002/8.0), + REAL_CONST(28284.003834/8.0), + REAL_CONST(28301.296308/8.0), + REAL_CONST(28318.591424/8.0), + REAL_CONST(28335.889182/8.0), + REAL_CONST(28353.189579/8.0), + REAL_CONST(28370.492617/8.0), + REAL_CONST(28387.798292/8.0), + REAL_CONST(28405.106606/8.0), + REAL_CONST(28422.417557/8.0), + REAL_CONST(28439.731144/8.0), + REAL_CONST(28457.047366/8.0), + REAL_CONST(28474.366223/8.0), + REAL_CONST(28491.687714/8.0), + REAL_CONST(28509.011838/8.0), + REAL_CONST(28526.338594/8.0), + REAL_CONST(28543.667982/8.0), + REAL_CONST(28561.000000/8.0), + REAL_CONST(28578.334648/8.0), + REAL_CONST(28595.671925/8.0), + REAL_CONST(28613.011831/8.0), + REAL_CONST(28630.354364/8.0), + REAL_CONST(28647.699523/8.0), + REAL_CONST(28665.047309/8.0), + REAL_CONST(28682.397719/8.0), + REAL_CONST(28699.750754/8.0), + REAL_CONST(28717.106412/8.0), + REAL_CONST(28734.464693/8.0), + REAL_CONST(28751.825596/8.0), + REAL_CONST(28769.189120/8.0), + REAL_CONST(28786.555264/8.0), + REAL_CONST(28803.924028/8.0), + REAL_CONST(28821.295410/8.0), + REAL_CONST(28838.669411/8.0), + REAL_CONST(28856.046028/8.0), + REAL_CONST(28873.425262/8.0), + REAL_CONST(28890.807112/8.0), + REAL_CONST(28908.191576/8.0), + REAL_CONST(28925.578655/8.0), + REAL_CONST(28942.968346/8.0), + REAL_CONST(28960.360650/8.0), + REAL_CONST(28977.755566/8.0), + REAL_CONST(28995.153093/8.0), + REAL_CONST(29012.553229/8.0), + REAL_CONST(29029.955975/8.0), + REAL_CONST(29047.361330/8.0), + REAL_CONST(29064.769292/8.0), + REAL_CONST(29082.179861/8.0), + REAL_CONST(29099.593037/8.0), + REAL_CONST(29117.008817/8.0), + REAL_CONST(29134.427203/8.0), + REAL_CONST(29151.848192/8.0), + REAL_CONST(29169.271784/8.0), + REAL_CONST(29186.697979/8.0), + REAL_CONST(29204.126775/8.0), + REAL_CONST(29221.558172/8.0), + REAL_CONST(29238.992168/8.0), + REAL_CONST(29256.428764/8.0), + REAL_CONST(29273.867959/8.0), + REAL_CONST(29291.309750/8.0), + REAL_CONST(29308.754139/8.0), + REAL_CONST(29326.201124/8.0), + REAL_CONST(29343.650704/8.0), + REAL_CONST(29361.102879/8.0), + REAL_CONST(29378.557648/8.0), + REAL_CONST(29396.015009/8.0), + REAL_CONST(29413.474963/8.0), + REAL_CONST(29430.937508/8.0), + REAL_CONST(29448.402644/8.0), + REAL_CONST(29465.870370/8.0), + REAL_CONST(29483.340685/8.0), + REAL_CONST(29500.813588/8.0), + REAL_CONST(29518.289079/8.0), + REAL_CONST(29535.767157/8.0), + REAL_CONST(29553.247821/8.0), + REAL_CONST(29570.731070/8.0), + REAL_CONST(29588.216904/8.0), + REAL_CONST(29605.705322/8.0), + REAL_CONST(29623.196322/8.0), + REAL_CONST(29640.689905/8.0), + REAL_CONST(29658.186070/8.0), + REAL_CONST(29675.684815/8.0), + REAL_CONST(29693.186140/8.0), + REAL_CONST(29710.690044/8.0), + REAL_CONST(29728.196527/8.0), + REAL_CONST(29745.705588/8.0), + REAL_CONST(29763.217225/8.0), + REAL_CONST(29780.731439/8.0), + REAL_CONST(29798.248228/8.0), + REAL_CONST(29815.767592/8.0), + REAL_CONST(29833.289529/8.0), + REAL_CONST(29850.814040/8.0), + REAL_CONST(29868.341123/8.0), + REAL_CONST(29885.870778/8.0), + REAL_CONST(29903.403004/8.0), + REAL_CONST(29920.937800/8.0), + REAL_CONST(29938.475165/8.0), + REAL_CONST(29956.015099/8.0), + REAL_CONST(29973.557601/8.0), + REAL_CONST(29991.102670/8.0), + REAL_CONST(30008.650306/8.0), + REAL_CONST(30026.200506/8.0), + REAL_CONST(30043.753272/8.0), + REAL_CONST(30061.308602/8.0), + REAL_CONST(30078.866496/8.0), + REAL_CONST(30096.426952/8.0), + REAL_CONST(30113.989970/8.0), + REAL_CONST(30131.555549/8.0), + REAL_CONST(30149.123688/8.0), + REAL_CONST(30166.694387/8.0), + REAL_CONST(30184.267645/8.0), + REAL_CONST(30201.843461/8.0), + REAL_CONST(30219.421835/8.0), + REAL_CONST(30237.002765/8.0), + REAL_CONST(30254.586251/8.0), + REAL_CONST(30272.172293/8.0), + REAL_CONST(30289.760889/8.0), + REAL_CONST(30307.352038/8.0), + REAL_CONST(30324.945741/8.0), + REAL_CONST(30342.541995/8.0), + REAL_CONST(30360.140801/8.0), + REAL_CONST(30377.742158/8.0), + REAL_CONST(30395.346065/8.0), + REAL_CONST(30412.952521/8.0), + REAL_CONST(30430.561526/8.0), + REAL_CONST(30448.173078/8.0), + REAL_CONST(30465.787178/8.0), + REAL_CONST(30483.403824/8.0), + REAL_CONST(30501.023015/8.0), + REAL_CONST(30518.644751/8.0), + REAL_CONST(30536.269031/8.0), + REAL_CONST(30553.895855/8.0), + REAL_CONST(30571.525221/8.0), + REAL_CONST(30589.157130/8.0), + REAL_CONST(30606.791579/8.0), + REAL_CONST(30624.428569/8.0), + REAL_CONST(30642.068098/8.0), + REAL_CONST(30659.710167/8.0), + REAL_CONST(30677.354774/8.0), + REAL_CONST(30695.001918/8.0), + REAL_CONST(30712.651599/8.0), + REAL_CONST(30730.303816/8.0), + REAL_CONST(30747.958568/8.0), + REAL_CONST(30765.615855/8.0), + REAL_CONST(30783.275676/8.0), + REAL_CONST(30800.938030/8.0), + REAL_CONST(30818.602917/8.0), + REAL_CONST(30836.270335/8.0), + REAL_CONST(30853.940284/8.0), + REAL_CONST(30871.612763/8.0), + REAL_CONST(30889.287772/8.0), + REAL_CONST(30906.965310/8.0), + REAL_CONST(30924.645376/8.0), + REAL_CONST(30942.327969/8.0), + REAL_CONST(30960.013089/8.0), + REAL_CONST(30977.700734/8.0), + REAL_CONST(30995.390905/8.0), + REAL_CONST(31013.083600/8.0), + REAL_CONST(31030.778819/8.0), + REAL_CONST(31048.476561/8.0), + REAL_CONST(31066.176826/8.0), + REAL_CONST(31083.879612/8.0), + REAL_CONST(31101.584918/8.0), + REAL_CONST(31119.292745/8.0), + REAL_CONST(31137.003092/8.0), + REAL_CONST(31154.715957/8.0), + REAL_CONST(31172.431340/8.0), + REAL_CONST(31190.149240/8.0), + REAL_CONST(31207.869657/8.0), + REAL_CONST(31225.592590/8.0), + REAL_CONST(31243.318038/8.0), + REAL_CONST(31261.046000/8.0), + REAL_CONST(31278.776476/8.0), + REAL_CONST(31296.509466/8.0), + REAL_CONST(31314.244967/8.0), + REAL_CONST(31331.982980/8.0), + REAL_CONST(31349.723504/8.0), + REAL_CONST(31367.466538/8.0), + REAL_CONST(31385.212081/8.0), + REAL_CONST(31402.960133/8.0), + REAL_CONST(31420.710693/8.0), + REAL_CONST(31438.463761/8.0), + REAL_CONST(31456.219335/8.0), + REAL_CONST(31473.977415/8.0), + REAL_CONST(31491.738000/8.0), + REAL_CONST(31509.501090/8.0), + REAL_CONST(31527.266683/8.0), + REAL_CONST(31545.034780/8.0), + REAL_CONST(31562.805379/8.0), + REAL_CONST(31580.578479/8.0), + REAL_CONST(31598.354081/8.0), + REAL_CONST(31616.132183/8.0), + REAL_CONST(31633.912784/8.0), + REAL_CONST(31651.695884/8.0), + REAL_CONST(31669.481483/8.0), + REAL_CONST(31687.269579/8.0), + REAL_CONST(31705.060171/8.0), + REAL_CONST(31722.853260/8.0), + REAL_CONST(31740.648844/8.0), + REAL_CONST(31758.446922/8.0), + REAL_CONST(31776.247495/8.0), + REAL_CONST(31794.050561/8.0), + REAL_CONST(31811.856119/8.0), + REAL_CONST(31829.664169/8.0), + REAL_CONST(31847.474711/8.0), + REAL_CONST(31865.287743/8.0), + REAL_CONST(31883.103264/8.0), + REAL_CONST(31900.921275/8.0), + REAL_CONST(31918.741774/8.0), + REAL_CONST(31936.564761/8.0), + REAL_CONST(31954.390235/8.0), + REAL_CONST(31972.218195/8.0), + REAL_CONST(31990.048640/8.0), + REAL_CONST(32007.881571/8.0), + REAL_CONST(32025.716986/8.0), + REAL_CONST(32043.554884/8.0), + REAL_CONST(32061.395265/8.0), + REAL_CONST(32079.238128/8.0), + REAL_CONST(32097.083473/8.0), + REAL_CONST(32114.931298/8.0), + REAL_CONST(32132.781604/8.0), + REAL_CONST(32150.634389/8.0), + REAL_CONST(32168.489652/8.0), + REAL_CONST(32186.347394/8.0), + REAL_CONST(32204.207613/8.0), + REAL_CONST(32222.070309/8.0), + REAL_CONST(32239.935480/8.0), + REAL_CONST(32257.803127/8.0), + REAL_CONST(32275.673248/8.0), + REAL_CONST(32293.545843/8.0), + REAL_CONST(32311.420912/8.0), + REAL_CONST(32329.298453/8.0), + REAL_CONST(32347.178465/8.0), + REAL_CONST(32365.060949/8.0), + REAL_CONST(32382.945904/8.0), + REAL_CONST(32400.833328/8.0), + REAL_CONST(32418.723221/8.0), + REAL_CONST(32436.615583/8.0), + REAL_CONST(32454.510412/8.0), + REAL_CONST(32472.407709/8.0), + REAL_CONST(32490.307472/8.0), + REAL_CONST(32508.209700/8.0), + REAL_CONST(32526.114394/8.0), + REAL_CONST(32544.021552/8.0), + REAL_CONST(32561.931174/8.0), + REAL_CONST(32579.843258/8.0), + REAL_CONST(32597.757805/8.0), + REAL_CONST(32615.674814/8.0), + REAL_CONST(32633.594283/8.0), + REAL_CONST(32651.516213/8.0), + REAL_CONST(32669.440602/8.0), + REAL_CONST(32687.367451/8.0), + REAL_CONST(32705.296757/8.0), + REAL_CONST(32723.228522/8.0), + REAL_CONST(32741.162743/8.0), + REAL_CONST(32759.099420/8.0), + REAL_CONST(32777.038553/8.0), + REAL_CONST(32794.980141/8.0), + REAL_CONST(32812.924183/8.0), + REAL_CONST(32830.870678/8.0), + REAL_CONST(32848.819627/8.0), + REAL_CONST(32866.771027/8.0), + REAL_CONST(32884.724879/8.0), + REAL_CONST(32902.681183/8.0), + REAL_CONST(32920.639936/8.0), + REAL_CONST(32938.601139/8.0), + REAL_CONST(32956.564790/8.0), + REAL_CONST(32974.530890/8.0), + REAL_CONST(32992.499438/8.0), + REAL_CONST(33010.470432/8.0), + REAL_CONST(33028.443872/8.0), + REAL_CONST(33046.419758/8.0), + REAL_CONST(33064.398089/8.0), + REAL_CONST(33082.378864/8.0), + REAL_CONST(33100.362083/8.0), + REAL_CONST(33118.347744/8.0), + REAL_CONST(33136.335848/8.0), + REAL_CONST(33154.326393/8.0), + REAL_CONST(33172.319379/8.0), + REAL_CONST(33190.314806/8.0), + REAL_CONST(33208.312671/8.0), + REAL_CONST(33226.312976/8.0), + REAL_CONST(33244.315719/8.0), + REAL_CONST(33262.320900/8.0), + REAL_CONST(33280.328517/8.0), + REAL_CONST(33298.338571/8.0), + REAL_CONST(33316.351061/8.0), + REAL_CONST(33334.365985/8.0), + REAL_CONST(33352.383344/8.0), + REAL_CONST(33370.403136/8.0), + REAL_CONST(33388.425361/8.0), + REAL_CONST(33406.450019/8.0), + REAL_CONST(33424.477108/8.0), + REAL_CONST(33442.506628/8.0), + REAL_CONST(33460.538579/8.0), + REAL_CONST(33478.572959/8.0), + REAL_CONST(33496.609768/8.0), + REAL_CONST(33514.649006/8.0), + REAL_CONST(33532.690671/8.0), + REAL_CONST(33550.734764/8.0), + REAL_CONST(33568.781282/8.0), + REAL_CONST(33586.830227/8.0), + REAL_CONST(33604.881597/8.0), + REAL_CONST(33622.935391/8.0), + REAL_CONST(33640.991609/8.0), + REAL_CONST(33659.050250/8.0), + REAL_CONST(33677.111314/8.0), + REAL_CONST(33695.174800/8.0), + REAL_CONST(33713.240707/8.0), + REAL_CONST(33731.309034/8.0), + REAL_CONST(33749.379781/8.0), + REAL_CONST(33767.452948/8.0), + REAL_CONST(33785.528533/8.0), + REAL_CONST(33803.606536/8.0), + REAL_CONST(33821.686957/8.0), + REAL_CONST(33839.769794/8.0), + REAL_CONST(33857.855047/8.0), + REAL_CONST(33875.942716/8.0), + REAL_CONST(33894.032799/8.0), + REAL_CONST(33912.125297/8.0), + REAL_CONST(33930.220207/8.0), + REAL_CONST(33948.317531/8.0), + REAL_CONST(33966.417267/8.0), + REAL_CONST(33984.519415/8.0), + REAL_CONST(34002.623973/8.0), + REAL_CONST(34020.730941/8.0), + REAL_CONST(34038.840320/8.0), + REAL_CONST(34056.952107/8.0), + REAL_CONST(34075.066302/8.0), + REAL_CONST(34093.182905/8.0), + REAL_CONST(34111.301916/8.0), + REAL_CONST(34129.423332/8.0), + REAL_CONST(34147.547155/8.0), + REAL_CONST(34165.673382/8.0), + REAL_CONST(34183.802014/8.0), + REAL_CONST(34201.933050/8.0), + REAL_CONST(34220.066489/8.0), + REAL_CONST(34238.202330/8.0), + REAL_CONST(34256.340574/8.0), + REAL_CONST(34274.481219/8.0), + REAL_CONST(34292.624264/8.0), + REAL_CONST(34310.769710/8.0), + REAL_CONST(34328.917555/8.0), + REAL_CONST(34347.067799/8.0), + REAL_CONST(34365.220440/8.0), + REAL_CONST(34383.375480/8.0), + REAL_CONST(34401.532916/8.0), + REAL_CONST(34419.692748/8.0), + REAL_CONST(34437.854976/8.0), + REAL_CONST(34456.019599/8.0), + REAL_CONST(34474.186617/8.0), + REAL_CONST(34492.356028/8.0), + REAL_CONST(34510.527832/8.0), + REAL_CONST(34528.702029/8.0), + REAL_CONST(34546.878617/8.0), + REAL_CONST(34565.057596/8.0), + REAL_CONST(34583.238967/8.0), + REAL_CONST(34601.422727/8.0), + REAL_CONST(34619.608876/8.0), + REAL_CONST(34637.797414/8.0), + REAL_CONST(34655.988340/8.0), + REAL_CONST(34674.181653/8.0), + REAL_CONST(34692.377354/8.0), + REAL_CONST(34710.575440/8.0), + REAL_CONST(34728.775912/8.0), + REAL_CONST(34746.978769/8.0), + REAL_CONST(34765.184010/8.0), + REAL_CONST(34783.391635/8.0), + REAL_CONST(34801.601643/8.0), + REAL_CONST(34819.814033/8.0), + REAL_CONST(34838.028805/8.0), + REAL_CONST(34856.245958/8.0), + REAL_CONST(34874.465492/8.0), + REAL_CONST(34892.687406/8.0), + REAL_CONST(34910.911699/8.0), + REAL_CONST(34929.138371/8.0), + REAL_CONST(34947.367421/8.0), + REAL_CONST(34965.598848/8.0), + REAL_CONST(34983.832652/8.0), + REAL_CONST(35002.068832/8.0), + REAL_CONST(35020.307388/8.0), + REAL_CONST(35038.548319/8.0), + REAL_CONST(35056.791624/8.0), + REAL_CONST(35075.037303/8.0), + REAL_CONST(35093.285355/8.0), + REAL_CONST(35111.535779/8.0), + REAL_CONST(35129.788576/8.0), + REAL_CONST(35148.043743/8.0), + REAL_CONST(35166.301282/8.0), + REAL_CONST(35184.561190/8.0), + REAL_CONST(35202.823468/8.0), + REAL_CONST(35221.088114/8.0), + REAL_CONST(35239.355129/8.0), + REAL_CONST(35257.624511/8.0), + REAL_CONST(35275.896260/8.0), + REAL_CONST(35294.170376/8.0), + REAL_CONST(35312.446857/8.0), + REAL_CONST(35330.725704/8.0), + REAL_CONST(35349.006915/8.0), + REAL_CONST(35367.290490/8.0), + REAL_CONST(35385.576428/8.0), + REAL_CONST(35403.864729/8.0), + REAL_CONST(35422.155392/8.0), + REAL_CONST(35440.448416/8.0), + REAL_CONST(35458.743801/8.0), + REAL_CONST(35477.041547/8.0), + REAL_CONST(35495.341652/8.0), + REAL_CONST(35513.644116/8.0), + REAL_CONST(35531.948938/8.0), + REAL_CONST(35550.256119/8.0), + REAL_CONST(35568.565656/8.0), + REAL_CONST(35586.877550/8.0), + REAL_CONST(35605.191800/8.0), + REAL_CONST(35623.508406/8.0), + REAL_CONST(35641.827366/8.0), + REAL_CONST(35660.148681/8.0), + REAL_CONST(35678.472348/8.0), + REAL_CONST(35696.798369/8.0), + REAL_CONST(35715.126743/8.0), + REAL_CONST(35733.457468/8.0), + REAL_CONST(35751.790544/8.0), + REAL_CONST(35770.125971/8.0), + REAL_CONST(35788.463747/8.0), + REAL_CONST(35806.803873/8.0), + REAL_CONST(35825.146348/8.0), + REAL_CONST(35843.491171/8.0), + REAL_CONST(35861.838341/8.0), + REAL_CONST(35880.187859/8.0), + REAL_CONST(35898.539722/8.0), + REAL_CONST(35916.893932/8.0), + REAL_CONST(35935.250487/8.0), + REAL_CONST(35953.609386/8.0), + REAL_CONST(35971.970629/8.0), + REAL_CONST(35990.334215/8.0), + REAL_CONST(36008.700144/8.0), + REAL_CONST(36027.068415/8.0), + REAL_CONST(36045.439028/8.0), + REAL_CONST(36063.811982/8.0), + REAL_CONST(36082.187276/8.0), + REAL_CONST(36100.564910/8.0), + REAL_CONST(36118.944883/8.0), + REAL_CONST(36137.327195/8.0), + REAL_CONST(36155.711844/8.0), + REAL_CONST(36174.098831/8.0), + REAL_CONST(36192.488155/8.0), + REAL_CONST(36210.879815/8.0), + REAL_CONST(36229.273811/8.0), + REAL_CONST(36247.670141/8.0), + REAL_CONST(36266.068806/8.0), + REAL_CONST(36284.469805/8.0), + REAL_CONST(36302.873137/8.0), + REAL_CONST(36321.278801/8.0), + REAL_CONST(36339.686798/8.0), + REAL_CONST(36358.097126/8.0), + REAL_CONST(36376.509785/8.0), + REAL_CONST(36394.924775/8.0), + REAL_CONST(36413.342094/8.0), + REAL_CONST(36431.761742/8.0), + REAL_CONST(36450.183718/8.0), + REAL_CONST(36468.608023/8.0), + REAL_CONST(36487.034654/8.0), + REAL_CONST(36505.463613/8.0), + REAL_CONST(36523.894898/8.0), + REAL_CONST(36542.328508/8.0), + REAL_CONST(36560.764443/8.0), + REAL_CONST(36579.202703/8.0), + REAL_CONST(36597.643286/8.0), + REAL_CONST(36616.086193/8.0), + REAL_CONST(36634.531422/8.0), + REAL_CONST(36652.978974/8.0), + REAL_CONST(36671.428847/8.0), + REAL_CONST(36689.881040/8.0), + REAL_CONST(36708.335554/8.0), + REAL_CONST(36726.792388/8.0), + REAL_CONST(36745.251541/8.0), + REAL_CONST(36763.713012/8.0), + REAL_CONST(36782.176802/8.0), + REAL_CONST(36800.642909/8.0), + REAL_CONST(36819.111332/8.0), + REAL_CONST(36837.582072/8.0), + REAL_CONST(36856.055127/8.0), + REAL_CONST(36874.530498/8.0), + REAL_CONST(36893.008183/8.0), + REAL_CONST(36911.488182/8.0), + REAL_CONST(36929.970494/8.0), + REAL_CONST(36948.455119/8.0), + REAL_CONST(36966.942056/8.0), + REAL_CONST(36985.431305/8.0), + REAL_CONST(37003.922865/8.0), + REAL_CONST(37022.416735/8.0), + REAL_CONST(37040.912915/8.0), + REAL_CONST(37059.411404/8.0), + REAL_CONST(37077.912202/8.0), + REAL_CONST(37096.415309/8.0), + REAL_CONST(37114.920722/8.0), + REAL_CONST(37133.428443/8.0), + REAL_CONST(37151.938470/8.0), + REAL_CONST(37170.450803/8.0), + REAL_CONST(37188.965441/8.0), + REAL_CONST(37207.482384/8.0), + REAL_CONST(37226.001631/8.0), + REAL_CONST(37244.523182/8.0), + REAL_CONST(37263.047035/8.0), + REAL_CONST(37281.573191/8.0), + REAL_CONST(37300.101648/8.0), + REAL_CONST(37318.632407/8.0), + REAL_CONST(37337.165467/8.0), + REAL_CONST(37355.700827/8.0), + REAL_CONST(37374.238486/8.0), + REAL_CONST(37392.778444/8.0), + REAL_CONST(37411.320701/8.0), + REAL_CONST(37429.865255/8.0), + REAL_CONST(37448.412107/8.0), + REAL_CONST(37466.961255/8.0), + REAL_CONST(37485.512699/8.0), + REAL_CONST(37504.066439/8.0), + REAL_CONST(37522.622474/8.0), + REAL_CONST(37541.180803/8.0), + REAL_CONST(37559.741427/8.0), + REAL_CONST(37578.304343/8.0), + REAL_CONST(37596.869552/8.0), + REAL_CONST(37615.437054/8.0), + REAL_CONST(37634.006846/8.0), + REAL_CONST(37652.578930/8.0), + REAL_CONST(37671.153305/8.0), + REAL_CONST(37689.729969/8.0), + REAL_CONST(37708.308922/8.0), + REAL_CONST(37726.890165/8.0), + REAL_CONST(37745.473695/8.0), + REAL_CONST(37764.059513/8.0), + REAL_CONST(37782.647619/8.0), + REAL_CONST(37801.238010/8.0), + REAL_CONST(37819.830688/8.0), + REAL_CONST(37838.425651/8.0), + REAL_CONST(37857.022899/8.0), + REAL_CONST(37875.622431/8.0), + REAL_CONST(37894.224246/8.0), + REAL_CONST(37912.828345/8.0), + REAL_CONST(37931.434727/8.0), + REAL_CONST(37950.043390/8.0), + REAL_CONST(37968.654335/8.0), + REAL_CONST(37987.267561/8.0), + REAL_CONST(38005.883067/8.0), + REAL_CONST(38024.500853/8.0), + REAL_CONST(38043.120918/8.0), + REAL_CONST(38061.743262/8.0), + REAL_CONST(38080.367884/8.0), + REAL_CONST(38098.994783/8.0), + REAL_CONST(38117.623960/8.0), + REAL_CONST(38136.255413/8.0), + REAL_CONST(38154.889141/8.0), + REAL_CONST(38173.525145/8.0), + REAL_CONST(38192.163424/8.0), + REAL_CONST(38210.803977/8.0), + REAL_CONST(38229.446804/8.0), + REAL_CONST(38248.091904/8.0), + REAL_CONST(38266.739276/8.0), + REAL_CONST(38285.388920/8.0), + REAL_CONST(38304.040836/8.0), + REAL_CONST(38322.695023/8.0), + REAL_CONST(38341.351480/8.0), + REAL_CONST(38360.010207/8.0), + REAL_CONST(38378.671203/8.0), + REAL_CONST(38397.334467/8.0), + REAL_CONST(38416.000000/8.0), + REAL_CONST(38434.667800/8.0), + REAL_CONST(38453.337868/8.0), + REAL_CONST(38472.010202/8.0), + REAL_CONST(38490.684801/8.0), + REAL_CONST(38509.361667/8.0), + REAL_CONST(38528.040797/8.0), + REAL_CONST(38546.722191/8.0), + REAL_CONST(38565.405849/8.0), + REAL_CONST(38584.091770/8.0), + REAL_CONST(38602.779954/8.0), + REAL_CONST(38621.470400/8.0), + REAL_CONST(38640.163107/8.0), + REAL_CONST(38658.858075/8.0), + REAL_CONST(38677.555304/8.0), + REAL_CONST(38696.254793/8.0), + REAL_CONST(38714.956541/8.0), + REAL_CONST(38733.660548/8.0), + REAL_CONST(38752.366813/8.0), + REAL_CONST(38771.075336/8.0), + REAL_CONST(38789.786116/8.0), + REAL_CONST(38808.499152/8.0), + REAL_CONST(38827.214445/8.0), + REAL_CONST(38845.931993/8.0), + REAL_CONST(38864.651797/8.0), + REAL_CONST(38883.373854/8.0), + REAL_CONST(38902.098166/8.0), + REAL_CONST(38920.824731/8.0), + REAL_CONST(38939.553548/8.0), + REAL_CONST(38958.284618/8.0), + REAL_CONST(38977.017940/8.0), + REAL_CONST(38995.753513/8.0), + REAL_CONST(39014.491337/8.0), + REAL_CONST(39033.231411/8.0), + REAL_CONST(39051.973734/8.0), + REAL_CONST(39070.718306/8.0), + REAL_CONST(39089.465127/8.0), + REAL_CONST(39108.214196/8.0), + REAL_CONST(39126.965512/8.0), + REAL_CONST(39145.719075/8.0), + REAL_CONST(39164.474885/8.0), + REAL_CONST(39183.232940/8.0), + REAL_CONST(39201.993240/8.0), + REAL_CONST(39220.755786/8.0), + REAL_CONST(39239.520575/8.0), + REAL_CONST(39258.287608/8.0), + REAL_CONST(39277.056884/8.0), + REAL_CONST(39295.828403/8.0), + REAL_CONST(39314.602164/8.0), + REAL_CONST(39333.378166/8.0), + REAL_CONST(39352.156409/8.0), + REAL_CONST(39370.936893/8.0), + REAL_CONST(39389.719617/8.0), + REAL_CONST(39408.504580/8.0), + REAL_CONST(39427.291782/8.0), + REAL_CONST(39446.081222/8.0), + REAL_CONST(39464.872900/8.0), + REAL_CONST(39483.666815/8.0), + REAL_CONST(39502.462967/8.0), + REAL_CONST(39521.261355/8.0), + REAL_CONST(39540.061978/8.0), + REAL_CONST(39558.864837/8.0), + REAL_CONST(39577.669930/8.0), + REAL_CONST(39596.477258/8.0), + REAL_CONST(39615.286819/8.0), + REAL_CONST(39634.098613/8.0), + REAL_CONST(39652.912639/8.0), + REAL_CONST(39671.728897/8.0), + REAL_CONST(39690.547387/8.0), + REAL_CONST(39709.368108/8.0), + REAL_CONST(39728.191058/8.0), + REAL_CONST(39747.016239/8.0), + REAL_CONST(39765.843649/8.0), + REAL_CONST(39784.673288/8.0), + REAL_CONST(39803.505155/8.0), + REAL_CONST(39822.339250/8.0), + REAL_CONST(39841.175571/8.0), + REAL_CONST(39860.014120/8.0), + REAL_CONST(39878.854894/8.0), + REAL_CONST(39897.697895/8.0), + REAL_CONST(39916.543120/8.0), + REAL_CONST(39935.390570/8.0), + REAL_CONST(39954.240244/8.0), + REAL_CONST(39973.092141/8.0), + REAL_CONST(39991.946261/8.0), + REAL_CONST(40010.802604/8.0), + REAL_CONST(40029.661169/8.0), + REAL_CONST(40048.521955/8.0), + REAL_CONST(40067.384962/8.0), + REAL_CONST(40086.250189/8.0), + REAL_CONST(40105.117636/8.0), + REAL_CONST(40123.987303/8.0), + REAL_CONST(40142.859188/8.0), + REAL_CONST(40161.733291/8.0), + REAL_CONST(40180.609613/8.0), + REAL_CONST(40199.488151/8.0), + REAL_CONST(40218.368906/8.0), + REAL_CONST(40237.251878/8.0), + REAL_CONST(40256.137065/8.0), + REAL_CONST(40275.024467/8.0), + REAL_CONST(40293.914083/8.0), + REAL_CONST(40312.805914/8.0), + REAL_CONST(40331.699959/8.0), + REAL_CONST(40350.596216/8.0), + REAL_CONST(40369.494686/8.0), + REAL_CONST(40388.395368/8.0), + REAL_CONST(40407.298262/8.0), + REAL_CONST(40426.203367/8.0), + REAL_CONST(40445.110682/8.0), + REAL_CONST(40464.020207/8.0), + REAL_CONST(40482.931941/8.0), + REAL_CONST(40501.845885/8.0), + REAL_CONST(40520.762036/8.0), + REAL_CONST(40539.680396/8.0), + REAL_CONST(40558.600963/8.0), + REAL_CONST(40577.523737/8.0), + REAL_CONST(40596.448718/8.0), + REAL_CONST(40615.375904/8.0), + REAL_CONST(40634.305295/8.0), + REAL_CONST(40653.236891/8.0), + REAL_CONST(40672.170692/8.0), + REAL_CONST(40691.106696/8.0), + REAL_CONST(40710.044904/8.0), + REAL_CONST(40728.985314/8.0), + REAL_CONST(40747.927927/8.0), + REAL_CONST(40766.872741/8.0), + REAL_CONST(40785.819757/8.0), + REAL_CONST(40804.768973/8.0), + REAL_CONST(40823.720390/8.0), + REAL_CONST(40842.674006/8.0), + REAL_CONST(40861.629821/8.0), + REAL_CONST(40880.587835/8.0), + REAL_CONST(40899.548048/8.0), + REAL_CONST(40918.510457/8.0), + REAL_CONST(40937.475064/8.0), + REAL_CONST(40956.441868/8.0), + REAL_CONST(40975.410868/8.0), + REAL_CONST(40994.382063/8.0), + REAL_CONST(41013.355454/8.0), + REAL_CONST(41032.331039/8.0), + REAL_CONST(41051.308818/8.0), + REAL_CONST(41070.288790/8.0), + REAL_CONST(41089.270956/8.0), + REAL_CONST(41108.255315/8.0), + REAL_CONST(41127.241865/8.0), + REAL_CONST(41146.230607/8.0), + REAL_CONST(41165.221540/8.0), + REAL_CONST(41184.214664/8.0), + REAL_CONST(41203.209977/8.0), + REAL_CONST(41222.207480/8.0), + REAL_CONST(41241.207173/8.0), + REAL_CONST(41260.209053/8.0), + REAL_CONST(41279.213122/8.0), + REAL_CONST(41298.219378/8.0), + REAL_CONST(41317.227822/8.0), + REAL_CONST(41336.238451/8.0), + REAL_CONST(41355.251267/8.0), + REAL_CONST(41374.266268/8.0), + REAL_CONST(41393.283455/8.0), + REAL_CONST(41412.302826/8.0), + REAL_CONST(41431.324380/8.0), + REAL_CONST(41450.348119/8.0), + REAL_CONST(41469.374040/8.0), + REAL_CONST(41488.402144/8.0), + REAL_CONST(41507.432430/8.0), + REAL_CONST(41526.464897/8.0), + REAL_CONST(41545.499545/8.0), + REAL_CONST(41564.536374/8.0), + REAL_CONST(41583.575383/8.0), + REAL_CONST(41602.616571/8.0), + REAL_CONST(41621.659938/8.0), + REAL_CONST(41640.705484/8.0), + REAL_CONST(41659.753208/8.0), + REAL_CONST(41678.803109/8.0), + REAL_CONST(41697.855187/8.0), + REAL_CONST(41716.909442/8.0), + REAL_CONST(41735.965873/8.0), + REAL_CONST(41755.024479/8.0), + REAL_CONST(41774.085261/8.0), + REAL_CONST(41793.148217/8.0), + REAL_CONST(41812.213347/8.0), + REAL_CONST(41831.280650/8.0), + REAL_CONST(41850.350126/8.0), + REAL_CONST(41869.421775/8.0), + REAL_CONST(41888.495597/8.0), + REAL_CONST(41907.571589/8.0), + REAL_CONST(41926.649753/8.0), + REAL_CONST(41945.730087/8.0), + REAL_CONST(41964.812591/8.0), + REAL_CONST(41983.897265/8.0), + REAL_CONST(42002.984108/8.0), + REAL_CONST(42022.073120/8.0), + REAL_CONST(42041.164299/8.0), + REAL_CONST(42060.257647/8.0), + REAL_CONST(42079.353161/8.0), + REAL_CONST(42098.450842/8.0), + REAL_CONST(42117.550689/8.0), + REAL_CONST(42136.652702/8.0), + REAL_CONST(42155.756880/8.0), + REAL_CONST(42174.863222/8.0), + REAL_CONST(42193.971729/8.0), + REAL_CONST(42213.082399/8.0), + REAL_CONST(42232.195233/8.0), + REAL_CONST(42251.310229/8.0), + REAL_CONST(42270.427388/8.0), + REAL_CONST(42289.546708/8.0), + REAL_CONST(42308.668190/8.0), + REAL_CONST(42327.791832/8.0), + REAL_CONST(42346.917634/8.0), + REAL_CONST(42366.045596/8.0), + REAL_CONST(42385.175718/8.0), + REAL_CONST(42404.307998/8.0), + REAL_CONST(42423.442437/8.0), + REAL_CONST(42442.579033/8.0), + REAL_CONST(42461.717787/8.0), + REAL_CONST(42480.858697/8.0), + REAL_CONST(42500.001764/8.0), + REAL_CONST(42519.146987/8.0), + REAL_CONST(42538.294365/8.0), + REAL_CONST(42557.443898/8.0), + REAL_CONST(42576.595586/8.0), + REAL_CONST(42595.749427/8.0), + REAL_CONST(42614.905422/8.0), + REAL_CONST(42634.063570/8.0), + REAL_CONST(42653.223870/8.0), + REAL_CONST(42672.386323/8.0), + REAL_CONST(42691.550926/8.0), + REAL_CONST(42710.717681/8.0), + REAL_CONST(42729.886587/8.0), + REAL_CONST(42749.057642/8.0), + REAL_CONST(42768.230847/8.0), + REAL_CONST(42787.406201/8.0), + REAL_CONST(42806.583704/8.0), + REAL_CONST(42825.763355/8.0), + REAL_CONST(42844.945154/8.0), + REAL_CONST(42864.129099/8.0), + REAL_CONST(42883.315192/8.0), + REAL_CONST(42902.503431/8.0), + REAL_CONST(42921.693815/8.0), + REAL_CONST(42940.886345/8.0), + REAL_CONST(42960.081019/8.0), + REAL_CONST(42979.277838/8.0), + REAL_CONST(42998.476800/8.0), + REAL_CONST(43017.677906/8.0), + REAL_CONST(43036.881155/8.0), + REAL_CONST(43056.086546/8.0), + REAL_CONST(43075.294079/8.0), + REAL_CONST(43094.503754/8.0), + REAL_CONST(43113.715569/8.0), + REAL_CONST(43132.929525/8.0), + REAL_CONST(43152.145621/8.0), + REAL_CONST(43171.363856/8.0), + REAL_CONST(43190.584231/8.0), + REAL_CONST(43209.806744/8.0), + REAL_CONST(43229.031395/8.0), + REAL_CONST(43248.258183/8.0), + REAL_CONST(43267.487109/8.0), + REAL_CONST(43286.718172/8.0), + REAL_CONST(43305.951370/8.0), + REAL_CONST(43325.186705/8.0), + REAL_CONST(43344.424175/8.0), + REAL_CONST(43363.663779/8.0), + REAL_CONST(43382.905518/8.0), + REAL_CONST(43402.149390/8.0), + REAL_CONST(43421.395396/8.0), + REAL_CONST(43440.643535/8.0), + REAL_CONST(43459.893806/8.0), + REAL_CONST(43479.146209/8.0), + REAL_CONST(43498.400744/8.0), + REAL_CONST(43517.657409/8.0), + REAL_CONST(43536.916206/8.0), + REAL_CONST(43556.177132/8.0), + REAL_CONST(43575.440187/8.0), + REAL_CONST(43594.705372/8.0), + REAL_CONST(43613.972686/8.0), + REAL_CONST(43633.242127/8.0), + REAL_CONST(43652.513697/8.0), + REAL_CONST(43671.787393/8.0), + REAL_CONST(43691.063216/8.0), + REAL_CONST(43710.341166/8.0), + REAL_CONST(43729.621241/8.0), + REAL_CONST(43748.903442/8.0), + REAL_CONST(43768.187767/8.0), + REAL_CONST(43787.474217/8.0), + REAL_CONST(43806.762791/8.0), + REAL_CONST(43826.053489/8.0), + REAL_CONST(43845.346309/8.0), + REAL_CONST(43864.641252/8.0), + REAL_CONST(43883.938317/8.0), + REAL_CONST(43903.237504/8.0), + REAL_CONST(43922.538812/8.0), + REAL_CONST(43941.842240/8.0), + REAL_CONST(43961.147789/8.0), + REAL_CONST(43980.455457/8.0), + REAL_CONST(43999.765245/8.0), + REAL_CONST(44019.077151/8.0), + REAL_CONST(44038.391176/8.0), + REAL_CONST(44057.707319/8.0), + REAL_CONST(44077.025579/8.0), + REAL_CONST(44096.345956/8.0), + REAL_CONST(44115.668450/8.0), + REAL_CONST(44134.993059/8.0), + REAL_CONST(44154.319784/8.0), + REAL_CONST(44173.648625/8.0), + REAL_CONST(44192.979580/8.0), + REAL_CONST(44212.312649/8.0), + REAL_CONST(44231.647831/8.0), + REAL_CONST(44250.985127/8.0), + REAL_CONST(44270.324536/8.0), + REAL_CONST(44289.666057/8.0), + REAL_CONST(44309.009690/8.0), + REAL_CONST(44328.355435/8.0), + REAL_CONST(44347.703290/8.0), + REAL_CONST(44367.053256/8.0), + REAL_CONST(44386.405332/8.0), + REAL_CONST(44405.759517/8.0), + REAL_CONST(44425.115812/8.0), + REAL_CONST(44444.474215/8.0), + REAL_CONST(44463.834726/8.0), + REAL_CONST(44483.197346/8.0), + REAL_CONST(44502.562072/8.0), + REAL_CONST(44521.928905/8.0), + REAL_CONST(44541.297845/8.0), + REAL_CONST(44560.668890/8.0), + REAL_CONST(44580.042041/8.0), + REAL_CONST(44599.417297/8.0), + REAL_CONST(44618.794657/8.0), + REAL_CONST(44638.174121/8.0), + REAL_CONST(44657.555689/8.0), + REAL_CONST(44676.939361/8.0), + REAL_CONST(44696.325134/8.0), + REAL_CONST(44715.713011/8.0), + REAL_CONST(44735.102988/8.0), + REAL_CONST(44754.495068/8.0), + REAL_CONST(44773.889248/8.0), + REAL_CONST(44793.285528/8.0), + REAL_CONST(44812.683909/8.0), + REAL_CONST(44832.084388/8.0), + REAL_CONST(44851.486967/8.0), + REAL_CONST(44870.891645/8.0), + REAL_CONST(44890.298421/8.0), + REAL_CONST(44909.707294/8.0), + REAL_CONST(44929.118265/8.0), + REAL_CONST(44948.531332/8.0), + REAL_CONST(44967.946496/8.0), + REAL_CONST(44987.363756/8.0), + REAL_CONST(45006.783111/8.0), + REAL_CONST(45026.204561/8.0), + REAL_CONST(45045.628105/8.0), + REAL_CONST(45065.053744/8.0), + REAL_CONST(45084.481476/8.0), + REAL_CONST(45103.911302/8.0), + REAL_CONST(45123.343220/8.0), + REAL_CONST(45142.777230/8.0), + REAL_CONST(45162.213333/8.0), + REAL_CONST(45181.651526/8.0), + REAL_CONST(45201.091811/8.0), + REAL_CONST(45220.534186/8.0), + REAL_CONST(45239.978651/8.0), + REAL_CONST(45259.425205/8.0), + REAL_CONST(45278.873849/8.0), + REAL_CONST(45298.324581/8.0), + REAL_CONST(45317.777402/8.0), + REAL_CONST(45337.232310/8.0), + REAL_CONST(45356.689306/8.0), + REAL_CONST(45376.148388/8.0), + REAL_CONST(45395.609557/8.0), + REAL_CONST(45415.072812/8.0), + REAL_CONST(45434.538153/8.0), + REAL_CONST(45454.005578/8.0), + REAL_CONST(45473.475088/8.0), + REAL_CONST(45492.946683/8.0), + REAL_CONST(45512.420361/8.0), + REAL_CONST(45531.896122/8.0), + REAL_CONST(45551.373967/8.0), + REAL_CONST(45570.853893/8.0), + REAL_CONST(45590.335902/8.0), + REAL_CONST(45609.819992/8.0), + REAL_CONST(45629.306164/8.0), + REAL_CONST(45648.794416/8.0), + REAL_CONST(45668.284748/8.0), + REAL_CONST(45687.777160/8.0), + REAL_CONST(45707.271651/8.0), + REAL_CONST(45726.768221/8.0), + REAL_CONST(45746.266869/8.0), + REAL_CONST(45765.767596/8.0), + REAL_CONST(45785.270400/8.0), + REAL_CONST(45804.775281/8.0), + REAL_CONST(45824.282238/8.0), + REAL_CONST(45843.791272/8.0), + REAL_CONST(45863.302382/8.0), + REAL_CONST(45882.815567/8.0), + REAL_CONST(45902.330827/8.0), + REAL_CONST(45921.848161/8.0), + REAL_CONST(45941.367569/8.0), + REAL_CONST(45960.889051/8.0), + REAL_CONST(45980.412606/8.0), + REAL_CONST(45999.938233/8.0), + REAL_CONST(46019.465933/8.0), + REAL_CONST(46038.995705/8.0), + REAL_CONST(46058.527548/8.0), + REAL_CONST(46078.061462/8.0), + REAL_CONST(46097.597446/8.0), + REAL_CONST(46117.135501/8.0), + REAL_CONST(46136.675625/8.0), + REAL_CONST(46156.217818/8.0), + REAL_CONST(46175.762080/8.0), + REAL_CONST(46195.308410/8.0), + REAL_CONST(46214.856808/8.0), + REAL_CONST(46234.407273/8.0), + REAL_CONST(46253.959806/8.0), + REAL_CONST(46273.514405/8.0), + REAL_CONST(46293.071070/8.0), + REAL_CONST(46312.629800/8.0), + REAL_CONST(46332.190596/8.0), + REAL_CONST(46351.753457/8.0), + REAL_CONST(46371.318382/8.0), + REAL_CONST(46390.885371/8.0), + REAL_CONST(46410.454424/8.0), + REAL_CONST(46430.025539/8.0), + REAL_CONST(46449.598717/8.0), + REAL_CONST(46469.173958/8.0), + REAL_CONST(46488.751260/8.0), + REAL_CONST(46508.330623/8.0), + REAL_CONST(46527.912048/8.0), + REAL_CONST(46547.495532/8.0), + REAL_CONST(46567.081077/8.0), + REAL_CONST(46586.668681/8.0), + REAL_CONST(46606.258345/8.0), + REAL_CONST(46625.850067/8.0), + REAL_CONST(46645.443847/8.0), + REAL_CONST(46665.039686/8.0), + REAL_CONST(46684.637581/8.0), + REAL_CONST(46704.237534/8.0), + REAL_CONST(46723.839543/8.0), + REAL_CONST(46743.443609/8.0), + REAL_CONST(46763.049730/8.0), + REAL_CONST(46782.657906/8.0), + REAL_CONST(46802.268137/8.0), + REAL_CONST(46821.880423/8.0), + REAL_CONST(46841.494762/8.0), + REAL_CONST(46861.111155/8.0), + REAL_CONST(46880.729601/8.0), + REAL_CONST(46900.350100/8.0), + REAL_CONST(46919.972651/8.0), + REAL_CONST(46939.597254/8.0), + REAL_CONST(46959.223908/8.0), + REAL_CONST(46978.852613/8.0), + REAL_CONST(46998.483369/8.0), + REAL_CONST(47018.116175/8.0), + REAL_CONST(47037.751030/8.0), + REAL_CONST(47057.387935/8.0), + REAL_CONST(47077.026889/8.0), + REAL_CONST(47096.667891/8.0), + REAL_CONST(47116.310941/8.0), + REAL_CONST(47135.956038/8.0), + REAL_CONST(47155.603183/8.0), + REAL_CONST(47175.252374/8.0), + REAL_CONST(47194.903611/8.0), + REAL_CONST(47214.556895/8.0), + REAL_CONST(47234.212223/8.0), + REAL_CONST(47253.869597/8.0), + REAL_CONST(47273.529016/8.0), + REAL_CONST(47293.190478/8.0), + REAL_CONST(47312.853984/8.0), + REAL_CONST(47332.519533/8.0), + REAL_CONST(47352.187126/8.0), + REAL_CONST(47371.856760/8.0), + REAL_CONST(47391.528437/8.0), + REAL_CONST(47411.202155/8.0), + REAL_CONST(47430.877915/8.0), + REAL_CONST(47450.555715/8.0), + REAL_CONST(47470.235556/8.0), + REAL_CONST(47489.917436/8.0), + REAL_CONST(47509.601356/8.0), + REAL_CONST(47529.287315/8.0), + REAL_CONST(47548.975312/8.0), + REAL_CONST(47568.665348/8.0), + REAL_CONST(47588.357421/8.0), + REAL_CONST(47608.051532/8.0), + REAL_CONST(47627.747680/8.0), + REAL_CONST(47647.445864/8.0), + REAL_CONST(47667.146085/8.0), + REAL_CONST(47686.848341/8.0), + REAL_CONST(47706.552632/8.0), + REAL_CONST(47726.258958/8.0), + REAL_CONST(47745.967319/8.0), + REAL_CONST(47765.677714/8.0), + REAL_CONST(47785.390142/8.0), + REAL_CONST(47805.104603/8.0), + REAL_CONST(47824.821097/8.0), + REAL_CONST(47844.539623/8.0), + REAL_CONST(47864.260181/8.0), + REAL_CONST(47883.982771/8.0), + REAL_CONST(47903.707392/8.0), + REAL_CONST(47923.434043/8.0), + REAL_CONST(47943.162725/8.0), + REAL_CONST(47962.893436/8.0), + REAL_CONST(47982.626177/8.0), + REAL_CONST(48002.360947/8.0), + REAL_CONST(48022.097745/8.0), + REAL_CONST(48041.836572/8.0), + REAL_CONST(48061.577426/8.0), + REAL_CONST(48081.320307/8.0), + REAL_CONST(48101.065216/8.0), + REAL_CONST(48120.812151/8.0), + REAL_CONST(48140.561112/8.0), + REAL_CONST(48160.312098/8.0), + REAL_CONST(48180.065110/8.0), + REAL_CONST(48199.820146/8.0), + REAL_CONST(48219.577207/8.0), + REAL_CONST(48239.336292/8.0), + REAL_CONST(48259.097401/8.0), + REAL_CONST(48278.860533/8.0), + REAL_CONST(48298.625687/8.0), + REAL_CONST(48318.392864/8.0), + REAL_CONST(48338.162062/8.0), + REAL_CONST(48357.933282/8.0), + REAL_CONST(48377.706524/8.0), + REAL_CONST(48397.481785/8.0), + REAL_CONST(48417.259068/8.0), + REAL_CONST(48437.038369/8.0), + REAL_CONST(48456.819691/8.0), + REAL_CONST(48476.603031/8.0), + REAL_CONST(48496.388390/8.0), + REAL_CONST(48516.175767/8.0), + REAL_CONST(48535.965162/8.0), + REAL_CONST(48555.756575/8.0), + REAL_CONST(48575.550004/8.0), + REAL_CONST(48595.345450/8.0), + REAL_CONST(48615.142912/8.0), + REAL_CONST(48634.942390/8.0), + REAL_CONST(48654.743883/8.0), + REAL_CONST(48674.547391/8.0), + REAL_CONST(48694.352913/8.0), + REAL_CONST(48714.160450/8.0), + REAL_CONST(48733.970000/8.0), + REAL_CONST(48753.781563/8.0), + REAL_CONST(48773.595140/8.0), + REAL_CONST(48793.410728/8.0), + REAL_CONST(48813.228329/8.0), + REAL_CONST(48833.047942/8.0), + REAL_CONST(48852.869565/8.0), + REAL_CONST(48872.693200/8.0), + REAL_CONST(48892.518845/8.0), + REAL_CONST(48912.346500/8.0), + REAL_CONST(48932.176164/8.0), + REAL_CONST(48952.007838/8.0), + REAL_CONST(48971.841520/8.0), + REAL_CONST(48991.677211/8.0), + REAL_CONST(49011.514910/8.0), + REAL_CONST(49031.354616/8.0), + REAL_CONST(49051.196330/8.0), + REAL_CONST(49071.040050/8.0), + REAL_CONST(49090.885777/8.0), + REAL_CONST(49110.733509/8.0), + REAL_CONST(49130.583247/8.0), + REAL_CONST(49150.434991/8.0), + REAL_CONST(49170.288739/8.0), + REAL_CONST(49190.144491/8.0), + REAL_CONST(49210.002247/8.0), + REAL_CONST(49229.862007/8.0), + REAL_CONST(49249.723769/8.0), + REAL_CONST(49269.587535/8.0), + REAL_CONST(49289.453303/8.0), + REAL_CONST(49309.321072/8.0), + REAL_CONST(49329.190843/8.0), + REAL_CONST(49349.062616/8.0), + REAL_CONST(49368.936388/8.0), + REAL_CONST(49388.812162/8.0), + REAL_CONST(49408.689935/8.0), + REAL_CONST(49428.569707/8.0), + REAL_CONST(49448.451479/8.0), + REAL_CONST(49468.335249/8.0), + REAL_CONST(49488.221018/8.0), + REAL_CONST(49508.108784/8.0), + REAL_CONST(49527.998548/8.0), + REAL_CONST(49547.890309/8.0), + REAL_CONST(49567.784066/8.0), + REAL_CONST(49587.679820/8.0), + REAL_CONST(49607.577570/8.0), + REAL_CONST(49627.477315/8.0), + REAL_CONST(49647.379055/8.0), + REAL_CONST(49667.282790/8.0), + REAL_CONST(49687.188520/8.0), + REAL_CONST(49707.096243/8.0), + REAL_CONST(49727.005959/8.0), + REAL_CONST(49746.917669/8.0), + REAL_CONST(49766.831371/8.0), + REAL_CONST(49786.747065/8.0), + REAL_CONST(49806.664752/8.0), + REAL_CONST(49826.584430/8.0), + REAL_CONST(49846.506098/8.0), + REAL_CONST(49866.429758/8.0), + REAL_CONST(49886.355408/8.0), + REAL_CONST(49906.283048/8.0), + REAL_CONST(49926.212677/8.0), + REAL_CONST(49946.144295/8.0), + REAL_CONST(49966.077902/8.0), + REAL_CONST(49986.013497/8.0), + REAL_CONST(50005.951081/8.0), + REAL_CONST(50025.890651/8.0), + REAL_CONST(50045.832209/8.0), + REAL_CONST(50065.775753/8.0), + REAL_CONST(50085.721284/8.0), + REAL_CONST(50105.668801/8.0), + REAL_CONST(50125.618303/8.0), + REAL_CONST(50145.569791/8.0), + REAL_CONST(50165.523263/8.0), + REAL_CONST(50185.478719/8.0), + REAL_CONST(50205.436159/8.0), + REAL_CONST(50225.395583/8.0), + REAL_CONST(50245.356990/8.0), + REAL_CONST(50265.320380/8.0), + REAL_CONST(50285.285752/8.0), + REAL_CONST(50305.253106/8.0), + REAL_CONST(50325.222442/8.0), + REAL_CONST(50345.193759/8.0), + REAL_CONST(50365.167057/8.0), + REAL_CONST(50385.142335/8.0), + REAL_CONST(50405.119593/8.0), + REAL_CONST(50425.098831/8.0), + REAL_CONST(50445.080047/8.0), + REAL_CONST(50465.063243/8.0), + REAL_CONST(50485.048417/8.0), + REAL_CONST(50505.035570/8.0), + REAL_CONST(50525.024699/8.0), + REAL_CONST(50545.015807/8.0), + REAL_CONST(50565.008891/8.0), + REAL_CONST(50585.003951/8.0), + REAL_CONST(50605.000988/8.0), + REAL_CONST(50625.000000/8.0), + REAL_CONST(50645.000988/8.0), + REAL_CONST(50665.003950/8.0), + REAL_CONST(50685.008887/8.0), + REAL_CONST(50705.015798/8.0), + REAL_CONST(50725.024683/8.0), + REAL_CONST(50745.035542/8.0), + REAL_CONST(50765.048373/8.0), + REAL_CONST(50785.063177/8.0), + REAL_CONST(50805.079953/8.0), + REAL_CONST(50825.098700/8.0), + REAL_CONST(50845.119420/8.0), + REAL_CONST(50865.142110/8.0), + REAL_CONST(50885.166771/8.0), + REAL_CONST(50905.193402/8.0), + REAL_CONST(50925.222003/8.0), + REAL_CONST(50945.252574/8.0), + REAL_CONST(50965.285113/8.0), + REAL_CONST(50985.319622/8.0), + REAL_CONST(51005.356098/8.0), + REAL_CONST(51025.394543/8.0), + REAL_CONST(51045.434955/8.0), + REAL_CONST(51065.477334/8.0), + REAL_CONST(51085.521680/8.0), + REAL_CONST(51105.567993/8.0), + REAL_CONST(51125.616271/8.0), + REAL_CONST(51145.666515/8.0), + REAL_CONST(51165.718724/8.0), + REAL_CONST(51185.772898/8.0), + REAL_CONST(51205.829037/8.0), + REAL_CONST(51225.887140/8.0), + REAL_CONST(51245.947206/8.0), + REAL_CONST(51266.009235/8.0), + REAL_CONST(51286.073228/8.0), + REAL_CONST(51306.139183/8.0), + REAL_CONST(51326.207100/8.0), + REAL_CONST(51346.276979/8.0), + REAL_CONST(51366.348820/8.0), + REAL_CONST(51386.422621/8.0), + REAL_CONST(51406.498383/8.0), + REAL_CONST(51426.576105/8.0), + REAL_CONST(51446.655787/8.0), + REAL_CONST(51466.737429/8.0), + REAL_CONST(51486.821030/8.0), + REAL_CONST(51506.906589/8.0), + REAL_CONST(51526.994107/8.0), + REAL_CONST(51547.083582/8.0), + REAL_CONST(51567.175016/8.0), + REAL_CONST(51587.268406/8.0), + REAL_CONST(51607.363753/8.0), + REAL_CONST(51627.461057/8.0), + REAL_CONST(51647.560316/8.0), + REAL_CONST(51667.661532/8.0), + REAL_CONST(51687.764702/8.0), + REAL_CONST(51707.869828/8.0), + REAL_CONST(51727.976908/8.0), + REAL_CONST(51748.085942/8.0), + REAL_CONST(51768.196930/8.0), + REAL_CONST(51788.309871/8.0), + REAL_CONST(51808.424765/8.0), + REAL_CONST(51828.541612/8.0), + REAL_CONST(51848.660411/8.0), + REAL_CONST(51868.781162/8.0), + REAL_CONST(51888.903864/8.0), + REAL_CONST(51909.028518/8.0), + REAL_CONST(51929.155122/8.0), + REAL_CONST(51949.283677/8.0), + REAL_CONST(51969.414181/8.0), + REAL_CONST(51989.546636/8.0), + REAL_CONST(52009.681039/8.0), + REAL_CONST(52029.817391/8.0), + REAL_CONST(52049.955692/8.0), + REAL_CONST(52070.095941/8.0), + REAL_CONST(52090.238137/8.0), + REAL_CONST(52110.382281/8.0), + REAL_CONST(52130.528372/8.0), + REAL_CONST(52150.676409/8.0), + REAL_CONST(52170.826393/8.0), + REAL_CONST(52190.978322/8.0), + REAL_CONST(52211.132197/8.0), + REAL_CONST(52231.288017/8.0), + REAL_CONST(52251.445781/8.0), + REAL_CONST(52271.605490/8.0), + REAL_CONST(52291.767143/8.0), + REAL_CONST(52311.930739/8.0), + REAL_CONST(52332.096279/8.0), + REAL_CONST(52352.263761/8.0), + REAL_CONST(52372.433186/8.0), + REAL_CONST(52392.604553/8.0), + REAL_CONST(52412.777862/8.0), + REAL_CONST(52432.953112/8.0), + REAL_CONST(52453.130303/8.0), + REAL_CONST(52473.309434/8.0), + REAL_CONST(52493.490506/8.0), + REAL_CONST(52513.673518/8.0), + REAL_CONST(52533.858469/8.0), + REAL_CONST(52554.045359/8.0), + REAL_CONST(52574.234188/8.0), + REAL_CONST(52594.424955/8.0), + REAL_CONST(52614.617660/8.0), + REAL_CONST(52634.812303/8.0), + REAL_CONST(52655.008883/8.0), + REAL_CONST(52675.207400/8.0), + REAL_CONST(52695.407853/8.0), + REAL_CONST(52715.610242/8.0), + REAL_CONST(52735.814568/8.0), + REAL_CONST(52756.020828/8.0), + REAL_CONST(52776.229024/8.0), + REAL_CONST(52796.439154/8.0), + REAL_CONST(52816.651218/8.0), + REAL_CONST(52836.865217/8.0), + REAL_CONST(52857.081149/8.0), + REAL_CONST(52877.299014/8.0), + REAL_CONST(52897.518811/8.0), + REAL_CONST(52917.740542/8.0), + REAL_CONST(52937.964204/8.0), + REAL_CONST(52958.189798/8.0), + REAL_CONST(52978.417323/8.0), + REAL_CONST(52998.646779/8.0), + REAL_CONST(53018.878166/8.0), + REAL_CONST(53039.111483/8.0), + REAL_CONST(53059.346730/8.0), + REAL_CONST(53079.583906/8.0), + REAL_CONST(53099.823011/8.0), + REAL_CONST(53120.064045/8.0), + REAL_CONST(53140.307008/8.0), + REAL_CONST(53160.551898/8.0), + REAL_CONST(53180.798716/8.0), + REAL_CONST(53201.047462/8.0), + REAL_CONST(53221.298134/8.0), + REAL_CONST(53241.550732/8.0), + REAL_CONST(53261.805257/8.0), + REAL_CONST(53282.061708/8.0), + REAL_CONST(53302.320084/8.0), + REAL_CONST(53322.580385/8.0), + REAL_CONST(53342.842611/8.0), + REAL_CONST(53363.106761/8.0), + REAL_CONST(53383.372835/8.0), + REAL_CONST(53403.640833/8.0), + REAL_CONST(53423.910754/8.0), + REAL_CONST(53444.182598/8.0), + REAL_CONST(53464.456364/8.0), + REAL_CONST(53484.732053/8.0), + REAL_CONST(53505.009663/8.0), + REAL_CONST(53525.289195/8.0), + REAL_CONST(53545.570648/8.0), + REAL_CONST(53565.854021/8.0), + REAL_CONST(53586.139315/8.0), + REAL_CONST(53606.426528/8.0), + REAL_CONST(53626.715662/8.0), + REAL_CONST(53647.006714/8.0), + REAL_CONST(53667.299685/8.0), + REAL_CONST(53687.594575/8.0), + REAL_CONST(53707.891383/8.0), + REAL_CONST(53728.190109/8.0), + REAL_CONST(53748.490752/8.0), + REAL_CONST(53768.793313/8.0), + REAL_CONST(53789.097790/8.0), + REAL_CONST(53809.404183/8.0), + REAL_CONST(53829.712492/8.0), + REAL_CONST(53850.022717/8.0), + REAL_CONST(53870.334857/8.0), + REAL_CONST(53890.648912/8.0), + REAL_CONST(53910.964882/8.0), + REAL_CONST(53931.282765/8.0), + REAL_CONST(53951.602563/8.0), + REAL_CONST(53971.924274/8.0), + REAL_CONST(53992.247898/8.0), + REAL_CONST(54012.573434/8.0), + REAL_CONST(54032.900883/8.0), + REAL_CONST(54053.230245/8.0), + REAL_CONST(54073.561517/8.0), + REAL_CONST(54093.894701/8.0), + REAL_CONST(54114.229796/8.0), + REAL_CONST(54134.566802/8.0), + REAL_CONST(54154.905717/8.0), + REAL_CONST(54175.246543/8.0), + REAL_CONST(54195.589278/8.0), + REAL_CONST(54215.933922/8.0), + REAL_CONST(54236.280475/8.0), + REAL_CONST(54256.628937/8.0), + REAL_CONST(54276.979306/8.0), + REAL_CONST(54297.331583/8.0), + REAL_CONST(54317.685768/8.0), + REAL_CONST(54338.041859/8.0), + REAL_CONST(54358.399857/8.0), + REAL_CONST(54378.759761/8.0), + REAL_CONST(54399.121572/8.0), + REAL_CONST(54419.485287/8.0), + REAL_CONST(54439.850908/8.0), + REAL_CONST(54460.218434/8.0), + REAL_CONST(54480.587865/8.0), + REAL_CONST(54500.959199/8.0), + REAL_CONST(54521.332437/8.0), + REAL_CONST(54541.707579/8.0), + REAL_CONST(54562.084624/8.0), + REAL_CONST(54582.463571/8.0), + REAL_CONST(54602.844421/8.0), + REAL_CONST(54623.227173/8.0), + REAL_CONST(54643.611826/8.0), + REAL_CONST(54663.998381/8.0), + REAL_CONST(54684.386836/8.0), + REAL_CONST(54704.777193/8.0), + REAL_CONST(54725.169449/8.0), + REAL_CONST(54745.563605/8.0), + REAL_CONST(54765.959661/8.0), + REAL_CONST(54786.357616/8.0), + REAL_CONST(54806.757470/8.0), + REAL_CONST(54827.159222/8.0), + REAL_CONST(54847.562872/8.0), + REAL_CONST(54867.968421/8.0), + REAL_CONST(54888.375866/8.0), + REAL_CONST(54908.785209/8.0), + REAL_CONST(54929.196448/8.0), + REAL_CONST(54949.609583/8.0), + REAL_CONST(54970.024615/8.0), + REAL_CONST(54990.441542/8.0), + REAL_CONST(55010.860365/8.0), + REAL_CONST(55031.281082/8.0), + REAL_CONST(55051.703694/8.0), + REAL_CONST(55072.128200/8.0), + REAL_CONST(55092.554600/8.0), + REAL_CONST(55112.982894/8.0), + REAL_CONST(55133.413081/8.0), + REAL_CONST(55153.845160/8.0), + REAL_CONST(55174.279132/8.0), + REAL_CONST(55194.714997/8.0), + REAL_CONST(55215.152753/8.0), + REAL_CONST(55235.592400/8.0), + REAL_CONST(55256.033938/8.0), + REAL_CONST(55276.477368/8.0), + REAL_CONST(55296.922687/8.0), + REAL_CONST(55317.369897/8.0), + REAL_CONST(55337.818996/8.0), + REAL_CONST(55358.269985/8.0), + REAL_CONST(55378.722862/8.0), + REAL_CONST(55399.177628/8.0), + REAL_CONST(55419.634283/8.0), + REAL_CONST(55440.092825/8.0), + REAL_CONST(55460.553255/8.0), + REAL_CONST(55481.015572/8.0), + REAL_CONST(55501.479776/8.0), + REAL_CONST(55521.945867/8.0), + REAL_CONST(55542.413844/8.0), + REAL_CONST(55562.883706/8.0), + REAL_CONST(55583.355455/8.0), + REAL_CONST(55603.829088/8.0), + REAL_CONST(55624.304606/8.0), + REAL_CONST(55644.782009/8.0), + REAL_CONST(55665.261295/8.0), + REAL_CONST(55685.742466/8.0), + REAL_CONST(55706.225519/8.0), + REAL_CONST(55726.710456/8.0), + REAL_CONST(55747.197276/8.0), + REAL_CONST(55767.685978/8.0), + REAL_CONST(55788.176562/8.0), + REAL_CONST(55808.669028/8.0), + REAL_CONST(55829.163375/8.0), + REAL_CONST(55849.659603/8.0), + REAL_CONST(55870.157711/8.0), + REAL_CONST(55890.657700/8.0), + REAL_CONST(55911.159569/8.0), + REAL_CONST(55931.663318/8.0), + REAL_CONST(55952.168946/8.0), + REAL_CONST(55972.676452/8.0), + REAL_CONST(55993.185838/8.0), + REAL_CONST(56013.697101/8.0), + REAL_CONST(56034.210243/8.0), + REAL_CONST(56054.725262/8.0), + REAL_CONST(56075.242158/8.0), + REAL_CONST(56095.760931/8.0), + REAL_CONST(56116.281580/8.0), + REAL_CONST(56136.804106/8.0), + REAL_CONST(56157.328508/8.0), + REAL_CONST(56177.854785/8.0), + REAL_CONST(56198.382937/8.0), + REAL_CONST(56218.912964/8.0), + REAL_CONST(56239.444865/8.0), + REAL_CONST(56259.978641/8.0), + REAL_CONST(56280.514290/8.0), + REAL_CONST(56301.051813/8.0), + REAL_CONST(56321.591209/8.0), + REAL_CONST(56342.132478/8.0), + REAL_CONST(56362.675619/8.0), + REAL_CONST(56383.220632/8.0), + REAL_CONST(56403.767517/8.0), + REAL_CONST(56424.316273/8.0), + REAL_CONST(56444.866900/8.0), + REAL_CONST(56465.419398/8.0), + REAL_CONST(56485.973766/8.0), + REAL_CONST(56506.530005/8.0), + REAL_CONST(56527.088113/8.0), + REAL_CONST(56547.648090/8.0), + REAL_CONST(56568.209937/8.0), + REAL_CONST(56588.773652/8.0), + REAL_CONST(56609.339235/8.0), + REAL_CONST(56629.906686/8.0), + REAL_CONST(56650.476005/8.0), + REAL_CONST(56671.047192/8.0), + REAL_CONST(56691.620245/8.0), + REAL_CONST(56712.195165/8.0), + REAL_CONST(56732.771951/8.0), + REAL_CONST(56753.350603/8.0), + REAL_CONST(56773.931121/8.0), + REAL_CONST(56794.513504/8.0), + REAL_CONST(56815.097752/8.0), + REAL_CONST(56835.683865/8.0), + REAL_CONST(56856.271842/8.0), + REAL_CONST(56876.861682/8.0), + REAL_CONST(56897.453387/8.0), + REAL_CONST(56918.046954/8.0), + REAL_CONST(56938.642385/8.0), + REAL_CONST(56959.239678/8.0), + REAL_CONST(56979.838833/8.0), + REAL_CONST(57000.439850/8.0), + REAL_CONST(57021.042729/8.0), + REAL_CONST(57041.647469/8.0), + REAL_CONST(57062.254070/8.0), + REAL_CONST(57082.862532/8.0), + REAL_CONST(57103.472853/8.0), + REAL_CONST(57124.085035/8.0), + REAL_CONST(57144.699076/8.0), + REAL_CONST(57165.314977/8.0), + REAL_CONST(57185.932736/8.0), + REAL_CONST(57206.552354/8.0), + REAL_CONST(57227.173830/8.0), + REAL_CONST(57247.797163/8.0), + REAL_CONST(57268.422355/8.0), + REAL_CONST(57289.049403/8.0), + REAL_CONST(57309.678309/8.0), + REAL_CONST(57330.309071/8.0), + REAL_CONST(57350.941689/8.0), + REAL_CONST(57371.576163/8.0), + REAL_CONST(57392.212493/8.0), + REAL_CONST(57412.850678/8.0), + REAL_CONST(57433.490717/8.0), + REAL_CONST(57454.132612/8.0), + REAL_CONST(57474.776360/8.0), + REAL_CONST(57495.421962/8.0), + REAL_CONST(57516.069418/8.0), + REAL_CONST(57536.718727/8.0), + REAL_CONST(57557.369889/8.0), + REAL_CONST(57578.022904/8.0), + REAL_CONST(57598.677770/8.0), + REAL_CONST(57619.334489/8.0), + REAL_CONST(57639.993059/8.0), + REAL_CONST(57660.653480/8.0), + REAL_CONST(57681.315752/8.0), + REAL_CONST(57701.979875/8.0), + REAL_CONST(57722.645848/8.0), + REAL_CONST(57743.313671/8.0), + REAL_CONST(57763.983343/8.0), + REAL_CONST(57784.654864/8.0), + REAL_CONST(57805.328235/8.0), + REAL_CONST(57826.003454/8.0), + REAL_CONST(57846.680521/8.0), + REAL_CONST(57867.359436/8.0), + REAL_CONST(57888.040199/8.0), + REAL_CONST(57908.722809/8.0), + REAL_CONST(57929.407266/8.0), + REAL_CONST(57950.093569/8.0), + REAL_CONST(57970.781719/8.0), + REAL_CONST(57991.471715/8.0), + REAL_CONST(58012.163556/8.0), + REAL_CONST(58032.857242/8.0), + REAL_CONST(58053.552774/8.0), + REAL_CONST(58074.250150/8.0), + REAL_CONST(58094.949370/8.0), + REAL_CONST(58115.650434/8.0), + REAL_CONST(58136.353342/8.0), + REAL_CONST(58157.058093/8.0), + REAL_CONST(58177.764687/8.0), + REAL_CONST(58198.473124/8.0), + REAL_CONST(58219.183403/8.0), + REAL_CONST(58239.895524/8.0), + REAL_CONST(58260.609487/8.0), + REAL_CONST(58281.325291/8.0), + REAL_CONST(58302.042936/8.0), + REAL_CONST(58322.762421/8.0), + REAL_CONST(58343.483747/8.0), + REAL_CONST(58364.206913/8.0), + REAL_CONST(58384.931919/8.0), + REAL_CONST(58405.658764/8.0), + REAL_CONST(58426.387448/8.0), + REAL_CONST(58447.117971/8.0), + REAL_CONST(58467.850332/8.0), + REAL_CONST(58488.584531/8.0), + REAL_CONST(58509.320568/8.0), + REAL_CONST(58530.058443/8.0), + REAL_CONST(58550.798154/8.0), + REAL_CONST(58571.539702/8.0), + REAL_CONST(58592.283087/8.0), + REAL_CONST(58613.028308/8.0), + REAL_CONST(58633.775364/8.0), + REAL_CONST(58654.524256/8.0), + REAL_CONST(58675.274983/8.0), + REAL_CONST(58696.027545/8.0), + REAL_CONST(58716.781941/8.0), + REAL_CONST(58737.538172/8.0), + REAL_CONST(58758.296236/8.0), + REAL_CONST(58779.056134/8.0), + REAL_CONST(58799.817865/8.0), + REAL_CONST(58820.581429/8.0), + REAL_CONST(58841.346826/8.0), + REAL_CONST(58862.114054/8.0), + REAL_CONST(58882.883115/8.0), + REAL_CONST(58903.654007/8.0), + REAL_CONST(58924.426731/8.0), + REAL_CONST(58945.201285/8.0), + REAL_CONST(58965.977670/8.0), + REAL_CONST(58986.755885/8.0), + REAL_CONST(59007.535930/8.0), + REAL_CONST(59028.317805/8.0), + REAL_CONST(59049.101509/8.0), + REAL_CONST(59069.887042/8.0), + REAL_CONST(59090.674404/8.0), + REAL_CONST(59111.463594/8.0), + REAL_CONST(59132.254612/8.0), + REAL_CONST(59153.047458/8.0), + REAL_CONST(59173.842131/8.0), + REAL_CONST(59194.638631/8.0), + REAL_CONST(59215.436958/8.0), + REAL_CONST(59236.237111/8.0), + REAL_CONST(59257.039091/8.0), + REAL_CONST(59277.842896/8.0), + REAL_CONST(59298.648527/8.0), + REAL_CONST(59319.455983/8.0), + REAL_CONST(59340.265263/8.0), + REAL_CONST(59361.076369/8.0), + REAL_CONST(59381.889298/8.0), + REAL_CONST(59402.704051/8.0), + REAL_CONST(59423.520628/8.0), + REAL_CONST(59444.339028/8.0), + REAL_CONST(59465.159251/8.0), + REAL_CONST(59485.981296/8.0), + REAL_CONST(59506.805164/8.0), + REAL_CONST(59527.630853/8.0), + REAL_CONST(59548.458365/8.0), + REAL_CONST(59569.287697/8.0), + REAL_CONST(59590.118851/8.0), + REAL_CONST(59610.951825/8.0), + REAL_CONST(59631.786620/8.0), + REAL_CONST(59652.623234/8.0), + REAL_CONST(59673.461668/8.0), + REAL_CONST(59694.301922/8.0), + REAL_CONST(59715.143995/8.0), + REAL_CONST(59735.987886/8.0), + REAL_CONST(59756.833596/8.0), + REAL_CONST(59777.681124/8.0), + REAL_CONST(59798.530470/8.0), + REAL_CONST(59819.381634/8.0), + REAL_CONST(59840.234614/8.0), + REAL_CONST(59861.089412/8.0), + REAL_CONST(59881.946026/8.0), + REAL_CONST(59902.804456/8.0), + REAL_CONST(59923.664702/8.0), + REAL_CONST(59944.526764/8.0), + REAL_CONST(59965.390641/8.0), + REAL_CONST(59986.256333/8.0), + REAL_CONST(60007.123839/8.0), + REAL_CONST(60027.993160/8.0), + REAL_CONST(60048.864295/8.0), + REAL_CONST(60069.737243/8.0), + REAL_CONST(60090.612005/8.0), + REAL_CONST(60111.488581/8.0), + REAL_CONST(60132.366968/8.0), + REAL_CONST(60153.247169/8.0), + REAL_CONST(60174.129181/8.0), + REAL_CONST(60195.013005/8.0), + REAL_CONST(60215.898641/8.0), + REAL_CONST(60236.786088/8.0), + REAL_CONST(60257.675345/8.0), + REAL_CONST(60278.566414/8.0), + REAL_CONST(60299.459292/8.0), + REAL_CONST(60320.353981/8.0), + REAL_CONST(60341.250479/8.0), + REAL_CONST(60362.148786/8.0), + REAL_CONST(60383.048902/8.0), + REAL_CONST(60403.950827/8.0), + REAL_CONST(60424.854561/8.0), + REAL_CONST(60445.760102/8.0), + REAL_CONST(60466.667451/8.0), + REAL_CONST(60487.576608/8.0), + REAL_CONST(60508.487572/8.0), + REAL_CONST(60529.400342/8.0), + REAL_CONST(60550.314919/8.0), + REAL_CONST(60571.231302/8.0), + REAL_CONST(60592.149491/8.0), + REAL_CONST(60613.069486/8.0), + REAL_CONST(60633.991286/8.0), + REAL_CONST(60654.914890/8.0), + REAL_CONST(60675.840300/8.0), + REAL_CONST(60696.767513/8.0), + REAL_CONST(60717.696531/8.0), + REAL_CONST(60738.627352/8.0), + REAL_CONST(60759.559977/8.0), + REAL_CONST(60780.494405/8.0), + REAL_CONST(60801.430635/8.0), + REAL_CONST(60822.368668/8.0), + REAL_CONST(60843.308503/8.0), + REAL_CONST(60864.250140/8.0), + REAL_CONST(60885.193578/8.0), + REAL_CONST(60906.138818/8.0), + REAL_CONST(60927.085859/8.0), + REAL_CONST(60948.034700/8.0), + REAL_CONST(60968.985341/8.0), + REAL_CONST(60989.937782/8.0), + REAL_CONST(61010.892023/8.0), + REAL_CONST(61031.848063/8.0), + REAL_CONST(61052.805903/8.0), + REAL_CONST(61073.765541/8.0), + REAL_CONST(61094.726977/8.0), + REAL_CONST(61115.690212/8.0), + REAL_CONST(61136.655244/8.0), + REAL_CONST(61157.622074/8.0), + REAL_CONST(61178.590701/8.0), + REAL_CONST(61199.561125/8.0), + REAL_CONST(61220.533345/8.0), + REAL_CONST(61241.507362/8.0), + REAL_CONST(61262.483175/8.0), + REAL_CONST(61283.460783/8.0), + REAL_CONST(61304.440187/8.0), + REAL_CONST(61325.421385/8.0), + REAL_CONST(61346.404379/8.0), + REAL_CONST(61367.389167/8.0), + REAL_CONST(61388.375749/8.0), + REAL_CONST(61409.364124/8.0), + REAL_CONST(61430.354294/8.0), + REAL_CONST(61451.346256/8.0), + REAL_CONST(61472.340011/8.0), + REAL_CONST(61493.335559/8.0), + REAL_CONST(61514.332899/8.0), + REAL_CONST(61535.332031/8.0), + REAL_CONST(61556.332955/8.0), + REAL_CONST(61577.335670/8.0), + REAL_CONST(61598.340177/8.0), + REAL_CONST(61619.346473/8.0), + REAL_CONST(61640.354561/8.0), + REAL_CONST(61661.364438/8.0), + REAL_CONST(61682.376106/8.0), + REAL_CONST(61703.389562/8.0), + REAL_CONST(61724.404808/8.0), + REAL_CONST(61745.421843/8.0), + REAL_CONST(61766.440667/8.0), + REAL_CONST(61787.461279/8.0), + REAL_CONST(61808.483679/8.0), + REAL_CONST(61829.507866/8.0), + REAL_CONST(61850.533841/8.0), + REAL_CONST(61871.561603/8.0), + REAL_CONST(61892.591152/8.0), + REAL_CONST(61913.622487/8.0), + REAL_CONST(61934.655609/8.0), + REAL_CONST(61955.690516/8.0), + REAL_CONST(61976.727209/8.0), + REAL_CONST(61997.765687/8.0), + REAL_CONST(62018.805951/8.0), + REAL_CONST(62039.847998/8.0), + REAL_CONST(62060.891831/8.0), + REAL_CONST(62081.937447/8.0), + REAL_CONST(62102.984847/8.0), + REAL_CONST(62124.034030/8.0), + REAL_CONST(62145.084997/8.0), + REAL_CONST(62166.137746/8.0), + REAL_CONST(62187.192278/8.0), + REAL_CONST(62208.248592/8.0), + REAL_CONST(62229.306689/8.0), + REAL_CONST(62250.366566/8.0), + REAL_CONST(62271.428226/8.0), + REAL_CONST(62292.491666/8.0), + REAL_CONST(62313.556887/8.0), + REAL_CONST(62334.623888/8.0), + REAL_CONST(62355.692669/8.0), + REAL_CONST(62376.763231/8.0), + REAL_CONST(62397.835572/8.0), + REAL_CONST(62418.909692/8.0), + REAL_CONST(62439.985591/8.0), + REAL_CONST(62461.063268/8.0), + REAL_CONST(62482.142724/8.0), + REAL_CONST(62503.223958/8.0), + REAL_CONST(62524.306970/8.0), + REAL_CONST(62545.391759/8.0), + REAL_CONST(62566.478326/8.0), + REAL_CONST(62587.566669/8.0), + REAL_CONST(62608.656788/8.0), + REAL_CONST(62629.748684/8.0), + REAL_CONST(62650.842356/8.0), + REAL_CONST(62671.937804/8.0), + REAL_CONST(62693.035027/8.0), + REAL_CONST(62714.134024/8.0), + REAL_CONST(62735.234797/8.0), + REAL_CONST(62756.337344/8.0), + REAL_CONST(62777.441665/8.0), + REAL_CONST(62798.547760/8.0), + REAL_CONST(62819.655629/8.0), + REAL_CONST(62840.765271/8.0), + REAL_CONST(62861.876685/8.0), + REAL_CONST(62882.989873/8.0), + REAL_CONST(62904.104833/8.0), + REAL_CONST(62925.221565/8.0), + REAL_CONST(62946.340068/8.0), + REAL_CONST(62967.460343/8.0), + REAL_CONST(62988.582389/8.0), + REAL_CONST(63009.706207/8.0), + REAL_CONST(63030.831794/8.0), + REAL_CONST(63051.959152/8.0), + REAL_CONST(63073.088280/8.0), + REAL_CONST(63094.219178/8.0), + REAL_CONST(63115.351845/8.0), + REAL_CONST(63136.486281/8.0), + REAL_CONST(63157.622486/8.0), + REAL_CONST(63178.760459/8.0), + REAL_CONST(63199.900201/8.0), + REAL_CONST(63221.041710/8.0), + REAL_CONST(63242.184987/8.0), + REAL_CONST(63263.330032/8.0), + REAL_CONST(63284.476843/8.0), + REAL_CONST(63305.625421/8.0), + REAL_CONST(63326.775766/8.0), + REAL_CONST(63347.927877/8.0), + REAL_CONST(63369.081753/8.0), + REAL_CONST(63390.237395/8.0), + REAL_CONST(63411.394803/8.0), + REAL_CONST(63432.553975/8.0), + REAL_CONST(63453.714912/8.0), + REAL_CONST(63474.877613/8.0), + REAL_CONST(63496.042079/8.0), + REAL_CONST(63517.208308/8.0), + REAL_CONST(63538.376301/8.0), + REAL_CONST(63559.546056/8.0), + REAL_CONST(63580.717575/8.0), + REAL_CONST(63601.890857/8.0), + REAL_CONST(63623.065900/8.0), + REAL_CONST(63644.242706/8.0), + REAL_CONST(63665.421273/8.0), + REAL_CONST(63686.601602/8.0), + REAL_CONST(63707.783692/8.0), + REAL_CONST(63728.967543/8.0), + REAL_CONST(63750.153155/8.0), + REAL_CONST(63771.340526/8.0), + REAL_CONST(63792.529658/8.0), + REAL_CONST(63813.720549/8.0), + REAL_CONST(63834.913200/8.0), + REAL_CONST(63856.107610/8.0), + REAL_CONST(63877.303778/8.0), + REAL_CONST(63898.501705/8.0), + REAL_CONST(63919.701391/8.0), + REAL_CONST(63940.902834/8.0), + REAL_CONST(63962.106035/8.0), + REAL_CONST(63983.310993/8.0), + REAL_CONST(64004.517708/8.0), + REAL_CONST(64025.726180/8.0), + REAL_CONST(64046.936409/8.0), + REAL_CONST(64068.148393/8.0), + REAL_CONST(64089.362134/8.0), + REAL_CONST(64110.577630/8.0), + REAL_CONST(64131.794881/8.0), + REAL_CONST(64153.013888/8.0), + REAL_CONST(64174.234649/8.0), + REAL_CONST(64195.457165/8.0), + REAL_CONST(64216.681434/8.0), + REAL_CONST(64237.907458/8.0), + REAL_CONST(64259.135235/8.0), + REAL_CONST(64280.364766/8.0), + REAL_CONST(64301.596049/8.0), + REAL_CONST(64322.829085/8.0), + REAL_CONST(64344.063874/8.0), + REAL_CONST(64365.300414/8.0), + REAL_CONST(64386.538707/8.0), + REAL_CONST(64407.778751/8.0), + REAL_CONST(64429.020546/8.0), + REAL_CONST(64450.264092/8.0), + REAL_CONST(64471.509389/8.0), + REAL_CONST(64492.756437/8.0), + REAL_CONST(64514.005234/8.0), + REAL_CONST(64535.255781/8.0), + REAL_CONST(64556.508078/8.0), + REAL_CONST(64577.762124/8.0), + REAL_CONST(64599.017919/8.0), + REAL_CONST(64620.275462/8.0), + REAL_CONST(64641.534754/8.0), + REAL_CONST(64662.795794/8.0), + REAL_CONST(64684.058582/8.0), + REAL_CONST(64705.323117/8.0), + REAL_CONST(64726.589400/8.0), + REAL_CONST(64747.857429/8.0), + REAL_CONST(64769.127205/8.0), + REAL_CONST(64790.398728/8.0), + REAL_CONST(64811.671996/8.0), + REAL_CONST(64832.947011/8.0), + REAL_CONST(64854.223770/8.0), + REAL_CONST(64875.502276/8.0), + REAL_CONST(64896.782525/8.0), + REAL_CONST(64918.064520/8.0), + REAL_CONST(64939.348259/8.0), + REAL_CONST(64960.633742/8.0), + REAL_CONST(64981.920969/8.0), + REAL_CONST(65003.209939/8.0), + REAL_CONST(65024.500653/8.0), + REAL_CONST(65045.793109/8.0), + REAL_CONST(65067.087308/8.0), + REAL_CONST(65088.383250/8.0), + REAL_CONST(65109.680933/8.0), + REAL_CONST(65130.980358/8.0), + REAL_CONST(65152.281525/8.0), + REAL_CONST(65173.584433/8.0), + REAL_CONST(65194.889082/8.0), + REAL_CONST(65216.195472/8.0), + REAL_CONST(65237.503602/8.0), + REAL_CONST(65258.813472/8.0), + REAL_CONST(65280.125081/8.0), + REAL_CONST(65301.438431/8.0), + REAL_CONST(65322.753519/8.0), + REAL_CONST(65344.070347/8.0), + REAL_CONST(65365.388913/8.0), + REAL_CONST(65386.709218/8.0), + REAL_CONST(65408.031260/8.0), + REAL_CONST(65429.355041/8.0), + REAL_CONST(65450.680559/8.0), + REAL_CONST(65472.007814/8.0), + REAL_CONST(65493.336806/8.0), + REAL_CONST(65514.667535/8.0), + REAL_CONST(65536.000000/8.0), + REAL_CONST(65557.334201/8.0), + REAL_CONST(65578.670139/8.0), + REAL_CONST(65600.007811/8.0), + REAL_CONST(65621.347219/8.0), + REAL_CONST(65642.688362/8.0), + REAL_CONST(65664.031240/8.0), + REAL_CONST(65685.375852/8.0), + REAL_CONST(65706.722198/8.0), + REAL_CONST(65728.070278/8.0), + REAL_CONST(65749.420092/8.0), + REAL_CONST(65770.771639/8.0), + REAL_CONST(65792.124919/8.0), + REAL_CONST(65813.479931/8.0), + REAL_CONST(65834.836677/8.0), + REAL_CONST(65856.195154/8.0), + REAL_CONST(65877.555363/8.0), + REAL_CONST(65898.917304/8.0), + REAL_CONST(65920.280976/8.0), + REAL_CONST(65941.646379/8.0), + REAL_CONST(65963.013513/8.0), + REAL_CONST(65984.382377/8.0), + REAL_CONST(66005.752972/8.0), + REAL_CONST(66027.125296/8.0), + REAL_CONST(66048.499351/8.0), + REAL_CONST(66069.875134/8.0), + REAL_CONST(66091.252647/8.0), + REAL_CONST(66112.631888/8.0), + REAL_CONST(66134.012858/8.0), + REAL_CONST(66155.395556/8.0), + REAL_CONST(66176.779982/8.0), + REAL_CONST(66198.166136/8.0), + REAL_CONST(66219.554017/8.0), + REAL_CONST(66240.943626/8.0), + REAL_CONST(66262.334961/8.0), + REAL_CONST(66283.728023/8.0), + REAL_CONST(66305.122811/8.0), + REAL_CONST(66326.519325/8.0), + REAL_CONST(66347.917565/8.0), + REAL_CONST(66369.317530/8.0), + REAL_CONST(66390.719220/8.0), + REAL_CONST(66412.122636/8.0), + REAL_CONST(66433.527776/8.0), + REAL_CONST(66454.934640/8.0), + REAL_CONST(66476.343228/8.0), + REAL_CONST(66497.753540/8.0), + REAL_CONST(66519.165576/8.0), + REAL_CONST(66540.579335/8.0), + REAL_CONST(66561.994817/8.0), + REAL_CONST(66583.412021/8.0), + REAL_CONST(66604.830948/8.0), + REAL_CONST(66626.251597/8.0), + REAL_CONST(66647.673968/8.0), + REAL_CONST(66669.098061/8.0), + REAL_CONST(66690.523875/8.0), + REAL_CONST(66711.951409/8.0), + REAL_CONST(66733.380665/8.0), + REAL_CONST(66754.811641/8.0), + REAL_CONST(66776.244337/8.0), + REAL_CONST(66797.678753/8.0), + REAL_CONST(66819.114889/8.0), + REAL_CONST(66840.552744/8.0), + REAL_CONST(66861.992318/8.0), + REAL_CONST(66883.433611/8.0), + REAL_CONST(66904.876623/8.0), + REAL_CONST(66926.321353/8.0), + REAL_CONST(66947.767800/8.0), + REAL_CONST(66969.215966/8.0), + REAL_CONST(66990.665849/8.0), + REAL_CONST(67012.117449/8.0), + REAL_CONST(67033.570766/8.0), + REAL_CONST(67055.025800/8.0), + REAL_CONST(67076.482549/8.0), + REAL_CONST(67097.941015/8.0), + REAL_CONST(67119.401197/8.0), + REAL_CONST(67140.863094/8.0), + REAL_CONST(67162.326707/8.0), + REAL_CONST(67183.792034/8.0), + REAL_CONST(67205.259077/8.0), + REAL_CONST(67226.727833/8.0), + REAL_CONST(67248.198304/8.0), + REAL_CONST(67269.670488/8.0), + REAL_CONST(67291.144387/8.0), + REAL_CONST(67312.619998/8.0), + REAL_CONST(67334.097323/8.0), + REAL_CONST(67355.576360/8.0), + REAL_CONST(67377.057110/8.0), + REAL_CONST(67398.539572/8.0), + REAL_CONST(67420.023746/8.0), + REAL_CONST(67441.509631/8.0), + REAL_CONST(67462.997228/8.0), + REAL_CONST(67484.486537/8.0), + REAL_CONST(67505.977556/8.0), + REAL_CONST(67527.470285/8.0), + REAL_CONST(67548.964725/8.0), + REAL_CONST(67570.460875/8.0), + REAL_CONST(67591.958735/8.0), + REAL_CONST(67613.458305/8.0), + REAL_CONST(67634.959583/8.0), + REAL_CONST(67656.462571/8.0), + REAL_CONST(67677.967267/8.0), + REAL_CONST(67699.473671/8.0), + REAL_CONST(67720.981784/8.0), + REAL_CONST(67742.491605/8.0), + REAL_CONST(67764.003133/8.0), + REAL_CONST(67785.516369/8.0), + REAL_CONST(67807.031311/8.0), + REAL_CONST(67828.547961/8.0), + REAL_CONST(67850.066317/8.0), + REAL_CONST(67871.586379/8.0), + REAL_CONST(67893.108147/8.0), + REAL_CONST(67914.631621/8.0), + REAL_CONST(67936.156800/8.0), + REAL_CONST(67957.683685/8.0), + REAL_CONST(67979.212274/8.0), + REAL_CONST(68000.742568/8.0), + REAL_CONST(68022.274566/8.0), + REAL_CONST(68043.808269/8.0), + REAL_CONST(68065.343675/8.0), + REAL_CONST(68086.880785/8.0), + REAL_CONST(68108.419598/8.0), + REAL_CONST(68129.960114/8.0), + REAL_CONST(68151.502333/8.0), + REAL_CONST(68173.046254/8.0), + REAL_CONST(68194.591878/8.0), + REAL_CONST(68216.139203/8.0), + REAL_CONST(68237.688230/8.0), + REAL_CONST(68259.238959/8.0), + REAL_CONST(68280.791388/8.0), + REAL_CONST(68302.345519/8.0), + REAL_CONST(68323.901350/8.0), + REAL_CONST(68345.458881/8.0), + REAL_CONST(68367.018113/8.0), + REAL_CONST(68388.579044/8.0), + REAL_CONST(68410.141675/8.0), + REAL_CONST(68431.706005/8.0), + REAL_CONST(68453.272034/8.0), + REAL_CONST(68474.839762/8.0), + REAL_CONST(68496.409188/8.0), + REAL_CONST(68517.980312/8.0), + REAL_CONST(68539.553134/8.0), + REAL_CONST(68561.127654/8.0), + REAL_CONST(68582.703872/8.0), + REAL_CONST(68604.281786/8.0), + REAL_CONST(68625.861397/8.0), + REAL_CONST(68647.442705/8.0), + REAL_CONST(68669.025709/8.0), + REAL_CONST(68690.610409/8.0), + REAL_CONST(68712.196805/8.0), + REAL_CONST(68733.784897/8.0), + REAL_CONST(68755.374683/8.0), + REAL_CONST(68776.966165/8.0), + REAL_CONST(68798.559341/8.0), + REAL_CONST(68820.154212/8.0), + REAL_CONST(68841.750777/8.0), + REAL_CONST(68863.349036/8.0), + REAL_CONST(68884.948989/8.0), + REAL_CONST(68906.550635/8.0), + REAL_CONST(68928.153974/8.0), + REAL_CONST(68949.759006/8.0), + REAL_CONST(68971.365730/8.0), + REAL_CONST(68992.974147/8.0), + REAL_CONST(69014.584256/8.0), + REAL_CONST(69036.196057/8.0), + REAL_CONST(69057.809549/8.0), + REAL_CONST(69079.424732/8.0), + REAL_CONST(69101.041607/8.0), + REAL_CONST(69122.660172/8.0), + REAL_CONST(69144.280428/8.0), + REAL_CONST(69165.902373/8.0), + REAL_CONST(69187.526009/8.0), + REAL_CONST(69209.151335/8.0), + REAL_CONST(69230.778350/8.0), + REAL_CONST(69252.407054/8.0), + REAL_CONST(69274.037447/8.0), + REAL_CONST(69295.669528/8.0), + REAL_CONST(69317.303298/8.0), + REAL_CONST(69338.938756/8.0), + REAL_CONST(69360.575902/8.0), + REAL_CONST(69382.214735/8.0), + REAL_CONST(69403.855256/8.0), + REAL_CONST(69425.497464/8.0), + REAL_CONST(69447.141358/8.0), + REAL_CONST(69468.786939/8.0), + REAL_CONST(69490.434207/8.0), + REAL_CONST(69512.083160/8.0), + REAL_CONST(69533.733799/8.0), + REAL_CONST(69555.386124/8.0), + REAL_CONST(69577.040133/8.0), + REAL_CONST(69598.695828/8.0), + REAL_CONST(69620.353207/8.0), + REAL_CONST(69642.012271/8.0), + REAL_CONST(69663.673019/8.0), + REAL_CONST(69685.335451/8.0), + REAL_CONST(69706.999566/8.0), + REAL_CONST(69728.665365/8.0), + REAL_CONST(69750.332847/8.0), + REAL_CONST(69772.002011/8.0), + REAL_CONST(69793.672859/8.0), + REAL_CONST(69815.345388/8.0), + REAL_CONST(69837.019600/8.0), + REAL_CONST(69858.695494/8.0), + REAL_CONST(69880.373069/8.0), + REAL_CONST(69902.052325/8.0), + REAL_CONST(69923.733262/8.0), + REAL_CONST(69945.415880/8.0), + REAL_CONST(69967.100179/8.0), + REAL_CONST(69988.786158/8.0), + REAL_CONST(70010.473817/8.0), + REAL_CONST(70032.163155/8.0), + REAL_CONST(70053.854173/8.0), + REAL_CONST(70075.546870/8.0), + REAL_CONST(70097.241246/8.0), + REAL_CONST(70118.937301/8.0), + REAL_CONST(70140.635034/8.0), + REAL_CONST(70162.334446/8.0), + REAL_CONST(70184.035535/8.0), + REAL_CONST(70205.738302/8.0), + REAL_CONST(70227.442746/8.0), + REAL_CONST(70249.148867/8.0), + REAL_CONST(70270.856666/8.0), + REAL_CONST(70292.566141/8.0), + REAL_CONST(70314.277292/8.0), + REAL_CONST(70335.990119/8.0), + REAL_CONST(70357.704622/8.0), + REAL_CONST(70379.420801/8.0), + REAL_CONST(70401.138655/8.0), + REAL_CONST(70422.858184/8.0), + REAL_CONST(70444.579388/8.0), + REAL_CONST(70466.302266/8.0), + REAL_CONST(70488.026819/8.0), + REAL_CONST(70509.753045/8.0), + REAL_CONST(70531.480946/8.0), + REAL_CONST(70553.210520/8.0), + REAL_CONST(70574.941767/8.0), + REAL_CONST(70596.674687/8.0), + REAL_CONST(70618.409280/8.0), + REAL_CONST(70640.145545/8.0), + REAL_CONST(70661.883483/8.0), + REAL_CONST(70683.623092/8.0), + REAL_CONST(70705.364373/8.0), + REAL_CONST(70727.107326/8.0), + REAL_CONST(70748.851950/8.0), + REAL_CONST(70770.598245/8.0), + REAL_CONST(70792.346210/8.0), + REAL_CONST(70814.095846/8.0), + REAL_CONST(70835.847152/8.0), + REAL_CONST(70857.600128/8.0), + REAL_CONST(70879.354773/8.0), + REAL_CONST(70901.111088/8.0), + REAL_CONST(70922.869072/8.0), + REAL_CONST(70944.628725/8.0), + REAL_CONST(70966.390047/8.0), + REAL_CONST(70988.153037/8.0), + REAL_CONST(71009.917695/8.0), + REAL_CONST(71031.684021/8.0), + REAL_CONST(71053.452014/8.0), + REAL_CONST(71075.221675/8.0), + REAL_CONST(71096.993003/8.0), + REAL_CONST(71118.765998/8.0), + REAL_CONST(71140.540659/8.0), + REAL_CONST(71162.316987/8.0), + REAL_CONST(71184.094980/8.0), + REAL_CONST(71205.874640/8.0), + REAL_CONST(71227.655965/8.0), + REAL_CONST(71249.438955/8.0), + REAL_CONST(71271.223611/8.0), + REAL_CONST(71293.009931/8.0), + REAL_CONST(71314.797916/8.0), + REAL_CONST(71336.587565/8.0), + REAL_CONST(71358.378878/8.0), + REAL_CONST(71380.171855/8.0), + REAL_CONST(71401.966495/8.0), + REAL_CONST(71423.762799/8.0), + REAL_CONST(71445.560766/8.0), + REAL_CONST(71467.360395/8.0), + REAL_CONST(71489.161687/8.0), + REAL_CONST(71510.964641/8.0), + REAL_CONST(71532.769257/8.0), + REAL_CONST(71554.575535/8.0), + REAL_CONST(71576.383475/8.0), + REAL_CONST(71598.193075/8.0), + REAL_CONST(71620.004337/8.0), + REAL_CONST(71641.817260/8.0), + REAL_CONST(71663.631842/8.0), + REAL_CONST(71685.448086/8.0), + REAL_CONST(71707.265989/8.0), + REAL_CONST(71729.085551/8.0), + REAL_CONST(71750.906774/8.0), + REAL_CONST(71772.729655/8.0), + REAL_CONST(71794.554196/8.0), + REAL_CONST(71816.380395/8.0), + REAL_CONST(71838.208253/8.0), + REAL_CONST(71860.037768/8.0), + REAL_CONST(71881.868942/8.0), + REAL_CONST(71903.701774/8.0), + REAL_CONST(71925.536263/8.0), + REAL_CONST(71947.372409/8.0), + REAL_CONST(71969.210212/8.0), + REAL_CONST(71991.049672/8.0), + REAL_CONST(72012.890788/8.0), + REAL_CONST(72034.733561/8.0), + REAL_CONST(72056.577989/8.0), + REAL_CONST(72078.424073/8.0), + REAL_CONST(72100.271813/8.0), + REAL_CONST(72122.121208/8.0), + REAL_CONST(72143.972257/8.0), + REAL_CONST(72165.824962/8.0), + REAL_CONST(72187.679321/8.0), + REAL_CONST(72209.535334/8.0), + REAL_CONST(72231.393001/8.0), + REAL_CONST(72253.252321/8.0), + REAL_CONST(72275.113295/8.0), + REAL_CONST(72296.975923/8.0), + REAL_CONST(72318.840203/8.0), + REAL_CONST(72340.706136/8.0), + REAL_CONST(72362.573721/8.0), + REAL_CONST(72384.442959/8.0), + REAL_CONST(72406.313848/8.0), + REAL_CONST(72428.186390/8.0), + REAL_CONST(72450.060582/8.0), + REAL_CONST(72471.936426/8.0), + REAL_CONST(72493.813921/8.0), + REAL_CONST(72515.693066/8.0), + REAL_CONST(72537.573862/8.0), + REAL_CONST(72559.456308/8.0), + REAL_CONST(72581.340405/8.0), + REAL_CONST(72603.226150/8.0), + REAL_CONST(72625.113546/8.0), + REAL_CONST(72647.002590/8.0), + REAL_CONST(72668.893283/8.0), + REAL_CONST(72690.785625/8.0), + REAL_CONST(72712.679616/8.0), + REAL_CONST(72734.575255/8.0), + REAL_CONST(72756.472542/8.0), + REAL_CONST(72778.371476/8.0), + REAL_CONST(72800.272058/8.0), + REAL_CONST(72822.174287/8.0), + REAL_CONST(72844.078163/8.0), + REAL_CONST(72865.983686/8.0), + REAL_CONST(72887.890855/8.0), + REAL_CONST(72909.799671/8.0), + REAL_CONST(72931.710132/8.0), + REAL_CONST(72953.622239/8.0), + REAL_CONST(72975.535992/8.0), + REAL_CONST(72997.451390/8.0), + REAL_CONST(73019.368433/8.0), + REAL_CONST(73041.287121/8.0), + REAL_CONST(73063.207453/8.0), + REAL_CONST(73085.129429/8.0), + REAL_CONST(73107.053050/8.0), + REAL_CONST(73128.978314/8.0), + REAL_CONST(73150.905222/8.0), + REAL_CONST(73172.833773/8.0), + REAL_CONST(73194.763967/8.0), + REAL_CONST(73216.695803/8.0), + REAL_CONST(73238.629283/8.0), + REAL_CONST(73260.564404/8.0), + REAL_CONST(73282.501168/8.0), + REAL_CONST(73304.439573/8.0), + REAL_CONST(73326.379620/8.0), + REAL_CONST(73348.321308/8.0), + REAL_CONST(73370.264638/8.0), + REAL_CONST(73392.209608/8.0), + REAL_CONST(73414.156218/8.0), + REAL_CONST(73436.104469/8.0), + REAL_CONST(73458.054361/8.0), + REAL_CONST(73480.005891/8.0), + REAL_CONST(73501.959062/8.0), + REAL_CONST(73523.913872/8.0), + REAL_CONST(73545.870321/8.0), + REAL_CONST(73567.828408/8.0), + REAL_CONST(73589.788135/8.0), + REAL_CONST(73611.749499/8.0), + REAL_CONST(73633.712502/8.0), + REAL_CONST(73655.677143/8.0), + REAL_CONST(73677.643421/8.0), + REAL_CONST(73699.611337/8.0), + REAL_CONST(73721.580889/8.0), + REAL_CONST(73743.552079/8.0), + REAL_CONST(73765.524906/8.0), + REAL_CONST(73787.499368/8.0), + REAL_CONST(73809.475467/8.0), + REAL_CONST(73831.453202/8.0), + REAL_CONST(73853.432573/8.0), + REAL_CONST(73875.413579/8.0), + REAL_CONST(73897.396220/8.0), + REAL_CONST(73919.380496/8.0), + REAL_CONST(73941.366406/8.0), + REAL_CONST(73963.353952/8.0), + REAL_CONST(73985.343131/8.0), + REAL_CONST(74007.333945/8.0), + REAL_CONST(74029.326392/8.0), + REAL_CONST(74051.320472/8.0), + REAL_CONST(74073.316186/8.0), + REAL_CONST(74095.313533/8.0), + REAL_CONST(74117.312513/8.0), + REAL_CONST(74139.313125/8.0), + REAL_CONST(74161.315369/8.0), + REAL_CONST(74183.319246/8.0), + REAL_CONST(74205.324754/8.0), + REAL_CONST(74227.331894/8.0), + REAL_CONST(74249.340665/8.0), + REAL_CONST(74271.351067/8.0), + REAL_CONST(74293.363100/8.0), + REAL_CONST(74315.376764/8.0), + REAL_CONST(74337.392058/8.0), + REAL_CONST(74359.408982/8.0), + REAL_CONST(74381.427536/8.0), + REAL_CONST(74403.447719/8.0), + REAL_CONST(74425.469532/8.0), + REAL_CONST(74447.492974/8.0), + REAL_CONST(74469.518045/8.0), + REAL_CONST(74491.544744/8.0), + REAL_CONST(74513.573072/8.0), + REAL_CONST(74535.603028/8.0), + REAL_CONST(74557.634612/8.0), + REAL_CONST(74579.667824/8.0), + REAL_CONST(74601.702663/8.0), + REAL_CONST(74623.739130/8.0), + REAL_CONST(74645.777223/8.0), + REAL_CONST(74667.816943/8.0), + REAL_CONST(74689.858290/8.0), + REAL_CONST(74711.901263/8.0), + REAL_CONST(74733.945861/8.0), + REAL_CONST(74755.992086/8.0), + REAL_CONST(74778.039936/8.0), + REAL_CONST(74800.089412/8.0), + REAL_CONST(74822.140512/8.0), + REAL_CONST(74844.193237/8.0), + REAL_CONST(74866.247587/8.0), + REAL_CONST(74888.303561/8.0), + REAL_CONST(74910.361160/8.0), + REAL_CONST(74932.420382/8.0), + REAL_CONST(74954.481227/8.0), + REAL_CONST(74976.543697/8.0), + REAL_CONST(74998.607789/8.0), + REAL_CONST(75020.673504/8.0), + REAL_CONST(75042.740842/8.0), + REAL_CONST(75064.809802/8.0), + REAL_CONST(75086.880384/8.0), + REAL_CONST(75108.952589/8.0), + REAL_CONST(75131.026415/8.0), + REAL_CONST(75153.101862/8.0), + REAL_CONST(75175.178931/8.0), + REAL_CONST(75197.257621/8.0), + REAL_CONST(75219.337931/8.0), + REAL_CONST(75241.419862/8.0), + REAL_CONST(75263.503414/8.0), + REAL_CONST(75285.588585/8.0), + REAL_CONST(75307.675376/8.0), + REAL_CONST(75329.763787/8.0), + REAL_CONST(75351.853817/8.0), + REAL_CONST(75373.945466/8.0), + REAL_CONST(75396.038734/8.0), + REAL_CONST(75418.133620/8.0), + REAL_CONST(75440.230125/8.0), + REAL_CONST(75462.328248/8.0), + REAL_CONST(75484.427989/8.0), + REAL_CONST(75506.529348/8.0), + REAL_CONST(75528.632324/8.0), + REAL_CONST(75550.736917/8.0), + REAL_CONST(75572.843127/8.0), + REAL_CONST(75594.950954/8.0), + REAL_CONST(75617.060398/8.0), + REAL_CONST(75639.171457/8.0), + REAL_CONST(75661.284133/8.0), + REAL_CONST(75683.398424/8.0), + REAL_CONST(75705.514331/8.0), + REAL_CONST(75727.631854/8.0), + REAL_CONST(75749.750991/8.0), + REAL_CONST(75771.871743/8.0), + REAL_CONST(75793.994110/8.0), + REAL_CONST(75816.118091/8.0), + REAL_CONST(75838.243686/8.0), + REAL_CONST(75860.370896/8.0), + REAL_CONST(75882.499718/8.0), + REAL_CONST(75904.630155/8.0), + REAL_CONST(75926.762204/8.0), + REAL_CONST(75948.895866/8.0), + REAL_CONST(75971.031141/8.0), + REAL_CONST(75993.168029/8.0), + REAL_CONST(76015.306529/8.0), + REAL_CONST(76037.446640/8.0), + REAL_CONST(76059.588364/8.0), + REAL_CONST(76081.731699/8.0), + REAL_CONST(76103.876646/8.0), + REAL_CONST(76126.023203/8.0), + REAL_CONST(76148.171371/8.0), + REAL_CONST(76170.321150/8.0), + REAL_CONST(76192.472539/8.0), + REAL_CONST(76214.625539/8.0), + REAL_CONST(76236.780148/8.0), + REAL_CONST(76258.936367/8.0), + REAL_CONST(76281.094196/8.0), + REAL_CONST(76303.253633/8.0), + REAL_CONST(76325.414680/8.0), + REAL_CONST(76347.577335/8.0), + REAL_CONST(76369.741599/8.0), + REAL_CONST(76391.907471/8.0), + REAL_CONST(76414.074951/8.0), + REAL_CONST(76436.244039/8.0), + REAL_CONST(76458.414734/8.0), + REAL_CONST(76480.587037/8.0), + REAL_CONST(76502.760947/8.0), + REAL_CONST(76524.936463/8.0), + REAL_CONST(76547.113587/8.0), + REAL_CONST(76569.292316/8.0), + REAL_CONST(76591.472652/8.0), + REAL_CONST(76613.654594/8.0), + REAL_CONST(76635.838142/8.0), + REAL_CONST(76658.023295/8.0), + REAL_CONST(76680.210053/8.0), + REAL_CONST(76702.398416/8.0), + REAL_CONST(76724.588384/8.0), + REAL_CONST(76746.779957/8.0), + REAL_CONST(76768.973134/8.0), + REAL_CONST(76791.167915/8.0), + REAL_CONST(76813.364299/8.0), + REAL_CONST(76835.562288/8.0), + REAL_CONST(76857.761880/8.0), + REAL_CONST(76879.963074/8.0), + REAL_CONST(76902.165872/8.0), + REAL_CONST(76924.370273/8.0), + REAL_CONST(76946.576276/8.0), + REAL_CONST(76968.783881/8.0), + REAL_CONST(76990.993088/8.0), + REAL_CONST(77013.203897/8.0), + REAL_CONST(77035.416308/8.0), + REAL_CONST(77057.630319/8.0), + REAL_CONST(77079.845932/8.0), + REAL_CONST(77102.063146/8.0), + REAL_CONST(77124.281960/8.0), + REAL_CONST(77146.502375/8.0), + REAL_CONST(77168.724390/8.0), + REAL_CONST(77190.948004/8.0), + REAL_CONST(77213.173219/8.0), + REAL_CONST(77235.400033/8.0), + REAL_CONST(77257.628446/8.0), + REAL_CONST(77279.858458/8.0), + REAL_CONST(77302.090069/8.0), + REAL_CONST(77324.323278/8.0), + REAL_CONST(77346.558086/8.0), + REAL_CONST(77368.794491/8.0), + REAL_CONST(77391.032495/8.0), + REAL_CONST(77413.272096/8.0), + REAL_CONST(77435.513295/8.0), + REAL_CONST(77457.756090/8.0), + REAL_CONST(77480.000483/8.0), + REAL_CONST(77502.246473/8.0), + REAL_CONST(77524.494058/8.0), + REAL_CONST(77546.743240/8.0), + REAL_CONST(77568.994019/8.0), + REAL_CONST(77591.246392/8.0), + REAL_CONST(77613.500362/8.0), + REAL_CONST(77635.755927/8.0), + REAL_CONST(77658.013086/8.0), + REAL_CONST(77680.271841/8.0), + REAL_CONST(77702.532191/8.0), + REAL_CONST(77724.794134/8.0), + REAL_CONST(77747.057672/8.0), + REAL_CONST(77769.322804/8.0), + REAL_CONST(77791.589530/8.0), + REAL_CONST(77813.857849/8.0), + REAL_CONST(77836.127761/8.0), + REAL_CONST(77858.399267/8.0), + REAL_CONST(77880.672365/8.0), + REAL_CONST(77902.947056/8.0), + REAL_CONST(77925.223339/8.0), + REAL_CONST(77947.501214/8.0), + REAL_CONST(77969.780681/8.0), + REAL_CONST(77992.061740/8.0), + REAL_CONST(78014.344391/8.0), + REAL_CONST(78036.628632/8.0), + REAL_CONST(78058.914465/8.0), + REAL_CONST(78081.201888/8.0), + REAL_CONST(78103.490902/8.0), + REAL_CONST(78125.781506/8.0), + REAL_CONST(78148.073700/8.0), + REAL_CONST(78170.367484/8.0), + REAL_CONST(78192.662858/8.0), + REAL_CONST(78214.959821/8.0), + REAL_CONST(78237.258374/8.0), + REAL_CONST(78259.558515/8.0), + REAL_CONST(78281.860245/8.0), + REAL_CONST(78304.163563/8.0), + REAL_CONST(78326.468470/8.0), + REAL_CONST(78348.774965/8.0), + REAL_CONST(78371.083048/8.0), + REAL_CONST(78393.392718/8.0), + REAL_CONST(78415.703976/8.0), + REAL_CONST(78438.016820/8.0), + REAL_CONST(78460.331252/8.0), + REAL_CONST(78482.647270/8.0), + REAL_CONST(78504.964875/8.0), + REAL_CONST(78527.284066/8.0), + REAL_CONST(78549.604843/8.0), + REAL_CONST(78571.927206/8.0), + REAL_CONST(78594.251155/8.0), + REAL_CONST(78616.576688/8.0), + REAL_CONST(78638.903807/8.0), + REAL_CONST(78661.232511/8.0), + REAL_CONST(78683.562799/8.0), + REAL_CONST(78705.894672/8.0), + REAL_CONST(78728.228129/8.0), + REAL_CONST(78750.563170/8.0), + REAL_CONST(78772.899795/8.0), + REAL_CONST(78795.238004/8.0), + REAL_CONST(78817.577795/8.0), + REAL_CONST(78839.919170/8.0), + REAL_CONST(78862.262128/8.0), + REAL_CONST(78884.606668/8.0), + REAL_CONST(78906.952791/8.0), + REAL_CONST(78929.300496/8.0), + REAL_CONST(78951.649783/8.0), + REAL_CONST(78974.000651/8.0), + REAL_CONST(78996.353101/8.0), + REAL_CONST(79018.707133/8.0), + REAL_CONST(79041.062745/8.0), + REAL_CONST(79063.419939/8.0), + REAL_CONST(79085.778713/8.0), + REAL_CONST(79108.139067/8.0), + REAL_CONST(79130.501002/8.0), + REAL_CONST(79152.864516/8.0), + REAL_CONST(79175.229610/8.0), + REAL_CONST(79197.596284/8.0), + REAL_CONST(79219.964537/8.0), + REAL_CONST(79242.334369/8.0), + REAL_CONST(79264.705780/8.0), + REAL_CONST(79287.078770/8.0), + REAL_CONST(79309.453338/8.0), + REAL_CONST(79331.829484/8.0), + REAL_CONST(79354.207208/8.0), + REAL_CONST(79376.586510/8.0), + REAL_CONST(79398.967390/8.0), + REAL_CONST(79421.349846/8.0), + REAL_CONST(79443.733880/8.0), + REAL_CONST(79466.119490/8.0), + REAL_CONST(79488.506678/8.0), + REAL_CONST(79510.895441/8.0), + REAL_CONST(79533.285781/8.0), + REAL_CONST(79555.677697/8.0), + REAL_CONST(79578.071188/8.0), + REAL_CONST(79600.466255/8.0), + REAL_CONST(79622.862897/8.0), + REAL_CONST(79645.261114/8.0), + REAL_CONST(79667.660907/8.0), + REAL_CONST(79690.062273/8.0), + REAL_CONST(79712.465215/8.0), + REAL_CONST(79734.869730/8.0), + REAL_CONST(79757.275819/8.0), + REAL_CONST(79779.683482/8.0), + REAL_CONST(79802.092719/8.0), + REAL_CONST(79824.503529/8.0), + REAL_CONST(79846.915911/8.0), + REAL_CONST(79869.329867/8.0), + REAL_CONST(79891.745396/8.0), + REAL_CONST(79914.162496/8.0), + REAL_CONST(79936.581169/8.0), + REAL_CONST(79959.001414/8.0), + REAL_CONST(79981.423231/8.0), + REAL_CONST(80003.846619/8.0), + REAL_CONST(80026.271579/8.0), + REAL_CONST(80048.698110/8.0), + REAL_CONST(80071.126211/8.0), + REAL_CONST(80093.555883/8.0), + REAL_CONST(80115.987126/8.0), + REAL_CONST(80138.419939/8.0), + REAL_CONST(80160.854322/8.0), + REAL_CONST(80183.290274/8.0), + REAL_CONST(80205.727796/8.0), + REAL_CONST(80228.166888/8.0), + REAL_CONST(80250.607548/8.0), + REAL_CONST(80273.049778/8.0), + REAL_CONST(80295.493576/8.0), + REAL_CONST(80317.938943/8.0), + REAL_CONST(80340.385877/8.0), + REAL_CONST(80362.834380/8.0), + REAL_CONST(80385.284451/8.0), + REAL_CONST(80407.736089/8.0), + REAL_CONST(80430.189295/8.0), + REAL_CONST(80452.644068/8.0), + REAL_CONST(80475.100407/8.0), + REAL_CONST(80497.558314/8.0), + REAL_CONST(80520.017786/8.0), + REAL_CONST(80542.478825/8.0), + REAL_CONST(80564.941431/8.0), + REAL_CONST(80587.405602/8.0), + REAL_CONST(80609.871338/8.0), + REAL_CONST(80632.338640/8.0), + REAL_CONST(80654.807507/8.0), + REAL_CONST(80677.277939/8.0), + REAL_CONST(80699.749936/8.0), + REAL_CONST(80722.223498/8.0), + REAL_CONST(80744.698623/8.0), + REAL_CONST(80767.175313/8.0), + REAL_CONST(80789.653567/8.0), + REAL_CONST(80812.133384/8.0), + REAL_CONST(80834.614765/8.0), + REAL_CONST(80857.097709/8.0), + REAL_CONST(80879.582216/8.0), + REAL_CONST(80902.068285/8.0), + REAL_CONST(80924.555918/8.0), + REAL_CONST(80947.045112/8.0), + REAL_CONST(80969.535869/8.0), + REAL_CONST(80992.028188/8.0), + REAL_CONST(81014.522068/8.0), + REAL_CONST(81037.017510/8.0), + REAL_CONST(81059.514513/8.0), + REAL_CONST(81082.013077/8.0), + REAL_CONST(81104.513202/8.0), + REAL_CONST(81127.014888/8.0), + REAL_CONST(81149.518134/8.0), + REAL_CONST(81172.022940/8.0), + REAL_CONST(81194.529306/8.0), + REAL_CONST(81217.037232/8.0), + REAL_CONST(81239.546717/8.0), + REAL_CONST(81262.057762/8.0), + REAL_CONST(81284.570366/8.0), + REAL_CONST(81307.084528/8.0), + REAL_CONST(81329.600250/8.0), + REAL_CONST(81352.117530/8.0), + REAL_CONST(81374.636368/8.0), + REAL_CONST(81397.156764/8.0), + REAL_CONST(81419.678718/8.0), + REAL_CONST(81442.202229/8.0), + REAL_CONST(81464.727298/8.0), + REAL_CONST(81487.253924/8.0), + REAL_CONST(81509.782107/8.0), + REAL_CONST(81532.311846/8.0), + REAL_CONST(81554.843143/8.0), + REAL_CONST(81577.375995/8.0), + REAL_CONST(81599.910404/8.0), + REAL_CONST(81622.446368/8.0), + REAL_CONST(81644.983888/8.0), + REAL_CONST(81667.522964/8.0), + REAL_CONST(81690.063594/8.0), + REAL_CONST(81712.605780/8.0), + REAL_CONST(81735.149521/8.0), + REAL_CONST(81757.694816/8.0), + REAL_CONST(81780.241665/8.0), + REAL_CONST(81802.790069/8.0), + REAL_CONST(81825.340026/8.0), + REAL_CONST(81847.891538/8.0), + REAL_CONST(81870.444603/8.0), + REAL_CONST(81892.999221/8.0), + REAL_CONST(81915.555392/8.0), + REAL_CONST(81938.113116/8.0), + REAL_CONST(81960.672393/8.0), + REAL_CONST(81983.233222/8.0), + REAL_CONST(82005.795603/8.0), + REAL_CONST(82028.359536/8.0), + REAL_CONST(82050.925022/8.0), + REAL_CONST(82073.492058/8.0), + REAL_CONST(82096.060647/8.0), + REAL_CONST(82118.630786/8.0), + REAL_CONST(82141.202476/8.0), + REAL_CONST(82163.775717/8.0), + REAL_CONST(82186.350509/8.0), + REAL_CONST(82208.926850/8.0), + REAL_CONST(82231.504742/8.0), + REAL_CONST(82254.084184/8.0), + REAL_CONST(82276.665175/8.0), + REAL_CONST(82299.247716/8.0), + REAL_CONST(82321.831807/8.0), + REAL_CONST(82344.417446/8.0), + REAL_CONST(82367.004634/8.0), + REAL_CONST(82389.593370/8.0), + REAL_CONST(82412.183655/8.0), + REAL_CONST(82434.775488/8.0), + REAL_CONST(82457.368870/8.0), + REAL_CONST(82479.963798/8.0), + REAL_CONST(82502.560275/8.0), + REAL_CONST(82525.158299/8.0), + REAL_CONST(82547.757870/8.0), + REAL_CONST(82570.358987/8.0), + REAL_CONST(82592.961652/8.0), + REAL_CONST(82615.565863/8.0), + REAL_CONST(82638.171620/8.0), + REAL_CONST(82660.778923/8.0), + REAL_CONST(82683.387773/8.0), + REAL_CONST(82705.998167/8.0), + REAL_CONST(82728.610108/8.0), + REAL_CONST(82751.223593/8.0), + REAL_CONST(82773.838624/8.0), + REAL_CONST(82796.455199/8.0), + REAL_CONST(82819.073319/8.0), + REAL_CONST(82841.692983/8.0), + REAL_CONST(82864.314191/8.0), + REAL_CONST(82886.936944/8.0), + REAL_CONST(82909.561240/8.0), + REAL_CONST(82932.187079/8.0), + REAL_CONST(82954.814462/8.0), + REAL_CONST(82977.443388/8.0), + REAL_CONST(83000.073857/8.0), + REAL_CONST(83022.705869/8.0), + REAL_CONST(83045.339423/8.0), + REAL_CONST(83067.974519/8.0), + REAL_CONST(83090.611158/8.0), + REAL_CONST(83113.249338/8.0), + REAL_CONST(83135.889060/8.0), + REAL_CONST(83158.530323/8.0), + REAL_CONST(83181.173128/8.0), + REAL_CONST(83203.817473/8.0), + REAL_CONST(83226.463360/8.0), + REAL_CONST(83249.110787/8.0), + REAL_CONST(83271.759754/8.0), + REAL_CONST(83294.410262/8.0), + REAL_CONST(83317.062309/8.0), + REAL_CONST(83339.715896/8.0), + REAL_CONST(83362.371023/8.0), + REAL_CONST(83385.027689/8.0), + REAL_CONST(83407.685894/8.0), + REAL_CONST(83430.345639/8.0), + REAL_CONST(83453.006921/8.0), + REAL_CONST(83475.669743/8.0), + REAL_CONST(83498.334102/8.0), + REAL_CONST(83521.000000/8.0), + REAL_CONST(83543.667436/8.0), + REAL_CONST(83566.336409/8.0), + REAL_CONST(83589.006919/8.0), + REAL_CONST(83611.678967/8.0), + REAL_CONST(83634.352552/8.0), + REAL_CONST(83657.027674/8.0), + REAL_CONST(83679.704333/8.0), + REAL_CONST(83702.382527/8.0), + REAL_CONST(83725.062258/8.0), + REAL_CONST(83747.743525/8.0), + REAL_CONST(83770.426328/8.0), + REAL_CONST(83793.110667/8.0), + REAL_CONST(83815.796540/8.0), + REAL_CONST(83838.483949/8.0), + REAL_CONST(83861.172893/8.0), + REAL_CONST(83883.863372/8.0), + REAL_CONST(83906.555385/8.0), + REAL_CONST(83929.248932/8.0), + REAL_CONST(83951.944014/8.0), + REAL_CONST(83974.640630/8.0), + REAL_CONST(83997.338779/8.0), + REAL_CONST(84020.038462/8.0), + REAL_CONST(84042.739678/8.0), + REAL_CONST(84065.442427/8.0), + REAL_CONST(84088.146709/8.0), + REAL_CONST(84110.852523/8.0), + REAL_CONST(84133.559871/8.0), + REAL_CONST(84156.268750/8.0), + REAL_CONST(84178.979162/8.0), + REAL_CONST(84201.691105/8.0), + REAL_CONST(84224.404580/8.0), + REAL_CONST(84247.119586/8.0), + REAL_CONST(84269.836124/8.0), + REAL_CONST(84292.554192/8.0), + REAL_CONST(84315.273792/8.0), + REAL_CONST(84337.994922/8.0), + REAL_CONST(84360.717583/8.0), + REAL_CONST(84383.441773/8.0), + REAL_CONST(84406.167494/8.0), + REAL_CONST(84428.894744/8.0), + REAL_CONST(84451.623524/8.0), + REAL_CONST(84474.353834/8.0), + REAL_CONST(84497.085672/8.0), + REAL_CONST(84519.819040/8.0), + REAL_CONST(84542.553936/8.0), + REAL_CONST(84565.290361/8.0), + REAL_CONST(84588.028314/8.0), + REAL_CONST(84610.767795/8.0), + REAL_CONST(84633.508805/8.0), + REAL_CONST(84656.251342/8.0), + REAL_CONST(84678.995406/8.0), + REAL_CONST(84701.740998/8.0), + REAL_CONST(84724.488117/8.0), + REAL_CONST(84747.236763/8.0), + REAL_CONST(84769.986935/8.0), + REAL_CONST(84792.738634/8.0), + REAL_CONST(84815.491860/8.0), + REAL_CONST(84838.246611/8.0), + REAL_CONST(84861.002889/8.0), + REAL_CONST(84883.760692/8.0), + REAL_CONST(84906.520020/8.0), + REAL_CONST(84929.280874/8.0), + REAL_CONST(84952.043253/8.0), + REAL_CONST(84974.807156/8.0), + REAL_CONST(84997.572585/8.0), + REAL_CONST(85020.339537/8.0), + REAL_CONST(85043.108014/8.0), + REAL_CONST(85065.878016/8.0), + REAL_CONST(85088.649540/8.0), + REAL_CONST(85111.422589/8.0), + REAL_CONST(85134.197161/8.0), + REAL_CONST(85156.973256/8.0), + REAL_CONST(85179.750874/8.0), + REAL_CONST(85202.530016/8.0), + REAL_CONST(85225.310679/8.0), + REAL_CONST(85248.092865/8.0), + REAL_CONST(85270.876574/8.0), + REAL_CONST(85293.661804/8.0), + REAL_CONST(85316.448556/8.0), + REAL_CONST(85339.236830/8.0), + REAL_CONST(85362.026625/8.0), + REAL_CONST(85384.817941/8.0), + REAL_CONST(85407.610779/8.0), + REAL_CONST(85430.405137/8.0), + REAL_CONST(85453.201015/8.0), + REAL_CONST(85475.998415/8.0), + REAL_CONST(85498.797334/8.0), + REAL_CONST(85521.597773/8.0), + REAL_CONST(85544.399732/8.0), + REAL_CONST(85567.203211/8.0), + REAL_CONST(85590.008209/8.0), + REAL_CONST(85612.814726/8.0), + REAL_CONST(85635.622762/8.0), + REAL_CONST(85658.432317/8.0), + REAL_CONST(85681.243390/8.0), + REAL_CONST(85704.055982/8.0), + REAL_CONST(85726.870092/8.0), + REAL_CONST(85749.685720/8.0), + REAL_CONST(85772.502865/8.0), + REAL_CONST(85795.321529/8.0), + REAL_CONST(85818.141709/8.0), + REAL_CONST(85840.963407/8.0), + REAL_CONST(85863.786622/8.0), + REAL_CONST(85886.611353/8.0), + REAL_CONST(85909.437601/8.0), + REAL_CONST(85932.265365/8.0), + REAL_CONST(85955.094646/8.0), + REAL_CONST(85977.925442/8.0), + REAL_CONST(86000.757754/8.0), + REAL_CONST(86023.591582/8.0), + REAL_CONST(86046.426925/8.0), + REAL_CONST(86069.263783/8.0), + REAL_CONST(86092.102156/8.0), + REAL_CONST(86114.942043/8.0), + REAL_CONST(86137.783446/8.0), + REAL_CONST(86160.626362/8.0), + REAL_CONST(86183.470793/8.0), + REAL_CONST(86206.316738/8.0), + REAL_CONST(86229.164196/8.0), + REAL_CONST(86252.013168/8.0), + REAL_CONST(86274.863653/8.0), + REAL_CONST(86297.715652/8.0), + REAL_CONST(86320.569163/8.0), + REAL_CONST(86343.424187/8.0), + REAL_CONST(86366.280724/8.0), + REAL_CONST(86389.138773/8.0), + REAL_CONST(86411.998334/8.0), + REAL_CONST(86434.859407/8.0), + REAL_CONST(86457.721991/8.0), + REAL_CONST(86480.586088/8.0), + REAL_CONST(86503.451695/8.0), + REAL_CONST(86526.318814/8.0), + REAL_CONST(86549.187443/8.0), + REAL_CONST(86572.057584/8.0), + REAL_CONST(86594.929234/8.0), + REAL_CONST(86617.802396/8.0), + REAL_CONST(86640.677067/8.0), + REAL_CONST(86663.553248/8.0), + REAL_CONST(86686.430939/8.0), + REAL_CONST(86709.310140/8.0), + REAL_CONST(86732.190849/8.0), + REAL_CONST(86755.073068/8.0), + REAL_CONST(86777.956796/8.0), + REAL_CONST(86800.842033/8.0), + REAL_CONST(86823.728778/8.0), + REAL_CONST(86846.617031/8.0), + REAL_CONST(86869.506793/8.0), + REAL_CONST(86892.398063/8.0), + REAL_CONST(86915.290840/8.0), + REAL_CONST(86938.185125/8.0), + REAL_CONST(86961.080917/8.0), + REAL_CONST(86983.978216/8.0), + REAL_CONST(87006.877023/8.0), + REAL_CONST(87029.777336/8.0), + REAL_CONST(87052.679155/8.0), + REAL_CONST(87075.582481/8.0), + REAL_CONST(87098.487313/8.0), + REAL_CONST(87121.393651/8.0), + REAL_CONST(87144.301495/8.0), + REAL_CONST(87167.210844/8.0), + REAL_CONST(87190.121699/8.0), + REAL_CONST(87213.034059/8.0), + REAL_CONST(87235.947924/8.0), + REAL_CONST(87258.863293/8.0), + REAL_CONST(87281.780168/8.0), + REAL_CONST(87304.698546/8.0), + REAL_CONST(87327.618429/8.0), + REAL_CONST(87350.539816/8.0), + REAL_CONST(87373.462706/8.0), + REAL_CONST(87396.387100/8.0), + REAL_CONST(87419.312998/8.0), + REAL_CONST(87442.240398/8.0), + REAL_CONST(87465.169302/8.0), + REAL_CONST(87488.099708/8.0), + REAL_CONST(87511.031617/8.0), + REAL_CONST(87533.965029/8.0), + REAL_CONST(87556.899943/8.0), + REAL_CONST(87579.836358/8.0), + REAL_CONST(87602.774276/8.0), + REAL_CONST(87625.713695/8.0), + REAL_CONST(87648.654615/8.0), + REAL_CONST(87671.597037/8.0), + REAL_CONST(87694.540960/8.0), + REAL_CONST(87717.486383/8.0), + REAL_CONST(87740.433308/8.0), + REAL_CONST(87763.381732/8.0), + REAL_CONST(87786.331657/8.0), + REAL_CONST(87809.283082/8.0), + REAL_CONST(87832.236007/8.0), + REAL_CONST(87855.190431/8.0), + REAL_CONST(87878.146355/8.0), + REAL_CONST(87901.103778/8.0), + REAL_CONST(87924.062700/8.0), + REAL_CONST(87947.023122/8.0), + REAL_CONST(87969.985041/8.0), + REAL_CONST(87992.948460/8.0), + REAL_CONST(88015.913376/8.0), + REAL_CONST(88038.879791/8.0), + REAL_CONST(88061.847703/8.0), + REAL_CONST(88084.817113/8.0), + REAL_CONST(88107.788021/8.0), + REAL_CONST(88130.760426/8.0), + REAL_CONST(88153.734328/8.0), + REAL_CONST(88176.709727/8.0), + REAL_CONST(88199.686623/8.0), + REAL_CONST(88222.665015/8.0), + REAL_CONST(88245.644904/8.0), + REAL_CONST(88268.626288/8.0), + REAL_CONST(88291.609169/8.0), + REAL_CONST(88314.593546/8.0), + REAL_CONST(88337.579417/8.0), + REAL_CONST(88360.566785/8.0), + REAL_CONST(88383.555647/8.0), + REAL_CONST(88406.546005/8.0), + REAL_CONST(88429.537857/8.0), + REAL_CONST(88452.531204/8.0), + REAL_CONST(88475.526045/8.0), + REAL_CONST(88498.522380/8.0), + REAL_CONST(88521.520210/8.0), + REAL_CONST(88544.519533/8.0), + REAL_CONST(88567.520350/8.0), + REAL_CONST(88590.522660/8.0), + REAL_CONST(88613.526463/8.0), + REAL_CONST(88636.531760/8.0), + REAL_CONST(88659.538549/8.0), + REAL_CONST(88682.546831/8.0), + REAL_CONST(88705.556605/8.0), + REAL_CONST(88728.567872/8.0), + REAL_CONST(88751.580631/8.0), + REAL_CONST(88774.594881/8.0), + REAL_CONST(88797.610623/8.0), + REAL_CONST(88820.627857/8.0), + REAL_CONST(88843.646582/8.0), + REAL_CONST(88866.666798/8.0), + REAL_CONST(88889.688505/8.0), + REAL_CONST(88912.711703/8.0), + REAL_CONST(88935.736391/8.0), + REAL_CONST(88958.762569/8.0), + REAL_CONST(88981.790238/8.0), + REAL_CONST(89004.819397/8.0), + REAL_CONST(89027.850045/8.0), + REAL_CONST(89050.882183/8.0), + REAL_CONST(89073.915810/8.0), + REAL_CONST(89096.950926/8.0), + REAL_CONST(89119.987532/8.0), + REAL_CONST(89143.025626/8.0), + REAL_CONST(89166.065208/8.0), + REAL_CONST(89189.106279/8.0), + REAL_CONST(89212.148839/8.0), + REAL_CONST(89235.192886/8.0), + REAL_CONST(89258.238421/8.0), + REAL_CONST(89281.285444/8.0), + REAL_CONST(89304.333954/8.0), + REAL_CONST(89327.383952/8.0), + REAL_CONST(89350.435436/8.0), + REAL_CONST(89373.488407/8.0), + REAL_CONST(89396.542865/8.0), + REAL_CONST(89419.598810/8.0), + REAL_CONST(89442.656240/8.0), + REAL_CONST(89465.715157/8.0), + REAL_CONST(89488.775560/8.0), + REAL_CONST(89511.837448/8.0), + REAL_CONST(89534.900822/8.0), + REAL_CONST(89557.965682/8.0), + REAL_CONST(89581.032026/8.0), + REAL_CONST(89604.099855/8.0), + REAL_CONST(89627.169170/8.0), + REAL_CONST(89650.239968/8.0), + REAL_CONST(89673.312251/8.0), + REAL_CONST(89696.386018/8.0), + REAL_CONST(89719.461270/8.0), + REAL_CONST(89742.538005/8.0), + REAL_CONST(89765.616223/8.0), + REAL_CONST(89788.695925/8.0), + REAL_CONST(89811.777111/8.0), + REAL_CONST(89834.859779/8.0), + REAL_CONST(89857.943930/8.0), + REAL_CONST(89881.029564/8.0), + REAL_CONST(89904.116680/8.0), + REAL_CONST(89927.205278/8.0), + REAL_CONST(89950.295359/8.0), + REAL_CONST(89973.386921/8.0), + REAL_CONST(89996.479966/8.0), + REAL_CONST(90019.574491/8.0), + REAL_CONST(90042.670498/8.0), + REAL_CONST(90065.767986/8.0), + REAL_CONST(90088.866955/8.0), + REAL_CONST(90111.967405/8.0), + REAL_CONST(90135.069336/8.0), + REAL_CONST(90158.172746/8.0), + REAL_CONST(90181.277637/8.0), + REAL_CONST(90204.384008/8.0), + REAL_CONST(90227.491859/8.0), + REAL_CONST(90250.601189/8.0), + REAL_CONST(90273.711999/8.0), + REAL_CONST(90296.824288/8.0), + REAL_CONST(90319.938056/8.0), + REAL_CONST(90343.053303/8.0), + REAL_CONST(90366.170029/8.0), + REAL_CONST(90389.288233/8.0), + REAL_CONST(90412.407915/8.0), + REAL_CONST(90435.529075/8.0), + REAL_CONST(90458.651714/8.0), + REAL_CONST(90481.775830/8.0), + REAL_CONST(90504.901423/8.0), + REAL_CONST(90528.028494/8.0), + REAL_CONST(90551.157042/8.0), + REAL_CONST(90574.287067/8.0), + REAL_CONST(90597.418569/8.0), + REAL_CONST(90620.551548/8.0), + REAL_CONST(90643.686002/8.0), + REAL_CONST(90666.821934/8.0), + REAL_CONST(90689.959341/8.0), + REAL_CONST(90713.098223/8.0), + REAL_CONST(90736.238582/8.0), + REAL_CONST(90759.380416/8.0), + REAL_CONST(90782.523725/8.0), + REAL_CONST(90805.668510/8.0), + REAL_CONST(90828.814769/8.0), + REAL_CONST(90851.962503/8.0), + REAL_CONST(90875.111711/8.0), + REAL_CONST(90898.262394/8.0), + REAL_CONST(90921.414551/8.0), + REAL_CONST(90944.568182/8.0), + REAL_CONST(90967.723287/8.0), + REAL_CONST(90990.879865/8.0), + REAL_CONST(91014.037916/8.0), + REAL_CONST(91037.197441/8.0), + REAL_CONST(91060.358439/8.0), + REAL_CONST(91083.520910/8.0), + REAL_CONST(91106.684853/8.0), + REAL_CONST(91129.850269/8.0), + REAL_CONST(91153.017157/8.0), + REAL_CONST(91176.185517/8.0), + REAL_CONST(91199.355349/8.0), + REAL_CONST(91222.526653/8.0), + REAL_CONST(91245.699428/8.0), + REAL_CONST(91268.873675/8.0), + REAL_CONST(91292.049393/8.0), + REAL_CONST(91315.226581/8.0), + REAL_CONST(91338.405241/8.0), + REAL_CONST(91361.585371/8.0), + REAL_CONST(91384.766971/8.0), + REAL_CONST(91407.950042/8.0), + REAL_CONST(91431.134583/8.0), + REAL_CONST(91454.320593/8.0), + REAL_CONST(91477.508074/8.0), + REAL_CONST(91500.697023/8.0), + REAL_CONST(91523.887442/8.0), + REAL_CONST(91547.079330/8.0), + REAL_CONST(91570.272687/8.0), + REAL_CONST(91593.467513/8.0), + REAL_CONST(91616.663807/8.0), + REAL_CONST(91639.861570/8.0), + REAL_CONST(91663.060800/8.0), + REAL_CONST(91686.261499/8.0), + REAL_CONST(91709.463666/8.0), + REAL_CONST(91732.667300/8.0), + REAL_CONST(91755.872401/8.0), + REAL_CONST(91779.078970/8.0), + REAL_CONST(91802.287006/8.0), + REAL_CONST(91825.496509/8.0), + REAL_CONST(91848.707478/8.0), + REAL_CONST(91871.919914/8.0), + REAL_CONST(91895.133816/8.0), + REAL_CONST(91918.349185/8.0), + REAL_CONST(91941.566019/8.0), + REAL_CONST(91964.784319/8.0), + REAL_CONST(91988.004084/8.0), + REAL_CONST(92011.225315/8.0), + REAL_CONST(92034.448012/8.0), + REAL_CONST(92057.672173/8.0), + REAL_CONST(92080.897799/8.0), + REAL_CONST(92104.124889/8.0), + REAL_CONST(92127.353445/8.0), + REAL_CONST(92150.583464/8.0), + REAL_CONST(92173.814948/8.0), + REAL_CONST(92197.047895/8.0), + REAL_CONST(92220.282306/8.0), + REAL_CONST(92243.518181/8.0), + REAL_CONST(92266.755519/8.0), + REAL_CONST(92289.994320/8.0), + REAL_CONST(92313.234584/8.0), + REAL_CONST(92336.476311/8.0), + REAL_CONST(92359.719501/8.0), + REAL_CONST(92382.964153/8.0), + REAL_CONST(92406.210267/8.0), + REAL_CONST(92429.457843/8.0), + REAL_CONST(92452.706882/8.0), + REAL_CONST(92475.957382/8.0), + REAL_CONST(92499.209343/8.0), + REAL_CONST(92522.462766/8.0), + REAL_CONST(92545.717650/8.0), + REAL_CONST(92568.973995/8.0), + REAL_CONST(92592.231800/8.0), + REAL_CONST(92615.491067/8.0), + REAL_CONST(92638.751793/8.0), + REAL_CONST(92662.013980/8.0), + REAL_CONST(92685.277627/8.0), + REAL_CONST(92708.542734/8.0), + REAL_CONST(92731.809300/8.0), + REAL_CONST(92755.077326/8.0), + REAL_CONST(92778.346812/8.0), + REAL_CONST(92801.617756/8.0), + REAL_CONST(92824.890160/8.0), + REAL_CONST(92848.164022/8.0), + REAL_CONST(92871.439342/8.0), + REAL_CONST(92894.716122/8.0), + REAL_CONST(92917.994359/8.0), + REAL_CONST(92941.274054/8.0), + REAL_CONST(92964.555207/8.0), + REAL_CONST(92987.837818/8.0), + REAL_CONST(93011.121887/8.0), + REAL_CONST(93034.407412/8.0), + REAL_CONST(93057.694395/8.0), + REAL_CONST(93080.982835/8.0), + REAL_CONST(93104.272732/8.0), + REAL_CONST(93127.564085/8.0), + REAL_CONST(93150.856894/8.0), + REAL_CONST(93174.151160/8.0), + REAL_CONST(93197.446881/8.0), + REAL_CONST(93220.744059/8.0), + REAL_CONST(93244.042692/8.0), + REAL_CONST(93267.342781/8.0), + REAL_CONST(93290.644325/8.0), + REAL_CONST(93313.947324/8.0), + REAL_CONST(93337.251778/8.0), + REAL_CONST(93360.557687/8.0), + REAL_CONST(93383.865050/8.0), + REAL_CONST(93407.173868/8.0), + REAL_CONST(93430.484140/8.0), + REAL_CONST(93453.795866/8.0), + REAL_CONST(93477.109046/8.0), + REAL_CONST(93500.423680/8.0), + REAL_CONST(93523.739767/8.0), + REAL_CONST(93547.057307/8.0), + REAL_CONST(93570.376300/8.0), + REAL_CONST(93593.696747/8.0), + REAL_CONST(93617.018646/8.0), + REAL_CONST(93640.341998/8.0), + REAL_CONST(93663.666802/8.0), + REAL_CONST(93686.993058/8.0), + REAL_CONST(93710.320766/8.0), + REAL_CONST(93733.649927/8.0), + REAL_CONST(93756.980539/8.0), + REAL_CONST(93780.312602/8.0), + REAL_CONST(93803.646117/8.0), + REAL_CONST(93826.981083/8.0), + REAL_CONST(93850.317499/8.0), + REAL_CONST(93873.655367/8.0), + REAL_CONST(93896.994685/8.0), + REAL_CONST(93920.335454/8.0), + REAL_CONST(93943.677673/8.0), + REAL_CONST(93967.021342/8.0), + REAL_CONST(93990.366460/8.0), + REAL_CONST(94013.713029/8.0), + REAL_CONST(94037.061047/8.0), + REAL_CONST(94060.410514/8.0), + REAL_CONST(94083.761430/8.0), + REAL_CONST(94107.113796/8.0), + REAL_CONST(94130.467610/8.0), + REAL_CONST(94153.822873/8.0), + REAL_CONST(94177.179584/8.0), + REAL_CONST(94200.537744/8.0), + REAL_CONST(94223.897351/8.0), + REAL_CONST(94247.258407/8.0), + REAL_CONST(94270.620910/8.0), + REAL_CONST(94293.984861/8.0), + REAL_CONST(94317.350259/8.0), + REAL_CONST(94340.717104/8.0), + REAL_CONST(94364.085396/8.0), + REAL_CONST(94387.455135/8.0), + REAL_CONST(94410.826321/8.0), + REAL_CONST(94434.198953/8.0), + REAL_CONST(94457.573032/8.0), + REAL_CONST(94480.948556/8.0), + REAL_CONST(94504.325527/8.0), + REAL_CONST(94527.703943/8.0), + REAL_CONST(94551.083805/8.0), + REAL_CONST(94574.465112/8.0), + REAL_CONST(94597.847864/8.0), + REAL_CONST(94621.232062/8.0), + REAL_CONST(94644.617704/8.0), + REAL_CONST(94668.004791/8.0), + REAL_CONST(94691.393322/8.0), + REAL_CONST(94714.783298/8.0), + REAL_CONST(94738.174718/8.0), + REAL_CONST(94761.567582/8.0), + REAL_CONST(94784.961890/8.0), + REAL_CONST(94808.357641/8.0), + REAL_CONST(94831.754835/8.0), + REAL_CONST(94855.153473/8.0), + REAL_CONST(94878.553554/8.0), + REAL_CONST(94901.955078/8.0), + REAL_CONST(94925.358045/8.0), + REAL_CONST(94948.762454/8.0), + REAL_CONST(94972.168305/8.0), + REAL_CONST(94995.575599/8.0), + REAL_CONST(95018.984335/8.0), + REAL_CONST(95042.394512/8.0), + REAL_CONST(95065.806131/8.0), + REAL_CONST(95089.219192/8.0), + REAL_CONST(95112.633694/8.0), + REAL_CONST(95136.049637/8.0), + REAL_CONST(95159.467021/8.0), + REAL_CONST(95182.885845/8.0), + REAL_CONST(95206.306111/8.0), + REAL_CONST(95229.727816/8.0), + REAL_CONST(95253.150962/8.0), + REAL_CONST(95276.575548/8.0), + REAL_CONST(95300.001574/8.0), + REAL_CONST(95323.429040/8.0), + REAL_CONST(95346.857945/8.0), + REAL_CONST(95370.288289/8.0), + REAL_CONST(95393.720073/8.0), + REAL_CONST(95417.153295/8.0), + REAL_CONST(95440.587957/8.0), + REAL_CONST(95464.024057/8.0), + REAL_CONST(95487.461595/8.0), + REAL_CONST(95510.900572/8.0), + REAL_CONST(95534.340987/8.0), + REAL_CONST(95557.782839/8.0), + REAL_CONST(95581.226130/8.0), + REAL_CONST(95604.670858/8.0), + REAL_CONST(95628.117024/8.0), + REAL_CONST(95651.564626/8.0), + REAL_CONST(95675.013666/8.0), + REAL_CONST(95698.464143/8.0), + REAL_CONST(95721.916056/8.0), + REAL_CONST(95745.369406/8.0), + REAL_CONST(95768.824192/8.0), + REAL_CONST(95792.280415/8.0), + REAL_CONST(95815.738073/8.0), + REAL_CONST(95839.197167/8.0), + REAL_CONST(95862.657697/8.0), + REAL_CONST(95886.119662/8.0), + REAL_CONST(95909.583063/8.0), + REAL_CONST(95933.047899/8.0), + REAL_CONST(95956.514169/8.0), + REAL_CONST(95979.981875/8.0), + REAL_CONST(96003.451015/8.0), + REAL_CONST(96026.921589/8.0), + REAL_CONST(96050.393598/8.0), + REAL_CONST(96073.867041/8.0), + REAL_CONST(96097.341917/8.0), + REAL_CONST(96120.818227/8.0), + REAL_CONST(96144.295971/8.0), + REAL_CONST(96167.775148/8.0), + REAL_CONST(96191.255759/8.0), + REAL_CONST(96214.737802/8.0), + REAL_CONST(96238.221279/8.0), + REAL_CONST(96261.706187/8.0), + REAL_CONST(96285.192529/8.0), + REAL_CONST(96308.680302/8.0), + REAL_CONST(96332.169508/8.0), + REAL_CONST(96355.660146/8.0), + REAL_CONST(96379.152216/8.0), + REAL_CONST(96402.645717/8.0), + REAL_CONST(96426.140650/8.0), + REAL_CONST(96449.637013/8.0), + REAL_CONST(96473.134808/8.0), + REAL_CONST(96496.634034/8.0), + REAL_CONST(96520.134691/8.0), + REAL_CONST(96543.636778/8.0), + REAL_CONST(96567.140296/8.0), + REAL_CONST(96590.645244/8.0), + REAL_CONST(96614.151622/8.0), + REAL_CONST(96637.659429/8.0), + REAL_CONST(96661.168667/8.0), + REAL_CONST(96684.679334/8.0), + REAL_CONST(96708.191430/8.0), + REAL_CONST(96731.704956/8.0), + REAL_CONST(96755.219910/8.0), + REAL_CONST(96778.736294/8.0), + REAL_CONST(96802.254106/8.0), + REAL_CONST(96825.773346/8.0), + REAL_CONST(96849.294015/8.0), + REAL_CONST(96872.816112/8.0), + REAL_CONST(96896.339637/8.0), + REAL_CONST(96919.864589/8.0), + REAL_CONST(96943.390970/8.0), + REAL_CONST(96966.918777/8.0), + REAL_CONST(96990.448012/8.0), + REAL_CONST(97013.978674/8.0), + REAL_CONST(97037.510763/8.0), + REAL_CONST(97061.044279/8.0), + REAL_CONST(97084.579221/8.0), + REAL_CONST(97108.115590/8.0), + REAL_CONST(97131.653385/8.0), + REAL_CONST(97155.192606/8.0), + REAL_CONST(97178.733253/8.0), + REAL_CONST(97202.275326/8.0), + REAL_CONST(97225.818824/8.0), + REAL_CONST(97249.363747/8.0), + REAL_CONST(97272.910096/8.0), + REAL_CONST(97296.457870/8.0), + REAL_CONST(97320.007069/8.0), + REAL_CONST(97343.557692/8.0), + REAL_CONST(97367.109740/8.0), + REAL_CONST(97390.663212/8.0), + REAL_CONST(97414.218108/8.0), + REAL_CONST(97437.774428/8.0), + REAL_CONST(97461.332172/8.0), + REAL_CONST(97484.891340/8.0), + REAL_CONST(97508.451931/8.0), + REAL_CONST(97532.013946/8.0), + REAL_CONST(97555.577383/8.0), + REAL_CONST(97579.142244/8.0), + REAL_CONST(97602.708527/8.0), + REAL_CONST(97626.276233/8.0), + REAL_CONST(97649.845362/8.0), + REAL_CONST(97673.415912/8.0), + REAL_CONST(97696.987885/8.0), + REAL_CONST(97720.561280/8.0), + REAL_CONST(97744.136096/8.0), + REAL_CONST(97767.712334/8.0), + REAL_CONST(97791.289994/8.0), + REAL_CONST(97814.869074/8.0), + REAL_CONST(97838.449576/8.0), + REAL_CONST(97862.031499/8.0), + REAL_CONST(97885.614842/8.0), + REAL_CONST(97909.199606/8.0), + REAL_CONST(97932.785791/8.0), + REAL_CONST(97956.373395/8.0), + REAL_CONST(97979.962420/8.0), + REAL_CONST(98003.552864/8.0), + REAL_CONST(98027.144728/8.0), + REAL_CONST(98050.738012/8.0), + REAL_CONST(98074.332715/8.0), + REAL_CONST(98097.928837/8.0), + REAL_CONST(98121.526378/8.0), + REAL_CONST(98145.125339/8.0), + REAL_CONST(98168.725717/8.0), + REAL_CONST(98192.327515/8.0), + REAL_CONST(98215.930730/8.0), + REAL_CONST(98239.535364/8.0), + REAL_CONST(98263.141416/8.0), + REAL_CONST(98286.748885/8.0), + REAL_CONST(98310.357772/8.0), + REAL_CONST(98333.968077/8.0), + REAL_CONST(98357.579799/8.0), + REAL_CONST(98381.192938/8.0), + REAL_CONST(98404.807495/8.0), + REAL_CONST(98428.423468/8.0), + REAL_CONST(98452.040857/8.0), + REAL_CONST(98475.659663/8.0), + REAL_CONST(98499.279885/8.0), + REAL_CONST(98522.901524/8.0), + REAL_CONST(98546.524578/8.0), + REAL_CONST(98570.149049/8.0), + REAL_CONST(98593.774934/8.0), + REAL_CONST(98617.402236/8.0), + REAL_CONST(98641.030952/8.0), + REAL_CONST(98664.661084/8.0), + REAL_CONST(98688.292630/8.0), + REAL_CONST(98711.925592/8.0), + REAL_CONST(98735.559968/8.0), + REAL_CONST(98759.195758/8.0), + REAL_CONST(98782.832963/8.0), + REAL_CONST(98806.471581/8.0), + REAL_CONST(98830.111614/8.0), + REAL_CONST(98853.753060/8.0), + REAL_CONST(98877.395920/8.0), + REAL_CONST(98901.040194/8.0), + REAL_CONST(98924.685880/8.0), + REAL_CONST(98948.332980/8.0), + REAL_CONST(98971.981493/8.0), + REAL_CONST(98995.631418/8.0), + REAL_CONST(99019.282756/8.0), + REAL_CONST(99042.935506/8.0), + REAL_CONST(99066.589669/8.0), + REAL_CONST(99090.245243/8.0), + REAL_CONST(99113.902230/8.0), + REAL_CONST(99137.560628/8.0), + REAL_CONST(99161.220438/8.0), + REAL_CONST(99184.881659/8.0), + REAL_CONST(99208.544291/8.0), + REAL_CONST(99232.208335/8.0), + REAL_CONST(99255.873789/8.0), + REAL_CONST(99279.540654/8.0), + REAL_CONST(99303.208930/8.0), + REAL_CONST(99326.878616/8.0), + REAL_CONST(99350.549712/8.0), + REAL_CONST(99374.222218/8.0), + REAL_CONST(99397.896134/8.0), + REAL_CONST(99421.571460/8.0), + REAL_CONST(99445.248195/8.0), + REAL_CONST(99468.926340/8.0), + REAL_CONST(99492.605894/8.0), + REAL_CONST(99516.286857/8.0), + REAL_CONST(99539.969229/8.0), + REAL_CONST(99563.653009/8.0), + REAL_CONST(99587.338198/8.0), + REAL_CONST(99611.024796/8.0), + REAL_CONST(99634.712801/8.0), + REAL_CONST(99658.402215/8.0), + REAL_CONST(99682.093036/8.0), + REAL_CONST(99705.785265/8.0), + REAL_CONST(99729.478902/8.0), + REAL_CONST(99753.173946/8.0), + REAL_CONST(99776.870398/8.0), + REAL_CONST(99800.568256/8.0), + REAL_CONST(99824.267521/8.0), + REAL_CONST(99847.968193/8.0), + REAL_CONST(99871.670271/8.0), + REAL_CONST(99895.373756/8.0), + REAL_CONST(99919.078647/8.0), + REAL_CONST(99942.784944/8.0), + REAL_CONST(99966.492647/8.0), + REAL_CONST(99990.201755/8.0), + REAL_CONST(100013.912269/8.0), + REAL_CONST(100037.624189/8.0), + REAL_CONST(100061.337513/8.0), + REAL_CONST(100085.052243/8.0), + REAL_CONST(100108.768377/8.0), + REAL_CONST(100132.485917/8.0), + REAL_CONST(100156.204860/8.0), + REAL_CONST(100179.925208/8.0), + REAL_CONST(100203.646961/8.0), + REAL_CONST(100227.370117/8.0), + REAL_CONST(100251.094677/8.0), + REAL_CONST(100274.820641/8.0), + REAL_CONST(100298.548008/8.0), + REAL_CONST(100322.276779/8.0), + REAL_CONST(100346.006953/8.0), + REAL_CONST(100369.738530/8.0), + REAL_CONST(100393.471510/8.0), + REAL_CONST(100417.205892/8.0), + REAL_CONST(100440.941677/8.0), + REAL_CONST(100464.678865/8.0), + REAL_CONST(100488.417454/8.0), + REAL_CONST(100512.157446/8.0), + REAL_CONST(100535.898840/8.0), + REAL_CONST(100559.641635/8.0), + REAL_CONST(100583.385832/8.0), + REAL_CONST(100607.131430/8.0), + REAL_CONST(100630.878429/8.0), + REAL_CONST(100654.626830/8.0), + REAL_CONST(100678.376631/8.0), + REAL_CONST(100702.127833/8.0), + REAL_CONST(100725.880436/8.0), + REAL_CONST(100749.634438/8.0), + REAL_CONST(100773.389842/8.0), + REAL_CONST(100797.146645/8.0), + REAL_CONST(100820.904848/8.0), + REAL_CONST(100844.664451/8.0), + REAL_CONST(100868.425453/8.0), + REAL_CONST(100892.187855/8.0), + REAL_CONST(100915.951656/8.0), + REAL_CONST(100939.716856/8.0), + REAL_CONST(100963.483455/8.0), + REAL_CONST(100987.251453/8.0), + REAL_CONST(101011.020849/8.0), + REAL_CONST(101034.791644/8.0), + REAL_CONST(101058.563837/8.0), + REAL_CONST(101082.337428/8.0), + REAL_CONST(101106.112417/8.0), + REAL_CONST(101129.888803/8.0), + REAL_CONST(101153.666587/8.0), + REAL_CONST(101177.445769/8.0), + REAL_CONST(101201.226348/8.0), + REAL_CONST(101225.008324/8.0), + REAL_CONST(101248.791697/8.0), + REAL_CONST(101272.576467/8.0), + REAL_CONST(101296.362633/8.0), + REAL_CONST(101320.150196/8.0), + REAL_CONST(101343.939155/8.0), + REAL_CONST(101367.729510/8.0), + REAL_CONST(101391.521261/8.0), + REAL_CONST(101415.314408/8.0), + REAL_CONST(101439.108950/8.0), + REAL_CONST(101462.904888/8.0), + REAL_CONST(101486.702221/8.0), + REAL_CONST(101510.500949/8.0), + REAL_CONST(101534.301073/8.0), + REAL_CONST(101558.102591/8.0), + REAL_CONST(101581.905503/8.0), + REAL_CONST(101605.709811/8.0), + REAL_CONST(101629.515512/8.0), + REAL_CONST(101653.322608/8.0), + REAL_CONST(101677.131097/8.0), + REAL_CONST(101700.940981/8.0), + REAL_CONST(101724.752258/8.0), + REAL_CONST(101748.564928/8.0), + REAL_CONST(101772.378992/8.0), + REAL_CONST(101796.194449/8.0), + REAL_CONST(101820.011299/8.0), + REAL_CONST(101843.829542/8.0), + REAL_CONST(101867.649178/8.0), + REAL_CONST(101891.470206/8.0), + REAL_CONST(101915.292626/8.0), + REAL_CONST(101939.116439/8.0), + REAL_CONST(101962.941644/8.0), + REAL_CONST(101986.768240/8.0), + REAL_CONST(102010.596228/8.0), + REAL_CONST(102034.425608/8.0), + REAL_CONST(102058.256379/8.0), + REAL_CONST(102082.088542/8.0), + REAL_CONST(102105.922095/8.0), + REAL_CONST(102129.757039/8.0), + REAL_CONST(102153.593374/8.0), + REAL_CONST(102177.431100/8.0), + REAL_CONST(102201.270216/8.0), + REAL_CONST(102225.110722/8.0), + REAL_CONST(102248.952618/8.0), + REAL_CONST(102272.795904/8.0), + REAL_CONST(102296.640580/8.0), + REAL_CONST(102320.486646/8.0), + REAL_CONST(102344.334101/8.0), + REAL_CONST(102368.182945/8.0), + REAL_CONST(102392.033178/8.0), + REAL_CONST(102415.884801/8.0), + REAL_CONST(102439.737812/8.0), + REAL_CONST(102463.592211/8.0), + REAL_CONST(102487.448000/8.0), + REAL_CONST(102511.305176/8.0), + REAL_CONST(102535.163741/8.0), + REAL_CONST(102559.023693/8.0), + REAL_CONST(102582.885033/8.0), + REAL_CONST(102606.747761/8.0), + REAL_CONST(102630.611877/8.0), + REAL_CONST(102654.477380/8.0), + REAL_CONST(102678.344270/8.0), + REAL_CONST(102702.212547/8.0), + REAL_CONST(102726.082211/8.0), + REAL_CONST(102749.953261/8.0), + REAL_CONST(102773.825698/8.0), + REAL_CONST(102797.699521/8.0), + REAL_CONST(102821.574731/8.0), + REAL_CONST(102845.451327/8.0), + REAL_CONST(102869.329308/8.0), + REAL_CONST(102893.208675/8.0), + REAL_CONST(102917.089428/8.0), + REAL_CONST(102940.971566/8.0), + REAL_CONST(102964.855090/8.0), + REAL_CONST(102988.739998/8.0), + REAL_CONST(103012.626292/8.0), + REAL_CONST(103036.513970/8.0), + REAL_CONST(103060.403033/8.0), + REAL_CONST(103084.293480/8.0), + REAL_CONST(103108.185311/8.0), + REAL_CONST(103132.078527/8.0), + REAL_CONST(103155.973126/8.0), + REAL_CONST(103179.869110/8.0), + REAL_CONST(103203.766477/8.0), + REAL_CONST(103227.665227/8.0), + REAL_CONST(103251.565361/8.0), + REAL_CONST(103275.466878/8.0), + REAL_CONST(103299.369777/8.0), + REAL_CONST(103323.274060/8.0), + REAL_CONST(103347.179725/8.0), + REAL_CONST(103371.086773/8.0), + REAL_CONST(103394.995203/8.0), + REAL_CONST(103418.905016/8.0), + REAL_CONST(103442.816210/8.0), + REAL_CONST(103466.728787/8.0), + REAL_CONST(103490.642745/8.0), + REAL_CONST(103514.558084/8.0), + REAL_CONST(103538.474805/8.0), + REAL_CONST(103562.392907/8.0), + REAL_CONST(103586.312391/8.0), + REAL_CONST(103610.233255/8.0), + REAL_CONST(103634.155500/8.0), + REAL_CONST(103658.079125/8.0), + REAL_CONST(103682.004131/8.0), + REAL_CONST(103705.930517/8.0), + REAL_CONST(103729.858284/8.0), + REAL_CONST(103753.787430/8.0), + REAL_CONST(103777.717956/8.0), + REAL_CONST(103801.649862/8.0), + REAL_CONST(103825.583147/8.0), + REAL_CONST(103849.517812/8.0), + REAL_CONST(103873.453855/8.0), + REAL_CONST(103897.391278/8.0), + REAL_CONST(103921.330080/8.0), + REAL_CONST(103945.270260/8.0), + REAL_CONST(103969.211819/8.0), + REAL_CONST(103993.154756/8.0), + REAL_CONST(104017.099071/8.0), + REAL_CONST(104041.044764/8.0), + REAL_CONST(104064.991836/8.0), + REAL_CONST(104088.940285/8.0), + REAL_CONST(104112.890111/8.0), + REAL_CONST(104136.841315/8.0), + REAL_CONST(104160.793897/8.0), + REAL_CONST(104184.747855/8.0), + REAL_CONST(104208.703190/8.0), + REAL_CONST(104232.659902/8.0), + REAL_CONST(104256.617991/8.0), + REAL_CONST(104280.577456/8.0), + REAL_CONST(104304.538298/8.0), + REAL_CONST(104328.500515/8.0), + REAL_CONST(104352.464109/8.0), + REAL_CONST(104376.429078/8.0), + REAL_CONST(104400.395424/8.0), + REAL_CONST(104424.363144/8.0), + REAL_CONST(104448.332240/8.0), + REAL_CONST(104472.302712/8.0), + REAL_CONST(104496.274558/8.0), + REAL_CONST(104520.247779/8.0), + REAL_CONST(104544.222375/8.0), + REAL_CONST(104568.198345/8.0), + REAL_CONST(104592.175690/8.0), + REAL_CONST(104616.154409/8.0), + REAL_CONST(104640.134503/8.0), + REAL_CONST(104664.115970/8.0), + REAL_CONST(104688.098811/8.0), + REAL_CONST(104712.083025/8.0), + REAL_CONST(104736.068613/8.0), + REAL_CONST(104760.055575/8.0), + REAL_CONST(104784.043909/8.0), + REAL_CONST(104808.033617/8.0), + REAL_CONST(104832.024697/8.0), + REAL_CONST(104856.017150/8.0), + REAL_CONST(104880.010976/8.0), + REAL_CONST(104904.006174/8.0), + REAL_CONST(104928.002744/8.0), + REAL_CONST(104952.000686/8.0), + REAL_CONST(104976.000000/8.0), + REAL_CONST(105000.000686/8.0), + REAL_CONST(105024.002743/8.0), + REAL_CONST(105048.006172/8.0), + REAL_CONST(105072.010972/8.0), + REAL_CONST(105096.017144/8.0), + REAL_CONST(105120.024686/8.0), + REAL_CONST(105144.033599/8.0), + REAL_CONST(105168.043882/8.0), + REAL_CONST(105192.055537/8.0), + REAL_CONST(105216.068561/8.0), + REAL_CONST(105240.082956/8.0), + REAL_CONST(105264.098720/8.0), + REAL_CONST(105288.115855/8.0), + REAL_CONST(105312.134359/8.0), + REAL_CONST(105336.154233/8.0), + REAL_CONST(105360.175476/8.0), + REAL_CONST(105384.198088/8.0), + REAL_CONST(105408.222070/8.0), + REAL_CONST(105432.247420/8.0), + REAL_CONST(105456.274140/8.0), + REAL_CONST(105480.302227/8.0), + REAL_CONST(105504.331684/8.0), + REAL_CONST(105528.362508/8.0), + REAL_CONST(105552.394701/8.0), + REAL_CONST(105576.428262/8.0), + REAL_CONST(105600.463190/8.0), + REAL_CONST(105624.499487/8.0), + REAL_CONST(105648.537150/8.0), + REAL_CONST(105672.576181/8.0), + REAL_CONST(105696.616580/8.0), + REAL_CONST(105720.658345/8.0), + REAL_CONST(105744.701478/8.0), + REAL_CONST(105768.745977/8.0), + REAL_CONST(105792.791842/8.0), + REAL_CONST(105816.839074/8.0), + REAL_CONST(105840.887673/8.0), + REAL_CONST(105864.937637/8.0), + REAL_CONST(105888.988968/8.0), + REAL_CONST(105913.041664/8.0), + REAL_CONST(105937.095726/8.0), + REAL_CONST(105961.151153/8.0), + REAL_CONST(105985.207946/8.0), + REAL_CONST(106009.266104/8.0), + REAL_CONST(106033.325627/8.0), + REAL_CONST(106057.386515/8.0), + REAL_CONST(106081.448768/8.0), + REAL_CONST(106105.512385/8.0), + REAL_CONST(106129.577367/8.0), + REAL_CONST(106153.643712/8.0), + REAL_CONST(106177.711422/8.0), + REAL_CONST(106201.780496/8.0), + REAL_CONST(106225.850934/8.0), + REAL_CONST(106249.922736/8.0), + REAL_CONST(106273.995901/8.0), + REAL_CONST(106298.070429/8.0), + REAL_CONST(106322.146320/8.0), + REAL_CONST(106346.223575/8.0), + REAL_CONST(106370.302192/8.0), + REAL_CONST(106394.382172/8.0), + REAL_CONST(106418.463515/8.0), + REAL_CONST(106442.546220/8.0), + REAL_CONST(106466.630287/8.0), + REAL_CONST(106490.715717/8.0), + REAL_CONST(106514.802508/8.0), + REAL_CONST(106538.890661/8.0), + REAL_CONST(106562.980176/8.0), + REAL_CONST(106587.071052/8.0), + REAL_CONST(106611.163290/8.0), + REAL_CONST(106635.256889/8.0), + REAL_CONST(106659.351849/8.0), + REAL_CONST(106683.448169/8.0), + REAL_CONST(106707.545851/8.0), + REAL_CONST(106731.644893/8.0), + REAL_CONST(106755.745295/8.0), + REAL_CONST(106779.847058/8.0), + REAL_CONST(106803.950181/8.0), + REAL_CONST(106828.054663/8.0), + REAL_CONST(106852.160506/8.0), + REAL_CONST(106876.267708/8.0), + REAL_CONST(106900.376270/8.0), + REAL_CONST(106924.486191/8.0), + REAL_CONST(106948.597471/8.0), + REAL_CONST(106972.710110/8.0), + REAL_CONST(106996.824108/8.0), + REAL_CONST(107020.939465/8.0), + REAL_CONST(107045.056181/8.0), + REAL_CONST(107069.174255/8.0), + REAL_CONST(107093.293687/8.0), + REAL_CONST(107117.414477/8.0), + REAL_CONST(107141.536625/8.0), + REAL_CONST(107165.660131/8.0), + REAL_CONST(107189.784995/8.0), + REAL_CONST(107213.911216/8.0), + REAL_CONST(107238.038794/8.0), + REAL_CONST(107262.167730/8.0), + REAL_CONST(107286.298023/8.0), + REAL_CONST(107310.429672/8.0), + REAL_CONST(107334.562679/8.0), + REAL_CONST(107358.697042/8.0), + REAL_CONST(107382.832761/8.0), + REAL_CONST(107406.969837/8.0), + REAL_CONST(107431.108269/8.0), + REAL_CONST(107455.248056/8.0), + REAL_CONST(107479.389200/8.0), + REAL_CONST(107503.531699/8.0), + REAL_CONST(107527.675554/8.0), + REAL_CONST(107551.820764/8.0), + REAL_CONST(107575.967330/8.0), + REAL_CONST(107600.115250/8.0), + REAL_CONST(107624.264526/8.0), + REAL_CONST(107648.415156/8.0), + REAL_CONST(107672.567140/8.0), + REAL_CONST(107696.720480/8.0), + REAL_CONST(107720.875173/8.0), + REAL_CONST(107745.031221/8.0), + REAL_CONST(107769.188622/8.0), + REAL_CONST(107793.347378/8.0), + REAL_CONST(107817.507487/8.0), + REAL_CONST(107841.668950/8.0), + REAL_CONST(107865.831766/8.0), + REAL_CONST(107889.995935/8.0), + REAL_CONST(107914.161458/8.0), + REAL_CONST(107938.328333/8.0), + REAL_CONST(107962.496561/8.0), + REAL_CONST(107986.666142/8.0), + REAL_CONST(108010.837076/8.0), + REAL_CONST(108035.009361/8.0), + REAL_CONST(108059.182999/8.0), + REAL_CONST(108083.357989/8.0), + REAL_CONST(108107.534331/8.0), + REAL_CONST(108131.712024/8.0), + REAL_CONST(108155.891069/8.0), + REAL_CONST(108180.071466/8.0), + REAL_CONST(108204.253213/8.0), + REAL_CONST(108228.436312/8.0), + REAL_CONST(108252.620762/8.0), + REAL_CONST(108276.806563/8.0), + REAL_CONST(108300.993714/8.0), + REAL_CONST(108325.182216/8.0), + REAL_CONST(108349.372068/8.0), + REAL_CONST(108373.563271/8.0), + REAL_CONST(108397.755823/8.0), + REAL_CONST(108421.949726/8.0), + REAL_CONST(108446.144978/8.0), + REAL_CONST(108470.341580/8.0), + REAL_CONST(108494.539531/8.0), + REAL_CONST(108518.738831/8.0), + REAL_CONST(108542.939481/8.0), + REAL_CONST(108567.141480/8.0), + REAL_CONST(108591.344828/8.0), + REAL_CONST(108615.549524/8.0), + REAL_CONST(108639.755569/8.0), + REAL_CONST(108663.962962/8.0), + REAL_CONST(108688.171704/8.0), + REAL_CONST(108712.381794/8.0), + REAL_CONST(108736.593231/8.0), + REAL_CONST(108760.806017/8.0), + REAL_CONST(108785.020150/8.0), + REAL_CONST(108809.235631/8.0), + REAL_CONST(108833.452459/8.0), + REAL_CONST(108857.670634/8.0), + REAL_CONST(108881.890156/8.0), + REAL_CONST(108906.111025/8.0), + REAL_CONST(108930.333241/8.0), + REAL_CONST(108954.556804/8.0), + REAL_CONST(108978.781713/8.0), + REAL_CONST(109003.007968/8.0), + REAL_CONST(109027.235570/8.0), + REAL_CONST(109051.464517/8.0), + REAL_CONST(109075.694811/8.0), + REAL_CONST(109099.926450/8.0), + REAL_CONST(109124.159435/8.0), + REAL_CONST(109148.393765/8.0), + REAL_CONST(109172.629440/8.0), + REAL_CONST(109196.866461/8.0), + REAL_CONST(109221.104826/8.0), + REAL_CONST(109245.344537/8.0), + REAL_CONST(109269.585591/8.0), + REAL_CONST(109293.827991/8.0), + REAL_CONST(109318.071735/8.0), + REAL_CONST(109342.316823/8.0), + REAL_CONST(109366.563255/8.0), + REAL_CONST(109390.811031/8.0), + REAL_CONST(109415.060151/8.0), + REAL_CONST(109439.310615/8.0), + REAL_CONST(109463.562421/8.0), + REAL_CONST(109487.815572/8.0), + REAL_CONST(109512.070065/8.0), + REAL_CONST(109536.325902/8.0), + REAL_CONST(109560.583081/8.0), + REAL_CONST(109584.841603/8.0), + REAL_CONST(109609.101468/8.0), + REAL_CONST(109633.362675/8.0), + REAL_CONST(109657.625225/8.0), + REAL_CONST(109681.889116/8.0), + REAL_CONST(109706.154350/8.0), + REAL_CONST(109730.420925/8.0), + REAL_CONST(109754.688842/8.0), + REAL_CONST(109778.958101/8.0), + REAL_CONST(109803.228701/8.0), + REAL_CONST(109827.500642/8.0), + REAL_CONST(109851.773925/8.0), + REAL_CONST(109876.048548/8.0), + REAL_CONST(109900.324512/8.0), + REAL_CONST(109924.601817/8.0), + REAL_CONST(109948.880462/8.0), + REAL_CONST(109973.160448/8.0), + REAL_CONST(109997.441774/8.0), + REAL_CONST(110021.724440/8.0), + REAL_CONST(110046.008446/8.0), + REAL_CONST(110070.293792/8.0), + REAL_CONST(110094.580477/8.0), + REAL_CONST(110118.868502/8.0), + REAL_CONST(110143.157866/8.0), + REAL_CONST(110167.448569/8.0), + REAL_CONST(110191.740611/8.0), + REAL_CONST(110216.033993/8.0), + REAL_CONST(110240.328713/8.0), + REAL_CONST(110264.624771/8.0), + REAL_CONST(110288.922168/8.0), + REAL_CONST(110313.220903/8.0), + REAL_CONST(110337.520977/8.0), + REAL_CONST(110361.822388/8.0), + REAL_CONST(110386.125137/8.0), + REAL_CONST(110410.429224/8.0), + REAL_CONST(110434.734649/8.0), + REAL_CONST(110459.041411/8.0), + REAL_CONST(110483.349510/8.0), + REAL_CONST(110507.658946/8.0), + REAL_CONST(110531.969719/8.0), + REAL_CONST(110556.281830/8.0), + REAL_CONST(110580.595276/8.0), + REAL_CONST(110604.910060/8.0), + REAL_CONST(110629.226179/8.0), + REAL_CONST(110653.543635/8.0), + REAL_CONST(110677.862427/8.0), + REAL_CONST(110702.182555/8.0), + REAL_CONST(110726.504019/8.0), + REAL_CONST(110750.826818/8.0), + REAL_CONST(110775.150953/8.0), + REAL_CONST(110799.476423/8.0), + REAL_CONST(110823.803229/8.0), + REAL_CONST(110848.131369/8.0), + REAL_CONST(110872.460845/8.0), + REAL_CONST(110896.791655/8.0), + REAL_CONST(110921.123800/8.0), + REAL_CONST(110945.457279/8.0), + REAL_CONST(110969.792093/8.0), + REAL_CONST(110994.128240/8.0), + REAL_CONST(111018.465722/8.0), + REAL_CONST(111042.804538/8.0), + REAL_CONST(111067.144687/8.0), + REAL_CONST(111091.486170/8.0), + REAL_CONST(111115.828987/8.0), + REAL_CONST(111140.173137/8.0), + REAL_CONST(111164.518620/8.0), + REAL_CONST(111188.865436/8.0), + REAL_CONST(111213.213585/8.0), + REAL_CONST(111237.563066/8.0), + REAL_CONST(111261.913880/8.0), + REAL_CONST(111286.266027/8.0), + REAL_CONST(111310.619506/8.0), + REAL_CONST(111334.974317/8.0), + REAL_CONST(111359.330460/8.0), + REAL_CONST(111383.687935/8.0), + REAL_CONST(111408.046741/8.0), + REAL_CONST(111432.406879/8.0), + REAL_CONST(111456.768349/8.0), + REAL_CONST(111481.131149/8.0), + REAL_CONST(111505.495281/8.0), + REAL_CONST(111529.860744/8.0), + REAL_CONST(111554.227538/8.0), + REAL_CONST(111578.595662/8.0), + REAL_CONST(111602.965117/8.0), + REAL_CONST(111627.335902/8.0), + REAL_CONST(111651.708018/8.0), + REAL_CONST(111676.081464/8.0), + REAL_CONST(111700.456239/8.0), + REAL_CONST(111724.832345/8.0), + REAL_CONST(111749.209780/8.0), + REAL_CONST(111773.588544/8.0), + REAL_CONST(111797.968638/8.0), + REAL_CONST(111822.350062/8.0), + REAL_CONST(111846.732814/8.0), + REAL_CONST(111871.116895/8.0), + REAL_CONST(111895.502305/8.0), + REAL_CONST(111919.889044/8.0), + REAL_CONST(111944.277111/8.0), + REAL_CONST(111968.666507/8.0), + REAL_CONST(111993.057230/8.0), + REAL_CONST(112017.449282/8.0), + REAL_CONST(112041.842662/8.0), + REAL_CONST(112066.237369/8.0), + REAL_CONST(112090.633405/8.0), + REAL_CONST(112115.030767/8.0), + REAL_CONST(112139.429457/8.0), + REAL_CONST(112163.829475/8.0), + REAL_CONST(112188.230819/8.0), + REAL_CONST(112212.633490/8.0), + REAL_CONST(112237.037488/8.0), + REAL_CONST(112261.442813/8.0), + REAL_CONST(112285.849464/8.0), + REAL_CONST(112310.257441/8.0), + REAL_CONST(112334.666745/8.0), + REAL_CONST(112359.077375/8.0), + REAL_CONST(112383.489330/8.0), + REAL_CONST(112407.902612/8.0), + REAL_CONST(112432.317219/8.0), + REAL_CONST(112456.733151/8.0), + REAL_CONST(112481.150409/8.0), + REAL_CONST(112505.568992/8.0), + REAL_CONST(112529.988900/8.0), + REAL_CONST(112554.410133/8.0), + REAL_CONST(112578.832691/8.0), + REAL_CONST(112603.256573/8.0), + REAL_CONST(112627.681780/8.0), + REAL_CONST(112652.108311/8.0), + REAL_CONST(112676.536166/8.0), + REAL_CONST(112700.965345/8.0), + REAL_CONST(112725.395849/8.0), + REAL_CONST(112749.827676/8.0), + REAL_CONST(112774.260826/8.0), + REAL_CONST(112798.695300/8.0), + REAL_CONST(112823.131098/8.0), + REAL_CONST(112847.568218/8.0), + REAL_CONST(112872.006662/8.0), + REAL_CONST(112896.446428/8.0), + REAL_CONST(112920.887517/8.0), + REAL_CONST(112945.329929/8.0), + REAL_CONST(112969.773663/8.0), + REAL_CONST(112994.218720/8.0), + REAL_CONST(113018.665099/8.0), + REAL_CONST(113043.112800/8.0), + REAL_CONST(113067.561822/8.0), + REAL_CONST(113092.012167/8.0), + REAL_CONST(113116.463833/8.0), + REAL_CONST(113140.916820/8.0), + REAL_CONST(113165.371129/8.0), + REAL_CONST(113189.826759/8.0), + REAL_CONST(113214.283710/8.0), + REAL_CONST(113238.741982/8.0), + REAL_CONST(113263.201575/8.0), + REAL_CONST(113287.662488/8.0), + REAL_CONST(113312.124722/8.0), + REAL_CONST(113336.588276/8.0), + REAL_CONST(113361.053150/8.0), + REAL_CONST(113385.519345/8.0), + REAL_CONST(113409.986859/8.0), + REAL_CONST(113434.455693/8.0), + REAL_CONST(113458.925846/8.0), + REAL_CONST(113483.397319/8.0), + REAL_CONST(113507.870112/8.0), + REAL_CONST(113532.344223/8.0), + REAL_CONST(113556.819654/8.0), + REAL_CONST(113581.296403/8.0), + REAL_CONST(113605.774471/8.0), + REAL_CONST(113630.253858/8.0), + REAL_CONST(113654.734563/8.0), + REAL_CONST(113679.216587/8.0), + REAL_CONST(113703.699929/8.0), + REAL_CONST(113728.184589/8.0), + REAL_CONST(113752.670566/8.0), + REAL_CONST(113777.157862/8.0), + REAL_CONST(113801.646475/8.0), + REAL_CONST(113826.136406/8.0), + REAL_CONST(113850.627654/8.0), + REAL_CONST(113875.120219/8.0), + REAL_CONST(113899.614101/8.0), + REAL_CONST(113924.109300/8.0), + REAL_CONST(113948.605816/8.0), + REAL_CONST(113973.103648/8.0), + REAL_CONST(113997.602797/8.0), + REAL_CONST(114022.103263/8.0), + REAL_CONST(114046.605044/8.0), + REAL_CONST(114071.108142/8.0), + REAL_CONST(114095.612555/8.0), + REAL_CONST(114120.118285/8.0), + REAL_CONST(114144.625330/8.0), + REAL_CONST(114169.133690/8.0), + REAL_CONST(114193.643366/8.0), + REAL_CONST(114218.154357/8.0), + REAL_CONST(114242.666663/8.0), + REAL_CONST(114267.180284/8.0), + REAL_CONST(114291.695220/8.0), + REAL_CONST(114316.211470/8.0), + REAL_CONST(114340.729035/8.0), + REAL_CONST(114365.247914/8.0), + REAL_CONST(114389.768108/8.0), + REAL_CONST(114414.289615/8.0), + REAL_CONST(114438.812437/8.0), + REAL_CONST(114463.336572/8.0), + REAL_CONST(114487.862021/8.0), + REAL_CONST(114512.388784/8.0), + REAL_CONST(114536.916860/8.0), + REAL_CONST(114561.446249/8.0), + REAL_CONST(114585.976951/8.0), + REAL_CONST(114610.508967/8.0), + REAL_CONST(114635.042295/8.0), + REAL_CONST(114659.576936/8.0), + REAL_CONST(114684.112889/8.0), + REAL_CONST(114708.650155/8.0), + REAL_CONST(114733.188733/8.0), + REAL_CONST(114757.728623/8.0), + REAL_CONST(114782.269825/8.0), + REAL_CONST(114806.812339/8.0), + REAL_CONST(114831.356164/8.0), + REAL_CONST(114855.901301/8.0), + REAL_CONST(114880.447750/8.0), + REAL_CONST(114904.995510/8.0), + REAL_CONST(114929.544581/8.0), + REAL_CONST(114954.094963/8.0), + REAL_CONST(114978.646655/8.0), + REAL_CONST(115003.199659/8.0), + REAL_CONST(115027.753973/8.0), + REAL_CONST(115052.309598/8.0), + REAL_CONST(115076.866532/8.0), + REAL_CONST(115101.424777/8.0), + REAL_CONST(115125.984333/8.0), + REAL_CONST(115150.545197/8.0), + REAL_CONST(115175.107372/8.0), + REAL_CONST(115199.670856/8.0), + REAL_CONST(115224.235650/8.0), + REAL_CONST(115248.801753/8.0), + REAL_CONST(115273.369165/8.0), + REAL_CONST(115297.937886/8.0), + REAL_CONST(115322.507917/8.0), + REAL_CONST(115347.079256/8.0), + REAL_CONST(115371.651903/8.0), + REAL_CONST(115396.225859/8.0), + REAL_CONST(115420.801123/8.0), + REAL_CONST(115445.377696/8.0), + REAL_CONST(115469.955577/8.0), + REAL_CONST(115494.534765/8.0), + REAL_CONST(115519.115261/8.0), + REAL_CONST(115543.697065/8.0), + REAL_CONST(115568.280177/8.0), + REAL_CONST(115592.864596/8.0), + REAL_CONST(115617.450322/8.0), + REAL_CONST(115642.037355/8.0), + REAL_CONST(115666.625695/8.0), + REAL_CONST(115691.215342/8.0), + REAL_CONST(115715.806296/8.0), + REAL_CONST(115740.398556/8.0), + REAL_CONST(115764.992122/8.0), + REAL_CONST(115789.586995/8.0), + REAL_CONST(115814.183174/8.0), + REAL_CONST(115838.780659/8.0), + REAL_CONST(115863.379450/8.0), + REAL_CONST(115887.979546/8.0), + REAL_CONST(115912.580948/8.0), + REAL_CONST(115937.183656/8.0), + REAL_CONST(115961.787668/8.0), + REAL_CONST(115986.392986/8.0), + REAL_CONST(116010.999609/8.0), + REAL_CONST(116035.607537/8.0), + REAL_CONST(116060.216769/8.0), + REAL_CONST(116084.827307/8.0), + REAL_CONST(116109.439148/8.0), + REAL_CONST(116134.052294/8.0), + REAL_CONST(116158.666744/8.0), + REAL_CONST(116183.282498/8.0), + REAL_CONST(116207.899556/8.0), + REAL_CONST(116232.517918/8.0), + REAL_CONST(116257.137583/8.0), + REAL_CONST(116281.758552/8.0), + REAL_CONST(116306.380824/8.0), + REAL_CONST(116331.004400/8.0), + REAL_CONST(116355.629278/8.0), + REAL_CONST(116380.255460/8.0), + REAL_CONST(116404.882944/8.0), + REAL_CONST(116429.511731/8.0), + REAL_CONST(116454.141820/8.0), + REAL_CONST(116478.773212/8.0), + REAL_CONST(116503.405906/8.0), + REAL_CONST(116528.039902/8.0), + REAL_CONST(116552.675201/8.0), + REAL_CONST(116577.311801/8.0), + REAL_CONST(116601.949702/8.0), + REAL_CONST(116626.588905/8.0), + REAL_CONST(116651.229410/8.0), + REAL_CONST(116675.871216/8.0), + REAL_CONST(116700.514323/8.0), + REAL_CONST(116725.158731/8.0), + REAL_CONST(116749.804440/8.0), + REAL_CONST(116774.451450/8.0), + REAL_CONST(116799.099760/8.0), + REAL_CONST(116823.749371/8.0), + REAL_CONST(116848.400282/8.0), + REAL_CONST(116873.052494/8.0), + REAL_CONST(116897.706005/8.0), + REAL_CONST(116922.360816/8.0), + REAL_CONST(116947.016927/8.0), + REAL_CONST(116971.674338/8.0), + REAL_CONST(116996.333048/8.0), + REAL_CONST(117020.993058/8.0), + REAL_CONST(117045.654367/8.0), + REAL_CONST(117070.316974/8.0), + REAL_CONST(117094.980881/8.0), + REAL_CONST(117119.646087/8.0), + REAL_CONST(117144.312591/8.0), + REAL_CONST(117168.980394/8.0), + REAL_CONST(117193.649495/8.0), + REAL_CONST(117218.319895/8.0), + REAL_CONST(117242.991593/8.0), + REAL_CONST(117267.664588/8.0), + REAL_CONST(117292.338882/8.0), + REAL_CONST(117317.014473/8.0), + REAL_CONST(117341.691362/8.0), + REAL_CONST(117366.369548/8.0), + REAL_CONST(117391.049032/8.0), + REAL_CONST(117415.729813/8.0), + REAL_CONST(117440.411891/8.0), + REAL_CONST(117465.095266/8.0), + REAL_CONST(117489.779937/8.0), + REAL_CONST(117514.465905/8.0), + REAL_CONST(117539.153170/8.0), + REAL_CONST(117563.841731/8.0), + REAL_CONST(117588.531588/8.0), + REAL_CONST(117613.222741/8.0), + REAL_CONST(117637.915191/8.0), + REAL_CONST(117662.608936/8.0), + REAL_CONST(117687.303977/8.0), + REAL_CONST(117712.000313/8.0), + REAL_CONST(117736.697945/8.0), + REAL_CONST(117761.396872/8.0), + REAL_CONST(117786.097094/8.0), + REAL_CONST(117810.798611/8.0), + REAL_CONST(117835.501423/8.0), + REAL_CONST(117860.205530/8.0), + REAL_CONST(117884.910931/8.0), + REAL_CONST(117909.617627/8.0), + REAL_CONST(117934.325617/8.0), + REAL_CONST(117959.034902/8.0), + REAL_CONST(117983.745480/8.0), + REAL_CONST(118008.457352/8.0), + REAL_CONST(118033.170518/8.0), + REAL_CONST(118057.884978/8.0), + REAL_CONST(118082.600731/8.0), + REAL_CONST(118107.317778/8.0), + REAL_CONST(118132.036118/8.0), + REAL_CONST(118156.755751/8.0), + REAL_CONST(118181.476677/8.0), + REAL_CONST(118206.198895/8.0), + REAL_CONST(118230.922407/8.0), + REAL_CONST(118255.647211/8.0), + REAL_CONST(118280.373307/8.0), + REAL_CONST(118305.100696/8.0), + REAL_CONST(118329.829377/8.0), + REAL_CONST(118354.559350/8.0), + REAL_CONST(118379.290615/8.0), + REAL_CONST(118404.023171/8.0), + REAL_CONST(118428.757019/8.0), + REAL_CONST(118453.492159/8.0), + REAL_CONST(118478.228590/8.0), + REAL_CONST(118502.966312/8.0), + REAL_CONST(118527.705326/8.0), + REAL_CONST(118552.445630/8.0), + REAL_CONST(118577.187225/8.0), + REAL_CONST(118601.930111/8.0), + REAL_CONST(118626.674287/8.0), + REAL_CONST(118651.419754/8.0), + REAL_CONST(118676.166511/8.0), + REAL_CONST(118700.914558/8.0), + REAL_CONST(118725.663895/8.0), + REAL_CONST(118750.414522/8.0), + REAL_CONST(118775.166438/8.0), + REAL_CONST(118799.919645/8.0), + REAL_CONST(118824.674140/8.0), + REAL_CONST(118849.429926/8.0), + REAL_CONST(118874.187000/8.0), + REAL_CONST(118898.945363/8.0), + REAL_CONST(118923.705015/8.0), + REAL_CONST(118948.465957/8.0), + REAL_CONST(118973.228186/8.0), + REAL_CONST(118997.991705/8.0), + REAL_CONST(119022.756511/8.0), + REAL_CONST(119047.522606/8.0), + REAL_CONST(119072.289989/8.0), + REAL_CONST(119097.058660/8.0), + REAL_CONST(119121.828619/8.0), + REAL_CONST(119146.599866/8.0), + REAL_CONST(119171.372400/8.0), + REAL_CONST(119196.146221/8.0), + REAL_CONST(119220.921330/8.0), + REAL_CONST(119245.697726/8.0), + REAL_CONST(119270.475410/8.0), + REAL_CONST(119295.254380/8.0), + REAL_CONST(119320.034637/8.0), + REAL_CONST(119344.816180/8.0), + REAL_CONST(119369.599010/8.0), + REAL_CONST(119394.383127/8.0), + REAL_CONST(119419.168529/8.0), + REAL_CONST(119443.955218/8.0), + REAL_CONST(119468.743193/8.0), + REAL_CONST(119493.532454/8.0), + REAL_CONST(119518.323000/8.0), + REAL_CONST(119543.114832/8.0), + REAL_CONST(119567.907949/8.0), + REAL_CONST(119592.702352/8.0), + REAL_CONST(119617.498040/8.0), + REAL_CONST(119642.295013/8.0), + REAL_CONST(119667.093271/8.0), + REAL_CONST(119691.892813/8.0), + REAL_CONST(119716.693641/8.0), + REAL_CONST(119741.495752/8.0), + REAL_CONST(119766.299149/8.0), + REAL_CONST(119791.103829/8.0), + REAL_CONST(119815.909794/8.0), + REAL_CONST(119840.717042/8.0), + REAL_CONST(119865.525575/8.0), + REAL_CONST(119890.335391/8.0), + REAL_CONST(119915.146490/8.0), + REAL_CONST(119939.958874/8.0), + REAL_CONST(119964.772540/8.0), + REAL_CONST(119989.587490/8.0), + REAL_CONST(120014.403723/8.0), + REAL_CONST(120039.221238/8.0), + REAL_CONST(120064.040037/8.0), + REAL_CONST(120088.860118/8.0), + REAL_CONST(120113.681481/8.0), + REAL_CONST(120138.504127/8.0), + REAL_CONST(120163.328056/8.0), + REAL_CONST(120188.153266/8.0), + REAL_CONST(120212.979759/8.0), + REAL_CONST(120237.807533/8.0), + REAL_CONST(120262.636589/8.0), + REAL_CONST(120287.466926/8.0), + REAL_CONST(120312.298545/8.0), + REAL_CONST(120337.131446/8.0), + REAL_CONST(120361.965627/8.0), + REAL_CONST(120386.801090/8.0), + REAL_CONST(120411.637834/8.0), + REAL_CONST(120436.475858/8.0), + REAL_CONST(120461.315163/8.0), + REAL_CONST(120486.155749/8.0), + REAL_CONST(120510.997615/8.0), + REAL_CONST(120535.840761/8.0), + REAL_CONST(120560.685188/8.0), + REAL_CONST(120585.530894/8.0), + REAL_CONST(120610.377881/8.0), + REAL_CONST(120635.226147/8.0), + REAL_CONST(120660.075692/8.0), + REAL_CONST(120684.926518/8.0), + REAL_CONST(120709.778622/8.0), + REAL_CONST(120734.632006/8.0), + REAL_CONST(120759.486669/8.0), + REAL_CONST(120784.342611/8.0), + REAL_CONST(120809.199831/8.0), + REAL_CONST(120834.058331/8.0), + REAL_CONST(120858.918109/8.0), + REAL_CONST(120883.779165/8.0), + REAL_CONST(120908.641500/8.0), + REAL_CONST(120933.505113/8.0), + REAL_CONST(120958.370004/8.0), + REAL_CONST(120983.236172/8.0), + REAL_CONST(121008.103619/8.0), + REAL_CONST(121032.972343/8.0), + REAL_CONST(121057.842345/8.0), + REAL_CONST(121082.713624/8.0), + REAL_CONST(121107.586180/8.0), + REAL_CONST(121132.460014/8.0), + REAL_CONST(121157.335124/8.0), + REAL_CONST(121182.211512/8.0), + REAL_CONST(121207.089176/8.0), + REAL_CONST(121231.968116/8.0), + REAL_CONST(121256.848333/8.0), + REAL_CONST(121281.729827/8.0), + REAL_CONST(121306.612597/8.0), + REAL_CONST(121331.496642/8.0), + REAL_CONST(121356.381964/8.0), + REAL_CONST(121381.268561/8.0), + REAL_CONST(121406.156435/8.0), + REAL_CONST(121431.045583/8.0), + REAL_CONST(121455.936007/8.0), + REAL_CONST(121480.827707/8.0), + REAL_CONST(121505.720681/8.0), + REAL_CONST(121530.614931/8.0), + REAL_CONST(121555.510455/8.0), + REAL_CONST(121580.407255/8.0), + REAL_CONST(121605.305329/8.0), + REAL_CONST(121630.204677/8.0), + REAL_CONST(121655.105300/8.0), + REAL_CONST(121680.007197/8.0), + REAL_CONST(121704.910368/8.0), + REAL_CONST(121729.814813/8.0), + REAL_CONST(121754.720532/8.0), + REAL_CONST(121779.627525/8.0), + REAL_CONST(121804.535791/8.0), + REAL_CONST(121829.445331/8.0), + REAL_CONST(121854.356144/8.0), + REAL_CONST(121879.268230/8.0), + REAL_CONST(121904.181589/8.0), + REAL_CONST(121929.096222/8.0), + REAL_CONST(121954.012127/8.0), + REAL_CONST(121978.929304/8.0), + REAL_CONST(122003.847755/8.0), + REAL_CONST(122028.767478/8.0), + REAL_CONST(122053.688473/8.0), + REAL_CONST(122078.610740/8.0), + REAL_CONST(122103.534279/8.0), + REAL_CONST(122128.459090/8.0), + REAL_CONST(122153.385173/8.0), + REAL_CONST(122178.312528/8.0), + REAL_CONST(122203.241154/8.0), + REAL_CONST(122228.171051/8.0), + REAL_CONST(122253.102220/8.0), + REAL_CONST(122278.034660/8.0), + REAL_CONST(122302.968370/8.0), + REAL_CONST(122327.903352/8.0), + REAL_CONST(122352.839604/8.0), + REAL_CONST(122377.777127/8.0), + REAL_CONST(122402.715921/8.0), + REAL_CONST(122427.655985/8.0), + REAL_CONST(122452.597319/8.0), + REAL_CONST(122477.539923/8.0), + REAL_CONST(122502.483797/8.0), + REAL_CONST(122527.428941/8.0), + REAL_CONST(122552.375354/8.0), + REAL_CONST(122577.323038/8.0), + REAL_CONST(122602.271990/8.0), + REAL_CONST(122627.222212/8.0), + REAL_CONST(122652.173703/8.0), + REAL_CONST(122677.126463/8.0), + REAL_CONST(122702.080493/8.0), + REAL_CONST(122727.035790/8.0), + REAL_CONST(122751.992357/8.0), + REAL_CONST(122776.950192/8.0), + REAL_CONST(122801.909296/8.0), + REAL_CONST(122826.869667/8.0), + REAL_CONST(122851.831307/8.0), + REAL_CONST(122876.794215/8.0), + REAL_CONST(122901.758391/8.0), + REAL_CONST(122926.723835/8.0), + REAL_CONST(122951.690546/8.0), + REAL_CONST(122976.658525/8.0), + REAL_CONST(123001.627771/8.0), + REAL_CONST(123026.598284/8.0), + REAL_CONST(123051.570065/8.0), + REAL_CONST(123076.543112/8.0), + REAL_CONST(123101.517427/8.0), + REAL_CONST(123126.493008/8.0), + REAL_CONST(123151.469855/8.0), + REAL_CONST(123176.447970/8.0), + REAL_CONST(123201.427350/8.0), + REAL_CONST(123226.407997/8.0), + REAL_CONST(123251.389910/8.0), + REAL_CONST(123276.373088/8.0), + REAL_CONST(123301.357533/8.0), + REAL_CONST(123326.343243/8.0), + REAL_CONST(123351.330219/8.0), + REAL_CONST(123376.318461/8.0), + REAL_CONST(123401.307967/8.0), + REAL_CONST(123426.298739/8.0), + REAL_CONST(123451.290776/8.0), + REAL_CONST(123476.284078/8.0), + REAL_CONST(123501.278645/8.0), + REAL_CONST(123526.274476/8.0), + REAL_CONST(123551.271572/8.0), + REAL_CONST(123576.269933/8.0), + REAL_CONST(123601.269557/8.0), + REAL_CONST(123626.270446/8.0), + REAL_CONST(123651.272599/8.0), + REAL_CONST(123676.276016/8.0), + REAL_CONST(123701.280696/8.0), + REAL_CONST(123726.286641/8.0), + REAL_CONST(123751.293849/8.0), + REAL_CONST(123776.302320/8.0), + REAL_CONST(123801.312054/8.0), + REAL_CONST(123826.323052/8.0), + REAL_CONST(123851.335312/8.0), + REAL_CONST(123876.348836/8.0), + REAL_CONST(123901.363622/8.0), + REAL_CONST(123926.379671/8.0), + REAL_CONST(123951.396983/8.0), + REAL_CONST(123976.415557/8.0), + REAL_CONST(124001.435393/8.0), + REAL_CONST(124026.456491/8.0), + REAL_CONST(124051.478851/8.0), + REAL_CONST(124076.502473/8.0), + REAL_CONST(124101.527357/8.0), + REAL_CONST(124126.553503/8.0), + REAL_CONST(124151.580910/8.0), + REAL_CONST(124176.609578/8.0), + REAL_CONST(124201.639508/8.0), + REAL_CONST(124226.670698/8.0), + REAL_CONST(124251.703150/8.0), + REAL_CONST(124276.736862/8.0), + REAL_CONST(124301.771836/8.0), + REAL_CONST(124326.808070/8.0), + REAL_CONST(124351.845564/8.0), + REAL_CONST(124376.884319/8.0), + REAL_CONST(124401.924334/8.0), + REAL_CONST(124426.965609/8.0), + REAL_CONST(124452.008144/8.0), + REAL_CONST(124477.051938/8.0), + REAL_CONST(124502.096993/8.0), + REAL_CONST(124527.143307/8.0), + REAL_CONST(124552.190881/8.0), + REAL_CONST(124577.239714/8.0), + REAL_CONST(124602.289806/8.0), + REAL_CONST(124627.341157/8.0), + REAL_CONST(124652.393767/8.0), + REAL_CONST(124677.447636/8.0), + REAL_CONST(124702.502764/8.0), + REAL_CONST(124727.559150/8.0), + REAL_CONST(124752.616795/8.0), + REAL_CONST(124777.675698/8.0), + REAL_CONST(124802.735859/8.0), + REAL_CONST(124827.797279/8.0), + REAL_CONST(124852.859956/8.0), + REAL_CONST(124877.923891/8.0), + REAL_CONST(124902.989084/8.0), + REAL_CONST(124928.055534/8.0), + REAL_CONST(124953.123242/8.0), + REAL_CONST(124978.192207/8.0), + REAL_CONST(125003.262430/8.0), + REAL_CONST(125028.333909/8.0), + REAL_CONST(125053.406645/8.0), + REAL_CONST(125078.480638/8.0), + REAL_CONST(125103.555888/8.0), + REAL_CONST(125128.632395/8.0), + REAL_CONST(125153.710157/8.0), + REAL_CONST(125178.789176/8.0), + REAL_CONST(125203.869452/8.0), + REAL_CONST(125228.950983/8.0), + REAL_CONST(125254.033770/8.0), + REAL_CONST(125279.117813/8.0), + REAL_CONST(125304.203112/8.0), + REAL_CONST(125329.289666/8.0), + REAL_CONST(125354.377476/8.0), + REAL_CONST(125379.466541/8.0), + REAL_CONST(125404.556861/8.0), + REAL_CONST(125429.648437/8.0), + REAL_CONST(125454.741267/8.0), + REAL_CONST(125479.835352/8.0), + REAL_CONST(125504.930692/8.0), + REAL_CONST(125530.027286/8.0), + REAL_CONST(125555.125134/8.0), + REAL_CONST(125580.224237/8.0), + REAL_CONST(125605.324594/8.0), + REAL_CONST(125630.426205/8.0), + REAL_CONST(125655.529071/8.0), + REAL_CONST(125680.633189/8.0), + REAL_CONST(125705.738562/8.0), + REAL_CONST(125730.845188/8.0), + REAL_CONST(125755.953067/8.0), + REAL_CONST(125781.062200/8.0), + REAL_CONST(125806.172586/8.0), + REAL_CONST(125831.284225/8.0), + REAL_CONST(125856.397117/8.0), + REAL_CONST(125881.511262/8.0), + REAL_CONST(125906.626659/8.0), + REAL_CONST(125931.743309/8.0), + REAL_CONST(125956.861211/8.0), + REAL_CONST(125981.980366/8.0), + REAL_CONST(126007.100773/8.0), + REAL_CONST(126032.222432/8.0), + REAL_CONST(126057.345343/8.0), + REAL_CONST(126082.469505/8.0), + REAL_CONST(126107.594919/8.0), + REAL_CONST(126132.721585/8.0), + REAL_CONST(126157.849502/8.0), + REAL_CONST(126182.978671/8.0), + REAL_CONST(126208.109090/8.0), + REAL_CONST(126233.240761/8.0), + REAL_CONST(126258.373683/8.0), + REAL_CONST(126283.507855/8.0), + REAL_CONST(126308.643278/8.0), + REAL_CONST(126333.779952/8.0), + REAL_CONST(126358.917876/8.0), + REAL_CONST(126384.057051/8.0), + REAL_CONST(126409.197475/8.0), + REAL_CONST(126434.339150/8.0), + REAL_CONST(126459.482074/8.0), + REAL_CONST(126484.626249/8.0), + REAL_CONST(126509.771673/8.0), + REAL_CONST(126534.918346/8.0), + REAL_CONST(126560.066269/8.0), + REAL_CONST(126585.215442/8.0), + REAL_CONST(126610.365863/8.0), + REAL_CONST(126635.517534/8.0), + REAL_CONST(126660.670453/8.0), + REAL_CONST(126685.824622/8.0), + REAL_CONST(126710.980039/8.0), + REAL_CONST(126736.136704/8.0), + REAL_CONST(126761.294618/8.0), + REAL_CONST(126786.453780/8.0), + REAL_CONST(126811.614191/8.0), + REAL_CONST(126836.775849/8.0), + REAL_CONST(126861.938756/8.0), + REAL_CONST(126887.102910/8.0), + REAL_CONST(126912.268312/8.0), + REAL_CONST(126937.434962/8.0), + REAL_CONST(126962.602859/8.0), + REAL_CONST(126987.772003/8.0), + REAL_CONST(127012.942395/8.0), + REAL_CONST(127038.114034/8.0), + REAL_CONST(127063.286919/8.0), + REAL_CONST(127088.461052/8.0), + REAL_CONST(127113.636431/8.0), + REAL_CONST(127138.813057/8.0), + REAL_CONST(127163.990929/8.0), + REAL_CONST(127189.170047/8.0), + REAL_CONST(127214.350412/8.0), + REAL_CONST(127239.532023/8.0), + REAL_CONST(127264.714880/8.0), + REAL_CONST(127289.898982/8.0), + REAL_CONST(127315.084331/8.0), + REAL_CONST(127340.270925/8.0), + REAL_CONST(127365.458764/8.0), + REAL_CONST(127390.647849/8.0), + REAL_CONST(127415.838179/8.0), + REAL_CONST(127441.029754/8.0), + REAL_CONST(127466.222574/8.0), + REAL_CONST(127491.416639/8.0), + REAL_CONST(127516.611949/8.0), + REAL_CONST(127541.808503/8.0), + REAL_CONST(127567.006302/8.0), + REAL_CONST(127592.205345/8.0), + REAL_CONST(127617.405632/8.0), + REAL_CONST(127642.607164/8.0), + REAL_CONST(127667.809939/8.0), + REAL_CONST(127693.013959/8.0), + REAL_CONST(127718.219222/8.0), + REAL_CONST(127743.425729/8.0), + REAL_CONST(127768.633479/8.0), + REAL_CONST(127793.842473/8.0), + REAL_CONST(127819.052710/8.0), + REAL_CONST(127844.264190/8.0), + REAL_CONST(127869.476913/8.0), + REAL_CONST(127894.690879/8.0), + REAL_CONST(127919.906088/8.0), + REAL_CONST(127945.122539/8.0), + REAL_CONST(127970.340233/8.0), + REAL_CONST(127995.559169/8.0), + REAL_CONST(128020.779348/8.0), + REAL_CONST(128046.000769/8.0), + REAL_CONST(128071.223431/8.0), + REAL_CONST(128096.447336/8.0), + REAL_CONST(128121.672483/8.0), + REAL_CONST(128146.898871/8.0), + REAL_CONST(128172.126501/8.0), + REAL_CONST(128197.355372/8.0), + REAL_CONST(128222.585484/8.0), + REAL_CONST(128247.816838/8.0), + REAL_CONST(128273.049433/8.0), + REAL_CONST(128298.283268/8.0), + REAL_CONST(128323.518345/8.0), + REAL_CONST(128348.754662/8.0), + REAL_CONST(128373.992220/8.0), + REAL_CONST(128399.231018/8.0), + REAL_CONST(128424.471056/8.0), + REAL_CONST(128449.712335/8.0), + REAL_CONST(128474.954854/8.0), + REAL_CONST(128500.198612/8.0), + REAL_CONST(128525.443611/8.0), + REAL_CONST(128550.689849/8.0), + REAL_CONST(128575.937327/8.0), + REAL_CONST(128601.186045/8.0), + REAL_CONST(128626.436001/8.0), + REAL_CONST(128651.687197/8.0), + REAL_CONST(128676.939632/8.0), + REAL_CONST(128702.193306/8.0), + REAL_CONST(128727.448219/8.0), + REAL_CONST(128752.704371/8.0), + REAL_CONST(128777.961761/8.0), + REAL_CONST(128803.220390/8.0), + REAL_CONST(128828.480257/8.0), + REAL_CONST(128853.741363/8.0), + REAL_CONST(128879.003706/8.0), + REAL_CONST(128904.267288/8.0), + REAL_CONST(128929.532107/8.0), + REAL_CONST(128954.798165/8.0), + REAL_CONST(128980.065460/8.0), + REAL_CONST(129005.333992/8.0), + REAL_CONST(129030.603762/8.0), + REAL_CONST(129055.874769/8.0), + REAL_CONST(129081.147013/8.0), + REAL_CONST(129106.420495/8.0), + REAL_CONST(129131.695213/8.0), + REAL_CONST(129156.971168/8.0), + REAL_CONST(129182.248360/8.0), + REAL_CONST(129207.526788/8.0), + REAL_CONST(129232.806453/8.0), + REAL_CONST(129258.087354/8.0), + REAL_CONST(129283.369491/8.0), + REAL_CONST(129308.652865/8.0), + REAL_CONST(129333.937474/8.0), + REAL_CONST(129359.223319/8.0), + REAL_CONST(129384.510400/8.0), + REAL_CONST(129409.798716/8.0), + REAL_CONST(129435.088268/8.0), + REAL_CONST(129460.379056/8.0), + REAL_CONST(129485.671078/8.0), + REAL_CONST(129510.964336/8.0), + REAL_CONST(129536.258829/8.0), + REAL_CONST(129561.554556/8.0), + REAL_CONST(129586.851518/8.0), + REAL_CONST(129612.149715/8.0), + REAL_CONST(129637.449147/8.0), + REAL_CONST(129662.749812/8.0), + REAL_CONST(129688.051713/8.0), + REAL_CONST(129713.354847/8.0), + REAL_CONST(129738.659215/8.0), + REAL_CONST(129763.964817/8.0), + REAL_CONST(129789.271653/8.0), + REAL_CONST(129814.579723/8.0), + REAL_CONST(129839.889026/8.0), + REAL_CONST(129865.199562/8.0), + REAL_CONST(129890.511332/8.0), + REAL_CONST(129915.824335/8.0), + REAL_CONST(129941.138572/8.0), + REAL_CONST(129966.454041/8.0), + REAL_CONST(129991.770743/8.0), + REAL_CONST(130017.088677/8.0), + REAL_CONST(130042.407844/8.0), + REAL_CONST(130067.728244/8.0), + REAL_CONST(130093.049876/8.0), + REAL_CONST(130118.372740/8.0), + REAL_CONST(130143.696837/8.0), + REAL_CONST(130169.022165/8.0), + REAL_CONST(130194.348725/8.0), + REAL_CONST(130219.676517/8.0), + REAL_CONST(130245.005541/8.0), + REAL_CONST(130270.335796/8.0), + REAL_CONST(130295.667282/8.0), + REAL_CONST(130321.000000/8.0), + REAL_CONST(130346.333949/8.0), + REAL_CONST(130371.669129/8.0), + REAL_CONST(130397.005540/8.0), + REAL_CONST(130422.343181/8.0), + REAL_CONST(130447.682054/8.0), + REAL_CONST(130473.022156/8.0), + REAL_CONST(130498.363490/8.0), + REAL_CONST(130523.706053/8.0), + REAL_CONST(130549.049847/8.0), + REAL_CONST(130574.394871/8.0), + REAL_CONST(130599.741125/8.0), + REAL_CONST(130625.088608/8.0), + REAL_CONST(130650.437322/8.0), + REAL_CONST(130675.787264/8.0), + REAL_CONST(130701.138437/8.0), + REAL_CONST(130726.490839/8.0), + REAL_CONST(130751.844470/8.0), + REAL_CONST(130777.199330/8.0), + REAL_CONST(130802.555419/8.0), + REAL_CONST(130827.912737/8.0), + REAL_CONST(130853.271284/8.0), + REAL_CONST(130878.631059/8.0), + REAL_CONST(130903.992063/8.0), + REAL_CONST(130929.354295/8.0), + REAL_CONST(130954.717756/8.0), + REAL_CONST(130980.082445/8.0), + REAL_CONST(131005.448362/8.0), + REAL_CONST(131030.815506/8.0), + REAL_CONST(131056.183879/8.0), + REAL_CONST(131081.553479/8.0), + REAL_CONST(131106.924307/8.0), + REAL_CONST(131132.296362/8.0), + REAL_CONST(131157.669645/8.0), + REAL_CONST(131183.044155/8.0), + REAL_CONST(131208.419892/8.0), + REAL_CONST(131233.796855/8.0), + REAL_CONST(131259.175046/8.0), + REAL_CONST(131284.554464/8.0), + REAL_CONST(131309.935108/8.0), + REAL_CONST(131335.316978/8.0), + REAL_CONST(131360.700075/8.0), + REAL_CONST(131386.084399/8.0), + REAL_CONST(131411.469948/8.0), + REAL_CONST(131436.856724/8.0), + REAL_CONST(131462.244725/8.0), + REAL_CONST(131487.633952/8.0), + REAL_CONST(131513.024405/8.0), + REAL_CONST(131538.416083/8.0), + REAL_CONST(131563.808987/8.0), + REAL_CONST(131589.203116/8.0), + REAL_CONST(131614.598471/8.0), + REAL_CONST(131639.995050/8.0), + REAL_CONST(131665.392854/8.0), + REAL_CONST(131690.791884/8.0), + REAL_CONST(131716.192138/8.0), + REAL_CONST(131741.593616/8.0), + REAL_CONST(131766.996319/8.0), + REAL_CONST(131792.400247/8.0), + REAL_CONST(131817.805398/8.0), + REAL_CONST(131843.211774/8.0), + REAL_CONST(131868.619374/8.0), + REAL_CONST(131894.028198/8.0), + REAL_CONST(131919.438245/8.0), + REAL_CONST(131944.849517/8.0), + REAL_CONST(131970.262011/8.0), + REAL_CONST(131995.675730/8.0), + REAL_CONST(132021.090671/8.0), + REAL_CONST(132046.506836/8.0), + REAL_CONST(132071.924224/8.0), + REAL_CONST(132097.342834/8.0), + REAL_CONST(132122.762668/8.0), + REAL_CONST(132148.183724/8.0), + REAL_CONST(132173.606003/8.0), + REAL_CONST(132199.029504/8.0), + REAL_CONST(132224.454228/8.0), + REAL_CONST(132249.880174/8.0), + REAL_CONST(132275.307342/8.0), + REAL_CONST(132300.735733/8.0), + REAL_CONST(132326.165345/8.0), + REAL_CONST(132351.596179/8.0), + REAL_CONST(132377.028234/8.0), + REAL_CONST(132402.461511/8.0), + REAL_CONST(132427.896010/8.0), + REAL_CONST(132453.331729/8.0), + REAL_CONST(132478.768671/8.0), + REAL_CONST(132504.206833/8.0), + REAL_CONST(132529.646216/8.0), + REAL_CONST(132555.086820/8.0), + REAL_CONST(132580.528644/8.0), + REAL_CONST(132605.971690/8.0), + REAL_CONST(132631.415955/8.0), + REAL_CONST(132656.861441/8.0), + REAL_CONST(132682.308148/8.0), + REAL_CONST(132707.756074/8.0), + REAL_CONST(132733.205221/8.0), + REAL_CONST(132758.655587/8.0), + REAL_CONST(132784.107174/8.0), + REAL_CONST(132809.559980/8.0), + REAL_CONST(132835.014005/8.0), + REAL_CONST(132860.469250/8.0), + REAL_CONST(132885.925714/8.0), + REAL_CONST(132911.383398/8.0), + REAL_CONST(132936.842300/8.0), + REAL_CONST(132962.302422/8.0), + REAL_CONST(132987.763762/8.0), + REAL_CONST(133013.226321/8.0), + REAL_CONST(133038.690099/8.0), + REAL_CONST(133064.155095/8.0), + REAL_CONST(133089.621310/8.0), + REAL_CONST(133115.088743/8.0), + REAL_CONST(133140.557394/8.0), + REAL_CONST(133166.027263/8.0), + REAL_CONST(133191.498350/8.0), + REAL_CONST(133216.970655/8.0), + REAL_CONST(133242.444178/8.0), + REAL_CONST(133267.918918/8.0), + REAL_CONST(133293.394876/8.0), + REAL_CONST(133318.872051/8.0), + REAL_CONST(133344.350443/8.0), + REAL_CONST(133369.830052/8.0), + REAL_CONST(133395.310878/8.0), + REAL_CONST(133420.792921/8.0), + REAL_CONST(133446.276181/8.0), + REAL_CONST(133471.760658/8.0), + REAL_CONST(133497.246351/8.0), + REAL_CONST(133522.733261/8.0), + REAL_CONST(133548.221386/8.0), + REAL_CONST(133573.710728/8.0), + REAL_CONST(133599.201286/8.0), + REAL_CONST(133624.693060/8.0), + REAL_CONST(133650.186050/8.0), + REAL_CONST(133675.680256/8.0), + REAL_CONST(133701.175677/8.0), + REAL_CONST(133726.672314/8.0), + REAL_CONST(133752.170166/8.0), + REAL_CONST(133777.669233/8.0), + REAL_CONST(133803.169515/8.0), + REAL_CONST(133828.671013/8.0), + REAL_CONST(133854.173725/8.0), + REAL_CONST(133879.677652/8.0), + REAL_CONST(133905.182794/8.0), + REAL_CONST(133930.689150/8.0), + REAL_CONST(133956.196721/8.0), + REAL_CONST(133981.705506/8.0), + REAL_CONST(134007.215506/8.0), + REAL_CONST(134032.726719/8.0), + REAL_CONST(134058.239147/8.0), + REAL_CONST(134083.752788/8.0), + REAL_CONST(134109.267643/8.0), + REAL_CONST(134134.783712/8.0), + REAL_CONST(134160.300994/8.0), + REAL_CONST(134185.819489/8.0), + REAL_CONST(134211.339198/8.0), + REAL_CONST(134236.860120/8.0), + REAL_CONST(134262.382255/8.0), + REAL_CONST(134287.905604/8.0), + REAL_CONST(134313.430164/8.0), + REAL_CONST(134338.955938/8.0), + REAL_CONST(134364.482924/8.0), + REAL_CONST(134390.011123/8.0), + REAL_CONST(134415.540534/8.0), + REAL_CONST(134441.071157/8.0), + REAL_CONST(134466.602993/8.0), + REAL_CONST(134492.136040/8.0), + REAL_CONST(134517.670300/8.0), + REAL_CONST(134543.205771/8.0), + REAL_CONST(134568.742454/8.0), + REAL_CONST(134594.280348/8.0), + REAL_CONST(134619.819454/8.0), + REAL_CONST(134645.359771/8.0), + REAL_CONST(134670.901299/8.0), + REAL_CONST(134696.444039/8.0), + REAL_CONST(134721.987989/8.0), + REAL_CONST(134747.533151/8.0), + REAL_CONST(134773.079523/8.0), + REAL_CONST(134798.627106/8.0), + REAL_CONST(134824.175899/8.0), + REAL_CONST(134849.725902/8.0), + REAL_CONST(134875.277116/8.0), + REAL_CONST(134900.829541/8.0), + REAL_CONST(134926.383175/8.0), + REAL_CONST(134951.938019/8.0), + REAL_CONST(134977.494073/8.0), + REAL_CONST(135003.051337/8.0), + REAL_CONST(135028.609810/8.0), + REAL_CONST(135054.169493/8.0), + REAL_CONST(135079.730385/8.0), + REAL_CONST(135105.292487/8.0), + REAL_CONST(135130.855798/8.0), + REAL_CONST(135156.420317/8.0), + REAL_CONST(135181.986046/8.0), + REAL_CONST(135207.552983/8.0), + REAL_CONST(135233.121129/8.0), + REAL_CONST(135258.690484/8.0), + REAL_CONST(135284.261047/8.0), + REAL_CONST(135309.832819/8.0), + REAL_CONST(135335.405799/8.0), + REAL_CONST(135360.979987/8.0), + REAL_CONST(135386.555383/8.0), + REAL_CONST(135412.131986/8.0), + REAL_CONST(135437.709798/8.0), + REAL_CONST(135463.288817/8.0), + REAL_CONST(135488.869044/8.0), + REAL_CONST(135514.450478/8.0), + REAL_CONST(135540.033120/8.0), + REAL_CONST(135565.616969/8.0), + REAL_CONST(135591.202025/8.0), + REAL_CONST(135616.788287/8.0), + REAL_CONST(135642.375757/8.0), + REAL_CONST(135667.964434/8.0), + REAL_CONST(135693.554317/8.0), + REAL_CONST(135719.145407/8.0), + REAL_CONST(135744.737703/8.0), + REAL_CONST(135770.331205/8.0), + REAL_CONST(135795.925914/8.0), + REAL_CONST(135821.521828/8.0), + REAL_CONST(135847.118949/8.0), + REAL_CONST(135872.717275/8.0), + REAL_CONST(135898.316808/8.0), + REAL_CONST(135923.917545/8.0), + REAL_CONST(135949.519489/8.0), + REAL_CONST(135975.122637/8.0), + REAL_CONST(136000.726991/8.0), + REAL_CONST(136026.332551/8.0), + REAL_CONST(136051.939315/8.0), + REAL_CONST(136077.547284/8.0), + REAL_CONST(136103.156458/8.0), + REAL_CONST(136128.766837/8.0), + REAL_CONST(136154.378420/8.0), + REAL_CONST(136179.991208/8.0), + REAL_CONST(136205.605200/8.0), + REAL_CONST(136231.220396/8.0), + REAL_CONST(136256.836797/8.0), + REAL_CONST(136282.454401/8.0), + REAL_CONST(136308.073210/8.0), + REAL_CONST(136333.693222/8.0), + REAL_CONST(136359.314438/8.0), + REAL_CONST(136384.936858/8.0), + REAL_CONST(136410.560481/8.0), + REAL_CONST(136436.185307/8.0), + REAL_CONST(136461.811337/8.0), + REAL_CONST(136487.438570/8.0), + REAL_CONST(136513.067006/8.0), + REAL_CONST(136538.696644/8.0), + REAL_CONST(136564.327486/8.0), + REAL_CONST(136589.959530/8.0), + REAL_CONST(136615.592777/8.0), + REAL_CONST(136641.227226/8.0), + REAL_CONST(136666.862877/8.0), + REAL_CONST(136692.499731/8.0), + REAL_CONST(136718.137787/8.0), + REAL_CONST(136743.777045/8.0), + REAL_CONST(136769.417505/8.0), + REAL_CONST(136795.059166/8.0), + REAL_CONST(136820.702029/8.0), + REAL_CONST(136846.346094/8.0), + REAL_CONST(136871.991360/8.0), + REAL_CONST(136897.637828/8.0), + REAL_CONST(136923.285496/8.0), + REAL_CONST(136948.934366/8.0), + REAL_CONST(136974.584437/8.0), + REAL_CONST(137000.235709/8.0), + REAL_CONST(137025.888181/8.0), + REAL_CONST(137051.541854/8.0), + REAL_CONST(137077.196728/8.0), + REAL_CONST(137102.852802/8.0), + REAL_CONST(137128.510076/8.0), + REAL_CONST(137154.168551/8.0), + REAL_CONST(137179.828225/8.0), + REAL_CONST(137205.489100/8.0), + REAL_CONST(137231.151174/8.0), + REAL_CONST(137256.814449/8.0), + REAL_CONST(137282.478922/8.0), + REAL_CONST(137308.144596/8.0), + REAL_CONST(137333.811469/8.0), + REAL_CONST(137359.479541/8.0), + REAL_CONST(137385.148812/8.0), + REAL_CONST(137410.819282/8.0), + REAL_CONST(137436.490952/8.0), + REAL_CONST(137462.163820/8.0), + REAL_CONST(137487.837887/8.0), + REAL_CONST(137513.513152/8.0), + REAL_CONST(137539.189617/8.0), + REAL_CONST(137564.867279/8.0), + REAL_CONST(137590.546140/8.0), + REAL_CONST(137616.226199/8.0), + REAL_CONST(137641.907456/8.0), + REAL_CONST(137667.589911/8.0), + REAL_CONST(137693.273564/8.0), + REAL_CONST(137718.958414/8.0), + REAL_CONST(137744.644462/8.0), + REAL_CONST(137770.331708/8.0), + REAL_CONST(137796.020151/8.0), + REAL_CONST(137821.709792/8.0), + REAL_CONST(137847.400629/8.0), + REAL_CONST(137873.092664/8.0), + REAL_CONST(137898.785896/8.0), + REAL_CONST(137924.480324/8.0), + REAL_CONST(137950.175949/8.0), + REAL_CONST(137975.872771/8.0), + REAL_CONST(138001.570789/8.0), + REAL_CONST(138027.270004/8.0), + REAL_CONST(138052.970415/8.0), + REAL_CONST(138078.672022/8.0), + REAL_CONST(138104.374826/8.0), + REAL_CONST(138130.078825/8.0), + REAL_CONST(138155.784020/8.0), + REAL_CONST(138181.490410/8.0), + REAL_CONST(138207.197997/8.0), + REAL_CONST(138232.906779/8.0), + REAL_CONST(138258.616756/8.0), + REAL_CONST(138284.327929/8.0), + REAL_CONST(138310.040296/8.0), + REAL_CONST(138335.753859/8.0), + REAL_CONST(138361.468617/8.0), + REAL_CONST(138387.184569/8.0), + REAL_CONST(138412.901717/8.0), + REAL_CONST(138438.620059/8.0), + REAL_CONST(138464.339595/8.0), + REAL_CONST(138490.060326/8.0), + REAL_CONST(138515.782251/8.0), + REAL_CONST(138541.505370/8.0), + REAL_CONST(138567.229684/8.0), + REAL_CONST(138592.955191/8.0), + REAL_CONST(138618.681892/8.0), + REAL_CONST(138644.409787/8.0), + REAL_CONST(138670.138876/8.0), + REAL_CONST(138695.869158/8.0), + REAL_CONST(138721.600633/8.0), + REAL_CONST(138747.333302/8.0), + REAL_CONST(138773.067164/8.0), + REAL_CONST(138798.802219/8.0), + REAL_CONST(138824.538467/8.0), + REAL_CONST(138850.275907/8.0), + REAL_CONST(138876.014541/8.0), + REAL_CONST(138901.754367/8.0), + REAL_CONST(138927.495386/8.0), + REAL_CONST(138953.237597/8.0), + REAL_CONST(138978.981000/8.0), + REAL_CONST(139004.725596/8.0), + REAL_CONST(139030.471383/8.0), + REAL_CONST(139056.218363/8.0), + REAL_CONST(139081.966534/8.0), + REAL_CONST(139107.715897/8.0), + REAL_CONST(139133.466452/8.0), + REAL_CONST(139159.218198/8.0), + REAL_CONST(139184.971136/8.0), + REAL_CONST(139210.725265/8.0), + REAL_CONST(139236.480585/8.0), + REAL_CONST(139262.237097/8.0), + REAL_CONST(139287.994799/8.0), + REAL_CONST(139313.753692/8.0), + REAL_CONST(139339.513776/8.0), + REAL_CONST(139365.275050/8.0), + REAL_CONST(139391.037515/8.0), + REAL_CONST(139416.801171/8.0), + REAL_CONST(139442.566017/8.0), + REAL_CONST(139468.332052/8.0), + REAL_CONST(139494.099279/8.0), + REAL_CONST(139519.867695/8.0), + REAL_CONST(139545.637300/8.0), + REAL_CONST(139571.408096/8.0), + REAL_CONST(139597.180081/8.0), + REAL_CONST(139622.953256/8.0), + REAL_CONST(139648.727621/8.0), + REAL_CONST(139674.503174/8.0), + REAL_CONST(139700.279917/8.0), + REAL_CONST(139726.057849/8.0), + REAL_CONST(139751.836970/8.0), + REAL_CONST(139777.617280/8.0), + REAL_CONST(139803.398778/8.0), + REAL_CONST(139829.181465/8.0), + REAL_CONST(139854.965341/8.0), + REAL_CONST(139880.750405/8.0), + REAL_CONST(139906.536658/8.0), + REAL_CONST(139932.324099/8.0), + REAL_CONST(139958.112728/8.0), + REAL_CONST(139983.902544/8.0), + REAL_CONST(140009.693549/8.0), + REAL_CONST(140035.485742/8.0), + REAL_CONST(140061.279122/8.0), + REAL_CONST(140087.073690/8.0), + REAL_CONST(140112.869445/8.0), + REAL_CONST(140138.666388/8.0), + REAL_CONST(140164.464518/8.0), + REAL_CONST(140190.263835/8.0), + REAL_CONST(140216.064339/8.0), + REAL_CONST(140241.866030/8.0), + REAL_CONST(140267.668907/8.0), + REAL_CONST(140293.472972/8.0), + REAL_CONST(140319.278223/8.0), + REAL_CONST(140345.084660/8.0), + REAL_CONST(140370.892284/8.0), + REAL_CONST(140396.701094/8.0), + REAL_CONST(140422.511090/8.0), + REAL_CONST(140448.322273/8.0), + REAL_CONST(140474.134641/8.0), + REAL_CONST(140499.948195/8.0), + REAL_CONST(140525.762935/8.0), + REAL_CONST(140551.578860/8.0), + REAL_CONST(140577.395971/8.0), + REAL_CONST(140603.214267/8.0), + REAL_CONST(140629.033749/8.0), + REAL_CONST(140654.854416/8.0), + REAL_CONST(140680.676267/8.0), + REAL_CONST(140706.499304/8.0), + REAL_CONST(140732.323526/8.0), + REAL_CONST(140758.148932/8.0), + REAL_CONST(140783.975523/8.0), + REAL_CONST(140809.803298/8.0), + REAL_CONST(140835.632258/8.0), + REAL_CONST(140861.462402/8.0), + REAL_CONST(140887.293730/8.0), + REAL_CONST(140913.126243/8.0), + REAL_CONST(140938.959939/8.0), + REAL_CONST(140964.794819/8.0), + REAL_CONST(140990.630883/8.0), + REAL_CONST(141016.468131/8.0), + REAL_CONST(141042.306562/8.0), + REAL_CONST(141068.146177/8.0), + REAL_CONST(141093.986975/8.0), + REAL_CONST(141119.828956/8.0), + REAL_CONST(141145.672120/8.0), + REAL_CONST(141171.516467/8.0), + REAL_CONST(141197.361998/8.0), + REAL_CONST(141223.208710/8.0), + REAL_CONST(141249.056606/8.0), + REAL_CONST(141274.905684/8.0), + REAL_CONST(141300.755945/8.0), + REAL_CONST(141326.607388/8.0), + REAL_CONST(141352.460013/8.0), + REAL_CONST(141378.313820/8.0), + REAL_CONST(141404.168810/8.0), + REAL_CONST(141430.024981/8.0), + REAL_CONST(141455.882334/8.0), + REAL_CONST(141481.740869/8.0), + REAL_CONST(141507.600585/8.0), + REAL_CONST(141533.461483/8.0), + REAL_CONST(141559.323562/8.0), + REAL_CONST(141585.186823/8.0), + REAL_CONST(141611.051264/8.0), + REAL_CONST(141636.916887/8.0), + REAL_CONST(141662.783691/8.0), + REAL_CONST(141688.651675/8.0), + REAL_CONST(141714.520840/8.0), + REAL_CONST(141740.391186/8.0), + REAL_CONST(141766.262713/8.0), + REAL_CONST(141792.135419/8.0), + REAL_CONST(141818.009306/8.0), + REAL_CONST(141843.884374/8.0), + REAL_CONST(141869.760621/8.0), + REAL_CONST(141895.638048/8.0), + REAL_CONST(141921.516655/8.0), + REAL_CONST(141947.396442/8.0), + REAL_CONST(141973.277409/8.0), + REAL_CONST(141999.159555/8.0), + REAL_CONST(142025.042881/8.0), + REAL_CONST(142050.927385/8.0), + REAL_CONST(142076.813070/8.0), + REAL_CONST(142102.699933/8.0), + REAL_CONST(142128.587975/8.0), + REAL_CONST(142154.477196/8.0), + REAL_CONST(142180.367596/8.0), + REAL_CONST(142206.259175/8.0), + REAL_CONST(142232.151932/8.0), + REAL_CONST(142258.045867/8.0), + REAL_CONST(142283.940981/8.0), + REAL_CONST(142309.837274/8.0), + REAL_CONST(142335.734744/8.0), + REAL_CONST(142361.633393/8.0), + REAL_CONST(142387.533219/8.0), + REAL_CONST(142413.434223/8.0), + REAL_CONST(142439.336405/8.0), + REAL_CONST(142465.239765/8.0), + REAL_CONST(142491.144302/8.0), + REAL_CONST(142517.050016/8.0), + REAL_CONST(142542.956908/8.0), + REAL_CONST(142568.864977/8.0), + REAL_CONST(142594.774223/8.0), + REAL_CONST(142620.684646/8.0), + REAL_CONST(142646.596246/8.0), + REAL_CONST(142672.509022/8.0), + REAL_CONST(142698.422975/8.0), + REAL_CONST(142724.338105/8.0), + REAL_CONST(142750.254411/8.0), + REAL_CONST(142776.171894/8.0), + REAL_CONST(142802.090553/8.0), + REAL_CONST(142828.010388/8.0), + REAL_CONST(142853.931399/8.0), + REAL_CONST(142879.853585/8.0), + REAL_CONST(142905.776948/8.0), + REAL_CONST(142931.701486/8.0), + REAL_CONST(142957.627200/8.0), + REAL_CONST(142983.554090/8.0), + REAL_CONST(143009.482154/8.0), + REAL_CONST(143035.411394/8.0), + REAL_CONST(143061.341809/8.0), + REAL_CONST(143087.273400/8.0), + REAL_CONST(143113.206165/8.0), + REAL_CONST(143139.140105/8.0), + REAL_CONST(143165.075219/8.0), + REAL_CONST(143191.011509/8.0), + REAL_CONST(143216.948973/8.0), + REAL_CONST(143242.887611/8.0), + REAL_CONST(143268.827423/8.0), + REAL_CONST(143294.768410/8.0), + REAL_CONST(143320.710571/8.0), + REAL_CONST(143346.653906/8.0), + REAL_CONST(143372.598415/8.0), + REAL_CONST(143398.544097/8.0), + REAL_CONST(143424.490953/8.0), + REAL_CONST(143450.438983/8.0), + REAL_CONST(143476.388186/8.0), + REAL_CONST(143502.338563/8.0), + REAL_CONST(143528.290112/8.0), + REAL_CONST(143554.242835/8.0), + REAL_CONST(143580.196731/8.0), + REAL_CONST(143606.151800/8.0), + REAL_CONST(143632.108042/8.0), + REAL_CONST(143658.065456/8.0), + REAL_CONST(143684.024043/8.0), + REAL_CONST(143709.983803/8.0), + REAL_CONST(143735.944735/8.0), + REAL_CONST(143761.906839/8.0), + REAL_CONST(143787.870115/8.0), + REAL_CONST(143813.834564/8.0), + REAL_CONST(143839.800184/8.0), + REAL_CONST(143865.766976/8.0), + REAL_CONST(143891.734940/8.0), + REAL_CONST(143917.704076/8.0), + REAL_CONST(143943.674383/8.0), + REAL_CONST(143969.645862/8.0), + REAL_CONST(143995.618512/8.0), + REAL_CONST(144021.592333/8.0), + REAL_CONST(144047.567326/8.0), + REAL_CONST(144073.543489/8.0), + REAL_CONST(144099.520823/8.0), + REAL_CONST(144125.499329/8.0), + REAL_CONST(144151.479004/8.0), + REAL_CONST(144177.459851/8.0), + REAL_CONST(144203.441868/8.0), + REAL_CONST(144229.425055/8.0), + REAL_CONST(144255.409413/8.0), + REAL_CONST(144281.394940/8.0), + REAL_CONST(144307.381638/8.0), + REAL_CONST(144333.369506/8.0), + REAL_CONST(144359.358544/8.0), + REAL_CONST(144385.348751/8.0), + REAL_CONST(144411.340128/8.0), + REAL_CONST(144437.332675/8.0), + REAL_CONST(144463.326391/8.0), + REAL_CONST(144489.321276/8.0), + REAL_CONST(144515.317331/8.0), + REAL_CONST(144541.314555/8.0), + REAL_CONST(144567.312947/8.0), + REAL_CONST(144593.312509/8.0), + REAL_CONST(144619.313240/8.0), + REAL_CONST(144645.315139/8.0), + REAL_CONST(144671.318207/8.0), + REAL_CONST(144697.322443/8.0), + REAL_CONST(144723.327848/8.0), + REAL_CONST(144749.334421/8.0), + REAL_CONST(144775.342162/8.0), + REAL_CONST(144801.351071/8.0), + REAL_CONST(144827.361148/8.0), + REAL_CONST(144853.372393/8.0), + REAL_CONST(144879.384806/8.0), + REAL_CONST(144905.398386/8.0), + REAL_CONST(144931.413134/8.0), + REAL_CONST(144957.429050/8.0), + REAL_CONST(144983.446133/8.0), + REAL_CONST(145009.464383/8.0), + REAL_CONST(145035.483800/8.0), + REAL_CONST(145061.504384/8.0), + REAL_CONST(145087.526135/8.0), + REAL_CONST(145113.549053/8.0), + REAL_CONST(145139.573138/8.0), + REAL_CONST(145165.598389/8.0), + REAL_CONST(145191.624807/8.0), + REAL_CONST(145217.652391/8.0), + REAL_CONST(145243.681141/8.0), + REAL_CONST(145269.711058/8.0), + REAL_CONST(145295.742140/8.0), + REAL_CONST(145321.774389/8.0), + REAL_CONST(145347.807804/8.0), + REAL_CONST(145373.842384/8.0), + REAL_CONST(145399.878130/8.0), + REAL_CONST(145425.915041/8.0), + REAL_CONST(145451.953119/8.0), + REAL_CONST(145477.992361/8.0), + REAL_CONST(145504.032768/8.0), + REAL_CONST(145530.074341/8.0), + REAL_CONST(145556.117079/8.0), + REAL_CONST(145582.160982/8.0), + REAL_CONST(145608.206049/8.0), + REAL_CONST(145634.252282/8.0), + REAL_CONST(145660.299679/8.0), + REAL_CONST(145686.348240/8.0), + REAL_CONST(145712.397966/8.0), + REAL_CONST(145738.448856/8.0), + REAL_CONST(145764.500910/8.0), + REAL_CONST(145790.554129/8.0), + REAL_CONST(145816.608511/8.0), + REAL_CONST(145842.664058/8.0), + REAL_CONST(145868.720768/8.0), + REAL_CONST(145894.778642/8.0), + REAL_CONST(145920.837679/8.0), + REAL_CONST(145946.897880/8.0), + REAL_CONST(145972.959244/8.0), + REAL_CONST(145999.021772/8.0), + REAL_CONST(146025.085463/8.0), + REAL_CONST(146051.150317/8.0), + REAL_CONST(146077.216333/8.0), + REAL_CONST(146103.283513/8.0), + REAL_CONST(146129.351855/8.0), + REAL_CONST(146155.421360/8.0), + REAL_CONST(146181.492028/8.0), + REAL_CONST(146207.563858/8.0), + REAL_CONST(146233.636850/8.0), + REAL_CONST(146259.711005/8.0), + REAL_CONST(146285.786321/8.0), + REAL_CONST(146311.862800/8.0), + REAL_CONST(146337.940441/8.0), + REAL_CONST(146364.019243/8.0), + REAL_CONST(146390.099208/8.0), + REAL_CONST(146416.180333/8.0), + REAL_CONST(146442.262621/8.0), + REAL_CONST(146468.346069/8.0), + REAL_CONST(146494.430679/8.0), + REAL_CONST(146520.516451/8.0), + REAL_CONST(146546.603383/8.0), + REAL_CONST(146572.691476/8.0), + REAL_CONST(146598.780731/8.0), + REAL_CONST(146624.871146/8.0), + REAL_CONST(146650.962721/8.0), + REAL_CONST(146677.055457/8.0), + REAL_CONST(146703.149354/8.0), + REAL_CONST(146729.244411/8.0), + REAL_CONST(146755.340629/8.0), + REAL_CONST(146781.438006/8.0), + REAL_CONST(146807.536544/8.0), + REAL_CONST(146833.636241/8.0), + REAL_CONST(146859.737099/8.0), + REAL_CONST(146885.839116/8.0), + REAL_CONST(146911.942293/8.0), + REAL_CONST(146938.046629/8.0), + REAL_CONST(146964.152125/8.0), + REAL_CONST(146990.258780/8.0), + REAL_CONST(147016.366595/8.0), + REAL_CONST(147042.475568/8.0), + REAL_CONST(147068.585701/8.0), + REAL_CONST(147094.696992/8.0), + REAL_CONST(147120.809443/8.0), + REAL_CONST(147146.923052/8.0), + REAL_CONST(147173.037819/8.0), + REAL_CONST(147199.153746/8.0), + REAL_CONST(147225.270830/8.0), + REAL_CONST(147251.389073/8.0), + REAL_CONST(147277.508474/8.0), + REAL_CONST(147303.629034/8.0), + REAL_CONST(147329.750751/8.0), + REAL_CONST(147355.873626/8.0), + REAL_CONST(147381.997659/8.0), + REAL_CONST(147408.122850/8.0), + REAL_CONST(147434.249198/8.0), + REAL_CONST(147460.376704/8.0), + REAL_CONST(147486.505367/8.0), + REAL_CONST(147512.635187/8.0), + REAL_CONST(147538.766165/8.0), + REAL_CONST(147564.898300/8.0), + REAL_CONST(147591.031591/8.0), + REAL_CONST(147617.166040/8.0), + REAL_CONST(147643.301645/8.0), + REAL_CONST(147669.438407/8.0), + REAL_CONST(147695.576326/8.0), + REAL_CONST(147721.715401/8.0), + REAL_CONST(147747.855632/8.0), + REAL_CONST(147773.997020/8.0), + REAL_CONST(147800.139564/8.0), + REAL_CONST(147826.283264/8.0), + REAL_CONST(147852.428119/8.0), + REAL_CONST(147878.574131/8.0), + REAL_CONST(147904.721299/8.0), + REAL_CONST(147930.869622/8.0), + REAL_CONST(147957.019100/8.0), + REAL_CONST(147983.169734/8.0), + REAL_CONST(148009.321524/8.0), + REAL_CONST(148035.474469/8.0), + REAL_CONST(148061.628568/8.0), + REAL_CONST(148087.783823/8.0), + REAL_CONST(148113.940233/8.0), + REAL_CONST(148140.097798/8.0), + REAL_CONST(148166.256517/8.0), + REAL_CONST(148192.416391/8.0), + REAL_CONST(148218.577420/8.0), + REAL_CONST(148244.739603/8.0), + REAL_CONST(148270.902940/8.0), + REAL_CONST(148297.067431/8.0), + REAL_CONST(148323.233077/8.0), + REAL_CONST(148349.399877/8.0), + REAL_CONST(148375.567830/8.0), + REAL_CONST(148401.736938/8.0), + REAL_CONST(148427.907199/8.0), + REAL_CONST(148454.078613/8.0), + REAL_CONST(148480.251182/8.0), + REAL_CONST(148506.424903/8.0), + REAL_CONST(148532.599778/8.0), + REAL_CONST(148558.775806/8.0), + REAL_CONST(148584.952987/8.0), + REAL_CONST(148611.131322/8.0), + REAL_CONST(148637.310809/8.0), + REAL_CONST(148663.491449/8.0), + REAL_CONST(148689.673241/8.0), + REAL_CONST(148715.856187/8.0), + REAL_CONST(148742.040284/8.0), + REAL_CONST(148768.225534/8.0), + REAL_CONST(148794.411937/8.0), + REAL_CONST(148820.599491/8.0), + REAL_CONST(148846.788198/8.0), + REAL_CONST(148872.978057/8.0), + REAL_CONST(148899.169067/8.0), + REAL_CONST(148925.361230/8.0), + REAL_CONST(148951.554544/8.0), + REAL_CONST(148977.749009/8.0), + REAL_CONST(149003.944626/8.0), + REAL_CONST(149030.141395/8.0), + REAL_CONST(149056.339315/8.0), + REAL_CONST(149082.538386/8.0), + REAL_CONST(149108.738608/8.0), + REAL_CONST(149134.939981/8.0), + REAL_CONST(149161.142504/8.0), + REAL_CONST(149187.346179/8.0), + REAL_CONST(149213.551004/8.0), + REAL_CONST(149239.756980/8.0), + REAL_CONST(149265.964106/8.0), + REAL_CONST(149292.172383/8.0), + REAL_CONST(149318.381810/8.0), + REAL_CONST(149344.592387/8.0), + REAL_CONST(149370.804115/8.0), + REAL_CONST(149397.016992/8.0), + REAL_CONST(149423.231019/8.0), + REAL_CONST(149449.446196/8.0), + REAL_CONST(149475.662522/8.0), + REAL_CONST(149501.879998/8.0), + REAL_CONST(149528.098623/8.0), + REAL_CONST(149554.318398/8.0), + REAL_CONST(149580.539322/8.0), + REAL_CONST(149606.761396/8.0), + REAL_CONST(149632.984618/8.0), + REAL_CONST(149659.208989/8.0), + REAL_CONST(149685.434509/8.0), + REAL_CONST(149711.661178/8.0), + REAL_CONST(149737.888996/8.0), + REAL_CONST(149764.117962/8.0), + REAL_CONST(149790.348076/8.0), + REAL_CONST(149816.579339/8.0), + REAL_CONST(149842.811751/8.0), + REAL_CONST(149869.045310/8.0), + REAL_CONST(149895.280017/8.0), + REAL_CONST(149921.515873/8.0), + REAL_CONST(149947.752876/8.0), + REAL_CONST(149973.991027/8.0), + REAL_CONST(150000.230325/8.0), + REAL_CONST(150026.470771/8.0), + REAL_CONST(150052.712365/8.0), + REAL_CONST(150078.955106/8.0), + REAL_CONST(150105.198994/8.0), + REAL_CONST(150131.444029/8.0), + REAL_CONST(150157.690212/8.0), + REAL_CONST(150183.937541/8.0), + REAL_CONST(150210.186017/8.0), + REAL_CONST(150236.435640/8.0), + REAL_CONST(150262.686410/8.0), + REAL_CONST(150288.938326/8.0), + REAL_CONST(150315.191388/8.0), + REAL_CONST(150341.445597/8.0), + REAL_CONST(150367.700952/8.0), + REAL_CONST(150393.957453/8.0), + REAL_CONST(150420.215101/8.0), + REAL_CONST(150446.473894/8.0), + REAL_CONST(150472.733833/8.0), + REAL_CONST(150498.994918/8.0), + REAL_CONST(150525.257149/8.0), + REAL_CONST(150551.520525/8.0), + REAL_CONST(150577.785046/8.0), + REAL_CONST(150604.050713/8.0), + REAL_CONST(150630.317525/8.0), + REAL_CONST(150656.585482/8.0), + REAL_CONST(150682.854585/8.0), + REAL_CONST(150709.124832/8.0), + REAL_CONST(150735.396224/8.0), + REAL_CONST(150761.668761/8.0), + REAL_CONST(150787.942442/8.0), + REAL_CONST(150814.217268/8.0), + REAL_CONST(150840.493239/8.0), + REAL_CONST(150866.770354/8.0), + REAL_CONST(150893.048613/8.0), + REAL_CONST(150919.328016/8.0), + REAL_CONST(150945.608563/8.0), + REAL_CONST(150971.890255/8.0), + REAL_CONST(150998.173090/8.0), + REAL_CONST(151024.457068/8.0), + REAL_CONST(151050.742191/8.0), + REAL_CONST(151077.028457/8.0), + REAL_CONST(151103.315866/8.0), + REAL_CONST(151129.604419/8.0), + REAL_CONST(151155.894115/8.0), + REAL_CONST(151182.184955/8.0), + REAL_CONST(151208.476937/8.0), + REAL_CONST(151234.770062/8.0), + REAL_CONST(151261.064330/8.0), + REAL_CONST(151287.359741/8.0), + REAL_CONST(151313.656295/8.0), + REAL_CONST(151339.953991/8.0), + REAL_CONST(151366.252829/8.0), + REAL_CONST(151392.552810/8.0), + REAL_CONST(151418.853934/8.0), + REAL_CONST(151445.156199/8.0), + REAL_CONST(151471.459606/8.0), + REAL_CONST(151497.764156/8.0), + REAL_CONST(151524.069847/8.0), + REAL_CONST(151550.376680/8.0), + REAL_CONST(151576.684655/8.0), + REAL_CONST(151602.993771/8.0), + REAL_CONST(151629.304028/8.0), + REAL_CONST(151655.615427/8.0), + REAL_CONST(151681.927968/8.0), + REAL_CONST(151708.241649/8.0), + REAL_CONST(151734.556472/8.0), + REAL_CONST(151760.872435/8.0), + REAL_CONST(151787.189540/8.0), + REAL_CONST(151813.507785/8.0), + REAL_CONST(151839.827171/8.0), + REAL_CONST(151866.147697/8.0), + REAL_CONST(151892.469364/8.0), + REAL_CONST(151918.792172/8.0), + REAL_CONST(151945.116119/8.0), + REAL_CONST(151971.441207/8.0), + REAL_CONST(151997.767435/8.0), + REAL_CONST(152024.094803/8.0), + REAL_CONST(152050.423310/8.0), + REAL_CONST(152076.752958/8.0), + REAL_CONST(152103.083745/8.0), + REAL_CONST(152129.415672/8.0), + REAL_CONST(152155.748738/8.0), + REAL_CONST(152182.082944/8.0), + REAL_CONST(152208.418289/8.0), + REAL_CONST(152234.754773/8.0), + REAL_CONST(152261.092396/8.0), + REAL_CONST(152287.431158/8.0), + REAL_CONST(152313.771060/8.0), + REAL_CONST(152340.112100/8.0), + REAL_CONST(152366.454278/8.0), + REAL_CONST(152392.797595/8.0), + REAL_CONST(152419.142051/8.0), + REAL_CONST(152445.487645/8.0), + REAL_CONST(152471.834378/8.0), + REAL_CONST(152498.182249/8.0), + REAL_CONST(152524.531257/8.0), + REAL_CONST(152550.881404/8.0), + REAL_CONST(152577.232689/8.0), + REAL_CONST(152603.585111/8.0), + REAL_CONST(152629.938672/8.0), + REAL_CONST(152656.293370/8.0), + REAL_CONST(152682.649205/8.0), + REAL_CONST(152709.006178/8.0), + REAL_CONST(152735.364288/8.0), + REAL_CONST(152761.723535/8.0), + REAL_CONST(152788.083920/8.0), + REAL_CONST(152814.445442/8.0), + REAL_CONST(152840.808100/8.0), + REAL_CONST(152867.171895/8.0), + REAL_CONST(152893.536827/8.0), + REAL_CONST(152919.902896/8.0), + REAL_CONST(152946.270101/8.0), + REAL_CONST(152972.638443/8.0), + REAL_CONST(152999.007921/8.0), + REAL_CONST(153025.378535/8.0), + REAL_CONST(153051.750286/8.0), + REAL_CONST(153078.123172/8.0), + REAL_CONST(153104.497195/8.0), + REAL_CONST(153130.872353/8.0), + REAL_CONST(153157.248647/8.0), + REAL_CONST(153183.626077/8.0), + REAL_CONST(153210.004642/8.0), + REAL_CONST(153236.384343/8.0), + REAL_CONST(153262.765179/8.0), + REAL_CONST(153289.147150/8.0), + REAL_CONST(153315.530257/8.0), + REAL_CONST(153341.914499/8.0), + REAL_CONST(153368.299875/8.0), + REAL_CONST(153394.686387/8.0), + REAL_CONST(153421.074033/8.0), + REAL_CONST(153447.462814/8.0), + REAL_CONST(153473.852729/8.0), + REAL_CONST(153500.243779/8.0), + REAL_CONST(153526.635964/8.0), + REAL_CONST(153553.029283/8.0), + REAL_CONST(153579.423735/8.0), + REAL_CONST(153605.819322/8.0), + REAL_CONST(153632.216043/8.0), + REAL_CONST(153658.613898/8.0), + REAL_CONST(153685.012887/8.0), + REAL_CONST(153711.413010/8.0), + REAL_CONST(153737.814266/8.0), + REAL_CONST(153764.216655/8.0), + REAL_CONST(153790.620178/8.0), + REAL_CONST(153817.024834/8.0), + REAL_CONST(153843.430624/8.0), + REAL_CONST(153869.837547/8.0), + REAL_CONST(153896.245602/8.0), + REAL_CONST(153922.654791/8.0), + REAL_CONST(153949.065112/8.0), + REAL_CONST(153975.476566/8.0), + REAL_CONST(154001.889153/8.0), + REAL_CONST(154028.302873/8.0), + REAL_CONST(154054.717724/8.0), + REAL_CONST(154081.133709/8.0), + REAL_CONST(154107.550825/8.0), + REAL_CONST(154133.969074/8.0), + REAL_CONST(154160.388454/8.0), + REAL_CONST(154186.808967/8.0), + REAL_CONST(154213.230611/8.0), + REAL_CONST(154239.653387/8.0), + REAL_CONST(154266.077295/8.0), + REAL_CONST(154292.502335/8.0), + REAL_CONST(154318.928506/8.0), + REAL_CONST(154345.355808/8.0), + REAL_CONST(154371.784241/8.0), + REAL_CONST(154398.213806/8.0), + REAL_CONST(154424.644502/8.0), + REAL_CONST(154451.076329/8.0), + REAL_CONST(154477.509287/8.0), + REAL_CONST(154503.943375/8.0), + REAL_CONST(154530.378594/8.0), + REAL_CONST(154556.814944/8.0), + REAL_CONST(154583.252425/8.0), + REAL_CONST(154609.691035/8.0), + REAL_CONST(154636.130776/8.0), + REAL_CONST(154662.571648/8.0), + REAL_CONST(154689.013649/8.0), + REAL_CONST(154715.456781/8.0), + REAL_CONST(154741.901042/8.0), + REAL_CONST(154768.346433/8.0), + REAL_CONST(154794.792954/8.0), + REAL_CONST(154821.240605/8.0), + REAL_CONST(154847.689385/8.0), + REAL_CONST(154874.139294/8.0), + REAL_CONST(154900.590333/8.0), + REAL_CONST(154927.042501/8.0), + REAL_CONST(154953.495799/8.0), + REAL_CONST(154979.950225/8.0), + REAL_CONST(155006.405780/8.0), + REAL_CONST(155032.862464/8.0), + REAL_CONST(155059.320277/8.0), + REAL_CONST(155085.779219/8.0), + REAL_CONST(155112.239289/8.0), + REAL_CONST(155138.700488/8.0), + REAL_CONST(155165.162815/8.0), + REAL_CONST(155191.626270/8.0), + REAL_CONST(155218.090854/8.0), + REAL_CONST(155244.556566/8.0), + REAL_CONST(155271.023405/8.0), + REAL_CONST(155297.491373/8.0), + REAL_CONST(155323.960468/8.0), + REAL_CONST(155350.430691/8.0), + REAL_CONST(155376.902042/8.0), + REAL_CONST(155403.374520/8.0), + REAL_CONST(155429.848126/8.0), + REAL_CONST(155456.322859/8.0), + REAL_CONST(155482.798719/8.0), + REAL_CONST(155509.275706/8.0), + REAL_CONST(155535.753821/8.0), + REAL_CONST(155562.233062/8.0), + REAL_CONST(155588.713430/8.0), + REAL_CONST(155615.194925/8.0), + REAL_CONST(155641.677547/8.0), + REAL_CONST(155668.161295/8.0), + REAL_CONST(155694.646170/8.0), + REAL_CONST(155721.132171/8.0), + REAL_CONST(155747.619298/8.0), + REAL_CONST(155774.107551/8.0), + REAL_CONST(155800.596931/8.0), + REAL_CONST(155827.087436/8.0), + REAL_CONST(155853.579068/8.0), + REAL_CONST(155880.071825/8.0), + REAL_CONST(155906.565708/8.0), + REAL_CONST(155933.060716/8.0), + REAL_CONST(155959.556850/8.0), + REAL_CONST(155986.054110/8.0), + REAL_CONST(156012.552494/8.0), + REAL_CONST(156039.052004/8.0), + REAL_CONST(156065.552639/8.0), + REAL_CONST(156092.054399/8.0), + REAL_CONST(156118.557284/8.0), + REAL_CONST(156145.061294/8.0), + REAL_CONST(156171.566429/8.0), + REAL_CONST(156198.072688/8.0), + REAL_CONST(156224.580072/8.0), + REAL_CONST(156251.088580/8.0), + REAL_CONST(156277.598213/8.0), + REAL_CONST(156304.108970/8.0), + REAL_CONST(156330.620851/8.0), + REAL_CONST(156357.133856/8.0), + REAL_CONST(156383.647985/8.0), + REAL_CONST(156410.163238/8.0), + REAL_CONST(156436.679615/8.0), + REAL_CONST(156463.197115/8.0), + REAL_CONST(156489.715740/8.0), + REAL_CONST(156516.235487/8.0), + REAL_CONST(156542.756358/8.0), + REAL_CONST(156569.278352/8.0), + REAL_CONST(156595.801470/8.0), + REAL_CONST(156622.325711/8.0), + REAL_CONST(156648.851074/8.0), + REAL_CONST(156675.377561/8.0), + REAL_CONST(156701.905170/8.0), + REAL_CONST(156728.433903/8.0), + REAL_CONST(156754.963757/8.0), + REAL_CONST(156781.494735/8.0), + REAL_CONST(156808.026835/8.0), + REAL_CONST(156834.560057/8.0), + REAL_CONST(156861.094401/8.0), + REAL_CONST(156887.629868/8.0), + REAL_CONST(156914.166457/8.0), + REAL_CONST(156940.704168/8.0), + REAL_CONST(156967.243000/8.0), + REAL_CONST(156993.782955/8.0), + REAL_CONST(157020.324031/8.0), + REAL_CONST(157046.866228/8.0), + REAL_CONST(157073.409548/8.0), + REAL_CONST(157099.953988/8.0), + REAL_CONST(157126.499550/8.0), + REAL_CONST(157153.046233/8.0), + REAL_CONST(157179.594038/8.0), + REAL_CONST(157206.142963/8.0), + REAL_CONST(157232.693009/8.0), + REAL_CONST(157259.244176/8.0), + REAL_CONST(157285.796464/8.0), + REAL_CONST(157312.349873/8.0), + REAL_CONST(157338.904402/8.0), + REAL_CONST(157365.460051/8.0), + REAL_CONST(157392.016821/8.0), + REAL_CONST(157418.574712/8.0), + REAL_CONST(157445.133722/8.0), + REAL_CONST(157471.693853/8.0), + REAL_CONST(157498.255103/8.0), + REAL_CONST(157524.817473/8.0), + REAL_CONST(157551.380964/8.0), + REAL_CONST(157577.945574/8.0), + REAL_CONST(157604.511303/8.0), + REAL_CONST(157631.078152/8.0), + REAL_CONST(157657.646121/8.0), + REAL_CONST(157684.215208/8.0), + REAL_CONST(157710.785415/8.0), + REAL_CONST(157737.356742/8.0), + REAL_CONST(157763.929187/8.0), + REAL_CONST(157790.502751/8.0), + REAL_CONST(157817.077434/8.0), + REAL_CONST(157843.653236/8.0), + REAL_CONST(157870.230157/8.0), + REAL_CONST(157896.808196/8.0), + REAL_CONST(157923.387353/8.0), + REAL_CONST(157949.967629/8.0), + REAL_CONST(157976.549023/8.0), + REAL_CONST(158003.131536/8.0), + REAL_CONST(158029.715167/8.0), + REAL_CONST(158056.299915/8.0), + REAL_CONST(158082.885782/8.0), + REAL_CONST(158109.472766/8.0), + REAL_CONST(158136.060868/8.0), + REAL_CONST(158162.650088/8.0), + REAL_CONST(158189.240425/8.0), + REAL_CONST(158215.831880/8.0), + REAL_CONST(158242.424452/8.0), + REAL_CONST(158269.018141/8.0), + REAL_CONST(158295.612948/8.0), + REAL_CONST(158322.208871/8.0), + REAL_CONST(158348.805912/8.0), + REAL_CONST(158375.404070/8.0), + REAL_CONST(158402.003344/8.0), + REAL_CONST(158428.603735/8.0), + REAL_CONST(158455.205242/8.0), + REAL_CONST(158481.807866/8.0), + REAL_CONST(158508.411607/8.0), + REAL_CONST(158535.016464/8.0), + REAL_CONST(158561.622437/8.0), + REAL_CONST(158588.229526/8.0), + REAL_CONST(158614.837731/8.0), + REAL_CONST(158641.447053/8.0), + REAL_CONST(158668.057490/8.0), + REAL_CONST(158694.669042/8.0), + REAL_CONST(158721.281711/8.0), + REAL_CONST(158747.895495/8.0), + REAL_CONST(158774.510395/8.0), + REAL_CONST(158801.126410/8.0), + REAL_CONST(158827.743540/8.0), + REAL_CONST(158854.361785/8.0), + REAL_CONST(158880.981146/8.0), + REAL_CONST(158907.601621/8.0), + REAL_CONST(158934.223212/8.0), + REAL_CONST(158960.845917/8.0), + REAL_CONST(158987.469737/8.0), + REAL_CONST(159014.094672/8.0), + REAL_CONST(159040.720721/8.0), + REAL_CONST(159067.347885/8.0), + REAL_CONST(159093.976163/8.0), + REAL_CONST(159120.605556/8.0), + REAL_CONST(159147.236062/8.0), + REAL_CONST(159173.867683/8.0), + REAL_CONST(159200.500417/8.0), + REAL_CONST(159227.134266/8.0), + REAL_CONST(159253.769228/8.0), + REAL_CONST(159280.405304/8.0), + REAL_CONST(159307.042494/8.0), + REAL_CONST(159333.680797/8.0), + REAL_CONST(159360.320214/8.0), + REAL_CONST(159386.960744/8.0), + REAL_CONST(159413.602387/8.0), + REAL_CONST(159440.245143/8.0), + REAL_CONST(159466.889012/8.0), + REAL_CONST(159493.533995/8.0), + REAL_CONST(159520.180090/8.0), + REAL_CONST(159546.827298/8.0), + REAL_CONST(159573.475619/8.0), + REAL_CONST(159600.125052/8.0), + REAL_CONST(159626.775598/8.0), + REAL_CONST(159653.427256/8.0), + REAL_CONST(159680.080027/8.0), + REAL_CONST(159706.733909/8.0), + REAL_CONST(159733.388904/8.0), + REAL_CONST(159760.045011/8.0), + REAL_CONST(159786.702230/8.0), + REAL_CONST(159813.360561/8.0), + REAL_CONST(159840.020003/8.0), + REAL_CONST(159866.680557/8.0), + REAL_CONST(159893.342223/8.0), + REAL_CONST(159920.005000/8.0), + REAL_CONST(159946.668889/8.0), + REAL_CONST(159973.333889/8.0), + REAL_CONST(160000.000000/8.0), + REAL_CONST(160026.667222/8.0), + REAL_CONST(160053.335555/8.0), + REAL_CONST(160080.005000/8.0), + REAL_CONST(160106.675555/8.0), + REAL_CONST(160133.347220/8.0), + REAL_CONST(160160.019997/8.0), + REAL_CONST(160186.693884/8.0), + REAL_CONST(160213.368881/8.0), + REAL_CONST(160240.044989/8.0), + REAL_CONST(160266.722207/8.0), + REAL_CONST(160293.400535/8.0), + REAL_CONST(160320.079973/8.0), + REAL_CONST(160346.760522/8.0), + REAL_CONST(160373.442180/8.0), + REAL_CONST(160400.124948/8.0), + REAL_CONST(160426.808826/8.0), + REAL_CONST(160453.493813/8.0), + REAL_CONST(160480.179910/8.0), + REAL_CONST(160506.867116/8.0), + REAL_CONST(160533.555432/8.0), + REAL_CONST(160560.244857/8.0), + REAL_CONST(160586.935391/8.0), + REAL_CONST(160613.627035/8.0), + REAL_CONST(160640.319787/8.0), + REAL_CONST(160667.013648/8.0), + REAL_CONST(160693.708618/8.0), + REAL_CONST(160720.404697/8.0), + REAL_CONST(160747.101884/8.0), + REAL_CONST(160773.800180/8.0), + REAL_CONST(160800.499584/8.0), + REAL_CONST(160827.200097/8.0), + REAL_CONST(160853.901717/8.0), + REAL_CONST(160880.604446/8.0), + REAL_CONST(160907.308283/8.0), + REAL_CONST(160934.013228/8.0), + REAL_CONST(160960.719281/8.0), + REAL_CONST(160987.426442/8.0), + REAL_CONST(161014.134710/8.0), + REAL_CONST(161040.844086/8.0), + REAL_CONST(161067.554570/8.0), + REAL_CONST(161094.266161/8.0), + REAL_CONST(161120.978859/8.0), + REAL_CONST(161147.692665/8.0), + REAL_CONST(161174.407577/8.0), + REAL_CONST(161201.123597/8.0), + REAL_CONST(161227.840724/8.0), + REAL_CONST(161254.558957/8.0), + REAL_CONST(161281.278298/8.0), + REAL_CONST(161307.998745/8.0), + REAL_CONST(161334.720298/8.0), + REAL_CONST(161361.442958/8.0), + REAL_CONST(161388.166725/8.0), + REAL_CONST(161414.891598/8.0), + REAL_CONST(161441.617577/8.0), + REAL_CONST(161468.344662/8.0), + REAL_CONST(161495.072853/8.0), + REAL_CONST(161521.802151/8.0), + REAL_CONST(161548.532554/8.0), + REAL_CONST(161575.264062/8.0), + REAL_CONST(161601.996677/8.0), + REAL_CONST(161628.730397/8.0), + REAL_CONST(161655.465223/8.0), + REAL_CONST(161682.201154/8.0), + REAL_CONST(161708.938190/8.0), + REAL_CONST(161735.676332/8.0), + REAL_CONST(161762.415579/8.0), + REAL_CONST(161789.155930/8.0), + REAL_CONST(161815.897387/8.0), + REAL_CONST(161842.639949/8.0), + REAL_CONST(161869.383615/8.0), + REAL_CONST(161896.128386/8.0), + REAL_CONST(161922.874261/8.0), + REAL_CONST(161949.621242/8.0), + REAL_CONST(161976.369326/8.0), + REAL_CONST(162003.118515/8.0), + REAL_CONST(162029.868808/8.0), + REAL_CONST(162056.620205/8.0), + REAL_CONST(162083.372706/8.0), + REAL_CONST(162110.126311/8.0), + REAL_CONST(162136.881020/8.0), + REAL_CONST(162163.636833/8.0), + REAL_CONST(162190.393750/8.0), + REAL_CONST(162217.151770/8.0), + REAL_CONST(162243.910893/8.0), + REAL_CONST(162270.671120/8.0), + REAL_CONST(162297.432450/8.0), + REAL_CONST(162324.194884/8.0), + REAL_CONST(162350.958420/8.0), + REAL_CONST(162377.723060/8.0), + REAL_CONST(162404.488802/8.0), + REAL_CONST(162431.255648/8.0), + REAL_CONST(162458.023596/8.0), + REAL_CONST(162484.792647/8.0), + REAL_CONST(162511.562800/8.0), + REAL_CONST(162538.334056/8.0), + REAL_CONST(162565.106414/8.0), + REAL_CONST(162591.879875/8.0), + REAL_CONST(162618.654438/8.0), + REAL_CONST(162645.430103/8.0), + REAL_CONST(162672.206870/8.0), + REAL_CONST(162698.984739/8.0), + REAL_CONST(162725.763710/8.0), + REAL_CONST(162752.543782/8.0), + REAL_CONST(162779.324957/8.0), + REAL_CONST(162806.107232/8.0), + REAL_CONST(162832.890610/8.0), + REAL_CONST(162859.675089/8.0), + REAL_CONST(162886.460669/8.0), + REAL_CONST(162913.247350/8.0), + REAL_CONST(162940.035132/8.0), + REAL_CONST(162966.824016/8.0), + REAL_CONST(162993.614000/8.0), + REAL_CONST(163020.405085/8.0), + REAL_CONST(163047.197271/8.0), + REAL_CONST(163073.990558/8.0), + REAL_CONST(163100.784945/8.0), + REAL_CONST(163127.580433/8.0), + REAL_CONST(163154.377021/8.0), + REAL_CONST(163181.174710/8.0), + REAL_CONST(163207.973499/8.0), + REAL_CONST(163234.773388/8.0), + REAL_CONST(163261.574377/8.0), + REAL_CONST(163288.376465/8.0), + REAL_CONST(163315.179654/8.0), + REAL_CONST(163341.983943/8.0), + REAL_CONST(163368.789331/8.0), + REAL_CONST(163395.595819/8.0), + REAL_CONST(163422.403406/8.0), + REAL_CONST(163449.212093/8.0), + REAL_CONST(163476.021879/8.0), + REAL_CONST(163502.832764/8.0), + REAL_CONST(163529.644749/8.0), + REAL_CONST(163556.457832/8.0), + REAL_CONST(163583.272015/8.0), + REAL_CONST(163610.087296/8.0), + REAL_CONST(163636.903676/8.0), + REAL_CONST(163663.721155/8.0), + REAL_CONST(163690.539732/8.0), + REAL_CONST(163717.359408/8.0), + REAL_CONST(163744.180182/8.0), + REAL_CONST(163771.002055/8.0), + REAL_CONST(163797.825026/8.0), + REAL_CONST(163824.649095/8.0), + REAL_CONST(163851.474262/8.0), + REAL_CONST(163878.300527/8.0), + REAL_CONST(163905.127890/8.0), + REAL_CONST(163931.956351/8.0), + REAL_CONST(163958.785910/8.0), + REAL_CONST(163985.616566/8.0), + REAL_CONST(164012.448320/8.0), + REAL_CONST(164039.281171/8.0), + REAL_CONST(164066.115119/8.0), + REAL_CONST(164092.950165/8.0), + REAL_CONST(164119.786308/8.0), + REAL_CONST(164146.623548/8.0), + REAL_CONST(164173.461884/8.0), + REAL_CONST(164200.301318/8.0), + REAL_CONST(164227.141849/8.0), + REAL_CONST(164253.983476/8.0), + REAL_CONST(164280.826200/8.0), + REAL_CONST(164307.670021/8.0), + REAL_CONST(164334.514938/8.0), + REAL_CONST(164361.360951/8.0), + REAL_CONST(164388.208061/8.0), + REAL_CONST(164415.056266/8.0), + REAL_CONST(164441.905568/8.0), + REAL_CONST(164468.755966/8.0), + REAL_CONST(164495.607460/8.0), + REAL_CONST(164522.460049/8.0), + REAL_CONST(164549.313735/8.0), + REAL_CONST(164576.168516/8.0), + REAL_CONST(164603.024392/8.0), + REAL_CONST(164629.881364/8.0), + REAL_CONST(164656.739432/8.0), + REAL_CONST(164683.598594/8.0), + REAL_CONST(164710.458852/8.0), + REAL_CONST(164737.320205/8.0), + REAL_CONST(164764.182653/8.0), + REAL_CONST(164791.046196/8.0), + REAL_CONST(164817.910834/8.0), + REAL_CONST(164844.776566/8.0), + REAL_CONST(164871.643393/8.0), + REAL_CONST(164898.511315/8.0), + REAL_CONST(164925.380331/8.0), + REAL_CONST(164952.250442/8.0), + REAL_CONST(164979.121647/8.0), + REAL_CONST(165005.993946/8.0), + REAL_CONST(165032.867339/8.0), + REAL_CONST(165059.741827/8.0), + REAL_CONST(165086.617408/8.0), + REAL_CONST(165113.494083/8.0) }; #endif diff --git a/libfaad2/is.c b/libfaad2/is.c index 5c1f23eb5e..e062a61e74 100644 --- a/libfaad2/is.c +++ b/libfaad2/is.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: is.c,v 1.11 2003/07/29 08:20:12 menno Exp $ +** $Id: is.c,v 1.12 2003/09/09 18:09:52 menno Exp $ **/ #include "common.h" diff --git a/libfaad2/is.h b/libfaad2/is.h index 38d39b9ace..86de336696 100644 --- a/libfaad2/is.h +++ b/libfaad2/is.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: is.h,v 1.5 2003/07/29 08:20:12 menno Exp $ +** $Id: is.h,v 1.6 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __IS_H__ diff --git a/libfaad2/kbd_win.h b/libfaad2/kbd_win.h index f8f97af730..5973f3993e 100644 --- a/libfaad2/kbd_win.h +++ b/libfaad2/kbd_win.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: kbd_win.h,v 1.5 2003/07/29 08:20:12 menno Exp $ +** $Id: kbd_win.h,v 1.6 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __KBD_WIN_H__ @@ -32,8 +32,6 @@ extern "C" { #endif -#ifndef FIXED_POINT - #ifdef _MSC_VER #pragma warning(disable:4305) #pragma warning(disable:4244) @@ -41,4503 +39,2251 @@ extern "C" { real_t kbd_long_1024[] = { - 0.00029256153896361, - 0.00042998567353047, - 0.00054674074589540, - 0.00065482304299792, - 0.00075870195068747, - 0.00086059331713336, - 0.00096177541439010, - 0.0010630609410878, - 0.0011650036308132, - 0.0012680012194148, - 0.0013723517232956, - 0.0014782864109136, - 0.0015859901976719, - 0.0016956148252373, - 0.0018072876903517, - 0.0019211179405514, - 0.0020372007924215, - 0.0021556206591754, - 0.0022764534599614, - 0.0023997683540995, - 0.0025256290631156, - 0.0026540948920831, - 0.0027852215281403, - 0.0029190616715331, - 0.0030556655443223, - 0.0031950812943391, - 0.0033373553240392, - 0.0034825325586930, - 0.0036306566699199, - 0.0037817702604646, - 0.0039359150179719, - 0.0040931318437260, - 0.0042534609610026, - 0.0044169420066964, - 0.0045836141091341, - 0.0047535159544086, - 0.0049266858431214, - 0.0051031617390698, - 0.0052829813111335, - 0.0054661819693975, - 0.0056528008963682, - 0.0058428750739943, - 0.0060364413070882, - 0.0062335362436492, - 0.0064341963925079, - 0.0066384581386503, - 0.0068463577565218, - 0.0070579314215715, - 0.0072732152202559, - 0.0074922451586909, - 0.0077150571701162, - 0.0079416871213115, - 0.0081721708180857, - 0.0084065440099458, - 0.0086448423940363, - 0.0088871016184291, - 0.0091333572848345, - 0.0093836449507939, - 0.0096380001314086, - 0.0098964583006517, - 0.010159054892306, - 0.010425825300561, - 0.010696804880310, - 0.010972028947167, - 0.011251532777236, - 0.011535351606646, - 0.011823520630897, - 0.012116075003993, - 0.012413049837429, - 0.012714480198999, - 0.013020401111478, - 0.013330847551161, - 0.013645854446288, - 0.013965456675352, - 0.014289689065314, - 0.014618586389712, - 0.014952183366697, - 0.015290514656976, - 0.015633614861688, - 0.015981518520214, - 0.016334260107915, - 0.016691874033817, - 0.017054394638241, - 0.017421856190380, - 0.017794292885832, - 0.018171738844085, - 0.018554228105962, - 0.018941794631032, - 0.019334472294980, - 0.019732294886947, - 0.020135296106839, - 0.020543509562604, - 0.020956968767488, - 0.021375707137257, - 0.021799757987407, - 0.022229154530343, - 0.022663929872540, - 0.023104117011689, - 0.023549748833816, - 0.024000858110398, - 0.024457477495451, - 0.024919639522613, - 0.025387376602207, - 0.025860721018295, - 0.026339704925726, - 0.026824360347160, - 0.027314719170100, - 0.027810813143900, - 0.028312673876775, - 0.028820332832801, - 0.029333821328905, - 0.029853170531859, - 0.030378411455255, - 0.030909574956490, - 0.031446691733739, - 0.031989792322926, - 0.032538907094693, - 0.033094066251369, - 0.033655299823935, - 0.034222637668991, - 0.034796109465717, - 0.035375744712844, - 0.035961572725616, - 0.036553622632758, - 0.037151923373446, - 0.037756503694277, - 0.038367392146243, - 0.038984617081711, - 0.039608206651398, - 0.040238188801359, - 0.040874591269976, - 0.041517441584950, - 0.042166767060301, - 0.042822594793376, - 0.043484951661852, - 0.044153864320760, - 0.044829359199509, - 0.045511462498913, - 0.046200200188234, - 0.046895598002228, - 0.047597681438201, - 0.048306475753074, - 0.049022005960455, - 0.049744296827725, - 0.050473372873129, - 0.051209258362879, - 0.051951977308273, - 0.052701553462813, - 0.053458010319350, - 0.054221371107223, - 0.054991658789428, - 0.055768896059787, - 0.056553105340134, - 0.057344308777513, - 0.058142528241393, - 0.058947785320893, - 0.059760101322019, - 0.060579497264926, - 0.061405993881180, - 0.062239611611049, - 0.063080370600799, - 0.063928290700012, - 0.064783391458919, - 0.065645692125747, - 0.066515211644086, - 0.067391968650269, - 0.068275981470777, - 0.069167268119652, - 0.070065846295935, - 0.070971733381121, - 0.071884946436630, - 0.072805502201299, - 0.073733417088896, - 0.074668707185649, - 0.075611388247794, - 0.076561475699152, - 0.077518984628715, - 0.078483929788261, - 0.079456325589986, - 0.080436186104162, - 0.081423525056808, - 0.082418355827392, - 0.083420691446553, - 0.084430544593841, - 0.085447927595483, - 0.086472852422178, - 0.087505330686900, - 0.088545373642744, - 0.089592992180780, - 0.090648196827937, - 0.091710997744919, - 0.092781404724131, - 0.093859427187640, - 0.094945074185163, - 0.096038354392069, - 0.097139276107423, - 0.098247847252041, - 0.099364075366580, - 0.10048796760965, - 0.10161953075597, - 0.10275877119451, - 0.10390569492671, - 0.10506030756469, - 0.10622261432949, - 0.10739262004941, - 0.10857032915821, - 0.10975574569357, - 0.11094887329534, - 0.11214971520402, - 0.11335827425914, - 0.11457455289772, - 0.11579855315274, - 0.11703027665170, - 0.11826972461510, - 0.11951689785504, - 0.12077179677383, - 0.12203442136263, - 0.12330477120008, - 0.12458284545102, - 0.12586864286523, - 0.12716216177615, - 0.12846340009971, - 0.12977235533312, - 0.13108902455375, - 0.13241340441801, - 0.13374549116025, - 0.13508528059173, - 0.13643276809961, - 0.13778794864595, - 0.13915081676677, - 0.14052136657114, - 0.14189959174027, - 0.14328548552671, - 0.14467904075349, - 0.14608024981336, - 0.14748910466804, - 0.14890559684750, - 0.15032971744929, - 0.15176145713790, - 0.15320080614414, - 0.15464775426459, - 0.15610229086100, - 0.15756440485987, - 0.15903408475193, - 0.16051131859170, - 0.16199609399712, - 0.16348839814917, - 0.16498821779156, - 0.16649553923042, - 0.16801034833404, - 0.16953263053270, - 0.17106237081842, - 0.17259955374484, - 0.17414416342714, - 0.17569618354193, - 0.17725559732720, - 0.17882238758238, - 0.18039653666830, - 0.18197802650733, - 0.18356683858343, - 0.18516295394233, - 0.18676635319174, - 0.18837701650148, - 0.18999492360384, - 0.19162005379380, - 0.19325238592940, - 0.19489189843209, - 0.19653856928714, - 0.19819237604409, - 0.19985329581721, - 0.20152130528605, - 0.20319638069594, - 0.20487849785865, - 0.20656763215298, - 0.20826375852540, - 0.20996685149083, - 0.21167688513330, - 0.21339383310678, - 0.21511766863598, - 0.21684836451719, - 0.21858589311922, - 0.22033022638425, - 0.22208133582887, - 0.22383919254503, - 0.22560376720111, - 0.22737503004300, - 0.22915295089517, - 0.23093749916189, - 0.23272864382838, - 0.23452635346201, - 0.23633059621364, - 0.23814133981883, - 0.23995855159925, - 0.24178219846403, - 0.24361224691114, - 0.24544866302890, - 0.24729141249740, - 0.24914046059007, - 0.25099577217522, - 0.25285731171763, - 0.25472504328019, - 0.25659893052556, - 0.25847893671788, - 0.26036502472451, - 0.26225715701781, - 0.26415529567692, - 0.26605940238966, - 0.26796943845439, - 0.26988536478190, - 0.27180714189742, - 0.27373472994256, - 0.27566808867736, - 0.27760717748238, - 0.27955195536071, - 0.28150238094021, - 0.28345841247557, - 0.28542000785059, - 0.28738712458038, - 0.28935971981364, - 0.29133775033492, - 0.29332117256704, - 0.29530994257338, - 0.29730401606034, - 0.29930334837974, - 0.30130789453132, - 0.30331760916521, - 0.30533244658452, - 0.30735236074785, - 0.30937730527195, - 0.31140723343430, - 0.31344209817583, - 0.31548185210356, - 0.31752644749341, - 0.31957583629288, - 0.32162997012390, - 0.32368880028565, - 0.32575227775738, - 0.32782035320134, - 0.32989297696566, - 0.33197009908736, - 0.33405166929523, - 0.33613763701295, - 0.33822795136203, - 0.34032256116495, - 0.34242141494820, - 0.34452446094547, - 0.34663164710072, - 0.34874292107143, - 0.35085823023181, - 0.35297752167598, - 0.35510074222129, - 0.35722783841160, - 0.35935875652060, - 0.36149344255514, - 0.36363184225864, - 0.36577390111444, - 0.36791956434930, - 0.37006877693676, - 0.37222148360070, - 0.37437762881878, - 0.37653715682603, - 0.37870001161834, - 0.38086613695607, - 0.38303547636766, - 0.38520797315322, - 0.38738357038821, - 0.38956221092708, - 0.39174383740701, - 0.39392839225157, - 0.39611581767449, - 0.39830605568342, - 0.40049904808370, - 0.40269473648218, - 0.40489306229101, - 0.40709396673153, - 0.40929739083810, - 0.41150327546197, - 0.41371156127524, - 0.41592218877472, - 0.41813509828594, - 0.42035022996702, - 0.42256752381274, - 0.42478691965848, - 0.42700835718423, - 0.42923177591866, - 0.43145711524314, - 0.43368431439580, - 0.43591331247564, - 0.43814404844658, - 0.44037646114161, - 0.44261048926688, - 0.44484607140589, - 0.44708314602359, - 0.44932165147057, - 0.45156152598727, - 0.45380270770813, - 0.45604513466581, - 0.45828874479543, - 0.46053347593880, - 0.46277926584861, - 0.46502605219277, - 0.46727377255861, - 0.46952236445718, - 0.47177176532752, - 0.47402191254100, - 0.47627274340557, - 0.47852419517009, - 0.48077620502869, - 0.48302871012505, - 0.48528164755674, - 0.48753495437962, - 0.48978856761212, - 0.49204242423966, - 0.49429646121898, - 0.49655061548250, - 0.49880482394273, - 0.50105902349665, - 0.50331315103004, - 0.50556714342194, - 0.50782093754901, - 0.51007447028990, - 0.51232767852971, - 0.51458049916433, - 0.51683286910489, - 0.51908472528213, - 0.52133600465083, - 0.52358664419420, - 0.52583658092832, - 0.52808575190648, - 0.53033409422367, - 0.53258154502092, - 0.53482804148974, - 0.53707352087652, - 0.53931792048690, - 0.54156117769021, - 0.54380322992385, - 0.54604401469766, - 0.54828346959835, - 0.55052153229384, - 0.55275814053768, - 0.55499323217338, - 0.55722674513883, - 0.55945861747062, - 0.56168878730842, - 0.56391719289930, - 0.56614377260214, - 0.56836846489188, - 0.57059120836390, - 0.57281194173835, - 0.57503060386439, - 0.57724713372458, - 0.57946147043912, - 0.58167355327012, - 0.58388332162591, - 0.58609071506528, - 0.58829567330173, - 0.59049813620770, - 0.59269804381879, - 0.59489533633802, - 0.59708995413996, - 0.59928183777495, - 0.60147092797329, - 0.60365716564937, - 0.60584049190582, - 0.60802084803764, - 0.61019817553632, - 0.61237241609393, - 0.61454351160718, - 0.61671140418155, - 0.61887603613527, - 0.62103735000336, - 0.62319528854167, - 0.62534979473088, - 0.62750081178042, - 0.62964828313250, - 0.63179215246597, - 0.63393236370030, - 0.63606886099946, - 0.63820158877577, - 0.64033049169379, - 0.64245551467413, - 0.64457660289729, - 0.64669370180740, - 0.64880675711607, - 0.65091571480603, - 0.65302052113494, - 0.65512112263906, - 0.65721746613689, - 0.65930949873289, - 0.66139716782102, - 0.66348042108842, - 0.66555920651892, - 0.66763347239664, - 0.66970316730947, - 0.67176824015260, - 0.67382864013196, - 0.67588431676768, - 0.67793521989751, - 0.67998129968017, - 0.68202250659876, - 0.68405879146403, - 0.68609010541774, - 0.68811639993588, - 0.69013762683195, - 0.69215373826012, - 0.69416468671849, - 0.69617042505214, - 0.69817090645634, - 0.70016608447958, - 0.70215591302664, - 0.70414034636163, - 0.70611933911096, - 0.70809284626630, - 0.71006082318751, - 0.71202322560554, - 0.71398000962530, - 0.71593113172842, - 0.71787654877613, - 0.71981621801195, - 0.72175009706445, - 0.72367814394990, - 0.72560031707496, - 0.72751657523927, - 0.72942687763803, - 0.73133118386457, - 0.73322945391280, - 0.73512164817975, - 0.73700772746796, - 0.73888765298787, - 0.74076138636020, - 0.74262888961827, - 0.74449012521027, - 0.74634505600152, - 0.74819364527663, - 0.75003585674175, - 0.75187165452661, - 0.75370100318668, - 0.75552386770515, - 0.75734021349500, - 0.75915000640095, - 0.76095321270137, - 0.76274979911019, - 0.76453973277875, - 0.76632298129757, - 0.76809951269819, - 0.76986929545481, - 0.77163229848604, - 0.77338849115651, - 0.77513784327849, - 0.77688032511340, - 0.77861590737340, - 0.78034456122283, - 0.78206625827961, - 0.78378097061667, - 0.78548867076330, - 0.78718933170643, - 0.78888292689189, - 0.79056943022564, - 0.79224881607494, - 0.79392105926949, - 0.79558613510249, - 0.79724401933170, - 0.79889468818046, - 0.80053811833858, - 0.80217428696334, - 0.80380317168028, - 0.80542475058405, - 0.80703900223920, - 0.80864590568089, - 0.81024544041560, - 0.81183758642175, - 0.81342232415032, - 0.81499963452540, - 0.81656949894467, - 0.81813189927991, - 0.81968681787738, - 0.82123423755821, - 0.82277414161874, - 0.82430651383076, - 0.82583133844180, - 0.82734860017528, - 0.82885828423070, - 0.83036037628369, - 0.83185486248609, - 0.83334172946597, - 0.83482096432759, - 0.83629255465130, - 0.83775648849344, - 0.83921275438615, - 0.84066134133716, - 0.84210223882952, - 0.84353543682130, - 0.84496092574524, - 0.84637869650833, - 0.84778874049138, - 0.84919104954855, - 0.85058561600677, - 0.85197243266520, - 0.85335149279457, - 0.85472279013653, - 0.85608631890295, - 0.85744207377513, - 0.85879004990298, - 0.86013024290422, - 0.86146264886346, - 0.86278726433124, - 0.86410408632306, - 0.86541311231838, - 0.86671434025950, - 0.86800776855046, - 0.86929339605590, - 0.87057122209981, - 0.87184124646433, - 0.87310346938840, - 0.87435789156650, - 0.87560451414719, - 0.87684333873173, - 0.87807436737261, - 0.87929760257204, - 0.88051304728038, - 0.88172070489456, - 0.88292057925645, - 0.88411267465117, - 0.88529699580537, - 0.88647354788545, - 0.88764233649580, - 0.88880336767692, - 0.88995664790351, - 0.89110218408260, - 0.89223998355154, - 0.89337005407600, - 0.89449240384793, - 0.89560704148345, - 0.89671397602074, - 0.89781321691786, - 0.89890477405053, - 0.89998865770993, - 0.90106487860034, - 0.90213344783689, - 0.90319437694315, - 0.90424767784873, - 0.90529336288690, - 0.90633144479201, - 0.90736193669708, - 0.90838485213119, - 0.90940020501694, - 0.91040800966776, - 0.91140828078533, - 0.91240103345685, - 0.91338628315231, - 0.91436404572173, - 0.91533433739238, - 0.91629717476594, - 0.91725257481564, - 0.91820055488334, - 0.91914113267664, - 0.92007432626589, - 0.92100015408120, - 0.92191863490944, - 0.92282978789113, - 0.92373363251740, - 0.92463018862687, - 0.92551947640245, - 0.92640151636824, - 0.92727632938624, - 0.92814393665320, - 0.92900435969727, - 0.92985762037477, - 0.93070374086684, - 0.93154274367610, - 0.93237465162328, - 0.93319948784382, - 0.93401727578443, - 0.93482803919967, - 0.93563180214841, - 0.93642858899043, - 0.93721842438279, - 0.93800133327637, - 0.93877734091223, - 0.93954647281807, - 0.94030875480458, - 0.94106421296182, - 0.94181287365556, - 0.94255476352362, - 0.94328990947213, - 0.94401833867184, - 0.94474007855439, - 0.94545515680855, - 0.94616360137644, - 0.94686544044975, - 0.94756070246592, - 0.94824941610434, - 0.94893161028248, - 0.94960731415209, - 0.95027655709525, - 0.95093936872056, - 0.95159577885924, - 0.95224581756115, - 0.95288951509097, - 0.95352690192417, - 0.95415800874314, - 0.95478286643320, - 0.95540150607863, - 0.95601395895871, - 0.95662025654373, - 0.95722043049100, - 0.95781451264084, - 0.95840253501260, - 0.95898452980058, - 0.95956052937008, - 0.96013056625336, - 0.96069467314557, - 0.96125288290073, - 0.96180522852773, - 0.96235174318622, - 0.96289246018262, - 0.96342741296604, - 0.96395663512424, - 0.96448016037959, - 0.96499802258499, - 0.96551025571985, - 0.96601689388602, - 0.96651797130376, - 0.96701352230768, - 0.96750358134269, - 0.96798818295998, - 0.96846736181297, - 0.96894115265327, - 0.96940959032667, - 0.96987270976912, - 0.97033054600270, - 0.97078313413161, - 0.97123050933818, - 0.97167270687887, - 0.97210976208030, - 0.97254171033525, - 0.97296858709871, - 0.97339042788392, - 0.97380726825843, - 0.97421914384017, - 0.97462609029350, - 0.97502814332534, - 0.97542533868127, - 0.97581771214160, - 0.97620529951759, - 0.97658813664749, - 0.97696625939282, - 0.97733970363445, - 0.97770850526884, - 0.97807270020427, - 0.97843232435704, - 0.97878741364771, - 0.97913800399743, - 0.97948413132414, - 0.97982583153895, - 0.98016314054243, - 0.98049609422096, - 0.98082472844313, - 0.98114907905608, - 0.98146918188197, - 0.98178507271438, - 0.98209678731477, - 0.98240436140902, - 0.98270783068385, - 0.98300723078342, - 0.98330259730589, - 0.98359396579995, - 0.98388137176152, - 0.98416485063031, - 0.98444443778651, - 0.98472016854752, - 0.98499207816463, - 0.98526020181980, - 0.98552457462240, - 0.98578523160609, - 0.98604220772560, - 0.98629553785362, - 0.98654525677772, - 0.98679139919726, - 0.98703399972035, - 0.98727309286089, - 0.98750871303556, - 0.98774089456089, - 0.98796967165036, - 0.98819507841154, - 0.98841714884323, - 0.98863591683269, - 0.98885141615285, - 0.98906368045957, - 0.98927274328896, - 0.98947863805473, - 0.98968139804554, - 0.98988105642241, - 0.99007764621618, - 0.99027120032501, - 0.99046175151186, - 0.99064933240208, - 0.99083397548099, - 0.99101571309153, - 0.99119457743191, - 0.99137060055337, - 0.99154381435784, - 0.99171425059582, - 0.99188194086414, - 0.99204691660388, - 0.99220920909823, - 0.99236884947045, - 0.99252586868186, - 0.99268029752989, - 0.99283216664606, - 0.99298150649419, - 0.99312834736847, - 0.99327271939167, - 0.99341465251338, - 0.99355417650825, - 0.99369132097430, - 0.99382611533130, - 0.99395858881910, - 0.99408877049612, - 0.99421668923778, - 0.99434237373503, - 0.99446585249289, - 0.99458715382906, - 0.99470630587254, - 0.99482333656229, - 0.99493827364600, - 0.99505114467878, - 0.99516197702200, - 0.99527079784214, - 0.99537763410962, - 0.99548251259777, - 0.99558545988178, - 0.99568650233767, - 0.99578566614138, - 0.99588297726783, - 0.99597846149005, - 0.99607214437834, - 0.99616405129947, - 0.99625420741595, - 0.99634263768527, - 0.99642936685928, - 0.99651441948352, - 0.99659781989663, - 0.99667959222978, - 0.99675976040620, - 0.99683834814063, - 0.99691537893895, - 0.99699087609774, - 0.99706486270391, - 0.99713736163442, - 0.99720839555593, - 0.99727798692461, - 0.99734615798589, - 0.99741293077431, - 0.99747832711337, - 0.99754236861541, - 0.99760507668158, - 0.99766647250181, - 0.99772657705478, - 0.99778541110799, - 0.99784299521785, - 0.99789934972976, - 0.99795449477828, - 0.99800845028730, - 0.99806123597027, - 0.99811287133042, - 0.99816337566108, - 0.99821276804596, - 0.99826106735952, - 0.99830829226732, - 0.99835446122649, - 0.99839959248609, - 0.99844370408765, - 0.99848681386566, - 0.99852893944805, - 0.99857009825685, - 0.99861030750869, - 0.99864958421549, - 0.99868794518504, - 0.99872540702178, - 0.99876198612738, - 0.99879769870160, - 0.99883256074295, - 0.99886658804953, - 0.99889979621983, - 0.99893220065356, - 0.99896381655254, - 0.99899465892154, - 0.99902474256924, - 0.99905408210916, - 0.99908269196056, - 0.99911058634952, - 0.99913777930986, - 0.99916428468421, - 0.99919011612505, - 0.99921528709576, - 0.99923981087174, - 0.99926370054150, - 0.99928696900779, - 0.99930962898876, - 0.99933169301910, - 0.99935317345126, - 0.99937408245662, - 0.99939443202674, - 0.99941423397457, - 0.99943349993572, - 0.99945224136972, - 0.99947046956130, - 0.99948819562171, - 0.99950543049000, - 0.99952218493439, - 0.99953846955355, - 0.99955429477803, - 0.99956967087154, - 0.99958460793242, - 0.99959911589494, - 0.99961320453077, - 0.99962688345035, - 0.99964016210433, - 0.99965304978499, - 0.99966555562769, - 0.99967768861231, - 0.99968945756473, - 0.99970087115825, - 0.99971193791510, - 0.99972266620792, - 0.99973306426121, - 0.99974314015288, - 0.99975290181568, - 0.99976235703876, - 0.99977151346914, - 0.99978037861326, - 0.99978895983845, - 0.99979726437448, - 0.99980529931507, - 0.99981307161943, - 0.99982058811377, - 0.99982785549283, - 0.99983488032144, - 0.99984166903600, - 0.99984822794606, - 0.99985456323584, - 0.99986068096572, - 0.99986658707386, - 0.99987228737764, - 0.99987778757524, - 0.99988309324717, - 0.99988820985777, - 0.99989314275675, - 0.99989789718072, - 0.99990247825468, - 0.99990689099357, - 0.99991114030376, - 0.99991523098456, - 0.99991916772971, - 0.99992295512891, - 0.99992659766930, - 0.99993009973692, - 0.99993346561824, - 0.99993669950161, - 0.99993980547870, - 0.99994278754604, - 0.99994564960642, - 0.99994839547033, - 0.99995102885747, - 0.99995355339809, - 0.99995597263451, - 0.99995829002249, - 0.99996050893264, - 0.99996263265183, - 0.99996466438460, - 0.99996660725452, - 0.99996846430558, - 0.99997023850356, - 0.99997193273736, - 0.99997354982037, - 0.99997509249183, - 0.99997656341810, - 0.99997796519400, - 0.99997930034415, - 0.99998057132421, - 0.99998178052220, - 0.99998293025975, - 0.99998402279338, - 0.99998506031574, - 0.99998604495686, - 0.99998697878536, - 0.99998786380966, - 0.99998870197921, - 0.99998949518567, - 0.99999024526408, - 0.99999095399401, - 0.99999162310077, - 0.99999225425649, - 0.99999284908128, - 0.99999340914435, - 0.99999393596510, - 0.99999443101421, - 0.99999489571473, - 0.99999533144314, - 0.99999573953040, - 0.99999612126300, - 0.99999647788395, - 0.99999681059383, - 0.99999712055178, - 0.99999740887647, - 0.99999767664709, - 0.99999792490431, - 0.99999815465123, - 0.99999836685427, - 0.99999856244415, - 0.99999874231676, - 0.99999890733405, - 0.99999905832493, - 0.99999919608613, - 0.99999932138304, - 0.99999943495056, - 0.99999953749392, - 0.99999962968950, - 0.99999971218563, - 0.99999978560337, - 0.99999985053727, - 0.99999990755616, - 0.99999995720387 + COEF_CONST(0.00029256153896361), + COEF_CONST(0.00042998567353047), + COEF_CONST(0.00054674074589540), + COEF_CONST(0.00065482304299792), + COEF_CONST(0.00075870195068747), + COEF_CONST(0.00086059331713336), + COEF_CONST(0.00096177541439010), + COEF_CONST(0.0010630609410878), + COEF_CONST(0.0011650036308132), + COEF_CONST(0.0012680012194148), + COEF_CONST(0.0013723517232956), + COEF_CONST(0.0014782864109136), + COEF_CONST(0.0015859901976719), + COEF_CONST(0.0016956148252373), + COEF_CONST(0.0018072876903517), + COEF_CONST(0.0019211179405514), + COEF_CONST(0.0020372007924215), + COEF_CONST(0.0021556206591754), + COEF_CONST(0.0022764534599614), + COEF_CONST(0.0023997683540995), + COEF_CONST(0.0025256290631156), + COEF_CONST(0.0026540948920831), + COEF_CONST(0.0027852215281403), + COEF_CONST(0.0029190616715331), + COEF_CONST(0.0030556655443223), + COEF_CONST(0.0031950812943391), + COEF_CONST(0.0033373553240392), + COEF_CONST(0.0034825325586930), + COEF_CONST(0.0036306566699199), + COEF_CONST(0.0037817702604646), + COEF_CONST(0.0039359150179719), + COEF_CONST(0.0040931318437260), + COEF_CONST(0.0042534609610026), + COEF_CONST(0.0044169420066964), + COEF_CONST(0.0045836141091341), + COEF_CONST(0.0047535159544086), + COEF_CONST(0.0049266858431214), + COEF_CONST(0.0051031617390698), + COEF_CONST(0.0052829813111335), + COEF_CONST(0.0054661819693975), + COEF_CONST(0.0056528008963682), + COEF_CONST(0.0058428750739943), + COEF_CONST(0.0060364413070882), + COEF_CONST(0.0062335362436492), + COEF_CONST(0.0064341963925079), + COEF_CONST(0.0066384581386503), + COEF_CONST(0.0068463577565218), + COEF_CONST(0.0070579314215715), + COEF_CONST(0.0072732152202559), + COEF_CONST(0.0074922451586909), + COEF_CONST(0.0077150571701162), + COEF_CONST(0.0079416871213115), + COEF_CONST(0.0081721708180857), + COEF_CONST(0.0084065440099458), + COEF_CONST(0.0086448423940363), + COEF_CONST(0.0088871016184291), + COEF_CONST(0.0091333572848345), + COEF_CONST(0.0093836449507939), + COEF_CONST(0.0096380001314086), + COEF_CONST(0.0098964583006517), + COEF_CONST(0.010159054892306), + COEF_CONST(0.010425825300561), + COEF_CONST(0.010696804880310), + COEF_CONST(0.010972028947167), + COEF_CONST(0.011251532777236), + COEF_CONST(0.011535351606646), + COEF_CONST(0.011823520630897), + COEF_CONST(0.012116075003993), + COEF_CONST(0.012413049837429), + COEF_CONST(0.012714480198999), + COEF_CONST(0.013020401111478), + COEF_CONST(0.013330847551161), + COEF_CONST(0.013645854446288), + COEF_CONST(0.013965456675352), + COEF_CONST(0.014289689065314), + COEF_CONST(0.014618586389712), + COEF_CONST(0.014952183366697), + COEF_CONST(0.015290514656976), + COEF_CONST(0.015633614861688), + COEF_CONST(0.015981518520214), + COEF_CONST(0.016334260107915), + COEF_CONST(0.016691874033817), + COEF_CONST(0.017054394638241), + COEF_CONST(0.017421856190380), + COEF_CONST(0.017794292885832), + COEF_CONST(0.018171738844085), + COEF_CONST(0.018554228105962), + COEF_CONST(0.018941794631032), + COEF_CONST(0.019334472294980), + COEF_CONST(0.019732294886947), + COEF_CONST(0.020135296106839), + COEF_CONST(0.020543509562604), + COEF_CONST(0.020956968767488), + COEF_CONST(0.021375707137257), + COEF_CONST(0.021799757987407), + COEF_CONST(0.022229154530343), + COEF_CONST(0.022663929872540), + COEF_CONST(0.023104117011689), + COEF_CONST(0.023549748833816), + COEF_CONST(0.024000858110398), + COEF_CONST(0.024457477495451), + COEF_CONST(0.024919639522613), + COEF_CONST(0.025387376602207), + COEF_CONST(0.025860721018295), + COEF_CONST(0.026339704925726), + COEF_CONST(0.026824360347160), + COEF_CONST(0.027314719170100), + COEF_CONST(0.027810813143900), + COEF_CONST(0.028312673876775), + COEF_CONST(0.028820332832801), + COEF_CONST(0.029333821328905), + COEF_CONST(0.029853170531859), + COEF_CONST(0.030378411455255), + COEF_CONST(0.030909574956490), + COEF_CONST(0.031446691733739), + COEF_CONST(0.031989792322926), + COEF_CONST(0.032538907094693), + COEF_CONST(0.033094066251369), + COEF_CONST(0.033655299823935), + COEF_CONST(0.034222637668991), + COEF_CONST(0.034796109465717), + COEF_CONST(0.035375744712844), + COEF_CONST(0.035961572725616), + COEF_CONST(0.036553622632758), + COEF_CONST(0.037151923373446), + COEF_CONST(0.037756503694277), + COEF_CONST(0.038367392146243), + COEF_CONST(0.038984617081711), + COEF_CONST(0.039608206651398), + COEF_CONST(0.040238188801359), + COEF_CONST(0.040874591269976), + COEF_CONST(0.041517441584950), + COEF_CONST(0.042166767060301), + COEF_CONST(0.042822594793376), + COEF_CONST(0.043484951661852), + COEF_CONST(0.044153864320760), + COEF_CONST(0.044829359199509), + COEF_CONST(0.045511462498913), + COEF_CONST(0.046200200188234), + COEF_CONST(0.046895598002228), + COEF_CONST(0.047597681438201), + COEF_CONST(0.048306475753074), + COEF_CONST(0.049022005960455), + COEF_CONST(0.049744296827725), + COEF_CONST(0.050473372873129), + COEF_CONST(0.051209258362879), + COEF_CONST(0.051951977308273), + COEF_CONST(0.052701553462813), + COEF_CONST(0.053458010319350), + COEF_CONST(0.054221371107223), + COEF_CONST(0.054991658789428), + COEF_CONST(0.055768896059787), + COEF_CONST(0.056553105340134), + COEF_CONST(0.057344308777513), + COEF_CONST(0.058142528241393), + COEF_CONST(0.058947785320893), + COEF_CONST(0.059760101322019), + COEF_CONST(0.060579497264926), + COEF_CONST(0.061405993881180), + COEF_CONST(0.062239611611049), + COEF_CONST(0.063080370600799), + COEF_CONST(0.063928290700012), + COEF_CONST(0.064783391458919), + COEF_CONST(0.065645692125747), + COEF_CONST(0.066515211644086), + COEF_CONST(0.067391968650269), + COEF_CONST(0.068275981470777), + COEF_CONST(0.069167268119652), + COEF_CONST(0.070065846295935), + COEF_CONST(0.070971733381121), + COEF_CONST(0.071884946436630), + COEF_CONST(0.072805502201299), + COEF_CONST(0.073733417088896), + COEF_CONST(0.074668707185649), + COEF_CONST(0.075611388247794), + COEF_CONST(0.076561475699152), + COEF_CONST(0.077518984628715), + COEF_CONST(0.078483929788261), + COEF_CONST(0.079456325589986), + COEF_CONST(0.080436186104162), + COEF_CONST(0.081423525056808), + COEF_CONST(0.082418355827392), + COEF_CONST(0.083420691446553), + COEF_CONST(0.084430544593841), + COEF_CONST(0.085447927595483), + COEF_CONST(0.086472852422178), + COEF_CONST(0.087505330686900), + COEF_CONST(0.088545373642744), + COEF_CONST(0.089592992180780), + COEF_CONST(0.090648196827937), + COEF_CONST(0.091710997744919), + COEF_CONST(0.092781404724131), + COEF_CONST(0.093859427187640), + COEF_CONST(0.094945074185163), + COEF_CONST(0.096038354392069), + COEF_CONST(0.097139276107423), + COEF_CONST(0.098247847252041), + COEF_CONST(0.099364075366580), + COEF_CONST(0.10048796760965), + COEF_CONST(0.10161953075597), + COEF_CONST(0.10275877119451), + COEF_CONST(0.10390569492671), + COEF_CONST(0.10506030756469), + COEF_CONST(0.10622261432949), + COEF_CONST(0.10739262004941), + COEF_CONST(0.10857032915821), + COEF_CONST(0.10975574569357), + COEF_CONST(0.11094887329534), + COEF_CONST(0.11214971520402), + COEF_CONST(0.11335827425914), + COEF_CONST(0.11457455289772), + COEF_CONST(0.11579855315274), + COEF_CONST(0.11703027665170), + COEF_CONST(0.11826972461510), + COEF_CONST(0.11951689785504), + COEF_CONST(0.12077179677383), + COEF_CONST(0.12203442136263), + COEF_CONST(0.12330477120008), + COEF_CONST(0.12458284545102), + COEF_CONST(0.12586864286523), + COEF_CONST(0.12716216177615), + COEF_CONST(0.12846340009971), + COEF_CONST(0.12977235533312), + COEF_CONST(0.13108902455375), + COEF_CONST(0.13241340441801), + COEF_CONST(0.13374549116025), + COEF_CONST(0.13508528059173), + COEF_CONST(0.13643276809961), + COEF_CONST(0.13778794864595), + COEF_CONST(0.13915081676677), + COEF_CONST(0.14052136657114), + COEF_CONST(0.14189959174027), + COEF_CONST(0.14328548552671), + COEF_CONST(0.14467904075349), + COEF_CONST(0.14608024981336), + COEF_CONST(0.14748910466804), + COEF_CONST(0.14890559684750), + COEF_CONST(0.15032971744929), + COEF_CONST(0.15176145713790), + COEF_CONST(0.15320080614414), + COEF_CONST(0.15464775426459), + COEF_CONST(0.15610229086100), + COEF_CONST(0.15756440485987), + COEF_CONST(0.15903408475193), + COEF_CONST(0.16051131859170), + COEF_CONST(0.16199609399712), + COEF_CONST(0.16348839814917), + COEF_CONST(0.16498821779156), + COEF_CONST(0.16649553923042), + COEF_CONST(0.16801034833404), + COEF_CONST(0.16953263053270), + COEF_CONST(0.17106237081842), + COEF_CONST(0.17259955374484), + COEF_CONST(0.17414416342714), + COEF_CONST(0.17569618354193), + COEF_CONST(0.17725559732720), + COEF_CONST(0.17882238758238), + COEF_CONST(0.18039653666830), + COEF_CONST(0.18197802650733), + COEF_CONST(0.18356683858343), + COEF_CONST(0.18516295394233), + COEF_CONST(0.18676635319174), + COEF_CONST(0.18837701650148), + COEF_CONST(0.18999492360384), + COEF_CONST(0.19162005379380), + COEF_CONST(0.19325238592940), + COEF_CONST(0.19489189843209), + COEF_CONST(0.19653856928714), + COEF_CONST(0.19819237604409), + COEF_CONST(0.19985329581721), + COEF_CONST(0.20152130528605), + COEF_CONST(0.20319638069594), + COEF_CONST(0.20487849785865), + COEF_CONST(0.20656763215298), + COEF_CONST(0.20826375852540), + COEF_CONST(0.20996685149083), + COEF_CONST(0.21167688513330), + COEF_CONST(0.21339383310678), + COEF_CONST(0.21511766863598), + COEF_CONST(0.21684836451719), + COEF_CONST(0.21858589311922), + COEF_CONST(0.22033022638425), + COEF_CONST(0.22208133582887), + COEF_CONST(0.22383919254503), + COEF_CONST(0.22560376720111), + COEF_CONST(0.22737503004300), + COEF_CONST(0.22915295089517), + COEF_CONST(0.23093749916189), + COEF_CONST(0.23272864382838), + COEF_CONST(0.23452635346201), + COEF_CONST(0.23633059621364), + COEF_CONST(0.23814133981883), + COEF_CONST(0.23995855159925), + COEF_CONST(0.24178219846403), + COEF_CONST(0.24361224691114), + COEF_CONST(0.24544866302890), + COEF_CONST(0.24729141249740), + COEF_CONST(0.24914046059007), + COEF_CONST(0.25099577217522), + COEF_CONST(0.25285731171763), + COEF_CONST(0.25472504328019), + COEF_CONST(0.25659893052556), + COEF_CONST(0.25847893671788), + COEF_CONST(0.26036502472451), + COEF_CONST(0.26225715701781), + COEF_CONST(0.26415529567692), + COEF_CONST(0.26605940238966), + COEF_CONST(0.26796943845439), + COEF_CONST(0.26988536478190), + COEF_CONST(0.27180714189742), + COEF_CONST(0.27373472994256), + COEF_CONST(0.27566808867736), + COEF_CONST(0.27760717748238), + COEF_CONST(0.27955195536071), + COEF_CONST(0.28150238094021), + COEF_CONST(0.28345841247557), + COEF_CONST(0.28542000785059), + COEF_CONST(0.28738712458038), + COEF_CONST(0.28935971981364), + COEF_CONST(0.29133775033492), + COEF_CONST(0.29332117256704), + COEF_CONST(0.29530994257338), + COEF_CONST(0.29730401606034), + COEF_CONST(0.29930334837974), + COEF_CONST(0.30130789453132), + COEF_CONST(0.30331760916521), + COEF_CONST(0.30533244658452), + COEF_CONST(0.30735236074785), + COEF_CONST(0.30937730527195), + COEF_CONST(0.31140723343430), + COEF_CONST(0.31344209817583), + COEF_CONST(0.31548185210356), + COEF_CONST(0.31752644749341), + COEF_CONST(0.31957583629288), + COEF_CONST(0.32162997012390), + COEF_CONST(0.32368880028565), + COEF_CONST(0.32575227775738), + COEF_CONST(0.32782035320134), + COEF_CONST(0.32989297696566), + COEF_CONST(0.33197009908736), + COEF_CONST(0.33405166929523), + COEF_CONST(0.33613763701295), + COEF_CONST(0.33822795136203), + COEF_CONST(0.34032256116495), + COEF_CONST(0.34242141494820), + COEF_CONST(0.34452446094547), + COEF_CONST(0.34663164710072), + COEF_CONST(0.34874292107143), + COEF_CONST(0.35085823023181), + COEF_CONST(0.35297752167598), + COEF_CONST(0.35510074222129), + COEF_CONST(0.35722783841160), + COEF_CONST(0.35935875652060), + COEF_CONST(0.36149344255514), + COEF_CONST(0.36363184225864), + COEF_CONST(0.36577390111444), + COEF_CONST(0.36791956434930), + COEF_CONST(0.37006877693676), + COEF_CONST(0.37222148360070), + COEF_CONST(0.37437762881878), + COEF_CONST(0.37653715682603), + COEF_CONST(0.37870001161834), + COEF_CONST(0.38086613695607), + COEF_CONST(0.38303547636766), + COEF_CONST(0.38520797315322), + COEF_CONST(0.38738357038821), + COEF_CONST(0.38956221092708), + COEF_CONST(0.39174383740701), + COEF_CONST(0.39392839225157), + COEF_CONST(0.39611581767449), + COEF_CONST(0.39830605568342), + COEF_CONST(0.40049904808370), + COEF_CONST(0.40269473648218), + COEF_CONST(0.40489306229101), + COEF_CONST(0.40709396673153), + COEF_CONST(0.40929739083810), + COEF_CONST(0.41150327546197), + COEF_CONST(0.41371156127524), + COEF_CONST(0.41592218877472), + COEF_CONST(0.41813509828594), + COEF_CONST(0.42035022996702), + COEF_CONST(0.42256752381274), + COEF_CONST(0.42478691965848), + COEF_CONST(0.42700835718423), + COEF_CONST(0.42923177591866), + COEF_CONST(0.43145711524314), + COEF_CONST(0.43368431439580), + COEF_CONST(0.43591331247564), + COEF_CONST(0.43814404844658), + COEF_CONST(0.44037646114161), + COEF_CONST(0.44261048926688), + COEF_CONST(0.44484607140589), + COEF_CONST(0.44708314602359), + COEF_CONST(0.44932165147057), + COEF_CONST(0.45156152598727), + COEF_CONST(0.45380270770813), + COEF_CONST(0.45604513466581), + COEF_CONST(0.45828874479543), + COEF_CONST(0.46053347593880), + COEF_CONST(0.46277926584861), + COEF_CONST(0.46502605219277), + COEF_CONST(0.46727377255861), + COEF_CONST(0.46952236445718), + COEF_CONST(0.47177176532752), + COEF_CONST(0.47402191254100), + COEF_CONST(0.47627274340557), + COEF_CONST(0.47852419517009), + COEF_CONST(0.48077620502869), + COEF_CONST(0.48302871012505), + COEF_CONST(0.48528164755674), + COEF_CONST(0.48753495437962), + COEF_CONST(0.48978856761212), + COEF_CONST(0.49204242423966), + COEF_CONST(0.49429646121898), + COEF_CONST(0.49655061548250), + COEF_CONST(0.49880482394273), + COEF_CONST(0.50105902349665), + COEF_CONST(0.50331315103004), + COEF_CONST(0.50556714342194), + COEF_CONST(0.50782093754901), + COEF_CONST(0.51007447028990), + COEF_CONST(0.51232767852971), + COEF_CONST(0.51458049916433), + COEF_CONST(0.51683286910489), + COEF_CONST(0.51908472528213), + COEF_CONST(0.52133600465083), + COEF_CONST(0.52358664419420), + COEF_CONST(0.52583658092832), + COEF_CONST(0.52808575190648), + COEF_CONST(0.53033409422367), + COEF_CONST(0.53258154502092), + COEF_CONST(0.53482804148974), + COEF_CONST(0.53707352087652), + COEF_CONST(0.53931792048690), + COEF_CONST(0.54156117769021), + COEF_CONST(0.54380322992385), + COEF_CONST(0.54604401469766), + COEF_CONST(0.54828346959835), + COEF_CONST(0.55052153229384), + COEF_CONST(0.55275814053768), + COEF_CONST(0.55499323217338), + COEF_CONST(0.55722674513883), + COEF_CONST(0.55945861747062), + COEF_CONST(0.56168878730842), + COEF_CONST(0.56391719289930), + COEF_CONST(0.56614377260214), + COEF_CONST(0.56836846489188), + COEF_CONST(0.57059120836390), + COEF_CONST(0.57281194173835), + COEF_CONST(0.57503060386439), + COEF_CONST(0.57724713372458), + COEF_CONST(0.57946147043912), + COEF_CONST(0.58167355327012), + COEF_CONST(0.58388332162591), + COEF_CONST(0.58609071506528), + COEF_CONST(0.58829567330173), + COEF_CONST(0.59049813620770), + COEF_CONST(0.59269804381879), + COEF_CONST(0.59489533633802), + COEF_CONST(0.59708995413996), + COEF_CONST(0.59928183777495), + COEF_CONST(0.60147092797329), + COEF_CONST(0.60365716564937), + COEF_CONST(0.60584049190582), + COEF_CONST(0.60802084803764), + COEF_CONST(0.61019817553632), + COEF_CONST(0.61237241609393), + COEF_CONST(0.61454351160718), + COEF_CONST(0.61671140418155), + COEF_CONST(0.61887603613527), + COEF_CONST(0.62103735000336), + COEF_CONST(0.62319528854167), + COEF_CONST(0.62534979473088), + COEF_CONST(0.62750081178042), + COEF_CONST(0.62964828313250), + COEF_CONST(0.63179215246597), + COEF_CONST(0.63393236370030), + COEF_CONST(0.63606886099946), + COEF_CONST(0.63820158877577), + COEF_CONST(0.64033049169379), + COEF_CONST(0.64245551467413), + COEF_CONST(0.64457660289729), + COEF_CONST(0.64669370180740), + COEF_CONST(0.64880675711607), + COEF_CONST(0.65091571480603), + COEF_CONST(0.65302052113494), + COEF_CONST(0.65512112263906), + COEF_CONST(0.65721746613689), + COEF_CONST(0.65930949873289), + COEF_CONST(0.66139716782102), + COEF_CONST(0.66348042108842), + COEF_CONST(0.66555920651892), + COEF_CONST(0.66763347239664), + COEF_CONST(0.66970316730947), + COEF_CONST(0.67176824015260), + COEF_CONST(0.67382864013196), + COEF_CONST(0.67588431676768), + COEF_CONST(0.67793521989751), + COEF_CONST(0.67998129968017), + COEF_CONST(0.68202250659876), + COEF_CONST(0.68405879146403), + COEF_CONST(0.68609010541774), + COEF_CONST(0.68811639993588), + COEF_CONST(0.69013762683195), + COEF_CONST(0.69215373826012), + COEF_CONST(0.69416468671849), + COEF_CONST(0.69617042505214), + COEF_CONST(0.69817090645634), + COEF_CONST(0.70016608447958), + COEF_CONST(0.70215591302664), + COEF_CONST(0.70414034636163), + COEF_CONST(0.70611933911096), + COEF_CONST(0.70809284626630), + COEF_CONST(0.71006082318751), + COEF_CONST(0.71202322560554), + COEF_CONST(0.71398000962530), + COEF_CONST(0.71593113172842), + COEF_CONST(0.71787654877613), + COEF_CONST(0.71981621801195), + COEF_CONST(0.72175009706445), + COEF_CONST(0.72367814394990), + COEF_CONST(0.72560031707496), + COEF_CONST(0.72751657523927), + COEF_CONST(0.72942687763803), + COEF_CONST(0.73133118386457), + COEF_CONST(0.73322945391280), + COEF_CONST(0.73512164817975), + COEF_CONST(0.73700772746796), + COEF_CONST(0.73888765298787), + COEF_CONST(0.74076138636020), + COEF_CONST(0.74262888961827), + COEF_CONST(0.74449012521027), + COEF_CONST(0.74634505600152), + COEF_CONST(0.74819364527663), + COEF_CONST(0.75003585674175), + COEF_CONST(0.75187165452661), + COEF_CONST(0.75370100318668), + COEF_CONST(0.75552386770515), + COEF_CONST(0.75734021349500), + COEF_CONST(0.75915000640095), + COEF_CONST(0.76095321270137), + COEF_CONST(0.76274979911019), + COEF_CONST(0.76453973277875), + COEF_CONST(0.76632298129757), + COEF_CONST(0.76809951269819), + COEF_CONST(0.76986929545481), + COEF_CONST(0.77163229848604), + COEF_CONST(0.77338849115651), + COEF_CONST(0.77513784327849), + COEF_CONST(0.77688032511340), + COEF_CONST(0.77861590737340), + COEF_CONST(0.78034456122283), + COEF_CONST(0.78206625827961), + COEF_CONST(0.78378097061667), + COEF_CONST(0.78548867076330), + COEF_CONST(0.78718933170643), + COEF_CONST(0.78888292689189), + COEF_CONST(0.79056943022564), + COEF_CONST(0.79224881607494), + COEF_CONST(0.79392105926949), + COEF_CONST(0.79558613510249), + COEF_CONST(0.79724401933170), + COEF_CONST(0.79889468818046), + COEF_CONST(0.80053811833858), + COEF_CONST(0.80217428696334), + COEF_CONST(0.80380317168028), + COEF_CONST(0.80542475058405), + COEF_CONST(0.80703900223920), + COEF_CONST(0.80864590568089), + COEF_CONST(0.81024544041560), + COEF_CONST(0.81183758642175), + COEF_CONST(0.81342232415032), + COEF_CONST(0.81499963452540), + COEF_CONST(0.81656949894467), + COEF_CONST(0.81813189927991), + COEF_CONST(0.81968681787738), + COEF_CONST(0.82123423755821), + COEF_CONST(0.82277414161874), + COEF_CONST(0.82430651383076), + COEF_CONST(0.82583133844180), + COEF_CONST(0.82734860017528), + COEF_CONST(0.82885828423070), + COEF_CONST(0.83036037628369), + COEF_CONST(0.83185486248609), + COEF_CONST(0.83334172946597), + COEF_CONST(0.83482096432759), + COEF_CONST(0.83629255465130), + COEF_CONST(0.83775648849344), + COEF_CONST(0.83921275438615), + COEF_CONST(0.84066134133716), + COEF_CONST(0.84210223882952), + COEF_CONST(0.84353543682130), + COEF_CONST(0.84496092574524), + COEF_CONST(0.84637869650833), + COEF_CONST(0.84778874049138), + COEF_CONST(0.84919104954855), + COEF_CONST(0.85058561600677), + COEF_CONST(0.85197243266520), + COEF_CONST(0.85335149279457), + COEF_CONST(0.85472279013653), + COEF_CONST(0.85608631890295), + COEF_CONST(0.85744207377513), + COEF_CONST(0.85879004990298), + COEF_CONST(0.86013024290422), + COEF_CONST(0.86146264886346), + COEF_CONST(0.86278726433124), + COEF_CONST(0.86410408632306), + COEF_CONST(0.86541311231838), + COEF_CONST(0.86671434025950), + COEF_CONST(0.86800776855046), + COEF_CONST(0.86929339605590), + COEF_CONST(0.87057122209981), + COEF_CONST(0.87184124646433), + COEF_CONST(0.87310346938840), + COEF_CONST(0.87435789156650), + COEF_CONST(0.87560451414719), + COEF_CONST(0.87684333873173), + COEF_CONST(0.87807436737261), + COEF_CONST(0.87929760257204), + COEF_CONST(0.88051304728038), + COEF_CONST(0.88172070489456), + COEF_CONST(0.88292057925645), + COEF_CONST(0.88411267465117), + COEF_CONST(0.88529699580537), + COEF_CONST(0.88647354788545), + COEF_CONST(0.88764233649580), + COEF_CONST(0.88880336767692), + COEF_CONST(0.88995664790351), + COEF_CONST(0.89110218408260), + COEF_CONST(0.89223998355154), + COEF_CONST(0.89337005407600), + COEF_CONST(0.89449240384793), + COEF_CONST(0.89560704148345), + COEF_CONST(0.89671397602074), + COEF_CONST(0.89781321691786), + COEF_CONST(0.89890477405053), + COEF_CONST(0.89998865770993), + COEF_CONST(0.90106487860034), + COEF_CONST(0.90213344783689), + COEF_CONST(0.90319437694315), + COEF_CONST(0.90424767784873), + COEF_CONST(0.90529336288690), + COEF_CONST(0.90633144479201), + COEF_CONST(0.90736193669708), + COEF_CONST(0.90838485213119), + COEF_CONST(0.90940020501694), + COEF_CONST(0.91040800966776), + COEF_CONST(0.91140828078533), + COEF_CONST(0.91240103345685), + COEF_CONST(0.91338628315231), + COEF_CONST(0.91436404572173), + COEF_CONST(0.91533433739238), + COEF_CONST(0.91629717476594), + COEF_CONST(0.91725257481564), + COEF_CONST(0.91820055488334), + COEF_CONST(0.91914113267664), + COEF_CONST(0.92007432626589), + COEF_CONST(0.92100015408120), + COEF_CONST(0.92191863490944), + COEF_CONST(0.92282978789113), + COEF_CONST(0.92373363251740), + COEF_CONST(0.92463018862687), + COEF_CONST(0.92551947640245), + COEF_CONST(0.92640151636824), + COEF_CONST(0.92727632938624), + COEF_CONST(0.92814393665320), + COEF_CONST(0.92900435969727), + COEF_CONST(0.92985762037477), + COEF_CONST(0.93070374086684), + COEF_CONST(0.93154274367610), + COEF_CONST(0.93237465162328), + COEF_CONST(0.93319948784382), + COEF_CONST(0.93401727578443), + COEF_CONST(0.93482803919967), + COEF_CONST(0.93563180214841), + COEF_CONST(0.93642858899043), + COEF_CONST(0.93721842438279), + COEF_CONST(0.93800133327637), + COEF_CONST(0.93877734091223), + COEF_CONST(0.93954647281807), + COEF_CONST(0.94030875480458), + COEF_CONST(0.94106421296182), + COEF_CONST(0.94181287365556), + COEF_CONST(0.94255476352362), + COEF_CONST(0.94328990947213), + COEF_CONST(0.94401833867184), + COEF_CONST(0.94474007855439), + COEF_CONST(0.94545515680855), + COEF_CONST(0.94616360137644), + COEF_CONST(0.94686544044975), + COEF_CONST(0.94756070246592), + COEF_CONST(0.94824941610434), + COEF_CONST(0.94893161028248), + COEF_CONST(0.94960731415209), + COEF_CONST(0.95027655709525), + COEF_CONST(0.95093936872056), + COEF_CONST(0.95159577885924), + COEF_CONST(0.95224581756115), + COEF_CONST(0.95288951509097), + COEF_CONST(0.95352690192417), + COEF_CONST(0.95415800874314), + COEF_CONST(0.95478286643320), + COEF_CONST(0.95540150607863), + COEF_CONST(0.95601395895871), + COEF_CONST(0.95662025654373), + COEF_CONST(0.95722043049100), + COEF_CONST(0.95781451264084), + COEF_CONST(0.95840253501260), + COEF_CONST(0.95898452980058), + COEF_CONST(0.95956052937008), + COEF_CONST(0.96013056625336), + COEF_CONST(0.96069467314557), + COEF_CONST(0.96125288290073), + COEF_CONST(0.96180522852773), + COEF_CONST(0.96235174318622), + COEF_CONST(0.96289246018262), + COEF_CONST(0.96342741296604), + COEF_CONST(0.96395663512424), + COEF_CONST(0.96448016037959), + COEF_CONST(0.96499802258499), + COEF_CONST(0.96551025571985), + COEF_CONST(0.96601689388602), + COEF_CONST(0.96651797130376), + COEF_CONST(0.96701352230768), + COEF_CONST(0.96750358134269), + COEF_CONST(0.96798818295998), + COEF_CONST(0.96846736181297), + COEF_CONST(0.96894115265327), + COEF_CONST(0.96940959032667), + COEF_CONST(0.96987270976912), + COEF_CONST(0.97033054600270), + COEF_CONST(0.97078313413161), + COEF_CONST(0.97123050933818), + COEF_CONST(0.97167270687887), + COEF_CONST(0.97210976208030), + COEF_CONST(0.97254171033525), + COEF_CONST(0.97296858709871), + COEF_CONST(0.97339042788392), + COEF_CONST(0.97380726825843), + COEF_CONST(0.97421914384017), + COEF_CONST(0.97462609029350), + COEF_CONST(0.97502814332534), + COEF_CONST(0.97542533868127), + COEF_CONST(0.97581771214160), + COEF_CONST(0.97620529951759), + COEF_CONST(0.97658813664749), + COEF_CONST(0.97696625939282), + COEF_CONST(0.97733970363445), + COEF_CONST(0.97770850526884), + COEF_CONST(0.97807270020427), + COEF_CONST(0.97843232435704), + COEF_CONST(0.97878741364771), + COEF_CONST(0.97913800399743), + COEF_CONST(0.97948413132414), + COEF_CONST(0.97982583153895), + COEF_CONST(0.98016314054243), + COEF_CONST(0.98049609422096), + COEF_CONST(0.98082472844313), + COEF_CONST(0.98114907905608), + COEF_CONST(0.98146918188197), + COEF_CONST(0.98178507271438), + COEF_CONST(0.98209678731477), + COEF_CONST(0.98240436140902), + COEF_CONST(0.98270783068385), + COEF_CONST(0.98300723078342), + COEF_CONST(0.98330259730589), + COEF_CONST(0.98359396579995), + COEF_CONST(0.98388137176152), + COEF_CONST(0.98416485063031), + COEF_CONST(0.98444443778651), + COEF_CONST(0.98472016854752), + COEF_CONST(0.98499207816463), + COEF_CONST(0.98526020181980), + COEF_CONST(0.98552457462240), + COEF_CONST(0.98578523160609), + COEF_CONST(0.98604220772560), + COEF_CONST(0.98629553785362), + COEF_CONST(0.98654525677772), + COEF_CONST(0.98679139919726), + COEF_CONST(0.98703399972035), + COEF_CONST(0.98727309286089), + COEF_CONST(0.98750871303556), + COEF_CONST(0.98774089456089), + COEF_CONST(0.98796967165036), + COEF_CONST(0.98819507841154), + COEF_CONST(0.98841714884323), + COEF_CONST(0.98863591683269), + COEF_CONST(0.98885141615285), + COEF_CONST(0.98906368045957), + COEF_CONST(0.98927274328896), + COEF_CONST(0.98947863805473), + COEF_CONST(0.98968139804554), + COEF_CONST(0.98988105642241), + COEF_CONST(0.99007764621618), + COEF_CONST(0.99027120032501), + COEF_CONST(0.99046175151186), + COEF_CONST(0.99064933240208), + COEF_CONST(0.99083397548099), + COEF_CONST(0.99101571309153), + COEF_CONST(0.99119457743191), + COEF_CONST(0.99137060055337), + COEF_CONST(0.99154381435784), + COEF_CONST(0.99171425059582), + COEF_CONST(0.99188194086414), + COEF_CONST(0.99204691660388), + COEF_CONST(0.99220920909823), + COEF_CONST(0.99236884947045), + COEF_CONST(0.99252586868186), + COEF_CONST(0.99268029752989), + COEF_CONST(0.99283216664606), + COEF_CONST(0.99298150649419), + COEF_CONST(0.99312834736847), + COEF_CONST(0.99327271939167), + COEF_CONST(0.99341465251338), + COEF_CONST(0.99355417650825), + COEF_CONST(0.99369132097430), + COEF_CONST(0.99382611533130), + COEF_CONST(0.99395858881910), + COEF_CONST(0.99408877049612), + COEF_CONST(0.99421668923778), + COEF_CONST(0.99434237373503), + COEF_CONST(0.99446585249289), + COEF_CONST(0.99458715382906), + COEF_CONST(0.99470630587254), + COEF_CONST(0.99482333656229), + COEF_CONST(0.99493827364600), + COEF_CONST(0.99505114467878), + COEF_CONST(0.99516197702200), + COEF_CONST(0.99527079784214), + COEF_CONST(0.99537763410962), + COEF_CONST(0.99548251259777), + COEF_CONST(0.99558545988178), + COEF_CONST(0.99568650233767), + COEF_CONST(0.99578566614138), + COEF_CONST(0.99588297726783), + COEF_CONST(0.99597846149005), + COEF_CONST(0.99607214437834), + COEF_CONST(0.99616405129947), + COEF_CONST(0.99625420741595), + COEF_CONST(0.99634263768527), + COEF_CONST(0.99642936685928), + COEF_CONST(0.99651441948352), + COEF_CONST(0.99659781989663), + COEF_CONST(0.99667959222978), + COEF_CONST(0.99675976040620), + COEF_CONST(0.99683834814063), + COEF_CONST(0.99691537893895), + COEF_CONST(0.99699087609774), + COEF_CONST(0.99706486270391), + COEF_CONST(0.99713736163442), + COEF_CONST(0.99720839555593), + COEF_CONST(0.99727798692461), + COEF_CONST(0.99734615798589), + COEF_CONST(0.99741293077431), + COEF_CONST(0.99747832711337), + COEF_CONST(0.99754236861541), + COEF_CONST(0.99760507668158), + COEF_CONST(0.99766647250181), + COEF_CONST(0.99772657705478), + COEF_CONST(0.99778541110799), + COEF_CONST(0.99784299521785), + COEF_CONST(0.99789934972976), + COEF_CONST(0.99795449477828), + COEF_CONST(0.99800845028730), + COEF_CONST(0.99806123597027), + COEF_CONST(0.99811287133042), + COEF_CONST(0.99816337566108), + COEF_CONST(0.99821276804596), + COEF_CONST(0.99826106735952), + COEF_CONST(0.99830829226732), + COEF_CONST(0.99835446122649), + COEF_CONST(0.99839959248609), + COEF_CONST(0.99844370408765), + COEF_CONST(0.99848681386566), + COEF_CONST(0.99852893944805), + COEF_CONST(0.99857009825685), + COEF_CONST(0.99861030750869), + COEF_CONST(0.99864958421549), + COEF_CONST(0.99868794518504), + COEF_CONST(0.99872540702178), + COEF_CONST(0.99876198612738), + COEF_CONST(0.99879769870160), + COEF_CONST(0.99883256074295), + COEF_CONST(0.99886658804953), + COEF_CONST(0.99889979621983), + COEF_CONST(0.99893220065356), + COEF_CONST(0.99896381655254), + COEF_CONST(0.99899465892154), + COEF_CONST(0.99902474256924), + COEF_CONST(0.99905408210916), + COEF_CONST(0.99908269196056), + COEF_CONST(0.99911058634952), + COEF_CONST(0.99913777930986), + COEF_CONST(0.99916428468421), + COEF_CONST(0.99919011612505), + COEF_CONST(0.99921528709576), + COEF_CONST(0.99923981087174), + COEF_CONST(0.99926370054150), + COEF_CONST(0.99928696900779), + COEF_CONST(0.99930962898876), + COEF_CONST(0.99933169301910), + COEF_CONST(0.99935317345126), + COEF_CONST(0.99937408245662), + COEF_CONST(0.99939443202674), + COEF_CONST(0.99941423397457), + COEF_CONST(0.99943349993572), + COEF_CONST(0.99945224136972), + COEF_CONST(0.99947046956130), + COEF_CONST(0.99948819562171), + COEF_CONST(0.99950543049000), + COEF_CONST(0.99952218493439), + COEF_CONST(0.99953846955355), + COEF_CONST(0.99955429477803), + COEF_CONST(0.99956967087154), + COEF_CONST(0.99958460793242), + COEF_CONST(0.99959911589494), + COEF_CONST(0.99961320453077), + COEF_CONST(0.99962688345035), + COEF_CONST(0.99964016210433), + COEF_CONST(0.99965304978499), + COEF_CONST(0.99966555562769), + COEF_CONST(0.99967768861231), + COEF_CONST(0.99968945756473), + COEF_CONST(0.99970087115825), + COEF_CONST(0.99971193791510), + COEF_CONST(0.99972266620792), + COEF_CONST(0.99973306426121), + COEF_CONST(0.99974314015288), + COEF_CONST(0.99975290181568), + COEF_CONST(0.99976235703876), + COEF_CONST(0.99977151346914), + COEF_CONST(0.99978037861326), + COEF_CONST(0.99978895983845), + COEF_CONST(0.99979726437448), + COEF_CONST(0.99980529931507), + COEF_CONST(0.99981307161943), + COEF_CONST(0.99982058811377), + COEF_CONST(0.99982785549283), + COEF_CONST(0.99983488032144), + COEF_CONST(0.99984166903600), + COEF_CONST(0.99984822794606), + COEF_CONST(0.99985456323584), + COEF_CONST(0.99986068096572), + COEF_CONST(0.99986658707386), + COEF_CONST(0.99987228737764), + COEF_CONST(0.99987778757524), + COEF_CONST(0.99988309324717), + COEF_CONST(0.99988820985777), + COEF_CONST(0.99989314275675), + COEF_CONST(0.99989789718072), + COEF_CONST(0.99990247825468), + COEF_CONST(0.99990689099357), + COEF_CONST(0.99991114030376), + COEF_CONST(0.99991523098456), + COEF_CONST(0.99991916772971), + COEF_CONST(0.99992295512891), + COEF_CONST(0.99992659766930), + COEF_CONST(0.99993009973692), + COEF_CONST(0.99993346561824), + COEF_CONST(0.99993669950161), + COEF_CONST(0.99993980547870), + COEF_CONST(0.99994278754604), + COEF_CONST(0.99994564960642), + COEF_CONST(0.99994839547033), + COEF_CONST(0.99995102885747), + COEF_CONST(0.99995355339809), + COEF_CONST(0.99995597263451), + COEF_CONST(0.99995829002249), + COEF_CONST(0.99996050893264), + COEF_CONST(0.99996263265183), + COEF_CONST(0.99996466438460), + COEF_CONST(0.99996660725452), + COEF_CONST(0.99996846430558), + COEF_CONST(0.99997023850356), + COEF_CONST(0.99997193273736), + COEF_CONST(0.99997354982037), + COEF_CONST(0.99997509249183), + COEF_CONST(0.99997656341810), + COEF_CONST(0.99997796519400), + COEF_CONST(0.99997930034415), + COEF_CONST(0.99998057132421), + COEF_CONST(0.99998178052220), + COEF_CONST(0.99998293025975), + COEF_CONST(0.99998402279338), + COEF_CONST(0.99998506031574), + COEF_CONST(0.99998604495686), + COEF_CONST(0.99998697878536), + COEF_CONST(0.99998786380966), + COEF_CONST(0.99998870197921), + COEF_CONST(0.99998949518567), + COEF_CONST(0.99999024526408), + COEF_CONST(0.99999095399401), + COEF_CONST(0.99999162310077), + COEF_CONST(0.99999225425649), + COEF_CONST(0.99999284908128), + COEF_CONST(0.99999340914435), + COEF_CONST(0.99999393596510), + COEF_CONST(0.99999443101421), + COEF_CONST(0.99999489571473), + COEF_CONST(0.99999533144314), + COEF_CONST(0.99999573953040), + COEF_CONST(0.99999612126300), + COEF_CONST(0.99999647788395), + COEF_CONST(0.99999681059383), + COEF_CONST(0.99999712055178), + COEF_CONST(0.99999740887647), + COEF_CONST(0.99999767664709), + COEF_CONST(0.99999792490431), + COEF_CONST(0.99999815465123), + COEF_CONST(0.99999836685427), + COEF_CONST(0.99999856244415), + COEF_CONST(0.99999874231676), + COEF_CONST(0.99999890733405), + COEF_CONST(0.99999905832493), + COEF_CONST(0.99999919608613), + COEF_CONST(0.99999932138304), + COEF_CONST(0.99999943495056), + COEF_CONST(0.99999953749392), + COEF_CONST(0.99999962968950), + COEF_CONST(0.99999971218563), + COEF_CONST(0.99999978560337), + COEF_CONST(0.99999985053727), + COEF_CONST(0.99999990755616), + COEF_CONST(0.99999995720387) }; real_t kbd_long_960[] = { - 0.0003021562530949, - 0.0004452267024786, - 0.0005674947527496, - 0.0006812465553466, - 0.0007910496776387, - 0.0008991655033895, - 0.0010068978259384, - 0.0011150758515751, - 0.0012242653193642, - 0.0013348735658205, - 0.0014472068670273, - 0.0015615039850448, - 0.0016779568885263, - 0.0017967241232412, - 0.0019179397560955, - 0.0020417195415393, - 0.0021681652836642, - 0.0022973679910599, - 0.0024294102029937, - 0.0025643677339078, - 0.0027023110014772, - 0.0028433060512612, - 0.0029874153568025, - 0.0031346984511728, - 0.0032852124303662, - 0.0034390123581190, - 0.0035961515940931, - 0.0037566820618961, - 0.0039206544694386, - 0.0040881184912194, - 0.0042591229199617, - 0.0044337157933972, - 0.0046119445007641, - 0.0047938558726415, - 0.0049794962570131, - 0.0051689115838900, - 0.0053621474203763, - 0.0055592490177131, - 0.0057602613515573, - 0.0059652291565289, - 0.0061741969558843, - 0.0063872090870253, - 0.0066043097234387, - 0.0068255428935640, - 0.0070509524970088, - 0.0072805823184660, - 0.0075144760396340, - 0.0077526772493942, - 0.0079952294524673, - 0.0082421760767325, - 0.0084935604793733, - 0.0087494259519870, - 0.0090098157247792, - 0.0092747729699467, - 0.0095443408043399, - 0.0098185622914832, - 0.0100974804430226, - 0.0103811382196612, - 0.0106695785316351, - 0.0109628442387771, - 0.0112609781502091, - 0.0115640230236993, - 0.0118720215647169, - 0.0121850164252137, - 0.0125030502021561, - 0.0128261654358321, - 0.0131544046079532, - 0.0134878101395681, - 0.0138264243888068, - 0.0141702896484671, - 0.0145194481434592, - 0.0148739420281182, - 0.0152338133833959, - 0.0155991042139432, - 0.0159698564450882, - 0.0163461119197227, - 0.0167279123950996, - 0.0171152995395520, - 0.0175083149291368, - 0.0179070000442104, - 0.0183113962659409, - 0.0187215448727609, - 0.0191374870367659, - 0.0195592638200623, - 0.0199869161710679, - 0.0204204849207691, - 0.0208600107789370, - 0.0213055343303066, - 0.0217570960307201, - 0.0222147362032386, - 0.0226784950342228, - 0.0231484125693867, - 0.0236245287098244, - 0.0241068832080138, - 0.0245955156637973, - 0.0250904655203431, - 0.0255917720600868, - 0.0260994744006559, - 0.0266136114907790, - 0.0271342221061795, - 0.0276613448454576, - 0.0281950181259587, - 0.0287352801796329, - 0.0292821690488833, - 0.0298357225824074, - 0.0303959784310299, - 0.0309629740435296, - 0.0315367466624615, - 0.0321173333199732, - 0.0327047708336193, - 0.0332990958021720, - 0.0339003446014307, - 0.0345085533800302, - 0.0351237580552491, - 0.0357459943088193, - 0.0363752975827358, - 0.0370117030750704, - 0.0376552457357870, - 0.0383059602625614, - 0.0389638810966056, - 0.0396290424184964, - 0.0403014781440112, - 0.0409812219199691, - 0.0416683071200799, - 0.0423627668408009, - 0.0430646338972016, - 0.0437739408188385, - 0.0444907198456388, - 0.0452150029237951, - 0.0459468217016708, - 0.0466862075257170, - 0.0474331914364021, - 0.0481878041641539, - 0.0489500761253148, - 0.0497200374181119, - 0.0504977178186404, - 0.0512831467768636, - 0.0520763534126273, - 0.0528773665116913, - 0.0536862145217772, - 0.0545029255486345, - 0.0553275273521232, - 0.0561600473423164, - 0.0570005125756209, - 0.0578489497509179, - 0.0587053852057233, - 0.0595698449123695, - 0.0604423544742077, - 0.0613229391218317, - 0.0622116237093247, - 0.0631084327105284, - 0.0640133902153352, - 0.0649265199260043, - 0.0658478451535027, - 0.0667773888138695, - 0.0677151734246072, - 0.0686612211010977, - 0.0696155535530446, - 0.0705781920809429, - 0.0715491575725758, - 0.0725284704995383, - 0.0735161509137906, - 0.0745122184442388, - 0.0755166922933461, - 0.0765295912337720, - 0.0775509336050437, - 0.0785807373102561, - 0.0796190198128044, - 0.0806657981331473, - 0.0817210888456026, - 0.0827849080751753, - 0.0838572714944183, - 0.0849381943203265, - 0.0860276913112652, - 0.0871257767639319, - 0.0882324645103534, - 0.0893477679149177, - 0.0904716998714418, - 0.0916042728002747, - 0.0927454986454381, - 0.0938953888718020, - 0.0950539544622996, - 0.0962212059151784, - 0.0973971532412897, - 0.0985818059614169, - 0.0997751731036425, - 0.1009772632007537, - 0.1021880842876888, - 0.1034076438990227, - 0.1046359490664932, - 0.1058730063165681, - 0.1071188216680533, - 0.1083734006297428, - 0.1096367481981100, - 0.1109088688550422, - 0.1121897665656167, - 0.1134794447759207, - 0.1147779064109143, - 0.1160851538723372, - 0.1174011890366591, - 0.1187260132530751, - 0.1200596273415457, - 0.1214020315908810, - 0.1227532257568719, - 0.1241132090604651, - 0.1254819801859856, - 0.1268595372794049, - 0.1282458779466558, - 0.1296409992519942, - 0.1310448977164081, - 0.1324575693160745, - 0.1338790094808633, - 0.1353092130928902, - 0.1367481744851168, - 0.1381958874400010, - 0.1396523451881945, - 0.1411175404072910, - 0.1425914652206223, - 0.1440741111961058, - 0.1455654693451402, - 0.1470655301215526, - 0.1485742834205956, - 0.1500917185779945, - 0.1516178243690463, - 0.1531525890077689, - 0.1546960001461024, - 0.1562480448731608, - 0.1578087097145364, - 0.1593779806316558, - 0.1609558430211876, - 0.1625422817145027, - 0.1641372809771871, - 0.1657408245086070, - 0.1673528954415270, - 0.1689734763417811, - 0.1706025492079969, - 0.1722400954713725, - 0.1738860959955082, - 0.1755405310762898, - 0.1772033804418275, - 0.1788746232524467, - 0.1805542381007349, - 0.1822422030116404, - 0.1839384954426268, - 0.1856430922838810, - 0.1873559698585756, - 0.1890771039231862, - 0.1908064696678625, - 0.1925440417168546, - 0.1942897941289937, - 0.1960437003982277, - 0.1978057334542116, - 0.1995758656629525, - 0.2013540688275098, - 0.2031403141887507, - 0.2049345724261595, - 0.2067368136587033, - 0.2085470074457521, - 0.2103651227880538, - 0.2121911281287646, - 0.2140249913545346, - 0.2158666797966480, - 0.2177161602322188, - 0.2195733988854414, - 0.2214383614288963, - 0.2233110129849106, - 0.2251913181269740, - 0.2270792408812093, - 0.2289747447278976, - 0.2308777926030592, - 0.2327883469000885, - 0.2347063694714437, - 0.2366318216303919, - 0.2385646641528076, - 0.2405048572790267, - 0.2424523607157545, - 0.2444071336380283, - 0.2463691346912334, - 0.2483383219931741, - 0.2503146531361985, - 0.2522980851893767, - 0.2542885747007335, - 0.2562860776995335, - 0.2582905496986215, - 0.2603019456968142, - 0.2623202201813464, - 0.2643453271303700, - 0.2663772200155053, - 0.2684158518044454, - 0.2704611749636135, - 0.2725131414608710, - 0.2745717027682799, - 0.2766368098649151, - 0.2787084132397296, - 0.2807864628944707, - 0.2828709083466482, - 0.2849616986325523, - 0.2870587823103237, - 0.2891621074630737, - 0.2912716217020546, - 0.2933872721698803, - 0.2955090055437973, - 0.2976367680390041, - 0.2997705054120213, - 0.3019101629641097, - 0.3040556855447379, - 0.3062070175550981, - 0.3083641029516701, - 0.3105268852498334, - 0.3126953075275265, - 0.3148693124289546, - 0.3170488421683428, - 0.3192338385337370, - 0.3214242428908514, - 0.3236199961869606, - 0.3258210389548392, - 0.3280273113167459, - 0.3302387529884521, - 0.3324553032833160, - 0.3346769011164010, - 0.3369034850086373, - 0.3391349930910280, - 0.3413713631088974, - 0.3436125324261830, - 0.3458584380297697, - 0.3481090165338656, - 0.3503642041844199, - 0.3526239368635820, - 0.3548881500942010, - 0.3571567790443668, - 0.3594297585319891, - 0.3617070230294185, - 0.3639885066681048, - 0.3662741432432950, - 0.3685638662187693, - 0.3708576087316147, - 0.3731553035970366, - 0.3754568833132069, - 0.3777622800661488, - 0.3800714257346570, - 0.3823842518952546, - 0.3847006898271841, - 0.3870206705174334, - 0.3893441246657958, - 0.3916709826899639, - 0.3940011747306560, - 0.3963346306567764, - 0.3986712800706062, - 0.4010110523130271, - 0.4033538764687756, - 0.4056996813717284, - 0.4080483956102172, - 0.4103999475323736, - 0.4127542652515031, - 0.4151112766514873, - 0.4174709093922143, - 0.4198330909150365, - 0.4221977484482556, - 0.4245648090126334, - 0.4269341994269293, - 0.4293058463134616, - 0.4316796761036958, - 0.4340556150438547, - 0.4364335892005536, - 0.4388135244664580, - 0.4411953465659639, - 0.4435789810609000, - 0.4459643533562509, - 0.4483513887059016, - 0.4507400122184019, - 0.4531301488627497, - 0.4555217234741947, - 0.4579146607600593, - 0.4603088853055777, - 0.4627043215797521, - 0.4651008939412254, - 0.4674985266441709, - 0.4698971438441951, - 0.4722966696042580, - 0.4746970279006055, - 0.4770981426287164, - 0.4794999376092619, - 0.4819023365940778, - 0.4843052632721476, - 0.4867086412755978, - 0.4891123941857028, - 0.4915164455388997, - 0.4939207188328126, - 0.4963251375322855, - 0.4987296250754225, - 0.5011341048796359, - 0.5035385003477012, - 0.5059427348738168, - 0.5083467318496706, - 0.5107504146705106, - 0.5131537067412193, - 0.5155565314823923, - 0.5179588123364193, - 0.5203604727735667, - 0.5227614362980630, - 0.5251616264541841, - 0.5275609668323384, - 0.5299593810751532, - 0.5323567928835578, - 0.5347531260228663, - 0.5371483043288580, - 0.5395422517138538, - 0.5419348921727899, - 0.5443261497892862, - 0.5467159487417104, - 0.5491042133092364, - 0.5514908678778958, - 0.5538758369466227, - 0.5562590451332913, - 0.5586404171807443, - 0.5610198779628133, - 0.5633973524903286, - 0.5657727659171199, - 0.5681460435460047, - 0.5705171108347663, - 0.5728858934021188, - 0.5752523170336598, - 0.5776163076878088, - 0.5799777915017323, - 0.5823366947972535, - 0.5846929440867458, - 0.5870464660790119, - 0.5893971876851449, - 0.5917450360243719, - 0.5940899384298793, - 0.5964318224546208, - 0.5987706158771039, - 0.6011062467071583, - 0.6034386431916822, - 0.6057677338203681, - 0.6080934473314057, - 0.6104157127171639, - 0.6127344592298474, - 0.6150496163871310, - 0.6173611139777690, - 0.6196688820671789, - 0.6219728510029997, - 0.6242729514206247, - 0.6265691142487051, - 0.6288612707146283, - 0.6311493523499663, - 0.6334332909958958, - 0.6357130188085891, - 0.6379884682645743, - 0.6402595721660647, - 0.6425262636462578, - 0.6447884761746012, - 0.6470461435620266, - 0.6492991999661505, - 0.6515475798964411, - 0.6537912182193508, - 0.6560300501634142, - 0.6582640113243098, - 0.6604930376698862, - 0.6627170655451516, - 0.6649360316772256, - 0.6671498731802533, - 0.6693585275602818, - 0.6715619327200959, - 0.6737600269640164, - 0.6759527490026566, - 0.6781400379576392, - 0.6803218333662715, - 0.6824980751861787, - 0.6846687037998949, - 0.6868336600194123, - 0.6889928850906855, - 0.6911463206980928, - 0.6932939089688525, - 0.6954355924773949, - 0.6975713142496884, - 0.6997010177675195, - 0.7018246469727265, - 0.7039421462713862, - 0.7060534605379528, - 0.7081585351193496, - 0.7102573158390105, - 0.7123497490008750, - 0.7144357813933307, - 0.7165153602931092, - 0.7185884334691287, - 0.7206549491862871, - 0.7227148562092042, - 0.7247681038059106, - 0.7268146417514855, - 0.7288544203316418, - 0.7308873903462577, - 0.7329135031128549, - 0.7349327104700221, - 0.7369449647807855, - 0.7389502189359237, - 0.7409484263572271, - 0.7429395410007016, - 0.7449235173597176, - 0.7469003104681008, - 0.7488698759031670, - 0.7508321697887005, - 0.7527871487978728, - 0.7547347701561059, - 0.7566749916438754, - 0.7586077715994560, - 0.7605330689216074, - 0.7624508430722016, - 0.7643610540787891, - 0.7662636625371070, - 0.7681586296135255, - 0.7700459170474343, - 0.7719254871535672, - 0.7737973028242671, - 0.7756613275316875, - 0.7775175253299340, - 0.7793658608571425, - 0.7812062993374951, - 0.7830388065831744, - 0.7848633489962533, - 0.7866798935705233, - 0.7884884078932579, - 0.7902888601469138, - 0.7920812191107668, - 0.7938654541624850, - 0.7956415352796368, - 0.7974094330411343, - 0.7991691186286133, - 0.8009205638277465, - 0.8026637410294932, - 0.8043986232312831, - 0.8061251840381346, - 0.8078433976637077, - 0.8095532389312917, - 0.8112546832747255, - 0.8129477067392539, - 0.8146322859823164, - 0.8163083982742698, - 0.8179760214990457, - 0.8196351341547393, - 0.8212857153541345, - 0.8229277448251595, - 0.8245612029112778, - 0.8261860705718113, - 0.8278023293821971, - 0.8294099615341773, - 0.8310089498359212, - 0.8325992777120815, - 0.8341809292037831, - 0.8357538889685445, - 0.8373181422801330, - 0.8388736750283521, - 0.8404204737187619, - 0.8419585254723335, - 0.8434878180250348, - 0.8450083397273509, - 0.8465200795437368, - 0.8480230270520029, - 0.8495171724426350, - 0.8510025065180464, - 0.8524790206917633, - 0.8539467069875448, - 0.8554055580384357, - 0.8568555670857525, - 0.8582967279780043, - 0.8597290351697464, - 0.8611524837203691, - 0.8625670692928198, - 0.8639727881522599, - 0.8653696371646555, - 0.8667576137953045, - 0.8681367161072958, - 0.8695069427599065, - 0.8708682930069319, - 0.8722207666949527, - 0.8735643642615368, - 0.8748990867333771, - 0.8762249357243662, - 0.8775419134336067, - 0.8788500226433579, - 0.8801492667169208, - 0.8814396495964587, - 0.8827211758007560, - 0.8839938504229149, - 0.8852576791279895, - 0.8865126681505587, - 0.8877588242922386, - 0.8889961549191320, - 0.8902246679592184, - 0.8914443718996848, - 0.8926552757841945, - 0.8938573892100969, - 0.8950507223255798, - 0.8962352858267605, - 0.8974110909547198, - 0.8985781494924783, - 0.8997364737619142, - 0.9008860766206249, - 0.9020269714587307, - 0.9031591721956235, - 0.9042826932766591, - 0.9053975496697941, - 0.9065037568621681, - 0.9076013308566311, - 0.9086902881682180, - 0.9097706458205682, - 0.9108424213422940, - 0.9119056327632955, - 0.9129602986110235, - 0.9140064379066919, - 0.9150440701614393, - 0.9160732153724396, - 0.9170938940189634, - 0.9181061270583908, - 0.9191099359221748, - 0.9201053425117579, - 0.9210923691944400, - 0.9220710387992010, - 0.9230413746124764, - 0.9240034003738882, - 0.9249571402719298, - 0.9259026189396085, - 0.9268398614500427, - 0.9277688933120170, - 0.9286897404654957, - 0.9296024292770939, - 0.9305069865355076, - 0.9314034394469048, - 0.9322918156302762, - 0.9331721431127471, - 0.9340444503248519, - 0.9349087660957711, - 0.9357651196485313, - 0.9366135405951697, - 0.9374540589318637, - 0.9382867050340261, - 0.9391115096513655, - 0.9399285039029165, - 0.9407377192720349, - 0.9415391876013639, - 0.9423329410877687, - 0.9431190122772415, - 0.9438974340597782, - 0.9446682396642262, - 0.9454314626531054, - 0.9461871369174033, - 0.9469352966713429, - 0.9476759764471278, - 0.9484092110896616, - 0.9491350357512457, - 0.9498534858862532, - 0.9505645972457831, - 0.9512684058722927, - 0.9519649480942105, - 0.9526542605205314, - 0.9533363800353921, - 0.9540113437926313, - 0.9546791892103320, - 0.9553399539653500, - 0.9559936759878265, - 0.9566403934556893, - 0.9572801447891388, - 0.9579129686451244, - 0.9585389039118085, - 0.9591579897030224, - 0.9597702653527108, - 0.9603757704093711, - 0.9609745446304828, - 0.9615666279769324, - 0.9621520606074324, - 0.9627308828729358, - 0.9633031353110477, - 0.9638688586404335, - 0.9644280937552258, - 0.9649808817194311, - 0.9655272637613366, - 0.9660672812679171, - 0.9666009757792454, - 0.9671283889829055, - 0.9676495627084089, - 0.9681645389216160, - 0.9686733597191652, - 0.9691760673229058, - 0.9696727040743406, - 0.9701633124290767, - 0.9706479349512860, - 0.9711266143081750, - 0.9715993932644684, - 0.9720663146769026, - 0.9725274214887337, - 0.9729827567242596, - 0.9734323634833574, - 0.9738762849360358, - 0.9743145643170059, - 0.9747472449202687, - 0.9751743700937215, - 0.9755959832337850, - 0.9760121277800496, - 0.9764228472099433, - 0.9768281850334235, - 0.9772281847876897, - 0.9776228900319223, - 0.9780123443420448, - 0.9783965913055132, - 0.9787756745161313, - 0.9791496375688939, - 0.9795185240548578, - 0.9798823775560431, - 0.9802412416403639, - 0.9805951598565897, - 0.9809441757293399, - 0.9812883327541090, - 0.9816276743923267, - 0.9819622440664515, - 0.9822920851550995, - 0.9826172409882086, - 0.9829377548422400, - 0.9832536699354163, - 0.9835650294229984, - 0.9838718763926001, - 0.9841742538595437, - 0.9844722047622547, - 0.9847657719576983, - 0.9850549982168574, - 0.9853399262202529, - 0.9856205985535073, - 0.9858970577029519, - 0.9861693460512790, - 0.9864375058732389, - 0.9867015793313820, - 0.9869616084718489, - 0.9872176352202061, - 0.9874697013773301, - 0.9877178486153397, - 0.9879621184735767, - 0.9882025523546365, - 0.9884391915204485, - 0.9886720770884069, - 0.9889012500275530, - 0.9891267511548089, - 0.9893486211312621, - 0.9895669004585049, - 0.9897816294750255, - 0.9899928483526520, - 0.9902005970930525, - 0.9904049155242876, - 0.9906058432974180, - 0.9908034198831690, - 0.9909976845686489, - 0.9911886764541239, - 0.9913764344498495, - 0.9915609972729590, - 0.9917424034444086, - 0.9919206912859797, - 0.9920958989173397, - 0.9922680642531603, - 0.9924372250002933, - 0.9926034186550070, - 0.9927666825002789, - 0.9929270536031491, - 0.9930845688121325, - 0.9932392647546895, - 0.9933911778347579, - 0.9935403442303433, - 0.9936867998911693, - 0.9938305805363887, - 0.9939717216523539, - 0.9941102584904481, - 0.9942462260649764, - 0.9943796591511174, - 0.9945105922829353, - 0.9946390597514524, - 0.9947650956027824, - 0.9948887336363228, - 0.9950100074030103, - 0.9951289502036336, - 0.9952455950872091, - 0.9953599748494155, - 0.9954721220310890, - 0.9955820689167787, - 0.9956898475333619, - 0.9957954896487196, - 0.9958990267704713, - 0.9960004901447701, - 0.9960999107551559, - 0.9961973193214694, - 0.9962927462988245, - 0.9963862218766388, - 0.9964777759777242, - 0.9965674382574342, - 0.9966552381028704, - 0.9967412046321465, - 0.9968253666937095, - 0.9969077528657186, - 0.9969883914554805, - 0.9970673104989413, - 0.9971445377602348, - 0.9972201007312871, - 0.9972940266314749, - 0.9973663424073412, - 0.9974370747323638, - 0.9975062500067785, - 0.9975738943574574, - 0.9976400336378379, - 0.9977046934279079, - 0.9977678990342401, - 0.9978296754900812, - 0.9978900475554902, - 0.9979490397175296, - 0.9980066761905056, - 0.9980629809162593, - 0.9981179775645063, - 0.9981716895332257, - 0.9982241399490979, - 0.9982753516679893, - 0.9983253472754841, - 0.9983741490874634, - 0.9984217791507299, - 0.9984682592436778, - 0.9985136108770075, - 0.9985578552944850, - 0.9986010134737439, - 0.9986431061271304, - 0.9986841537025921, - 0.9987241763846056, - 0.9987631940951476, - 0.9988012264947044, - 0.9988382929833222, - 0.9988744127016956, - 0.9989096045322947, - 0.9989438871005292, - 0.9989772787759494, - 0.9990097976734847, - 0.9990414616547146, - 0.9990722883291779, - 0.9991022950557125, - 0.9991314989438310, - 0.9991599168551279, - 0.9991875654047181, - 0.9992144609627068, - 0.9992406196556911, - 0.9992660573682882, - 0.9992907897446957, - 0.9993148321902777, - 0.9993381998731797, - 0.9993609077259696, - 0.9993829704473038, - 0.9994044025036201, - 0.9994252181308537, - 0.9994454313361775, - 0.9994650558997651, - 0.9994841053765757, - 0.9995025930981609, - 0.9995205321744921, - 0.9995379354958073, - 0.9995548157344778, - 0.9995711853468930, - 0.9995870565753632, - 0.9996024414500382, - 0.9996173517908444, - 0.9996317992094352, - 0.9996457951111574, - 0.9996593506970310, - 0.9996724769657434, - 0.9996851847156547, - 0.9996974845468164, - 0.9997093868630000, - 0.9997209018737374, - 0.9997320395963699, - 0.9997428098581069, - 0.9997532222980933, - 0.9997632863694836, - 0.9997730113415246, - 0.9997824063016426, - 0.9997914801575380, - 0.9998002416392840, - 0.9998086993014300, - 0.9998168615251084, - 0.9998247365201450, - 0.9998323323271717, - 0.9998396568197407, - 0.9998467177064404, - 0.9998535225330116, - 0.9998600786844637, - 0.9998663933871905, - 0.9998724737110845, - 0.9998783265716498, - 0.9998839587321121, - 0.9998893768055266, - 0.9998945872568815, - 0.9998995964051983, - 0.9999044104256269, - 0.9999090353515359, - 0.9999134770765971, - 0.9999177413568642, - 0.9999218338128448, - 0.9999257599315647, - 0.9999295250686255, - 0.9999331344502529, - 0.9999365931753376, - 0.9999399062174669, - 0.9999430784269460, - 0.9999461145328103, - 0.9999490191448277, - 0.9999517967554878, - 0.9999544517419835, - 0.9999569883681778, - 0.9999594107865607, - 0.9999617230401926, - 0.9999639290646355, - 0.9999660326898712, - 0.9999680376422052, - 0.9999699475461585, - 0.9999717659263435, - 0.9999734962093266, - 0.9999751417254756, - 0.9999767057107922, - 0.9999781913087290, - 0.9999796015719915, - 0.9999809394643231, - 0.9999822078622751, - 0.9999834095569596, - 0.9999845472557860, - 0.9999856235841805, - 0.9999866410872889, - 0.9999876022316609, - 0.9999885094069193, - 0.9999893649274085, - 0.9999901710338274, - 0.9999909298948430, - 0.9999916436086862, - 0.9999923142047299, - 0.9999929436450469, - 0.9999935338259505, - 0.9999940865795161, - 0.9999946036750835, - 0.9999950868207405, - 0.9999955376647868, - 0.9999959577971798, - 0.9999963487509599, - 0.9999967120036571, - 0.9999970489786785, - 0.9999973610466748, - 0.9999976495268890, - 0.9999979156884846, - 0.9999981607518545, - 0.9999983858899099, - 0.9999985922293493, - 0.9999987808519092, - 0.9999989527955938, - 0.9999991090558848, - 0.9999992505869332, - 0.9999993783027293, - 0.9999994930782556, - 0.9999995957506171, - 0.9999996871201549, - 0.9999997679515386, - 0.9999998389748399, - 0.9999999008865869, - 0.9999999543507984 + COEF_CONST(0.0003021562530949), + COEF_CONST(0.0004452267024786), + COEF_CONST(0.0005674947527496), + COEF_CONST(0.0006812465553466), + COEF_CONST(0.0007910496776387), + COEF_CONST(0.0008991655033895), + COEF_CONST(0.0010068978259384), + COEF_CONST(0.0011150758515751), + COEF_CONST(0.0012242653193642), + COEF_CONST(0.0013348735658205), + COEF_CONST(0.0014472068670273), + COEF_CONST(0.0015615039850448), + COEF_CONST(0.0016779568885263), + COEF_CONST(0.0017967241232412), + COEF_CONST(0.0019179397560955), + COEF_CONST(0.0020417195415393), + COEF_CONST(0.0021681652836642), + COEF_CONST(0.0022973679910599), + COEF_CONST(0.0024294102029937), + COEF_CONST(0.0025643677339078), + COEF_CONST(0.0027023110014772), + COEF_CONST(0.0028433060512612), + COEF_CONST(0.0029874153568025), + COEF_CONST(0.0031346984511728), + COEF_CONST(0.0032852124303662), + COEF_CONST(0.0034390123581190), + COEF_CONST(0.0035961515940931), + COEF_CONST(0.0037566820618961), + COEF_CONST(0.0039206544694386), + COEF_CONST(0.0040881184912194), + COEF_CONST(0.0042591229199617), + COEF_CONST(0.0044337157933972), + COEF_CONST(0.0046119445007641), + COEF_CONST(0.0047938558726415), + COEF_CONST(0.0049794962570131), + COEF_CONST(0.0051689115838900), + COEF_CONST(0.0053621474203763), + COEF_CONST(0.0055592490177131), + COEF_CONST(0.0057602613515573), + COEF_CONST(0.0059652291565289), + COEF_CONST(0.0061741969558843), + COEF_CONST(0.0063872090870253), + COEF_CONST(0.0066043097234387), + COEF_CONST(0.0068255428935640), + COEF_CONST(0.0070509524970088), + COEF_CONST(0.0072805823184660), + COEF_CONST(0.0075144760396340), + COEF_CONST(0.0077526772493942), + COEF_CONST(0.0079952294524673), + COEF_CONST(0.0082421760767325), + COEF_CONST(0.0084935604793733), + COEF_CONST(0.0087494259519870), + COEF_CONST(0.0090098157247792), + COEF_CONST(0.0092747729699467), + COEF_CONST(0.0095443408043399), + COEF_CONST(0.0098185622914832), + COEF_CONST(0.0100974804430226), + COEF_CONST(0.0103811382196612), + COEF_CONST(0.0106695785316351), + COEF_CONST(0.0109628442387771), + COEF_CONST(0.0112609781502091), + COEF_CONST(0.0115640230236993), + COEF_CONST(0.0118720215647169), + COEF_CONST(0.0121850164252137), + COEF_CONST(0.0125030502021561), + COEF_CONST(0.0128261654358321), + COEF_CONST(0.0131544046079532), + COEF_CONST(0.0134878101395681), + COEF_CONST(0.0138264243888068), + COEF_CONST(0.0141702896484671), + COEF_CONST(0.0145194481434592), + COEF_CONST(0.0148739420281182), + COEF_CONST(0.0152338133833959), + COEF_CONST(0.0155991042139432), + COEF_CONST(0.0159698564450882), + COEF_CONST(0.0163461119197227), + COEF_CONST(0.0167279123950996), + COEF_CONST(0.0171152995395520), + COEF_CONST(0.0175083149291368), + COEF_CONST(0.0179070000442104), + COEF_CONST(0.0183113962659409), + COEF_CONST(0.0187215448727609), + COEF_CONST(0.0191374870367659), + COEF_CONST(0.0195592638200623), + COEF_CONST(0.0199869161710679), + COEF_CONST(0.0204204849207691), + COEF_CONST(0.0208600107789370), + COEF_CONST(0.0213055343303066), + COEF_CONST(0.0217570960307201), + COEF_CONST(0.0222147362032386), + COEF_CONST(0.0226784950342228), + COEF_CONST(0.0231484125693867), + COEF_CONST(0.0236245287098244), + COEF_CONST(0.0241068832080138), + COEF_CONST(0.0245955156637973), + COEF_CONST(0.0250904655203431), + COEF_CONST(0.0255917720600868), + COEF_CONST(0.0260994744006559), + COEF_CONST(0.0266136114907790), + COEF_CONST(0.0271342221061795), + COEF_CONST(0.0276613448454576), + COEF_CONST(0.0281950181259587), + COEF_CONST(0.0287352801796329), + COEF_CONST(0.0292821690488833), + COEF_CONST(0.0298357225824074), + COEF_CONST(0.0303959784310299), + COEF_CONST(0.0309629740435296), + COEF_CONST(0.0315367466624615), + COEF_CONST(0.0321173333199732), + COEF_CONST(0.0327047708336193), + COEF_CONST(0.0332990958021720), + COEF_CONST(0.0339003446014307), + COEF_CONST(0.0345085533800302), + COEF_CONST(0.0351237580552491), + COEF_CONST(0.0357459943088193), + COEF_CONST(0.0363752975827358), + COEF_CONST(0.0370117030750704), + COEF_CONST(0.0376552457357870), + COEF_CONST(0.0383059602625614), + COEF_CONST(0.0389638810966056), + COEF_CONST(0.0396290424184964), + COEF_CONST(0.0403014781440112), + COEF_CONST(0.0409812219199691), + COEF_CONST(0.0416683071200799), + COEF_CONST(0.0423627668408009), + COEF_CONST(0.0430646338972016), + COEF_CONST(0.0437739408188385), + COEF_CONST(0.0444907198456388), + COEF_CONST(0.0452150029237951), + COEF_CONST(0.0459468217016708), + COEF_CONST(0.0466862075257170), + COEF_CONST(0.0474331914364021), + COEF_CONST(0.0481878041641539), + COEF_CONST(0.0489500761253148), + COEF_CONST(0.0497200374181119), + COEF_CONST(0.0504977178186404), + COEF_CONST(0.0512831467768636), + COEF_CONST(0.0520763534126273), + COEF_CONST(0.0528773665116913), + COEF_CONST(0.0536862145217772), + COEF_CONST(0.0545029255486345), + COEF_CONST(0.0553275273521232), + COEF_CONST(0.0561600473423164), + COEF_CONST(0.0570005125756209), + COEF_CONST(0.0578489497509179), + COEF_CONST(0.0587053852057233), + COEF_CONST(0.0595698449123695), + COEF_CONST(0.0604423544742077), + COEF_CONST(0.0613229391218317), + COEF_CONST(0.0622116237093247), + COEF_CONST(0.0631084327105284), + COEF_CONST(0.0640133902153352), + COEF_CONST(0.0649265199260043), + COEF_CONST(0.0658478451535027), + COEF_CONST(0.0667773888138695), + COEF_CONST(0.0677151734246072), + COEF_CONST(0.0686612211010977), + COEF_CONST(0.0696155535530446), + COEF_CONST(0.0705781920809429), + COEF_CONST(0.0715491575725758), + COEF_CONST(0.0725284704995383), + COEF_CONST(0.0735161509137906), + COEF_CONST(0.0745122184442388), + COEF_CONST(0.0755166922933461), + COEF_CONST(0.0765295912337720), + COEF_CONST(0.0775509336050437), + COEF_CONST(0.0785807373102561), + COEF_CONST(0.0796190198128044), + COEF_CONST(0.0806657981331473), + COEF_CONST(0.0817210888456026), + COEF_CONST(0.0827849080751753), + COEF_CONST(0.0838572714944183), + COEF_CONST(0.0849381943203265), + COEF_CONST(0.0860276913112652), + COEF_CONST(0.0871257767639319), + COEF_CONST(0.0882324645103534), + COEF_CONST(0.0893477679149177), + COEF_CONST(0.0904716998714418), + COEF_CONST(0.0916042728002747), + COEF_CONST(0.0927454986454381), + COEF_CONST(0.0938953888718020), + COEF_CONST(0.0950539544622996), + COEF_CONST(0.0962212059151784), + COEF_CONST(0.0973971532412897), + COEF_CONST(0.0985818059614169), + COEF_CONST(0.0997751731036425), + COEF_CONST(0.1009772632007537), + COEF_CONST(0.1021880842876888), + COEF_CONST(0.1034076438990227), + COEF_CONST(0.1046359490664932), + COEF_CONST(0.1058730063165681), + COEF_CONST(0.1071188216680533), + COEF_CONST(0.1083734006297428), + COEF_CONST(0.1096367481981100), + COEF_CONST(0.1109088688550422), + COEF_CONST(0.1121897665656167), + COEF_CONST(0.1134794447759207), + COEF_CONST(0.1147779064109143), + COEF_CONST(0.1160851538723372), + COEF_CONST(0.1174011890366591), + COEF_CONST(0.1187260132530751), + COEF_CONST(0.1200596273415457), + COEF_CONST(0.1214020315908810), + COEF_CONST(0.1227532257568719), + COEF_CONST(0.1241132090604651), + COEF_CONST(0.1254819801859856), + COEF_CONST(0.1268595372794049), + COEF_CONST(0.1282458779466558), + COEF_CONST(0.1296409992519942), + COEF_CONST(0.1310448977164081), + COEF_CONST(0.1324575693160745), + COEF_CONST(0.1338790094808633), + COEF_CONST(0.1353092130928902), + COEF_CONST(0.1367481744851168), + COEF_CONST(0.1381958874400010), + COEF_CONST(0.1396523451881945), + COEF_CONST(0.1411175404072910), + COEF_CONST(0.1425914652206223), + COEF_CONST(0.1440741111961058), + COEF_CONST(0.1455654693451402), + COEF_CONST(0.1470655301215526), + COEF_CONST(0.1485742834205956), + COEF_CONST(0.1500917185779945), + COEF_CONST(0.1516178243690463), + COEF_CONST(0.1531525890077689), + COEF_CONST(0.1546960001461024), + COEF_CONST(0.1562480448731608), + COEF_CONST(0.1578087097145364), + COEF_CONST(0.1593779806316558), + COEF_CONST(0.1609558430211876), + COEF_CONST(0.1625422817145027), + COEF_CONST(0.1641372809771871), + COEF_CONST(0.1657408245086070), + COEF_CONST(0.1673528954415270), + COEF_CONST(0.1689734763417811), + COEF_CONST(0.1706025492079969), + COEF_CONST(0.1722400954713725), + COEF_CONST(0.1738860959955082), + COEF_CONST(0.1755405310762898), + COEF_CONST(0.1772033804418275), + COEF_CONST(0.1788746232524467), + COEF_CONST(0.1805542381007349), + COEF_CONST(0.1822422030116404), + COEF_CONST(0.1839384954426268), + COEF_CONST(0.1856430922838810), + COEF_CONST(0.1873559698585756), + COEF_CONST(0.1890771039231862), + COEF_CONST(0.1908064696678625), + COEF_CONST(0.1925440417168546), + COEF_CONST(0.1942897941289937), + COEF_CONST(0.1960437003982277), + COEF_CONST(0.1978057334542116), + COEF_CONST(0.1995758656629525), + COEF_CONST(0.2013540688275098), + COEF_CONST(0.2031403141887507), + COEF_CONST(0.2049345724261595), + COEF_CONST(0.2067368136587033), + COEF_CONST(0.2085470074457521), + COEF_CONST(0.2103651227880538), + COEF_CONST(0.2121911281287646), + COEF_CONST(0.2140249913545346), + COEF_CONST(0.2158666797966480), + COEF_CONST(0.2177161602322188), + COEF_CONST(0.2195733988854414), + COEF_CONST(0.2214383614288963), + COEF_CONST(0.2233110129849106), + COEF_CONST(0.2251913181269740), + COEF_CONST(0.2270792408812093), + COEF_CONST(0.2289747447278976), + COEF_CONST(0.2308777926030592), + COEF_CONST(0.2327883469000885), + COEF_CONST(0.2347063694714437), + COEF_CONST(0.2366318216303919), + COEF_CONST(0.2385646641528076), + COEF_CONST(0.2405048572790267), + COEF_CONST(0.2424523607157545), + COEF_CONST(0.2444071336380283), + COEF_CONST(0.2463691346912334), + COEF_CONST(0.2483383219931741), + COEF_CONST(0.2503146531361985), + COEF_CONST(0.2522980851893767), + COEF_CONST(0.2542885747007335), + COEF_CONST(0.2562860776995335), + COEF_CONST(0.2582905496986215), + COEF_CONST(0.2603019456968142), + COEF_CONST(0.2623202201813464), + COEF_CONST(0.2643453271303700), + COEF_CONST(0.2663772200155053), + COEF_CONST(0.2684158518044454), + COEF_CONST(0.2704611749636135), + COEF_CONST(0.2725131414608710), + COEF_CONST(0.2745717027682799), + COEF_CONST(0.2766368098649151), + COEF_CONST(0.2787084132397296), + COEF_CONST(0.2807864628944707), + COEF_CONST(0.2828709083466482), + COEF_CONST(0.2849616986325523), + COEF_CONST(0.2870587823103237), + COEF_CONST(0.2891621074630737), + COEF_CONST(0.2912716217020546), + COEF_CONST(0.2933872721698803), + COEF_CONST(0.2955090055437973), + COEF_CONST(0.2976367680390041), + COEF_CONST(0.2997705054120213), + COEF_CONST(0.3019101629641097), + COEF_CONST(0.3040556855447379), + COEF_CONST(0.3062070175550981), + COEF_CONST(0.3083641029516701), + COEF_CONST(0.3105268852498334), + COEF_CONST(0.3126953075275265), + COEF_CONST(0.3148693124289546), + COEF_CONST(0.3170488421683428), + COEF_CONST(0.3192338385337370), + COEF_CONST(0.3214242428908514), + COEF_CONST(0.3236199961869606), + COEF_CONST(0.3258210389548392), + COEF_CONST(0.3280273113167459), + COEF_CONST(0.3302387529884521), + COEF_CONST(0.3324553032833160), + COEF_CONST(0.3346769011164010), + COEF_CONST(0.3369034850086373), + COEF_CONST(0.3391349930910280), + COEF_CONST(0.3413713631088974), + COEF_CONST(0.3436125324261830), + COEF_CONST(0.3458584380297697), + COEF_CONST(0.3481090165338656), + COEF_CONST(0.3503642041844199), + COEF_CONST(0.3526239368635820), + COEF_CONST(0.3548881500942010), + COEF_CONST(0.3571567790443668), + COEF_CONST(0.3594297585319891), + COEF_CONST(0.3617070230294185), + COEF_CONST(0.3639885066681048), + COEF_CONST(0.3662741432432950), + COEF_CONST(0.3685638662187693), + COEF_CONST(0.3708576087316147), + COEF_CONST(0.3731553035970366), + COEF_CONST(0.3754568833132069), + COEF_CONST(0.3777622800661488), + COEF_CONST(0.3800714257346570), + COEF_CONST(0.3823842518952546), + COEF_CONST(0.3847006898271841), + COEF_CONST(0.3870206705174334), + COEF_CONST(0.3893441246657958), + COEF_CONST(0.3916709826899639), + COEF_CONST(0.3940011747306560), + COEF_CONST(0.3963346306567764), + COEF_CONST(0.3986712800706062), + COEF_CONST(0.4010110523130271), + COEF_CONST(0.4033538764687756), + COEF_CONST(0.4056996813717284), + COEF_CONST(0.4080483956102172), + COEF_CONST(0.4103999475323736), + COEF_CONST(0.4127542652515031), + COEF_CONST(0.4151112766514873), + COEF_CONST(0.4174709093922143), + COEF_CONST(0.4198330909150365), + COEF_CONST(0.4221977484482556), + COEF_CONST(0.4245648090126334), + COEF_CONST(0.4269341994269293), + COEF_CONST(0.4293058463134616), + COEF_CONST(0.4316796761036958), + COEF_CONST(0.4340556150438547), + COEF_CONST(0.4364335892005536), + COEF_CONST(0.4388135244664580), + COEF_CONST(0.4411953465659639), + COEF_CONST(0.4435789810609000), + COEF_CONST(0.4459643533562509), + COEF_CONST(0.4483513887059016), + COEF_CONST(0.4507400122184019), + COEF_CONST(0.4531301488627497), + COEF_CONST(0.4555217234741947), + COEF_CONST(0.4579146607600593), + COEF_CONST(0.4603088853055777), + COEF_CONST(0.4627043215797521), + COEF_CONST(0.4651008939412254), + COEF_CONST(0.4674985266441709), + COEF_CONST(0.4698971438441951), + COEF_CONST(0.4722966696042580), + COEF_CONST(0.4746970279006055), + COEF_CONST(0.4770981426287164), + COEF_CONST(0.4794999376092619), + COEF_CONST(0.4819023365940778), + COEF_CONST(0.4843052632721476), + COEF_CONST(0.4867086412755978), + COEF_CONST(0.4891123941857028), + COEF_CONST(0.4915164455388997), + COEF_CONST(0.4939207188328126), + COEF_CONST(0.4963251375322855), + COEF_CONST(0.4987296250754225), + COEF_CONST(0.5011341048796359), + COEF_CONST(0.5035385003477012), + COEF_CONST(0.5059427348738168), + COEF_CONST(0.5083467318496706), + COEF_CONST(0.5107504146705106), + COEF_CONST(0.5131537067412193), + COEF_CONST(0.5155565314823923), + COEF_CONST(0.5179588123364193), + COEF_CONST(0.5203604727735667), + COEF_CONST(0.5227614362980630), + COEF_CONST(0.5251616264541841), + COEF_CONST(0.5275609668323384), + COEF_CONST(0.5299593810751532), + COEF_CONST(0.5323567928835578), + COEF_CONST(0.5347531260228663), + COEF_CONST(0.5371483043288580), + COEF_CONST(0.5395422517138538), + COEF_CONST(0.5419348921727899), + COEF_CONST(0.5443261497892862), + COEF_CONST(0.5467159487417104), + COEF_CONST(0.5491042133092364), + COEF_CONST(0.5514908678778958), + COEF_CONST(0.5538758369466227), + COEF_CONST(0.5562590451332913), + COEF_CONST(0.5586404171807443), + COEF_CONST(0.5610198779628133), + COEF_CONST(0.5633973524903286), + COEF_CONST(0.5657727659171199), + COEF_CONST(0.5681460435460047), + COEF_CONST(0.5705171108347663), + COEF_CONST(0.5728858934021188), + COEF_CONST(0.5752523170336598), + COEF_CONST(0.5776163076878088), + COEF_CONST(0.5799777915017323), + COEF_CONST(0.5823366947972535), + COEF_CONST(0.5846929440867458), + COEF_CONST(0.5870464660790119), + COEF_CONST(0.5893971876851449), + COEF_CONST(0.5917450360243719), + COEF_CONST(0.5940899384298793), + COEF_CONST(0.5964318224546208), + COEF_CONST(0.5987706158771039), + COEF_CONST(0.6011062467071583), + COEF_CONST(0.6034386431916822), + COEF_CONST(0.6057677338203681), + COEF_CONST(0.6080934473314057), + COEF_CONST(0.6104157127171639), + COEF_CONST(0.6127344592298474), + COEF_CONST(0.6150496163871310), + COEF_CONST(0.6173611139777690), + COEF_CONST(0.6196688820671789), + COEF_CONST(0.6219728510029997), + COEF_CONST(0.6242729514206247), + COEF_CONST(0.6265691142487051), + COEF_CONST(0.6288612707146283), + COEF_CONST(0.6311493523499663), + COEF_CONST(0.6334332909958958), + COEF_CONST(0.6357130188085891), + COEF_CONST(0.6379884682645743), + COEF_CONST(0.6402595721660647), + COEF_CONST(0.6425262636462578), + COEF_CONST(0.6447884761746012), + COEF_CONST(0.6470461435620266), + COEF_CONST(0.6492991999661505), + COEF_CONST(0.6515475798964411), + COEF_CONST(0.6537912182193508), + COEF_CONST(0.6560300501634142), + COEF_CONST(0.6582640113243098), + COEF_CONST(0.6604930376698862), + COEF_CONST(0.6627170655451516), + COEF_CONST(0.6649360316772256), + COEF_CONST(0.6671498731802533), + COEF_CONST(0.6693585275602818), + COEF_CONST(0.6715619327200959), + COEF_CONST(0.6737600269640164), + COEF_CONST(0.6759527490026566), + COEF_CONST(0.6781400379576392), + COEF_CONST(0.6803218333662715), + COEF_CONST(0.6824980751861787), + COEF_CONST(0.6846687037998949), + COEF_CONST(0.6868336600194123), + COEF_CONST(0.6889928850906855), + COEF_CONST(0.6911463206980928), + COEF_CONST(0.6932939089688525), + COEF_CONST(0.6954355924773949), + COEF_CONST(0.6975713142496884), + COEF_CONST(0.6997010177675195), + COEF_CONST(0.7018246469727265), + COEF_CONST(0.7039421462713862), + COEF_CONST(0.7060534605379528), + COEF_CONST(0.7081585351193496), + COEF_CONST(0.7102573158390105), + COEF_CONST(0.7123497490008750), + COEF_CONST(0.7144357813933307), + COEF_CONST(0.7165153602931092), + COEF_CONST(0.7185884334691287), + COEF_CONST(0.7206549491862871), + COEF_CONST(0.7227148562092042), + COEF_CONST(0.7247681038059106), + COEF_CONST(0.7268146417514855), + COEF_CONST(0.7288544203316418), + COEF_CONST(0.7308873903462577), + COEF_CONST(0.7329135031128549), + COEF_CONST(0.7349327104700221), + COEF_CONST(0.7369449647807855), + COEF_CONST(0.7389502189359237), + COEF_CONST(0.7409484263572271), + COEF_CONST(0.7429395410007016), + COEF_CONST(0.7449235173597176), + COEF_CONST(0.7469003104681008), + COEF_CONST(0.7488698759031670), + COEF_CONST(0.7508321697887005), + COEF_CONST(0.7527871487978728), + COEF_CONST(0.7547347701561059), + COEF_CONST(0.7566749916438754), + COEF_CONST(0.7586077715994560), + COEF_CONST(0.7605330689216074), + COEF_CONST(0.7624508430722016), + COEF_CONST(0.7643610540787891), + COEF_CONST(0.7662636625371070), + COEF_CONST(0.7681586296135255), + COEF_CONST(0.7700459170474343), + COEF_CONST(0.7719254871535672), + COEF_CONST(0.7737973028242671), + COEF_CONST(0.7756613275316875), + COEF_CONST(0.7775175253299340), + COEF_CONST(0.7793658608571425), + COEF_CONST(0.7812062993374951), + COEF_CONST(0.7830388065831744), + COEF_CONST(0.7848633489962533), + COEF_CONST(0.7866798935705233), + COEF_CONST(0.7884884078932579), + COEF_CONST(0.7902888601469138), + COEF_CONST(0.7920812191107668), + COEF_CONST(0.7938654541624850), + COEF_CONST(0.7956415352796368), + COEF_CONST(0.7974094330411343), + COEF_CONST(0.7991691186286133), + COEF_CONST(0.8009205638277465), + COEF_CONST(0.8026637410294932), + COEF_CONST(0.8043986232312831), + COEF_CONST(0.8061251840381346), + COEF_CONST(0.8078433976637077), + COEF_CONST(0.8095532389312917), + COEF_CONST(0.8112546832747255), + COEF_CONST(0.8129477067392539), + COEF_CONST(0.8146322859823164), + COEF_CONST(0.8163083982742698), + COEF_CONST(0.8179760214990457), + COEF_CONST(0.8196351341547393), + COEF_CONST(0.8212857153541345), + COEF_CONST(0.8229277448251595), + COEF_CONST(0.8245612029112778), + COEF_CONST(0.8261860705718113), + COEF_CONST(0.8278023293821971), + COEF_CONST(0.8294099615341773), + COEF_CONST(0.8310089498359212), + COEF_CONST(0.8325992777120815), + COEF_CONST(0.8341809292037831), + COEF_CONST(0.8357538889685445), + COEF_CONST(0.8373181422801330), + COEF_CONST(0.8388736750283521), + COEF_CONST(0.8404204737187619), + COEF_CONST(0.8419585254723335), + COEF_CONST(0.8434878180250348), + COEF_CONST(0.8450083397273509), + COEF_CONST(0.8465200795437368), + COEF_CONST(0.8480230270520029), + COEF_CONST(0.8495171724426350), + COEF_CONST(0.8510025065180464), + COEF_CONST(0.8524790206917633), + COEF_CONST(0.8539467069875448), + COEF_CONST(0.8554055580384357), + COEF_CONST(0.8568555670857525), + COEF_CONST(0.8582967279780043), + COEF_CONST(0.8597290351697464), + COEF_CONST(0.8611524837203691), + COEF_CONST(0.8625670692928198), + COEF_CONST(0.8639727881522599), + COEF_CONST(0.8653696371646555), + COEF_CONST(0.8667576137953045), + COEF_CONST(0.8681367161072958), + COEF_CONST(0.8695069427599065), + COEF_CONST(0.8708682930069319), + COEF_CONST(0.8722207666949527), + COEF_CONST(0.8735643642615368), + COEF_CONST(0.8748990867333771), + COEF_CONST(0.8762249357243662), + COEF_CONST(0.8775419134336067), + COEF_CONST(0.8788500226433579), + COEF_CONST(0.8801492667169208), + COEF_CONST(0.8814396495964587), + COEF_CONST(0.8827211758007560), + COEF_CONST(0.8839938504229149), + COEF_CONST(0.8852576791279895), + COEF_CONST(0.8865126681505587), + COEF_CONST(0.8877588242922386), + COEF_CONST(0.8889961549191320), + COEF_CONST(0.8902246679592184), + COEF_CONST(0.8914443718996848), + COEF_CONST(0.8926552757841945), + COEF_CONST(0.8938573892100969), + COEF_CONST(0.8950507223255798), + COEF_CONST(0.8962352858267605), + COEF_CONST(0.8974110909547198), + COEF_CONST(0.8985781494924783), + COEF_CONST(0.8997364737619142), + COEF_CONST(0.9008860766206249), + COEF_CONST(0.9020269714587307), + COEF_CONST(0.9031591721956235), + COEF_CONST(0.9042826932766591), + COEF_CONST(0.9053975496697941), + COEF_CONST(0.9065037568621681), + COEF_CONST(0.9076013308566311), + COEF_CONST(0.9086902881682180), + COEF_CONST(0.9097706458205682), + COEF_CONST(0.9108424213422940), + COEF_CONST(0.9119056327632955), + COEF_CONST(0.9129602986110235), + COEF_CONST(0.9140064379066919), + COEF_CONST(0.9150440701614393), + COEF_CONST(0.9160732153724396), + COEF_CONST(0.9170938940189634), + COEF_CONST(0.9181061270583908), + COEF_CONST(0.9191099359221748), + COEF_CONST(0.9201053425117579), + COEF_CONST(0.9210923691944400), + COEF_CONST(0.9220710387992010), + COEF_CONST(0.9230413746124764), + COEF_CONST(0.9240034003738882), + COEF_CONST(0.9249571402719298), + COEF_CONST(0.9259026189396085), + COEF_CONST(0.9268398614500427), + COEF_CONST(0.9277688933120170), + COEF_CONST(0.9286897404654957), + COEF_CONST(0.9296024292770939), + COEF_CONST(0.9305069865355076), + COEF_CONST(0.9314034394469048), + COEF_CONST(0.9322918156302762), + COEF_CONST(0.9331721431127471), + COEF_CONST(0.9340444503248519), + COEF_CONST(0.9349087660957711), + COEF_CONST(0.9357651196485313), + COEF_CONST(0.9366135405951697), + COEF_CONST(0.9374540589318637), + COEF_CONST(0.9382867050340261), + COEF_CONST(0.9391115096513655), + COEF_CONST(0.9399285039029165), + COEF_CONST(0.9407377192720349), + COEF_CONST(0.9415391876013639), + COEF_CONST(0.9423329410877687), + COEF_CONST(0.9431190122772415), + COEF_CONST(0.9438974340597782), + COEF_CONST(0.9446682396642262), + COEF_CONST(0.9454314626531054), + COEF_CONST(0.9461871369174033), + COEF_CONST(0.9469352966713429), + COEF_CONST(0.9476759764471278), + COEF_CONST(0.9484092110896616), + COEF_CONST(0.9491350357512457), + COEF_CONST(0.9498534858862532), + COEF_CONST(0.9505645972457831), + COEF_CONST(0.9512684058722927), + COEF_CONST(0.9519649480942105), + COEF_CONST(0.9526542605205314), + COEF_CONST(0.9533363800353921), + COEF_CONST(0.9540113437926313), + COEF_CONST(0.9546791892103320), + COEF_CONST(0.9553399539653500), + COEF_CONST(0.9559936759878265), + COEF_CONST(0.9566403934556893), + COEF_CONST(0.9572801447891388), + COEF_CONST(0.9579129686451244), + COEF_CONST(0.9585389039118085), + COEF_CONST(0.9591579897030224), + COEF_CONST(0.9597702653527108), + COEF_CONST(0.9603757704093711), + COEF_CONST(0.9609745446304828), + COEF_CONST(0.9615666279769324), + COEF_CONST(0.9621520606074324), + COEF_CONST(0.9627308828729358), + COEF_CONST(0.9633031353110477), + COEF_CONST(0.9638688586404335), + COEF_CONST(0.9644280937552258), + COEF_CONST(0.9649808817194311), + COEF_CONST(0.9655272637613366), + COEF_CONST(0.9660672812679171), + COEF_CONST(0.9666009757792454), + COEF_CONST(0.9671283889829055), + COEF_CONST(0.9676495627084089), + COEF_CONST(0.9681645389216160), + COEF_CONST(0.9686733597191652), + COEF_CONST(0.9691760673229058), + COEF_CONST(0.9696727040743406), + COEF_CONST(0.9701633124290767), + COEF_CONST(0.9706479349512860), + COEF_CONST(0.9711266143081750), + COEF_CONST(0.9715993932644684), + COEF_CONST(0.9720663146769026), + COEF_CONST(0.9725274214887337), + COEF_CONST(0.9729827567242596), + COEF_CONST(0.9734323634833574), + COEF_CONST(0.9738762849360358), + COEF_CONST(0.9743145643170059), + COEF_CONST(0.9747472449202687), + COEF_CONST(0.9751743700937215), + COEF_CONST(0.9755959832337850), + COEF_CONST(0.9760121277800496), + COEF_CONST(0.9764228472099433), + COEF_CONST(0.9768281850334235), + COEF_CONST(0.9772281847876897), + COEF_CONST(0.9776228900319223), + COEF_CONST(0.9780123443420448), + COEF_CONST(0.9783965913055132), + COEF_CONST(0.9787756745161313), + COEF_CONST(0.9791496375688939), + COEF_CONST(0.9795185240548578), + COEF_CONST(0.9798823775560431), + COEF_CONST(0.9802412416403639), + COEF_CONST(0.9805951598565897), + COEF_CONST(0.9809441757293399), + COEF_CONST(0.9812883327541090), + COEF_CONST(0.9816276743923267), + COEF_CONST(0.9819622440664515), + COEF_CONST(0.9822920851550995), + COEF_CONST(0.9826172409882086), + COEF_CONST(0.9829377548422400), + COEF_CONST(0.9832536699354163), + COEF_CONST(0.9835650294229984), + COEF_CONST(0.9838718763926001), + COEF_CONST(0.9841742538595437), + COEF_CONST(0.9844722047622547), + COEF_CONST(0.9847657719576983), + COEF_CONST(0.9850549982168574), + COEF_CONST(0.9853399262202529), + COEF_CONST(0.9856205985535073), + COEF_CONST(0.9858970577029519), + COEF_CONST(0.9861693460512790), + COEF_CONST(0.9864375058732389), + COEF_CONST(0.9867015793313820), + COEF_CONST(0.9869616084718489), + COEF_CONST(0.9872176352202061), + COEF_CONST(0.9874697013773301), + COEF_CONST(0.9877178486153397), + COEF_CONST(0.9879621184735767), + COEF_CONST(0.9882025523546365), + COEF_CONST(0.9884391915204485), + COEF_CONST(0.9886720770884069), + COEF_CONST(0.9889012500275530), + COEF_CONST(0.9891267511548089), + COEF_CONST(0.9893486211312621), + COEF_CONST(0.9895669004585049), + COEF_CONST(0.9897816294750255), + COEF_CONST(0.9899928483526520), + COEF_CONST(0.9902005970930525), + COEF_CONST(0.9904049155242876), + COEF_CONST(0.9906058432974180), + COEF_CONST(0.9908034198831690), + COEF_CONST(0.9909976845686489), + COEF_CONST(0.9911886764541239), + COEF_CONST(0.9913764344498495), + COEF_CONST(0.9915609972729590), + COEF_CONST(0.9917424034444086), + COEF_CONST(0.9919206912859797), + COEF_CONST(0.9920958989173397), + COEF_CONST(0.9922680642531603), + COEF_CONST(0.9924372250002933), + COEF_CONST(0.9926034186550070), + COEF_CONST(0.9927666825002789), + COEF_CONST(0.9929270536031491), + COEF_CONST(0.9930845688121325), + COEF_CONST(0.9932392647546895), + COEF_CONST(0.9933911778347579), + COEF_CONST(0.9935403442303433), + COEF_CONST(0.9936867998911693), + COEF_CONST(0.9938305805363887), + COEF_CONST(0.9939717216523539), + COEF_CONST(0.9941102584904481), + COEF_CONST(0.9942462260649764), + COEF_CONST(0.9943796591511174), + COEF_CONST(0.9945105922829353), + COEF_CONST(0.9946390597514524), + COEF_CONST(0.9947650956027824), + COEF_CONST(0.9948887336363228), + COEF_CONST(0.9950100074030103), + COEF_CONST(0.9951289502036336), + COEF_CONST(0.9952455950872091), + COEF_CONST(0.9953599748494155), + COEF_CONST(0.9954721220310890), + COEF_CONST(0.9955820689167787), + COEF_CONST(0.9956898475333619), + COEF_CONST(0.9957954896487196), + COEF_CONST(0.9958990267704713), + COEF_CONST(0.9960004901447701), + COEF_CONST(0.9960999107551559), + COEF_CONST(0.9961973193214694), + COEF_CONST(0.9962927462988245), + COEF_CONST(0.9963862218766388), + COEF_CONST(0.9964777759777242), + COEF_CONST(0.9965674382574342), + COEF_CONST(0.9966552381028704), + COEF_CONST(0.9967412046321465), + COEF_CONST(0.9968253666937095), + COEF_CONST(0.9969077528657186), + COEF_CONST(0.9969883914554805), + COEF_CONST(0.9970673104989413), + COEF_CONST(0.9971445377602348), + COEF_CONST(0.9972201007312871), + COEF_CONST(0.9972940266314749), + COEF_CONST(0.9973663424073412), + COEF_CONST(0.9974370747323638), + COEF_CONST(0.9975062500067785), + COEF_CONST(0.9975738943574574), + COEF_CONST(0.9976400336378379), + COEF_CONST(0.9977046934279079), + COEF_CONST(0.9977678990342401), + COEF_CONST(0.9978296754900812), + COEF_CONST(0.9978900475554902), + COEF_CONST(0.9979490397175296), + COEF_CONST(0.9980066761905056), + COEF_CONST(0.9980629809162593), + COEF_CONST(0.9981179775645063), + COEF_CONST(0.9981716895332257), + COEF_CONST(0.9982241399490979), + COEF_CONST(0.9982753516679893), + COEF_CONST(0.9983253472754841), + COEF_CONST(0.9983741490874634), + COEF_CONST(0.9984217791507299), + COEF_CONST(0.9984682592436778), + COEF_CONST(0.9985136108770075), + COEF_CONST(0.9985578552944850), + COEF_CONST(0.9986010134737439), + COEF_CONST(0.9986431061271304), + COEF_CONST(0.9986841537025921), + COEF_CONST(0.9987241763846056), + COEF_CONST(0.9987631940951476), + COEF_CONST(0.9988012264947044), + COEF_CONST(0.9988382929833222), + COEF_CONST(0.9988744127016956), + COEF_CONST(0.9989096045322947), + COEF_CONST(0.9989438871005292), + COEF_CONST(0.9989772787759494), + COEF_CONST(0.9990097976734847), + COEF_CONST(0.9990414616547146), + COEF_CONST(0.9990722883291779), + COEF_CONST(0.9991022950557125), + COEF_CONST(0.9991314989438310), + COEF_CONST(0.9991599168551279), + COEF_CONST(0.9991875654047181), + COEF_CONST(0.9992144609627068), + COEF_CONST(0.9992406196556911), + COEF_CONST(0.9992660573682882), + COEF_CONST(0.9992907897446957), + COEF_CONST(0.9993148321902777), + COEF_CONST(0.9993381998731797), + COEF_CONST(0.9993609077259696), + COEF_CONST(0.9993829704473038), + COEF_CONST(0.9994044025036201), + COEF_CONST(0.9994252181308537), + COEF_CONST(0.9994454313361775), + COEF_CONST(0.9994650558997651), + COEF_CONST(0.9994841053765757), + COEF_CONST(0.9995025930981609), + COEF_CONST(0.9995205321744921), + COEF_CONST(0.9995379354958073), + COEF_CONST(0.9995548157344778), + COEF_CONST(0.9995711853468930), + COEF_CONST(0.9995870565753632), + COEF_CONST(0.9996024414500382), + COEF_CONST(0.9996173517908444), + COEF_CONST(0.9996317992094352), + COEF_CONST(0.9996457951111574), + COEF_CONST(0.9996593506970310), + COEF_CONST(0.9996724769657434), + COEF_CONST(0.9996851847156547), + COEF_CONST(0.9996974845468164), + COEF_CONST(0.9997093868630000), + COEF_CONST(0.9997209018737374), + COEF_CONST(0.9997320395963699), + COEF_CONST(0.9997428098581069), + COEF_CONST(0.9997532222980933), + COEF_CONST(0.9997632863694836), + COEF_CONST(0.9997730113415246), + COEF_CONST(0.9997824063016426), + COEF_CONST(0.9997914801575380), + COEF_CONST(0.9998002416392840), + COEF_CONST(0.9998086993014300), + COEF_CONST(0.9998168615251084), + COEF_CONST(0.9998247365201450), + COEF_CONST(0.9998323323271717), + COEF_CONST(0.9998396568197407), + COEF_CONST(0.9998467177064404), + COEF_CONST(0.9998535225330116), + COEF_CONST(0.9998600786844637), + COEF_CONST(0.9998663933871905), + COEF_CONST(0.9998724737110845), + COEF_CONST(0.9998783265716498), + COEF_CONST(0.9998839587321121), + COEF_CONST(0.9998893768055266), + COEF_CONST(0.9998945872568815), + COEF_CONST(0.9998995964051983), + COEF_CONST(0.9999044104256269), + COEF_CONST(0.9999090353515359), + COEF_CONST(0.9999134770765971), + COEF_CONST(0.9999177413568642), + COEF_CONST(0.9999218338128448), + COEF_CONST(0.9999257599315647), + COEF_CONST(0.9999295250686255), + COEF_CONST(0.9999331344502529), + COEF_CONST(0.9999365931753376), + COEF_CONST(0.9999399062174669), + COEF_CONST(0.9999430784269460), + COEF_CONST(0.9999461145328103), + COEF_CONST(0.9999490191448277), + COEF_CONST(0.9999517967554878), + COEF_CONST(0.9999544517419835), + COEF_CONST(0.9999569883681778), + COEF_CONST(0.9999594107865607), + COEF_CONST(0.9999617230401926), + COEF_CONST(0.9999639290646355), + COEF_CONST(0.9999660326898712), + COEF_CONST(0.9999680376422052), + COEF_CONST(0.9999699475461585), + COEF_CONST(0.9999717659263435), + COEF_CONST(0.9999734962093266), + COEF_CONST(0.9999751417254756), + COEF_CONST(0.9999767057107922), + COEF_CONST(0.9999781913087290), + COEF_CONST(0.9999796015719915), + COEF_CONST(0.9999809394643231), + COEF_CONST(0.9999822078622751), + COEF_CONST(0.9999834095569596), + COEF_CONST(0.9999845472557860), + COEF_CONST(0.9999856235841805), + COEF_CONST(0.9999866410872889), + COEF_CONST(0.9999876022316609), + COEF_CONST(0.9999885094069193), + COEF_CONST(0.9999893649274085), + COEF_CONST(0.9999901710338274), + COEF_CONST(0.9999909298948430), + COEF_CONST(0.9999916436086862), + COEF_CONST(0.9999923142047299), + COEF_CONST(0.9999929436450469), + COEF_CONST(0.9999935338259505), + COEF_CONST(0.9999940865795161), + COEF_CONST(0.9999946036750835), + COEF_CONST(0.9999950868207405), + COEF_CONST(0.9999955376647868), + COEF_CONST(0.9999959577971798), + COEF_CONST(0.9999963487509599), + COEF_CONST(0.9999967120036571), + COEF_CONST(0.9999970489786785), + COEF_CONST(0.9999973610466748), + COEF_CONST(0.9999976495268890), + COEF_CONST(0.9999979156884846), + COEF_CONST(0.9999981607518545), + COEF_CONST(0.9999983858899099), + COEF_CONST(0.9999985922293493), + COEF_CONST(0.9999987808519092), + COEF_CONST(0.9999989527955938), + COEF_CONST(0.9999991090558848), + COEF_CONST(0.9999992505869332), + COEF_CONST(0.9999993783027293), + COEF_CONST(0.9999994930782556), + COEF_CONST(0.9999995957506171), + COEF_CONST(0.9999996871201549), + COEF_CONST(0.9999997679515386), + COEF_CONST(0.9999998389748399), + COEF_CONST(0.9999999008865869), + COEF_CONST(0.9999999543507984) }; real_t kbd_short_128[] = { - 4.3795702929468881e-005, - 0.00011867384265436617, - 0.0002307165763996192, - 0.00038947282760568383, - 0.00060581272288302553, - 0.00089199695169487453, - 0.0012617254423430522, - 0.0017301724373162003, - 0.0023140071937421476, - 0.0030313989666022221, - 0.0039020049735530842, - 0.0049469401815512024, - 0.0061887279335368318, - 0.0076512306364647726, - 0.0093595599562652423, - 0.011339966208377799, - 0.013619706891715299, - 0.016226894586323766, - 0.019190324717288168, - 0.022539283975960878, - 0.026303340480472455, - 0.030512117046644357, - 0.03519504922365594, - 0.040381130021856941, - 0.046098643518702249, - 0.052374889768730587, - 0.059235903660769147, - 0.066706170556282418, - 0.074808341703430481, - 0.083562952548726227, - 0.092988147159339674, - 0.1030994120216919, - 0.11390932249409955, - 0.12542730516149531, - 0.13765941926783826, - 0.15060816028651081, - 0.16427228853114245, - 0.17864668550988483, - 0.19372224048676889, - 0.20948576943658073, - 0.22591996826744942, - 0.24300340184133981, - 0.26071052995068139, - 0.27901177101369551, - 0.29787360383626599, - 0.3172587073594233, - 0.33712613787396362, - 0.35743154274286698, - 0.37812740923363009, - 0.39916334663203618, - 0.42048639939189658, - 0.4420413886774246, - 0.4637712792815169, - 0.4856175685594023, - 0.50752069370766872, - 0.52942045344797806, - 0.55125643994680196, - 0.57296847662071559, - 0.59449705734411495, - 0.61578378249506627, - 0.63677178724712891, - 0.65740615754163356, - 0.67763432925662526, - 0.69740646622548552, - 0.71667581294953808, - 0.73539901809352737, - 0.75353642514900732, - 0.77105232699609816, - 0.78791518148597028, - 0.80409778560147072, - 0.81957740622770781, - 0.83433586607383625, - 0.84835958382689225, - 0.86163956818294229, - 0.87417136598406997, - 0.88595496528524853, - 0.89699465477567619, - 0.90729884157670959, - 0.91687983002436779, - 0.92575356460899649, - 0.93393934077779084, - 0.94145948779657318, - 0.94833902830402828, - 0.95460531956280026, - 0.96028768170574896, - 0.96541701848104766, - 0.97002543610646474, - 0.97414586584250062, - 0.97781169577969584, - 0.98105641710392333, - 0.98391328975491177, - 0.98641503193166202, - 0.98859353733226141, - 0.99047962335771556, - 0.9921028127769449, - 0.99349115056397752, - 0.99467105680259038, - 0.9956672157341897, - 0.99650250022834352, - 0.99719793020823266, - 0.99777266288955657, - 0.99824401211201486, - 0.99862749357391212, - 0.99893689243401962, - 0.99918434952623147, - 0.99938046234161726, - 0.99953439696357238, - 0.99965400728430465, - 0.99974595807027455, - 0.99981584876278362, - 0.99986833527824281, - 0.99990724749057802, - 0.99993570051598468, - 0.99995619835942084, - 0.99997072890647543, - 0.9999808496399144, - 0.99998776381655818, - 0.99999238714961569, - 0.99999540529959718, - 0.99999732268176988, - 0.99999850325054862, - 0.99999920402413744, - 0.9999996021706401, - 0.99999981649545566, - 0.99999992415545547, - 0.99999997338493041, - 0.99999999295825959, - 0.99999999904096815 + COEF_CONST(4.3795702929468881e-005), + COEF_CONST(0.00011867384265436617), + COEF_CONST(0.0002307165763996192), + COEF_CONST(0.00038947282760568383), + COEF_CONST(0.00060581272288302553), + COEF_CONST(0.00089199695169487453), + COEF_CONST(0.0012617254423430522), + COEF_CONST(0.0017301724373162003), + COEF_CONST(0.0023140071937421476), + COEF_CONST(0.0030313989666022221), + COEF_CONST(0.0039020049735530842), + COEF_CONST(0.0049469401815512024), + COEF_CONST(0.0061887279335368318), + COEF_CONST(0.0076512306364647726), + COEF_CONST(0.0093595599562652423), + COEF_CONST(0.011339966208377799), + COEF_CONST(0.013619706891715299), + COEF_CONST(0.016226894586323766), + COEF_CONST(0.019190324717288168), + COEF_CONST(0.022539283975960878), + COEF_CONST(0.026303340480472455), + COEF_CONST(0.030512117046644357), + COEF_CONST(0.03519504922365594), + COEF_CONST(0.040381130021856941), + COEF_CONST(0.046098643518702249), + COEF_CONST(0.052374889768730587), + COEF_CONST(0.059235903660769147), + COEF_CONST(0.066706170556282418), + COEF_CONST(0.074808341703430481), + COEF_CONST(0.083562952548726227), + COEF_CONST(0.092988147159339674), + COEF_CONST(0.1030994120216919), + COEF_CONST(0.11390932249409955), + COEF_CONST(0.12542730516149531), + COEF_CONST(0.13765941926783826), + COEF_CONST(0.15060816028651081), + COEF_CONST(0.16427228853114245), + COEF_CONST(0.17864668550988483), + COEF_CONST(0.19372224048676889), + COEF_CONST(0.20948576943658073), + COEF_CONST(0.22591996826744942), + COEF_CONST(0.24300340184133981), + COEF_CONST(0.26071052995068139), + COEF_CONST(0.27901177101369551), + COEF_CONST(0.29787360383626599), + COEF_CONST(0.3172587073594233), + COEF_CONST(0.33712613787396362), + COEF_CONST(0.35743154274286698), + COEF_CONST(0.37812740923363009), + COEF_CONST(0.39916334663203618), + COEF_CONST(0.42048639939189658), + COEF_CONST(0.4420413886774246), + COEF_CONST(0.4637712792815169), + COEF_CONST(0.4856175685594023), + COEF_CONST(0.50752069370766872), + COEF_CONST(0.52942045344797806), + COEF_CONST(0.55125643994680196), + COEF_CONST(0.57296847662071559), + COEF_CONST(0.59449705734411495), + COEF_CONST(0.61578378249506627), + COEF_CONST(0.63677178724712891), + COEF_CONST(0.65740615754163356), + COEF_CONST(0.67763432925662526), + COEF_CONST(0.69740646622548552), + COEF_CONST(0.71667581294953808), + COEF_CONST(0.73539901809352737), + COEF_CONST(0.75353642514900732), + COEF_CONST(0.77105232699609816), + COEF_CONST(0.78791518148597028), + COEF_CONST(0.80409778560147072), + COEF_CONST(0.81957740622770781), + COEF_CONST(0.83433586607383625), + COEF_CONST(0.84835958382689225), + COEF_CONST(0.86163956818294229), + COEF_CONST(0.87417136598406997), + COEF_CONST(0.88595496528524853), + COEF_CONST(0.89699465477567619), + COEF_CONST(0.90729884157670959), + COEF_CONST(0.91687983002436779), + COEF_CONST(0.92575356460899649), + COEF_CONST(0.93393934077779084), + COEF_CONST(0.94145948779657318), + COEF_CONST(0.94833902830402828), + COEF_CONST(0.95460531956280026), + COEF_CONST(0.96028768170574896), + COEF_CONST(0.96541701848104766), + COEF_CONST(0.97002543610646474), + COEF_CONST(0.97414586584250062), + COEF_CONST(0.97781169577969584), + COEF_CONST(0.98105641710392333), + COEF_CONST(0.98391328975491177), + COEF_CONST(0.98641503193166202), + COEF_CONST(0.98859353733226141), + COEF_CONST(0.99047962335771556), + COEF_CONST(0.9921028127769449), + COEF_CONST(0.99349115056397752), + COEF_CONST(0.99467105680259038), + COEF_CONST(0.9956672157341897), + COEF_CONST(0.99650250022834352), + COEF_CONST(0.99719793020823266), + COEF_CONST(0.99777266288955657), + COEF_CONST(0.99824401211201486), + COEF_CONST(0.99862749357391212), + COEF_CONST(0.99893689243401962), + COEF_CONST(0.99918434952623147), + COEF_CONST(0.99938046234161726), + COEF_CONST(0.99953439696357238), + COEF_CONST(0.99965400728430465), + COEF_CONST(0.99974595807027455), + COEF_CONST(0.99981584876278362), + COEF_CONST(0.99986833527824281), + COEF_CONST(0.99990724749057802), + COEF_CONST(0.99993570051598468), + COEF_CONST(0.99995619835942084), + COEF_CONST(0.99997072890647543), + COEF_CONST(0.9999808496399144), + COEF_CONST(0.99998776381655818), + COEF_CONST(0.99999238714961569), + COEF_CONST(0.99999540529959718), + COEF_CONST(0.99999732268176988), + COEF_CONST(0.99999850325054862), + COEF_CONST(0.99999920402413744), + COEF_CONST(0.9999996021706401), + COEF_CONST(0.99999981649545566), + COEF_CONST(0.99999992415545547), + COEF_CONST(0.99999997338493041), + COEF_CONST(0.99999999295825959), + COEF_CONST(0.99999999904096815) }; real_t kbd_short_120[] = { - 0.0000452320086910, - 0.0001274564692111, - 0.0002529398385345, - 0.0004335140496648, - 0.0006827100966952, - 0.0010158708222246, - 0.0014502162869659, - 0.0020048865156264, - 0.0027009618393178, - 0.0035614590925043, - 0.0046113018122711, - 0.0058772627936484, - 0.0073878776584103, - 0.0091733284512589, - 0.0112652966728373, - 0.0136967855861945, - 0.0165019120857793, - 0.0197156688892217, - 0.0233736582950619, - 0.0275117992367496, - 0.0321660098468534, - 0.0373718682174417, - 0.0431642544948834, - 0.0495769778717676, - 0.0566423924273392, - 0.0643910061132260, - 0.0728510874761729, - 0.0820482749475221, - 0.0920051937045235, - 0.1027410852163450, - 0.1142714546239370, - 0.1266077410648368, - 0.1397570159398145, - 0.1537217139274270, - 0.1684994012857075, - 0.1840825856392944, - 0.2004585710384133, - 0.2176093615976121, - 0.2355116164824983, - 0.2541366584185075, - 0.2734505372545160, - 0.2934141494343369, - 0.3139834135200387, - 0.3351095011824163, - 0.3567391223361566, - 0.3788148623608774, - 0.4012755686250732, - 0.4240567828288110, - 0.4470912150133537, - 0.4703092544619664, - 0.4936395121456694, - 0.5170093888596962, - 0.5403456627591340, - 0.5635750896430154, - 0.5866250090612892, - 0.6094239491338723, - 0.6319022228794100, - 0.6539925088563087, - 0.6756304090216887, - 0.6967549769155277, - 0.7173092095766250, - 0.7372404969921184, - 0.7565010233699827, - 0.7750481150999984, - 0.7928445309277697, - 0.8098586906021583, - 0.8260648390616000, - 0.8414431440907889, - 0.8559797262966709, - 0.8696666212110165, - 0.8825016743142358, - 0.8944883707784486, - 0.9056356027326216, - 0.9159573778427816, - 0.9254724739583072, - 0.9342040454819434, - 0.9421791879559176, - 0.9494284680976784, - 0.9559854271440150, - 0.9618860658493898, - 0.9671683198119525, - 0.9718715339497299, - 0.9760359449042233, - 0.9797021798981759, - 0.9829107801140203, - 0.9857017559923277, - 0.9881141809867999, - 0.9901858292742826, - 0.9919528617340944, - 0.9934495632180476, - 0.9947081327749199, - 0.9957585271195989, - 0.9966283562984427, - 0.9973428292485683, - 0.9979247458259197, - 0.9983945309245774, - 0.9987703055583410, - 0.9990679892449266, - 0.9993014277313617, - 0.9994825400228521, - 0.9996214788122335, - 0.9997267987294857, - 0.9998056273097539, - 0.9998638341781910, - 0.9999061946325793, - 0.9999365445321382, - 0.9999579241373735, - 0.9999727092594598, - 0.9999827287418790, - 0.9999893678912771, - 0.9999936579844555, - 0.9999963523959187, - 0.9999979902130101, - 0.9999989484358076, - 0.9999994840031031, - 0.9999997669534347, - 0.9999999060327799, - 0.9999999680107184, - 0.9999999918774242, - 0.9999999989770326 -}; - -#else - -real_t kbd_long_1024[] = -{ - 0x132C5, - 0x1C2DF, - 0x23D4C, - 0x2AEA1, - 0x31B8E, - 0x38665, - 0x3F07E, - 0x45AB3, - 0x4C598, - 0x53198, - 0x59F03, - 0x60E18, - 0x67F08, - 0x6F1FB, - 0x76714, - 0x7DE70, - 0x85828, - 0x8D455, - 0x95308, - 0x9D456, - 0xA5850, - 0xADF05, - 0xB6884, - 0xBF4DB, - 0xC8419, - 0xD1649, - 0xDAB78, - 0xE43B3, - 0xEDF05, - 0xF7D79, - 0x101F1B, - 0x10C3F5, - 0x116C13, - 0x12177F, - 0x12C644, - 0x13786C, - 0x142E01, - 0x14E70D, - 0x15A39B, - 0x1663B5, - 0x172764, - 0x17EEB2, - 0x18B9AA, - 0x198856, - 0x1A5ABE, - 0x1B30ED, - 0x1C0AED, - 0x1CE8C7, - 0x1DCA84, - 0x1EB030, - 0x1F99D2, - 0x208776, - 0x217924, - 0x226EE6, - 0x2368C6, - 0x2466CD, - 0x256905, - 0x266F77, - 0x277A2D, - 0x288930, - 0x299C8A, - 0x2AB445, - 0x2BD069, - 0x2CF101, - 0x2E1616, - 0x2F3FB1, - 0x306DDC, - 0x31A0A0, - 0x32D806, - 0x341419, - 0x3554E1, - 0x369A68, - 0x37E4B7, - 0x3933D7, - 0x3A87D3, - 0x3BE0B3, - 0x3D3E80, - 0x3EA144, - 0x400908, - 0x4175D6, - 0x42E7B6, - 0x445EB3, - 0x45DAD4, - 0x475C24, - 0x48E2AB, - 0x4A6E73, - 0x4BFF84, - 0x4D95E9, - 0x4F31AA, - 0x50D2CF, - 0x527963, - 0x54256E, - 0x55D6F9, - 0x578E0D, - 0x594AB4, - 0x5B0CF5, - 0x5CD4DA, - 0x5EA26C, - 0x6075B3, - 0x624EB9, - 0x642D86, - 0x661223, - 0x67FC98, - 0x69ECEE, - 0x6BE32E, - 0x6DDF61, - 0x6FE18F, - 0x71E9C0, - 0x73F7FD, - 0x760C4F, - 0x7826BD, - 0x7A4751, - 0x7C6E12, - 0x7E9B0A, - 0x80CE3F, - 0x8307BA, - 0x854784, - 0x878DA5, - 0x89DA24, - 0x8C2D09, - 0x8E865E, - 0x90E628, - 0x934C71, - 0x95B940, - 0x982C9D, - 0x9AA690, - 0x9D2720, - 0x9FAE55, - 0xA23C37, - 0xA4D0CD, - 0xA76C1E, - 0xAA0E31, - 0xACB70F, - 0xAF66BF, - 0xB21D47, - 0xB4DAAF, - 0xB79EFD, - 0xBA6A3A, - 0xBD3C6C, - 0xC01599, - 0xC2F5C9, - 0xC5DD03, - 0xC8CB4D, - 0xCBC0AD, - 0xCEBD2B, - 0xD1C0CD, - 0xD4CB99, - 0xD7DD96, - 0xDAF6C9, - 0xDE173A, - 0xE13EEF, - 0xE46DED, - 0xE7A43B, - 0xEAE1DE, - 0xEE26DC, - 0xF1733C, - 0xF4C702, - 0xF82235, - 0xFB84DA, - 0xFEEEF7, - 0x1026090, - 0x105D9AC, - 0x1095A50, - 0x10CE280, - 0x1107242, - 0x114099A, - 0x117A88E, - 0x11B4F24, - 0x11EFD5E, - 0x122B342, - 0x12670D4, - 0x12A361A, - 0x12E0318, - 0x131D7D0, - 0x135B44A, - 0x1399886, - 0x13D848C, - 0x141785E, - 0x14573FE, - 0x1497774, - 0x14D82C2, - 0x15195E8, - 0x155B0F0, - 0x159D3D8, - 0x15DFEA6, - 0x162315C, - 0x1666BFE, - 0x16AAE8E, - 0x16EF910, - 0x1734B86, - 0x177A5F4, - 0x17C085A, - 0x18072BE, - 0x184E520, - 0x1895F84, - 0x18DE1EA, - 0x1926C56, - 0x196FEC8, - 0x19B9946, - 0x1A03BCE, - 0x1A4E662, - 0x1A99904, - 0x1AE53B8, - 0x1B3167C, - 0x1B7E152, - 0x1BCB43E, - 0x1C18F3E, - 0x1C67254, - 0x1CB5D80, - 0x1D050C4, - 0x1D54C20, - 0x1DA4F96, - 0x1DF5B24, - 0x1E46ECC, - 0x1E98A8C, - 0x1EEAE68, - 0x1F3DA5E, - 0x1F90E6C, - 0x1FE4A94, - 0x2038ED8, - 0x208DB30, - 0x20E2FA4, - 0x2138C2C, - 0x218F0D0, - 0x21E5D84, - 0x223D250, - 0x2294F30, - 0x22ED420, - 0x2346124, - 0x239F634, - 0x23F9354, - 0x2453880, - 0x24AE5B8, - 0x2509AF8, - 0x2565840, - 0x25C1D88, - 0x261EAD4, - 0x267C024, - 0x26D9D6C, - 0x27382B0, - 0x2796FEC, - 0x27F651C, - 0x2856240, - 0x28B6754, - 0x2917450, - 0x2978938, - 0x29DA604, - 0x2A3CAB0, - 0x2A9F738, - 0x2B02BA0, - 0x2B667D8, - 0x2BCABE4, - 0x2C2F7C0, - 0x2C94B64, - 0x2CFA6CC, - 0x2D609F8, - 0x2DC74DC, - 0x2E2E77C, - 0x2E961CC, - 0x2EFE3C8, - 0x2F66D6C, - 0x2FCFEB8, - 0x30397A0, - 0x30A381C, - 0x310E030, - 0x3178FD0, - 0x31E46F8, - 0x32505A0, - 0x32BCBC4, - 0x3329960, - 0x3396E68, - 0x3404AD8, - 0x3472EAC, - 0x34E19DC, - 0x3550C60, - 0x35C0634, - 0x363074C, - 0x36A0FA8, - 0x3711F38, - 0x37835FC, - 0x37F53EC, - 0x38678FC, - 0x38DA528, - 0x394D868, - 0x39C12B4, - 0x3A35400, - 0x3AA9C48, - 0x3B1EB84, - 0x3B941AC, - 0x3C09EB4, - 0x3C80298, - 0x3CF6D4C, - 0x3D6DEC8, - 0x3DE5704, - 0x3E5D5F4, - 0x3ED5B94, - 0x3F4E7D8, - 0x3FC7AB4, - 0x4041428, - 0x40BB418, - 0x4135A90, - 0x41B0778, - 0x422BAD0, - 0x42A7488, - 0x4323490, - 0x439FAE8, - 0x441C780, - 0x4499A50, - 0x4517350, - 0x4595270, - 0x46137A8, - 0x46922F0, - 0x4711438, - 0x4790B78, - 0x48108A0, - 0x4890BB0, - 0x4911490, - 0x4992340, - 0x4A137A8, - 0x4A951C8, - 0x4B17188, - 0x4B996E8, - 0x4C1C1D8, - 0x4C9F250, - 0x4D22838, - 0x4DA6390, - 0x4E2A448, - 0x4EAEA50, - 0x4F335A0, - 0x4FB8628, - 0x503DBE0, - 0x50C36B0, - 0x51496A0, - 0x51CFB90, - 0x5256578, - 0x52DD450, - 0x5364808, - 0x53EC090, - 0x5473DD8, - 0x54FBFE0, - 0x5584690, - 0x560D1D8, - 0x56961B8, - 0x571F610, - 0x57A8EE0, - 0x5832C18, - 0x58BCDA0, - 0x5947378, - 0x59D1D88, - 0x5A5CBC0, - 0x5AE7E20, - 0x5B73488, - 0x5BFEEF8, - 0x5C8AD58, - 0x5D16FA0, - 0x5DA35B8, - 0x5E2FFA0, - 0x5EBCD40, - 0x5F49E80, - 0x5FD7368, - 0x6064BD0, - 0x60F27C0, - 0x6180718, - 0x620E9D0, - 0x629CFD8, - 0x632B920, - 0x63BA598, - 0x6449530, - 0x64D87D8, - 0x6567D88, - 0x65F7628, - 0x66871B0, - 0x6717008, - 0x67A7128, - 0x68374F8, - 0x68C7B68, - 0x6958478, - 0x69E9000, - 0x6A79E08, - 0x6B0AE70, - 0x6B9C128, - 0x6C2D628, - 0x6CBED60, - 0x6D506B8, - 0x6DE2220, - 0x6E73F90, - 0x6F05EF8, - 0x6F98040, - 0x702A358, - 0x70BC830, - 0x714EEC0, - 0x71E16E8, - 0x72740A8, - 0x7306BE8, - 0x7399898, - 0x742C6A0, - 0x74BF5F8, - 0x7552698, - 0x75E5858, - 0x7678B38, - 0x770BF28, - 0x779F410, - 0x78329E0, - 0x78C6090, - 0x7959800, - 0x79ED028, - 0x7A80900, - 0x7B14260, - 0x7BA7C50, - 0x7C3B6B0, - 0x7CCF170, - 0x7D62C88, - 0x7DF67E0, - 0x7E8A368, - 0x7F1DF10, - 0x7FB1AC8, - 0x8045670, - 0x80D9210, - 0x816CD90, - 0x82008E0, - 0x82943E0, - 0x8327E80, - 0x83BB8C0, - 0x844F290, - 0x84E2BD0, - 0x8576470, - 0x8609C60, - 0x869D3A0, - 0x8730A10, - 0x87C3FA0, - 0x8857440, - 0x88EA7E0, - 0x897DA60, - 0x8A10BD0, - 0x8AA3C10, - 0x8B36B00, - 0x8BC98A0, - 0x8C5C4E0, - 0x8CEEFB0, - 0x8D818F0, - 0x8E14090, - 0x8EA6690, - 0x8F38AE0, - 0x8FCAD60, - 0x905CE10, - 0x90EECC0, - 0x9180990, - 0x9212440, - 0x92A3CE0, - 0x9335350, - 0x93C6780, - 0x9457960, - 0x94E88F0, - 0x9579610, - 0x960A0B0, - 0x969A8C0, - 0x972AE30, - 0x97BB0F0, - 0x984B100, - 0x98DAE30, - 0x996A890, - 0x99FA000, - 0x9A89470, - 0x9B185D0, - 0x9BA7410, - 0x9C35F30, - 0x9CC4700, - 0x9D52B90, - 0x9DE0CC0, - 0x9E6EA90, - 0x9EFC4E0, - 0x9F89BA0, - 0xA016ED0, - 0xA0A3E50, - 0xA130A10, - 0xA1BD210, - 0xA249640, - 0xA2D5690, - 0xA3612E0, - 0xA3ECB30, - 0xA477F70, - 0xA502F90, - 0xA58DB80, - 0xA618330, - 0xA6A26A0, - 0xA72C5A0, - 0xA7B6050, - 0xA83F670, - 0xA8C8820, - 0xA951530, - 0xA9D9DA0, - 0xAA62170, - 0xAAEA070, - 0xAB71AB0, - 0xABF9010, - 0xAC80090, - 0xAD06C10, - 0xAD8D2A0, - 0xAE13410, - 0xAE99070, - 0xAF1E7A0, - 0xAFA39A0, - 0xB028650, - 0xB0ACDC0, - 0xB130FD0, - 0xB1B4C70, - 0xB2383A0, - 0xB2BB540, - 0xB33E160, - 0xB3C07D0, - 0xB4428B0, - 0xB4C43D0, - 0xB545930, - 0xB5C68C0, - 0xB647270, - 0xB6C7650, - 0xB747430, - 0xB7C6C20, - 0xB845E00, - 0xB8C49D0, - 0xB942F90, - 0xB9C0F10, - 0xBA3E870, - 0xBABBB80, - 0xBB38850, - 0xBBB4ED0, - 0xBC30EF0, - 0xBCAC8A0, - 0xBD27BE0, - 0xBDA28A0, - 0xBE1CED0, - 0xBE96E80, - 0xBF10780, - 0xBF899E0, - 0xC0025A0, - 0xC07AA90, - 0xC0F28D0, - 0xC16A030, - 0xC1E10C0, - 0xC257A80, - 0xC2CDD40, - 0xC343920, - 0xC3B8E00, - 0xC42DBE0, - 0xC4A22B0, - 0xC516270, - 0xC589B20, - 0xC5FCCA0, - 0xC66F6F0, - 0xC6E1A10, - 0xC7535F0, - 0xC7C4A90, - 0xC8357F0, - 0xC8A5DF0, - 0xC915C90, - 0xC9853D0, - 0xC9F43B0, - 0xCA62C20, - 0xCAD0D20, - 0xCB3E690, - 0xCBAB880, - 0xCC182F0, - 0xCC845D0, - 0xCCF0110, - 0xCD5B4B0, - 0xCDC60B0, - 0xCE30510, - 0xCE9A1C0, - 0xCF036B0, - 0xCF6C3F0, - 0xCFD4970, - 0xD03C720, - 0xD0A3D10, - 0xD10AB30, - 0xD171180, - 0xD1D6FF0, - 0xD23C680, - 0xD2A1530, - 0xD305C00, - 0xD369AF0, - 0xD3CD1E0, - 0xD4300E0, - 0xD4927F0, - 0xD4F4710, - 0xD555E20, - 0xD5B6D40, - 0xD617450, - 0xD677360, - 0xD6D6A60, - 0xD735950, - 0xD794030, - 0xD7F1F00, - 0xD84F5C0, - 0xD8AC460, - 0xD908AF0, - 0xD964960, - 0xD9BFFB0, - 0xDA1ADE0, - 0xDA753E0, - 0xDACF1D0, - 0xDB28790, - 0xDB81530, - 0xDBD9AA0, - 0xDC317F0, - 0xDC88D10, - 0xDCDFA00, - 0xDD35ED0, - 0xDD8BB70, - 0xDDE0FE0, - 0xDE35C20, - 0xDE8A030, - 0xDEDDC10, - 0xDF30FD0, - 0xDF83B50, - 0xDFD5EB0, - 0xE0279E0, - 0xE078CE0, - 0xE0C97B0, - 0xE119A60, - 0xE1694E0, - 0xE1B8730, - 0xE207150, - 0xE255350, - 0xE2A2D30, - 0xE2EFEE0, - 0xE33C870, - 0xE3889E0, - 0xE3D4330, - 0xE41F460, - 0xE469D70, - 0xE4B3E60, - 0xE4FD740, - 0xE546810, - 0xE58F0C0, - 0xE5D7160, - 0xE61EA00, - 0xE665A80, - 0xE6AC300, - 0xE6F2380, - 0xE737BF0, - 0xE77CC70, - 0xE7C14E0, - 0xE805560, - 0xE848DF0, - 0xE88BE90, - 0xE8CE740, - 0xE910800, - 0xE9520E0, - 0xE9931D0, - 0xE9D3AF0, - 0xEA13C30, - 0xEA535A0, - 0xEA92740, - 0xEAD1110, - 0xEB0F310, - 0xEB4CD50, - 0xEB89FE0, - 0xEBC6AB0, - 0xEC02DC0, - 0xEC3E930, - 0xEC79CF0, - 0xECB4900, - 0xECEED80, - 0xED28A60, - 0xED61FB0, - 0xED9AD70, - 0xEDD33B0, - 0xEE0B260, - 0xEE429A0, - 0xEE79960, - 0xEEB01B0, - 0xEEE6290, - 0xEF1BC20, - 0xEF50E40, - 0xEF85910, - 0xEFB9C90, - 0xEFED8C0, - 0xF020DB0, - 0xF053B60, - 0xF0861E0, - 0xF0B8130, - 0xF0E9960, - 0xF11AA60, - 0xF14B450, - 0xF17B730, - 0xF1AB300, - 0xF1DA7C0, - 0xF209590, - 0xF237C70, - 0xF265C60, - 0xF293570, - 0xF2C0790, - 0xF2ED2F0, - 0xF319770, - 0xF345530, - 0xF370C30, - 0xF39BC80, - 0xF3C6620, - 0xF3F0910, - 0xF41A570, - 0xF443B30, - 0xF46CA60, - 0xF495310, - 0xF4BD550, - 0xF4E5110, - 0xF50C660, - 0xF533550, - 0xF559DE0, - 0xF580030, - 0xF5A5C20, - 0xF5CB1E0, - 0xF5F0160, - 0xF614AB0, - 0xF638DE0, - 0xF65CAF0, - 0xF6801F0, - 0xF6A32E0, - 0xF6C5DD0, - 0xF6E82C0, - 0xF70A1C0, - 0xF72BAE0, - 0xF74CE20, - 0xF76DB90, - 0xF78E330, - 0xF7AE510, - 0xF7CE130, - 0xF7ED7A0, - 0xF80C870, - 0xF82B3A0, - 0xF849940, - 0xF867950, - 0xF8853E0, - 0xF8A2900, - 0xF8BF8B0, - 0xF8DC2F0, - 0xF8F87E0, - 0xF914780, - 0xF9301D0, - 0xF94B6F0, - 0xF9666D0, - 0xF981180, - 0xF99B720, - 0xF9B57A0, - 0xF9CF310, - 0xF9E8970, - 0xFA01AE0, - 0xFA1A760, - 0xFA32EF0, - 0xFA4B1B0, - 0xFA62F90, - 0xFA7A8A0, - 0xFA91D00, - 0xFAA8CA0, - 0xFABF790, - 0xFAD5DE0, - 0xFAEBF90, - 0xFB01CB0, - 0xFB17540, - 0xFB2C960, - 0xFB41900, - 0xFB56440, - 0xFB6AB20, - 0xFB7EDA0, - 0xFB92BE0, - 0xFBA65D0, - 0xFBB9B80, - 0xFBCCD00, - 0xFBDFA60, - 0xFBF23A0, - 0xFC048D0, - 0xFC169F0, - 0xFC28710, - 0xFC3A030, - 0xFC4B570, - 0xFC5C6C0, - 0xFC6D430, - 0xFC7DDD0, - 0xFC8E3B0, - 0xFC9E5C0, - 0xFCAE430, - 0xFCBDEE0, - 0xFCCD5F0, - 0xFCDC960, - 0xFCEB950, - 0xFCFA5A0, - 0xFD08E80, - 0xFD173E0, - 0xFD255E0, - 0xFD33470, - 0xFD40FA0, - 0xFD4E790, - 0xFD5BC30, - 0xFD68D80, - 0xFD75BB0, - 0xFD826A0, - 0xFD8EE70, - 0xFD9B320, - 0xFDA74C0, - 0xFDB3350, - 0xFDBEEE0, - 0xFDCA770, - 0xFDD5D10, - 0xFDE0FC0, - 0xFDEBFA0, - 0xFDF6C90, - 0xFE016C0, - 0xFE0BE30, - 0xFE162D0, - 0xFE204C0, - 0xFE2A400, - 0xFE34090, - 0xFE3DA90, - 0xFE471F0, - 0xFE506C0, - 0xFE59910, - 0xFE628E0, - 0xFE6B630, - 0xFE74120, - 0xFE7C9A0, - 0xFE84FC0, - 0xFE8D390, - 0xFE95500, - 0xFE9D440, - 0xFEA5130, - 0xFEACBE0, - 0xFEB4460, - 0xFEBBAC0, - 0xFEC2EF0, - 0xFECA110, - 0xFED1120, - 0xFED7F10, - 0xFEDEB00, - 0xFEE5500, - 0xFEEBCF0, - 0xFEF2300, - 0xFEF8720, - 0xFEFE960, - 0xFF049B0, - 0xFF0A840, - 0xFF10500, - 0xFF15FF0, - 0xFF1B920, - 0xFF21090, - 0xFF26650, - 0xFF2BA60, - 0xFF30CC0, - 0xFF35D90, - 0xFF3ACB0, - 0xFF3FA50, - 0xFF44650, - 0xFF490D0, - 0xFF4D9C0, - 0xFF52140, - 0xFF56740, - 0xFF5ABD0, - 0xFF5EF00, - 0xFF630C0, - 0xFF67120, - 0xFF6B020, - 0xFF6EDD0, - 0xFF72A30, - 0xFF76550, - 0xFF79F20, - 0xFF7D7B0, - 0xFF80F10, - 0xFF84530, - 0xFF87A30, - 0xFF8ADF0, - 0xFF8E0A0, - 0xFF91220, - 0xFF94280, - 0xFF971E0, - 0xFF9A020, - 0xFF9CD50, - 0xFF9F980, - 0xFFA24A0, - 0xFFA4ED0, - 0xFFA7800, - 0xFFAA030, - 0xFFAC780, - 0xFFAEDE0, - 0xFFB1350, - 0xFFB37E0, - 0xFFB5B90, - 0xFFB7E60, - 0xFFBA050, - 0xFFBC180, - 0xFFBE1D0, - 0xFFC0160, - 0xFFC2020, - 0xFFC3E20, - 0xFFC5B60, - 0xFFC77E0, - 0xFFC93B0, - 0xFFCAEC0, - 0xFFCC930, - 0xFFCE2E0, - 0xFFCFBF0, - 0xFFD1450, - 0xFFD2C10, - 0xFFD4340, - 0xFFD59C0, - 0xFFD6FB0, - 0xFFD8500, - 0xFFD99C0, - 0xFFDAE00, - 0xFFDC1A0, - 0xFFDD4C0, - 0xFFDE750, - 0xFFDF970, - 0xFFE0B00, - 0xFFE1C10, - 0xFFE2CA0, - 0xFFE3CC0, - 0xFFE4C70, - 0xFFE5BA0, - 0xFFE6A70, - 0xFFE78C0, - 0xFFE86B0, - 0xFFE9430, - 0xFFEA150, - 0xFFEAE10, - 0xFFEBA60, - 0xFFEC650, - 0xFFED1F0, - 0xFFEDD30, - 0xFFEE820, - 0xFFEF2B0, - 0xFFEFCE0, - 0xFFF06D0, - 0xFFF1070, - 0xFFF19B0, - 0xFFF22B0, - 0xFFF2B70, - 0xFFF33D0, - 0xFFF3C00, - 0xFFF43E0, - 0xFFF4B80, - 0xFFF52E0, - 0xFFF5A00, - 0xFFF60E0, - 0xFFF6780, - 0xFFF6DF0, - 0xFFF7420, - 0xFFF7A10, - 0xFFF7FE0, - 0xFFF8570, - 0xFFF8AC0, - 0xFFF8FF0, - 0xFFF94F0, - 0xFFF99C0, - 0xFFF9E60, - 0xFFFA2D0, - 0xFFFA720, - 0xFFFAB40, - 0xFFFAF30, - 0xFFFB310, - 0xFFFB6B0, - 0xFFFBA40, - 0xFFFBDA0, - 0xFFFC0E0, - 0xFFFC400, - 0xFFFC700, - 0xFFFC9E0, - 0xFFFCCA0, - 0xFFFCF50, - 0xFFFD1D0, - 0xFFFD440, - 0xFFFD690, - 0xFFFD8D0, - 0xFFFDAF0, - 0xFFFDD00, - 0xFFFDEF0, - 0xFFFE0D0, - 0xFFFE290, - 0xFFFE440, - 0xFFFE5E0, - 0xFFFE770, - 0xFFFE8E0, - 0xFFFEA50, - 0xFFFEBA0, - 0xFFFECE0, - 0xFFFEE20, - 0xFFFEF40, - 0xFFFF050, - 0xFFFF160, - 0xFFFF260, - 0xFFFF340, - 0xFFFF420, - 0xFFFF500, - 0xFFFF5C0, - 0xFFFF680, - 0xFFFF730, - 0xFFFF7E0, - 0xFFFF880, - 0xFFFF910, - 0xFFFF9A0, - 0xFFFFA30, - 0xFFFFAA0, - 0xFFFFB20, - 0xFFFFB90, - 0xFFFFBF0, - 0xFFFFC50, - 0xFFFFCA0, - 0xFFFFD00, - 0xFFFFD50, - 0xFFFFD90, - 0xFFFFDD0, - 0xFFFFE10, - 0xFFFFE50, - 0xFFFFE80, - 0xFFFFEB0, - 0xFFFFEE0, - 0xFFFFF00, - 0xFFFFF30, - 0xFFFFF50, - 0xFFFFF70, - 0xFFFFF80, - 0xFFFFFA0, - 0xFFFFFB0, - 0xFFFFFC0, - 0xFFFFFD0, - 0xFFFFFE0, - 0xFFFFFF0 + COEF_CONST(0.0000452320086910), + COEF_CONST(0.0001274564692111), + COEF_CONST(0.0002529398385345), + COEF_CONST(0.0004335140496648), + COEF_CONST(0.0006827100966952), + COEF_CONST(0.0010158708222246), + COEF_CONST(0.0014502162869659), + COEF_CONST(0.0020048865156264), + COEF_CONST(0.0027009618393178), + COEF_CONST(0.0035614590925043), + COEF_CONST(0.0046113018122711), + COEF_CONST(0.0058772627936484), + COEF_CONST(0.0073878776584103), + COEF_CONST(0.0091733284512589), + COEF_CONST(0.0112652966728373), + COEF_CONST(0.0136967855861945), + COEF_CONST(0.0165019120857793), + COEF_CONST(0.0197156688892217), + COEF_CONST(0.0233736582950619), + COEF_CONST(0.0275117992367496), + COEF_CONST(0.0321660098468534), + COEF_CONST(0.0373718682174417), + COEF_CONST(0.0431642544948834), + COEF_CONST(0.0495769778717676), + COEF_CONST(0.0566423924273392), + COEF_CONST(0.0643910061132260), + COEF_CONST(0.0728510874761729), + COEF_CONST(0.0820482749475221), + COEF_CONST(0.0920051937045235), + COEF_CONST(0.1027410852163450), + COEF_CONST(0.1142714546239370), + COEF_CONST(0.1266077410648368), + COEF_CONST(0.1397570159398145), + COEF_CONST(0.1537217139274270), + COEF_CONST(0.1684994012857075), + COEF_CONST(0.1840825856392944), + COEF_CONST(0.2004585710384133), + COEF_CONST(0.2176093615976121), + COEF_CONST(0.2355116164824983), + COEF_CONST(0.2541366584185075), + COEF_CONST(0.2734505372545160), + COEF_CONST(0.2934141494343369), + COEF_CONST(0.3139834135200387), + COEF_CONST(0.3351095011824163), + COEF_CONST(0.3567391223361566), + COEF_CONST(0.3788148623608774), + COEF_CONST(0.4012755686250732), + COEF_CONST(0.4240567828288110), + COEF_CONST(0.4470912150133537), + COEF_CONST(0.4703092544619664), + COEF_CONST(0.4936395121456694), + COEF_CONST(0.5170093888596962), + COEF_CONST(0.5403456627591340), + COEF_CONST(0.5635750896430154), + COEF_CONST(0.5866250090612892), + COEF_CONST(0.6094239491338723), + COEF_CONST(0.6319022228794100), + COEF_CONST(0.6539925088563087), + COEF_CONST(0.6756304090216887), + COEF_CONST(0.6967549769155277), + COEF_CONST(0.7173092095766250), + COEF_CONST(0.7372404969921184), + COEF_CONST(0.7565010233699827), + COEF_CONST(0.7750481150999984), + COEF_CONST(0.7928445309277697), + COEF_CONST(0.8098586906021583), + COEF_CONST(0.8260648390616000), + COEF_CONST(0.8414431440907889), + COEF_CONST(0.8559797262966709), + COEF_CONST(0.8696666212110165), + COEF_CONST(0.8825016743142358), + COEF_CONST(0.8944883707784486), + COEF_CONST(0.9056356027326216), + COEF_CONST(0.9159573778427816), + COEF_CONST(0.9254724739583072), + COEF_CONST(0.9342040454819434), + COEF_CONST(0.9421791879559176), + COEF_CONST(0.9494284680976784), + COEF_CONST(0.9559854271440150), + COEF_CONST(0.9618860658493898), + COEF_CONST(0.9671683198119525), + COEF_CONST(0.9718715339497299), + COEF_CONST(0.9760359449042233), + COEF_CONST(0.9797021798981759), + COEF_CONST(0.9829107801140203), + COEF_CONST(0.9857017559923277), + COEF_CONST(0.9881141809867999), + COEF_CONST(0.9901858292742826), + COEF_CONST(0.9919528617340944), + COEF_CONST(0.9934495632180476), + COEF_CONST(0.9947081327749199), + COEF_CONST(0.9957585271195989), + COEF_CONST(0.9966283562984427), + COEF_CONST(0.9973428292485683), + COEF_CONST(0.9979247458259197), + COEF_CONST(0.9983945309245774), + COEF_CONST(0.9987703055583410), + COEF_CONST(0.9990679892449266), + COEF_CONST(0.9993014277313617), + COEF_CONST(0.9994825400228521), + COEF_CONST(0.9996214788122335), + COEF_CONST(0.9997267987294857), + COEF_CONST(0.9998056273097539), + COEF_CONST(0.9998638341781910), + COEF_CONST(0.9999061946325793), + COEF_CONST(0.9999365445321382), + COEF_CONST(0.9999579241373735), + COEF_CONST(0.9999727092594598), + COEF_CONST(0.9999827287418790), + COEF_CONST(0.9999893678912771), + COEF_CONST(0.9999936579844555), + COEF_CONST(0.9999963523959187), + COEF_CONST(0.9999979902130101), + COEF_CONST(0.9999989484358076), + COEF_CONST(0.9999994840031031), + COEF_CONST(0.9999997669534347), + COEF_CONST(0.9999999060327799), + COEF_CONST(0.9999999680107184), + COEF_CONST(0.9999999918774242), + COEF_CONST(0.9999999989770326) }; -real_t kbd_long_960[] = -{ - 0x13CD5, - 0x1D2DA, - 0x2530F, - 0x2CA56, - 0x33D79, - 0x3AED7, - 0x41FCF, - 0x4913D, - 0x503BC, - 0x577B7, - 0x5ED81, - 0x6655B, - 0x6DF77, - 0x75C00, - 0x7DB1B, - 0x85CE5, - 0x8E17C, - 0x968F7, - 0x9F36B, - 0xA80EF, - 0xB1194, - 0xBA56C, - 0xC3C88, - 0xCD6F8, - 0xD74CB, - 0xE1610, - 0xEBAD6, - 0xF632A, - 0x100F1A, - 0x10BEB4, - 0x117203, - 0x122916, - 0x12E3F9, - 0x13A2B8, - 0x146561, - 0x152BFF, - 0x15F69E, - 0x16C54B, - 0x179812, - 0x186EFF, - 0x194A1D, - 0x1A2979, - 0x1B0D1E, - 0x1BF519, - 0x1CE175, - 0x1DD23E, - 0x1EC77F, - 0x1FC145, - 0x20BF9B, - 0x21C28C, - 0x22CA24, - 0x23D670, - 0x24E77A, - 0x25FD4E, - 0x2717F7, - 0x283782, - 0x295BF9, - 0x2A8569, - 0x2BB3DD, - 0x2CE760, - 0x2E1FFD, - 0x2F5DC1, - 0x30A0B7, - 0x31E8EA, - 0x333666, - 0x348935, - 0x35E164, - 0x373EFE, - 0x38A20E, - 0x3A0AA0, - 0x3B78BE, - 0x3CEC75, - 0x3E65CF, - 0x3FE4D8, - 0x41699B, - 0x42F424, - 0x44847D, - 0x461AB1, - 0x47B6CC, - 0x4958D9, - 0x4B00E4, - 0x4CAEF6, - 0x4E631C, - 0x501D60, - 0x51DDCD, - 0x53A46E, - 0x55714E, - 0x574479, - 0x591DF8, - 0x5AFDD7, - 0x5CE420, - 0x5ED0DE, - 0x60C41D, - 0x62BDE6, - 0x64BE44, - 0x66C542, - 0x68D2EB, - 0x6AE748, - 0x6D0265, - 0x6F244B, - 0x714D05, - 0x737C9E, - 0x75B320, - 0x77F094, - 0x7A3506, - 0x7C807E, - 0x7ED308, - 0x812CAD, - 0x838D77, - 0x85F570, - 0x8864A2, - 0x8ADB16, - 0x8D58D7, - 0x8FDDEE, - 0x926A64, - 0x94FE44, - 0x979995, - 0x9A3C63, - 0x9CE6B6, - 0x9F9897, - 0xA25210, - 0xA5132A, - 0xA7DBED, - 0xAAAC63, - 0xAD8495, - 0xB0648B, - 0xB34C4E, - 0xB63BE7, - 0xB9335E, - 0xBC32BC, - 0xBF3A09, - 0xC2494E, - 0xC56093, - 0xC87FE0, - 0xCBA73D, - 0xCED6B2, - 0xD20E47, - 0xD54E04, - 0xD895F0, - 0xDBE613, - 0xDF3E76, - 0xE29F1E, - 0xE60814, - 0xE9795F, - 0xECF305, - 0xF0750F, - 0xF3FF82, - 0xF79267, - 0xFB2DC3, - 0xFED19E, - 0x1027DFC, - 0x10632E8, - 0x109F064, - 0x10DB678, - 0x111852A, - 0x1155C82, - 0x1193C82, - 0x11D2532, - 0x121169A, - 0x12510BA, - 0x129139E, - 0x12D1F46, - 0x13133BA, - 0x13550FE, - 0x1397718, - 0x13DA60C, - 0x141DDE0, - 0x1461E98, - 0x14A6838, - 0x14EBAC6, - 0x1531644, - 0x1577AB8, - 0x15BE826, - 0x1605E92, - 0x164DE00, - 0x1696672, - 0x16DF7EC, - 0x1729274, - 0x177360A, - 0x17BE2B4, - 0x1809874, - 0x185574C, - 0x18A1F40, - 0x18EF052, - 0x193CA84, - 0x198ADDA, - 0x19D9A56, - 0x1A28FFA, - 0x1A78EC6, - 0x1AC96BE, - 0x1B1A7E4, - 0x1B6C23A, - 0x1BBE5C0, - 0x1C11276, - 0x1C64860, - 0x1CB8780, - 0x1D0CFD2, - 0x1D6215C, - 0x1DB7C1C, - 0x1E0E012, - 0x1E64D40, - 0x1EBC3A4, - 0x1F14342, - 0x1F6CC16, - 0x1FC5E22, - 0x201F964, - 0x2079DDC, - 0x20D4B8C, - 0x2130270, - 0x218C288, - 0x21E8BD4, - 0x2245E50, - 0x22A3A00, - 0x2301EDC, - 0x2360CE4, - 0x23C0418, - 0x2420478, - 0x2480DFC, - 0x24E20A8, - 0x2543C74, - 0x25A6164, - 0x2608F6C, - 0x266C694, - 0x26D06D0, - 0x2735020, - 0x279A284, - 0x27FFDF4, - 0x286626C, - 0x28CCFEC, - 0x2934670, - 0x299C5F0, - 0x2A04E68, - 0x2A6DFD8, - 0x2AD7A3C, - 0x2B41D88, - 0x2BAC9BC, - 0x2C17ED4, - 0x2C83CC8, - 0x2CF0398, - 0x2D5D338, - 0x2DCABA4, - 0x2E38CD8, - 0x2EA76CC, - 0x2F1697C, - 0x2F864E4, - 0x2FF68F8, - 0x30675B8, - 0x30D8B14, - 0x314A910, - 0x31BCF9C, - 0x322FEB8, - 0x32A3658, - 0x3317678, - 0x338BF0C, - 0x3401010, - 0x3476978, - 0x34ECB44, - 0x3563564, - 0x35DA7D0, - 0x3652288, - 0x36CA578, - 0x37430A0, - 0x37BC3F0, - 0x3835F64, - 0x38B02F4, - 0x392AE90, - 0x39A6238, - 0x3A21DD8, - 0x3A9E16C, - 0x3B1ACE8, - 0x3B98048, - 0x3C15B78, - 0x3C93E74, - 0x3D12930, - 0x3D91BA0, - 0x3E115BC, - 0x3E91774, - 0x3F120C4, - 0x3F9319C, - 0x40149F0, - 0x40969B8, - 0x41190E8, - 0x419BF70, - 0x421F548, - 0x42A3260, - 0x43276B0, - 0x43AC228, - 0x44314C0, - 0x44B6E68, - 0x453CF18, - 0x45C36C0, - 0x464A550, - 0x46D1AB8, - 0x47596F0, - 0x47E19F0, - 0x486A3A8, - 0x48F3400, - 0x497CAF0, - 0x4A06870, - 0x4A90C70, - 0x4B1B6D8, - 0x4BA67A8, - 0x4C31EC8, - 0x4CBDC28, - 0x4D49FC0, - 0x4DD6980, - 0x4E63958, - 0x4EF0F30, - 0x4F7EB08, - 0x500CCC8, - 0x509B468, - 0x512A1D0, - 0x51B94F0, - 0x5248DC0, - 0x52D8C28, - 0x5369020, - 0x53F9990, - 0x548A870, - 0x551BCA8, - 0x55AD628, - 0x563F4E8, - 0x56D18D0, - 0x57641D0, - 0x57F6FD8, - 0x588A2D8, - 0x591DAC0, - 0x59B1780, - 0x5A45900, - 0x5AD9F30, - 0x5B6EA08, - 0x5C03968, - 0x5C98D50, - 0x5D2E5A0, - 0x5DC4248, - 0x5E5A338, - 0x5EF0860, - 0x5F871B0, - 0x601DF10, - 0x60B5078, - 0x614C5C8, - 0x61E3EF0, - 0x627BBE8, - 0x6313C98, - 0x63AC0E8, - 0x64448C8, - 0x64DD430, - 0x65762F8, - 0x660F520, - 0x66A8A90, - 0x6742330, - 0x67DBEF0, - 0x6875DC0, - 0x690FF88, - 0x69AA438, - 0x6A44BB8, - 0x6ADF5F8, - 0x6B7A2E8, - 0x6C15270, - 0x6CB0478, - 0x6D4B8F8, - 0x6DE6FD0, - 0x6E828F0, - 0x6F1E450, - 0x6FBA1C8, - 0x7056158, - 0x70F22D8, - 0x718E648, - 0x722AB88, - 0x72C7280, - 0x7363B28, - 0x7400568, - 0x749D128, - 0x7539E50, - 0x75D6CD8, - 0x7673CA8, - 0x7710DA0, - 0x77ADFC0, - 0x784B2E0, - 0x78E86F0, - 0x7985BE8, - 0x7A231A8, - 0x7AC0820, - 0x7B5DF38, - 0x7BFB6E0, - 0x7C98F00, - 0x7D36788, - 0x7DD4058, - 0x7E71968, - 0x7F0F2A0, - 0x7FACBE8, - 0x804A530, - 0x80E7E60, - 0x8185770, - 0x8223030, - 0x82C08A0, - 0x835E0B0, - 0x83FB830, - 0x8498F30, - 0x8536580, - 0x85D3B20, - 0x8670FE0, - 0x870E3C0, - 0x87AB6B0, - 0x8848890, - 0x88E5950, - 0x89828D0, - 0x8A1F710, - 0x8ABC3F0, - 0x8B58F50, - 0x8BF5940, - 0x8C92180, - 0x8D2E810, - 0x8DCACF0, - 0x8E66FE0, - 0x8F030F0, - 0x8F9F000, - 0x903ACF0, - 0x90D67C0, - 0x9172050, - 0x920D690, - 0x92A8A60, - 0x9343BC0, - 0x93DEAA0, - 0x94796D0, - 0x9514050, - 0x95AE700, - 0x9648AD0, - 0x96E2BC0, - 0x977C9A0, - 0x9816470, - 0x98AFC20, - 0x9949080, - 0x99E2190, - 0x9A7AF40, - 0x9B13980, - 0x9BAC030, - 0x9C44340, - 0x9CDC2A0, - 0x9D73E40, - 0x9E0B610, - 0x9EA29F0, - 0x9F399D0, - 0x9FD05A0, - 0xA066D50, - 0xA0FD0D0, - 0xA193010, - 0xA228AF0, - 0xA2BE170, - 0xA353360, - 0xA3E80D0, - 0xA47C9A0, - 0xA510DC0, - 0xA5A4D10, - 0xA638790, - 0xA6CBD20, - 0xA75EDC0, - 0xA7F1960, - 0xA883FE0, - 0xA916120, - 0xA9A7D30, - 0xAA393F0, - 0xAACA560, - 0xAB5B150, - 0xABEB7C0, - 0xAC7B8A0, - 0xAD0B3D0, - 0xAD9A960, - 0xAE29920, - 0xAEB8320, - 0xAF46730, - 0xAFD4550, - 0xB061D60, - 0xB0EEF70, - 0xB17BB60, - 0xB208110, - 0xB294090, - 0xB31F9B0, - 0xB3AAC80, - 0xB4358D0, - 0xB4BFEB0, - 0xB549E10, - 0xB5D36C0, - 0xB65C8E0, - 0xB6E5430, - 0xB76D8D0, - 0xB7F5690, - 0xB87CD80, - 0xB903D70, - 0xB98A670, - 0xBA10860, - 0xBA96340, - 0xBB1B700, - 0xBBA0380, - 0xBC248D0, - 0xBCA86D0, - 0xBD2BD70, - 0xBDAECC0, - 0xBE31490, - 0xBEB34F0, - 0xBF34DC0, - 0xBFB5F00, - 0xC036890, - 0xC0B6A90, - 0xC1364C0, - 0xC1B5740, - 0xC2341E0, - 0xC2B24C0, - 0xC32FFA0, - 0xC3AD2B0, - 0xC429DB0, - 0xC4A60B0, - 0xC521BB0, - 0xC59CE90, - 0xC617940, - 0xC691BE0, - 0xC70B630, - 0xC784850, - 0xC7FD230, - 0xC8753B0, - 0xC8ECCE0, - 0xC963DA0, - 0xC9DA600, - 0xCA505F0, - 0xCAC5D60, - 0xCB3AC40, - 0xCBAF2A0, - 0xCC23060, - 0xCC96590, - 0xCD09210, - 0xCD7B5F0, - 0xCDED110, - 0xCE5E380, - 0xCECED30, - 0xCF3EE20, - 0xCFAE630, - 0xD01D570, - 0xD08BBE0, - 0xD0F9960, - 0xD166E00, - 0xD1D39C0, - 0xD23FC80, - 0xD2AB650, - 0xD316710, - 0xD380EE0, - 0xD3EADA0, - 0xD454360, - 0xD4BD010, - 0xD5253A0, - 0xD58CE20, - 0xD5F3F80, - 0xD65A7B0, - 0xD6C06D0, - 0xD725CC0, - 0xD78A980, - 0xD7EED10, - 0xD852770, - 0xD8B58A0, - 0xD918090, - 0xD979F50, - 0xD9DB4D0, - 0xDA3C110, - 0xDA9C400, - 0xDAFBDC0, - 0xDB5AE30, - 0xDBB9560, - 0xDC17340, - 0xDC747D0, - 0xDCD1320, - 0xDD2D520, - 0xDD88DD0, - 0xDDE3D40, - 0xDE3E350, - 0xDE98020, - 0xDEF1390, - 0xDF49DC0, - 0xDFA1EA0, - 0xDFF9630, - 0xE050470, - 0xE0A6960, - 0xE0FC510, - 0xE151760, - 0xE1A6070, - 0xE1FA040, - 0xE24D6C0, - 0xE2A03F0, - 0xE2F27F0, - 0xE3442A0, - 0xE395410, - 0xE3E5C40, - 0xE435B30, - 0xE4850E0, - 0xE4D3D60, - 0xE5220B0, - 0xE56FAD0, - 0xE5BCBC0, - 0xE609380, - 0xE655210, - 0xE6A0780, - 0xE6EB3D0, - 0xE735710, - 0xE77F120, - 0xE7C8220, - 0xE810A10, - 0xE858900, - 0xE89FED0, - 0xE8E6BB0, - 0xE92CF80, - 0xE972A60, - 0xE9B7C40, - 0xE9FC530, - 0xEA40540, - 0xEA83C60, - 0xEAC6AA0, - 0xEB09010, - 0xEB4ACA0, - 0xEB8C060, - 0xEBCCB60, - 0xEC0CD90, - 0xEC4C710, - 0xEC8B7D0, - 0xECC9FE0, - 0xED07F40, - 0xED45610, - 0xED82430, - 0xEDBE9C0, - 0xEDFA6D0, - 0xEE35B50, - 0xEE70750, - 0xEEAAAD0, - 0xEEE45F0, - 0xEF1D890, - 0xEF562E0, - 0xEF8E4E0, - 0xEFC5E80, - 0xEFFCFD0, - 0xF0338F0, - 0xF0699D0, - 0xF09F280, - 0xF0D4300, - 0xF108B60, - 0xF13CBB0, - 0xF1703F0, - 0xF1A3430, - 0xF1D5C70, - 0xF207CC0, - 0xF239520, - 0xF26A5A0, - 0xF29AE50, - 0xF2CAF20, - 0xF2FA840, - 0xF329990, - 0xF358340, - 0xF386540, - 0xF3B3FA0, - 0xF3E1260, - 0xF40DDA0, - 0xF43A160, - 0xF465DB0, - 0xF491290, - 0xF4BC000, - 0xF4E6630, - 0xF510500, - 0xF539C90, - 0xF562CE0, - 0xF58B610, - 0xF5B3810, - 0xF5DB300, - 0xF6026E0, - 0xF6293B0, - 0xF64F990, - 0xF675880, - 0xF69B090, - 0xF6C01C0, - 0xF6E4C20, - 0xF708FD0, - 0xF72CCB0, - 0xF7502F0, - 0xF773290, - 0xF795BA0, - 0xF7B7E20, - 0xF7D9A20, - 0xF7FAFA0, - 0xF81BEC0, - 0xF83C780, - 0xF85C9F0, - 0xF87C620, - 0xF89BC10, - 0xF8BABD0, - 0xF8D9570, - 0xF8F78F0, - 0xF915660, - 0xF932DD0, - 0xF94FF50, - 0xF96CAE0, - 0xF989090, - 0xF9A5070, - 0xF9C0A90, - 0xF9DBEE0, - 0xF9F6D90, - 0xFA11690, - 0xFA2BA00, - 0xFA457E0, - 0xFA5F040, - 0xFA78330, - 0xFA910B0, - 0xFAA98D0, - 0xFAC1BA0, - 0xFAD9920, - 0xFAF1170, - 0xFB08490, - 0xFB1F280, - 0xFB35B60, - 0xFB4BF40, - 0xFB61E10, - 0xFB777E0, - 0xFB8CCE0, - 0xFBA1CF0, - 0xFBB6830, - 0xFBCAEB0, - 0xFBDF070, - 0xFBF2D80, - 0xFC065F0, - 0xFC199C0, - 0xFC2C900, - 0xFC3F3D0, - 0xFC51A20, - 0xFC63C00, - 0xFC75980, - 0xFC872B0, - 0xFC987A0, - 0xFCA9840, - 0xFCBA4C0, - 0xFCCAD00, - 0xFCDB140, - 0xFCEB160, - 0xFCFAD80, - 0xFD0A5A0, - 0xFD199D0, - 0xFD28A20, - 0xFD37690, - 0xFD45F40, - 0xFD54420, - 0xFD62540, - 0xFD702C0, - 0xFD7DC90, - 0xFD8B2D0, - 0xFD98580, - 0xFDA54B0, - 0xFDB2060, - 0xFDBE8B0, - 0xFDCAD90, - 0xFDD6F10, - 0xFDE2D50, - 0xFDEE840, - 0xFDF9FF0, - 0xFE05480, - 0xFE105E0, - 0xFE1B420, - 0xFE25F50, - 0xFE30780, - 0xFE3ACA0, - 0xFE44EE0, - 0xFE4EE20, - 0xFE58A90, - 0xFE62420, - 0xFE6BAE0, - 0xFE74EE0, - 0xFE7E030, - 0xFE86EC0, - 0xFE8FAA0, - 0xFE983F0, - 0xFEA0AA0, - 0xFEA8ED0, - 0xFEB1070, - 0xFEB8FA0, - 0xFEC0C50, - 0xFEC86A0, - 0xFECFE90, - 0xFED7430, - 0xFEDE770, - 0xFEE5880, - 0xFEEC740, - 0xFEF33D0, - 0xFEF9E30, - 0xFF00670, - 0xFF06CA0, - 0xFF0D0B0, - 0xFF132B0, - 0xFF192B0, - 0xFF1F0B0, - 0xFF24CC0, - 0xFF2A6E0, - 0xFF2FF20, - 0xFF35590, - 0xFF3AA20, - 0xFF3FCE0, - 0xFF44DD0, - 0xFF49D10, - 0xFF4EA90, - 0xFF53670, - 0xFF58090, - 0xFF5C920, - 0xFF61010, - 0xFF65560, - 0xFF69930, - 0xFF6DB80, - 0xFF71C40, - 0xFF75B90, - 0xFF79970, - 0xFF7D5E0, - 0xFF810E0, - 0xFF84A90, - 0xFF882E0, - 0xFF8B9E0, - 0xFF8EF90, - 0xFF92400, - 0xFF95730, - 0xFF98920, - 0xFF9B9E0, - 0xFF9E970, - 0xFFA17D0, - 0xFFA4510, - 0xFFA7130, - 0xFFA9C40, - 0xFFAC630, - 0xFFAEF20, - 0xFFB1700, - 0xFFB3DE0, - 0xFFB63C0, - 0xFFB88A0, - 0xFFBAC90, - 0xFFBCFA0, - 0xFFBF1B0, - 0xFFC12E0, - 0xFFC3340, - 0xFFC52B0, - 0xFFC7150, - 0xFFC8F20, - 0xFFCAC20, - 0xFFCC850, - 0xFFCE3C0, - 0xFFCFE60, - 0xFFD1850, - 0xFFD3190, - 0xFFD4A10, - 0xFFD61E0, - 0xFFD7900, - 0xFFD8F80, - 0xFFDA550, - 0xFFDBA80, - 0xFFDCF10, - 0xFFDE310, - 0xFFDF670, - 0xFFE0940, - 0xFFE1B80, - 0xFFE2D30, - 0xFFE3E60, - 0xFFE4F00, - 0xFFE5F20, - 0xFFE6EC0, - 0xFFE7DF0, - 0xFFE8C90, - 0xFFE9AD0, - 0xFFEA890, - 0xFFEB5E0, - 0xFFEC2D0, - 0xFFECF40, - 0xFFEDB60, - 0xFFEE700, - 0xFFEF250, - 0xFFEFD40, - 0xFFF07D0, - 0xFFF1200, - 0xFFF1BD0, - 0xFFF2560, - 0xFFF2E90, - 0xFFF3770, - 0xFFF3FF0, - 0xFFF4840, - 0xFFF5030, - 0xFFF57E0, - 0xFFF5F40, - 0xFFF6670, - 0xFFF6D50, - 0xFFF73E0, - 0xFFF7A40, - 0xFFF8070, - 0xFFF8650, - 0xFFF8C00, - 0xFFF9170, - 0xFFF96C0, - 0xFFF9BC0, - 0xFFFA0A0, - 0xFFFA540, - 0xFFFA9C0, - 0xFFFAE10, - 0xFFFB220, - 0xFFFB620, - 0xFFFB9E0, - 0xFFFBD80, - 0xFFFC100, - 0xFFFC450, - 0xFFFC780, - 0xFFFCA90, - 0xFFFCD70, - 0xFFFD040, - 0xFFFD2E0, - 0xFFFD570, - 0xFFFD7E0, - 0xFFFDA30, - 0xFFFDC60, - 0xFFFDE80, - 0xFFFE080, - 0xFFFE260, - 0xFFFE430, - 0xFFFE5F0, - 0xFFFE790, - 0xFFFE920, - 0xFFFEAA0, - 0xFFFEC00, - 0xFFFED50, - 0xFFFEEA0, - 0xFFFEFD0, - 0xFFFF0F0, - 0xFFFF200, - 0xFFFF300, - 0xFFFF3F0, - 0xFFFF4E0, - 0xFFFF5B0, - 0xFFFF680, - 0xFFFF740, - 0xFFFF7F0, - 0xFFFF8A0, - 0xFFFF940, - 0xFFFF9D0, - 0xFFFFA50, - 0xFFFFAE0, - 0xFFFFB50, - 0xFFFFBC0, - 0xFFFFC30, - 0xFFFFC90, - 0xFFFFCE0, - 0xFFFFD40, - 0xFFFFD90, - 0xFFFFDD0, - 0xFFFFE10, - 0xFFFFE50, - 0xFFFFE80, - 0xFFFFEC0, - 0xFFFFEE0, - 0xFFFFF10, - 0xFFFFF30, - 0xFFFFF60, - 0xFFFFF70, - 0xFFFFF90, - 0xFFFFFB0, - 0xFFFFFC0, - 0xFFFFFD0, - 0xFFFFFE0, - 0xFFFFFF0 -}; - -real_t kbd_short_128[] = -{ - 0x2DEC, - 0x7C70, - 0xF1EC, - 0x19864, - 0x27B3D, - 0x3A753, - 0x52B03, - 0x71637, - 0x97A69, - 0xC6AA6, - 0xFFB8C, - 0x14433E, - 0x19595A, - 0x1F56E5, - 0x265635, - 0x2E72D1, - 0x37C94C, - 0x427722, - 0x4E9A83, - 0x5C5227, - 0x6BBD0D, - 0x7CFA46, - 0x9028AF, - 0xA566AF, - 0xBCD1EE, - 0xD6870D, - 0xF2A159, - 0x1113A7E, - 0x1326A3C, - 0x156461C, - 0x17CE124, - 0x1A64B92, - 0x1D29294, - 0x201C010, - 0x233DA5C, - 0x268E41C, - 0x2A0DBFC, - 0x2DBBCA0, - 0x3197C7C, - 0x35A0DC0, - 0x39D5E40, - 0x3E35788, - 0x42BDED0, - 0x476D508, - 0x4C41720, - 0x5137DE0, - 0x564DE60, - 0x5B80A20, - 0x60CCF50, - 0x662F918, - 0x6BA4FF0, - 0x7129A00, - 0x76B9B70, - 0x7C516F0, - 0x81ECE00, - 0x8788190, - 0x8D1F240, - 0x92AE100, - 0x9830F60, - 0x9DA4020, - 0xA3037A0, - 0xA84BC50, - 0xAD79720, - 0xB2893B0, - 0xB778110, - 0xBC431C0, - 0xC0E7C30, - 0xC563AF0, - 0xC9B4CF0, - 0xCDD95A0, - 0xD1CFD30, - 0xD597090, - 0xD92E180, - 0xDC94690, - 0xDFC9B20, - 0xE2CDF20, - 0xE5A1710, - 0xE844BD0, - 0xEAB8A30, - 0xECFE300, - 0xEF16A60, - 0xF1037D0, - 0xF2C6590, - 0xF461040, - 0xF5D56A0, - 0xF725920, - 0xF853960, - 0xF961A00, - 0xFA51DE0, - 0xFB26830, - 0xFBE1BE0, - 0xFC85B20, - 0xFD14770, - 0xFD90130, - 0xFDFA730, - 0xFE55700, - 0xFEA2C30, - 0xFEE40C0, - 0xFF1ACA0, - 0xFF485D0, - 0xFF6E070, - 0xFF8CEB0, - 0xFFA60D0, - 0xFFBA540, - 0xFFCA8C0, - 0xFFD7660, - 0xFFE17C0, - 0xFFE9530, - 0xFFEF5A0, - 0xFFF3EE0, - 0xFFF75F0, - 0xFFF9EC0, - 0xFFFBC90, - 0xFFFD210, - 0xFFFE150, - 0xFFFEBF0, - 0xFFFF330, - 0xFFFF800, - 0xFFFFB30, - 0xFFFFD30, - 0xFFFFE70, - 0xFFFFF30, - 0xFFFFF90, - 0xFFFFFD0, - 0xFFFFFF0, - 0x10000000, - 0x10000000, - 0x10000000 -}; - -real_t kbd_short_120[] = -{ - 0x2F6D, - 0x85A5, - 0x1093A, - 0x1C692, - 0x2CBDF, - 0x42937, - 0x5F0A9, - 0x83646, - 0xB1029, - 0xE9675, - 0x12E34C, - 0x1812C1, - 0x1E42C0, - 0x2592EE, - 0x2E2485, - 0x381A1F, - 0x439782, - 0x50C160, - 0x5FBD0E, - 0x70B036, - 0x83C082, - 0x99133E, - 0xB0CD00, - 0xCB113B, - 0xE801DA, - 0x107BEDE, - 0x12A65E6, - 0x15011DA, - 0x178DA70, - 0x1A4D3D6, - 0x1D40E4E, - 0x20695D8, - 0x23C71DC, - 0x275A4E8, - 0x2B22C6C, - 0x2F20094, - 0x335140C, - 0x37B53F4, - 0x3C4A7D4, - 0x410F198, - 0x4600DA8, - 0x4B1D308, - 0x5061378, - 0x55C9BC8, - 0x5B53418, - 0x60FA030, - 0x66B9FF0, - 0x6C8EFC0, - 0x7274920, - 0x7866300, - 0x7E5F288, - 0x845ABA0, - 0x8A54180, - 0x9046750, - 0x962D0E0, - 0x9C03350, - 0xA1C4580, - 0xA76C0E0, - 0xACF61D0, - 0xB25E890, - 0xB7A1940, - 0xBCBBCB0, - 0xC1AA0D0, - 0xC6698E0, - 0xCAF7DC0, - 0xCF52E60, - 0xD378FC0, - 0xD768D10, - 0xDB217D0, - 0xDEA2790, - 0xE1EBA10, - 0xE4FD310, - 0xE7D7BC0, - 0xEA7C2F0, - 0xECEBC40, - 0xEF27FF0, - 0xF132A80, - 0xF30DBE0, - 0xF4BB760, - 0xF63E2A0, - 0xF798580, - 0xF8CC930, - 0xF9DD7E0, - 0xFACDC30, - 0xFBA00A0, - 0xFC56F30, - 0xFCF50D0, - 0xFD7CD20, - 0xFDF09F0, - 0xFE52B60, - 0xFEA5310, - 0xFEEA080, - 0xFF23090, - 0xFF51DC0, - 0xFF77FF0, - 0xFF96C90, - 0xFFAF690, - 0xFFC2EB0, - 0xFFD2380, - 0xFFDE160, - 0xFFE7310, - 0xFFEE180, - 0xFFF3430, - 0xFFF7140, - 0xFFF9DA0, - 0xFFFBD70, - 0xFFFD3E0, - 0xFFFE360, - 0xFFFEDE0, - 0xFFFF4E0, - 0xFFFF960, - 0xFFFFC30, - 0xFFFFDE0, - 0xFFFFEE0, - 0xFFFFF70, - 0xFFFFFC0, - 0xFFFFFE0, - 0xFFFFFF0, - 0x10000000, - 0x10000000 -}; - -#endif - #ifdef __cplusplus } #endif diff --git a/libfaad2/lt_predict.c b/libfaad2/lt_predict.c index 9393201cdf..ba5f09a82b 100644 --- a/libfaad2/lt_predict.c +++ b/libfaad2/lt_predict.c @@ -22,9 +22,10 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: lt_predict.c,v 1.11 2003/07/29 08:20:12 menno Exp $ +** $Id: lt_predict.c,v 1.12 2003/09/09 18:09:52 menno Exp $ **/ + #include "common.h" #include "structs.h" diff --git a/libfaad2/lt_predict.h b/libfaad2/lt_predict.h index a1c5a95b39..8cc71b33b0 100644 --- a/libfaad2/lt_predict.h +++ b/libfaad2/lt_predict.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: lt_predict.h,v 1.5 2003/07/29 08:20:12 menno Exp $ +** $Id: lt_predict.h,v 1.6 2003/09/09 18:09:52 menno Exp $ **/ #ifdef LTP_DEC diff --git a/libfaad2/mdct.c b/libfaad2/mdct.c index 6f18d38659..ba0888d2ae 100644 --- a/libfaad2/mdct.c +++ b/libfaad2/mdct.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: mdct.c,v 1.26 2003/07/29 08:20:12 menno Exp $ +** $Id: mdct.c,v 1.28 2003/09/30 12:43:05 menno Exp $ **/ /* @@ -113,6 +113,9 @@ real_t const_tab[][5] = uint8_t map_N_to_idx(uint16_t N) { + /* gives an index into const_tab above */ + /* for normal AAC deocding (eg. no scalable profile) only */ + /* index 0 and 4 will be used */ switch(N) { case 2048: return 0; @@ -151,14 +154,23 @@ mdct_info *faad_mdct_init(uint16_t N) c = const_tab[N_idx][3]; s = const_tab[N_idx][4]; + /* (co)sine table build using recurrence relations */ + /* this can also be done using static table lookup or */ + /* some form of interpolation */ for (k = 0; k < N/4; k++) { +#if 1 RE(mdct->sincos[k]) = -1*MUL_C_C(c,scale); IM(mdct->sincos[k]) = -1*MUL_C_C(s,scale); cold = c; c = MUL_C_C(c,cangle) - MUL_C_C(s,sangle); s = MUL_C_C(s,cangle) + MUL_C_C(cold,sangle); +#else + /* no recurrence, just sines */ + RE(mdct->sincos[k]) = -scale*cos(2.0*M_PI*(k+1./8.) / (float)N); + IM(mdct->sincos[k]) = -scale*sin(2.0*M_PI*(k+1./8.) / (float)N); +#endif } /* initialise fft */ @@ -196,20 +208,16 @@ void faad_imdct(mdct_info *mdct, real_t *X_in, real_t *X_out) /* pre-IFFT complex multiplication */ for (k = 0; k < N4; k++) { - uint16_t n = k << 1; - RE(x) = X_in[ n]; - IM(x) = X_in[N2 - 1 - n]; - RE(Z1[k]) = MUL_R_C(IM(x), RE(sincos[k])) - MUL_R_C(RE(x), IM(sincos[k])); - IM(Z1[k]) = MUL_R_C(RE(x), RE(sincos[k])) + MUL_R_C(IM(x), IM(sincos[k])); + RE(Z1[k]) = MUL_R_C(X_in[N2 - 1 - 2*k], RE(sincos[k])) - MUL_R_C(X_in[2*k], IM(sincos[k])); + IM(Z1[k]) = MUL_R_C(X_in[2*k], RE(sincos[k])) + MUL_R_C(X_in[N2 - 1 - 2*k], IM(sincos[k])); } - /* complex IFFT */ + /* complex IFFT, any non-scaling FFT can be used here */ cfftb(mdct->cfft, Z1); /* post-IFFT complex multiplication */ for (k = 0; k < N4; k++) { - uint16_t n = k << 1; RE(x) = RE(Z1[k]); IM(x) = IM(Z1[k]); @@ -220,15 +228,14 @@ void faad_imdct(mdct_info *mdct, real_t *X_in, real_t *X_out) /* reordering */ for (k = 0; k < N8; k++) { - uint16_t n = k << 1; - X_out[ n] = IM(Z1[N8 + k]); - X_out[ 1 + n] = -RE(Z1[N8 - 1 - k]); - X_out[N4 + n] = RE(Z1[ k]); - X_out[N4 + 1 + n] = -IM(Z1[N4 - 1 - k]); - X_out[N2 + n] = RE(Z1[N8 + k]); - X_out[N2 + 1 + n] = -IM(Z1[N8 - 1 - k]); - X_out[N2 + N4 + n] = -IM(Z1[ k]); - X_out[N2 + N4 + 1 + n] = RE(Z1[N4 - 1 - k]); + X_out[ 2*k] = IM(Z1[N8 + k]); + X_out[ 1 + 2*k] = -RE(Z1[N8 - 1 - k]); + X_out[N4 + 2*k] = RE(Z1[ k]); + X_out[N4 + 1 + 2*k] = -IM(Z1[N4 - 1 - k]); + X_out[N2 + 2*k] = RE(Z1[N8 + k]); + X_out[N2 + 1 + 2*k] = -IM(Z1[N8 - 1 - k]); + X_out[N2 + N4 + 2*k] = -IM(Z1[ k]); + X_out[N2 + N4 + 1 + 2*k] = RE(Z1[N4 - 1 - k]); } } @@ -265,7 +272,7 @@ void faad_mdct(mdct_info *mdct, real_t *X_in, real_t *X_out) IM(Z1[k + N8]) = -MUL_R_C(IM(x), RE(sincos[k + N8])) + MUL_R_C(RE(x), IM(sincos[k + N8])); } - /* complex FFT */ + /* complex FFT, any non-scaling FFT can be used here */ cfftf(mdct->cfft, Z1); /* post-FFT complex multiplication */ diff --git a/libfaad2/mdct.h b/libfaad2/mdct.h index d9d1852e62..6f00213089 100644 --- a/libfaad2/mdct.h +++ b/libfaad2/mdct.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: mdct.h,v 1.14 2003/07/29 08:20:12 menno Exp $ +** $Id: mdct.h,v 1.15 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __MDCT_H__ @@ -32,7 +32,6 @@ extern "C" { #endif -#include "cfft.h" mdct_info *faad_mdct_init(uint16_t N); void faad_mdct_end(mdct_info *mdct); diff --git a/libfaad2/mp4.c b/libfaad2/mp4.c index f04733e1be..ef8ecf0c5a 100644 --- a/libfaad2/mp4.c +++ b/libfaad2/mp4.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: mp4.c,v 1.17 2003/07/29 08:20:12 menno Exp $ +** $Id: mp4.c,v 1.19 2003/09/18 13:38:38 menno Exp $ **/ #include "common.h" @@ -148,7 +148,7 @@ int8_t FAADAPI AudioSpecificConfig2(uint8_t *pBuffer, mp4ASC->channelsConfiguration = (uint8_t)faad_getbits(&ld, 4 DEBUGVAR(1,3,"parse_audio_decoder_specific_info(): ChannelsConfiguration")); - mp4ASC->samplingFrequency = sample_rates[mp4ASC->samplingFrequencyIndex]; + mp4ASC->samplingFrequency = get_sample_rate(mp4ASC->samplingFrequencyIndex); if (ObjectTypesTable[mp4ASC->objectTypeIndex] != 1) { @@ -180,7 +180,7 @@ int8_t FAADAPI AudioSpecificConfig2(uint8_t *pBuffer, mp4ASC->samplingFrequency = (uint32_t)faad_getbits(&ld, 24 DEBUGVAR(1,6,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex")); } else { - mp4ASC->samplingFrequency = sample_rates[mp4ASC->samplingFrequencyIndex]; + mp4ASC->samplingFrequency = get_sample_rate(mp4ASC->samplingFrequencyIndex); } mp4ASC->objectTypeIndex = (uint8_t)faad_getbits(&ld, 5 DEBUGVAR(1,7,"parse_audio_decoder_specific_info(): ObjectTypeIndex")); @@ -216,7 +216,7 @@ int8_t FAADAPI AudioSpecificConfig2(uint8_t *pBuffer, #ifdef SBR_DEC - bits_to_decode = buffer_size*8 - faad_get_processed_bits(&ld); + bits_to_decode = (int8_t)(buffer_size*8 - faad_get_processed_bits(&ld)); if ((mp4ASC->objectTypeIndex != 5) && (bits_to_decode >= 16)) { @@ -242,12 +242,23 @@ int8_t FAADAPI AudioSpecificConfig2(uint8_t *pBuffer, mp4ASC->samplingFrequency = (uint32_t)faad_getbits(&ld, 24 DEBUGVAR(1,13,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex")); } else { - mp4ASC->samplingFrequency = sample_rates[mp4ASC->samplingFrequencyIndex]; + mp4ASC->samplingFrequency = get_sample_rate(mp4ASC->samplingFrequencyIndex); } } } } } + + /* no SBR signalled, this could mean either implicit signalling or no SBR in this file */ + /* MPEG specification states: assume SBR on files with samplerate <= 24000 Hz */ + if (mp4ASC->sbr_present_flag == -1) + { + if (mp4ASC->samplingFrequency <= 24000) + { + mp4ASC->samplingFrequency *= 2; + mp4ASC->forceUpSampling = 1; + } + } #endif faad_endbits(&ld); diff --git a/libfaad2/mp4.h b/libfaad2/mp4.h index df6ea5b50b..eb0e8cb5e9 100644 --- a/libfaad2/mp4.h +++ b/libfaad2/mp4.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: mp4.h,v 1.9 2003/07/29 08:20:12 menno Exp $ +** $Id: mp4.h,v 1.10 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __MP4_H__ diff --git a/libfaad2/ms.c b/libfaad2/ms.c index 8b2c023207..ea0f9727a5 100644 --- a/libfaad2/ms.c +++ b/libfaad2/ms.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: ms.c,v 1.5 2003/07/29 08:20:12 menno Exp $ +** $Id: ms.c,v 1.6 2003/09/09 18:09:52 menno Exp $ **/ #include "common.h" diff --git a/libfaad2/ms.h b/libfaad2/ms.h index 049a78c14d..fbdb8f87f2 100644 --- a/libfaad2/ms.h +++ b/libfaad2/ms.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: ms.h,v 1.4 2003/07/29 08:20:12 menno Exp $ +** $Id: ms.h,v 1.5 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __MS_H__ diff --git a/libfaad2/output.c b/libfaad2/output.c index c7841f91ab..9baf62bd6c 100644 --- a/libfaad2/output.c +++ b/libfaad2/output.c @@ -50,7 +50,7 @@ dither_t Dither; double doubletmp; -#define DM_MUL (1./(1.+sqrt(2.))) +#define DM_MUL ((real_t)1.0/((real_t)1.0+(real_t)sqrt(2.0))) static INLINE real_t get_sample(real_t **input, uint8_t channel, uint16_t sample, uint8_t downMatrix, uint8_t *internal_channel) @@ -60,12 +60,12 @@ static INLINE real_t get_sample(real_t **input, uint8_t channel, uint16_t sample if (channel == 0) { return DM_MUL * (input[internal_channel[1]][sample] + - input[internal_channel[0]][sample]/sqrt(2.) + - input[internal_channel[3]][sample]/sqrt(2.)); + input[internal_channel[0]][sample]/(real_t)sqrt(2.) + + input[internal_channel[3]][sample]/(real_t)sqrt(2.)); } else { return DM_MUL * (input[internal_channel[2]][sample] + - input[internal_channel[0]][sample]/sqrt(2.) + - input[internal_channel[4]][sample]/sqrt(2.)); + input[internal_channel[0]][sample]/(real_t)sqrt(2.) + + input[internal_channel[4]][sample]/(real_t)sqrt(2.)); } } else { return input[internal_channel[channel]][sample]; @@ -107,7 +107,8 @@ void* output_to_PCM(faacDecHandle hDecoder, case FAAD_FMT_16BIT_DITHER: for(i = 0; i < frame_len; i++, j++) { - real_t inp = input[internal_channel][i]; + //real_t inp = input[internal_channel][i]; + real_t inp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->internal_channel); double Sum = inp * 65535.f; int64_t val; if(j > 31) @@ -125,7 +126,8 @@ void* output_to_PCM(faacDecHandle hDecoder, case FAAD_FMT_16BIT_H_SHAPE: for(i = 0; i < frame_len; i++, j++) { - real_t inp = input[internal_channel][i]; + //real_t inp = input[internal_channel][i]; + real_t inp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->internal_channel); double Sum = inp * 65535.f; int64_t val; if(j > 31) @@ -141,7 +143,8 @@ void* output_to_PCM(faacDecHandle hDecoder, case FAAD_FMT_24BIT: for(i = 0; i < frame_len; i++) { - real_t inp = input[internal_channel][i]; + //real_t inp = input[internal_channel][i]; + real_t inp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->internal_channel); if (inp > (1<<15)-1) inp = (1<<15)-1; else if (inp < -(1<<15)) @@ -152,7 +155,8 @@ void* output_to_PCM(faacDecHandle hDecoder, case FAAD_FMT_32BIT: for(i = 0; i < frame_len; i++) { - real_t inp = input[internal_channel][i]; + //real_t inp = input[internal_channel][i]; + real_t inp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->internal_channel); if (inp > (1<<15)-1) inp = (1<<15)-1; else if (inp < -(1<<15)) @@ -163,14 +167,16 @@ void* output_to_PCM(faacDecHandle hDecoder, case FAAD_FMT_FLOAT: for(i = 0; i < frame_len; i++) { - real_t inp = input[internal_channel][i]; + //real_t inp = input[internal_channel][i]; + real_t inp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->internal_channel); float_sample_buffer[(i*channels)+ch] = inp*FLOAT_SCALE; } break; case FAAD_FMT_DOUBLE: for(i = 0; i < frame_len; i++) { - real_t inp = input[internal_channel][i]; + //real_t inp = input[internal_channel][i]; + real_t inp = get_sample(input, ch, i, hDecoder->downMatrix, hDecoder->internal_channel); double_sample_buffer[(i*channels)+ch] = (double)inp*FLOAT_SCALE; } break; @@ -191,13 +197,13 @@ static int64_t dither_output(uint8_t dithering, uint8_t shapingtype, uint16_t i, if(!shapingtype) { double tmp = Random_Equi(Dither.Dither); - Sum2 = tmp - Dither.LastRandomNumber[k]; - Dither.LastRandomNumber[k] = tmp; + Sum2 = tmp - (double)Dither.LastRandomNumber[k]; + Dither.LastRandomNumber[k] = (int32_t)tmp; Sum2 = Sum += Sum2; val = ROUND64(Sum2)&Dither.Mask; } else { Sum2 = Random_Triangular(Dither.Dither) - scalar16(Dither.DitherHistory[k], Dither.FilterCoeff + i); - Sum += Dither.DitherHistory[k][(-1-i)&15] = Sum2; + Sum += Dither.DitherHistory[k][(-1-i)&15] = (float32_t)Sum2; Sum2 = Sum + scalar16(Dither.ErrorHistory[k], Dither.FilterCoeff + i ); val = ROUND64(Sum2)&Dither.Mask; Dither.ErrorHistory[k][(-1-i)&15] = (float)(Sum - val); diff --git a/libfaad2/output.h b/libfaad2/output.h index c3f60ff45f..1e2aa48a92 100644 --- a/libfaad2/output.h +++ b/libfaad2/output.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: output.h,v 1.8 2003/07/29 08:20:12 menno Exp $ +** $Id: output.h,v 1.9 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __OUTPUT_H__ diff --git a/libfaad2/pns.c b/libfaad2/pns.c index 7bdc54c17b..86f2262d80 100644 --- a/libfaad2/pns.c +++ b/libfaad2/pns.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: pns.c,v 1.21 2003/07/29 08:20:12 menno Exp $ +** $Id: pns.c,v 1.22 2003/09/09 18:09:52 menno Exp $ **/ #include "common.h" @@ -33,7 +33,7 @@ #ifdef FIXED_POINT -#define DIV(A, B) (((int64_t)A << COEF_BITS)/B) +#define DIV(A, B) (((int64_t)A << REAL_BITS)/B) #define step(shift) \ if ((0x40000000l >> shift) + root <= value) \ @@ -45,6 +45,7 @@ } /* fixed point square root approximation */ +/* !!!! ONLY WORKS FOR EVEN %REAL_BITS% !!!! */ real_t fp_sqrt(real_t value) { real_t root = 0; @@ -57,7 +58,7 @@ real_t fp_sqrt(real_t value) if (root < value) ++root; - root <<= (COEF_BITS/2); + root <<= (REAL_BITS/2); return root; } @@ -79,13 +80,14 @@ static real_t pow2_table[] = value. A suitable random number generator can be realized using one multiplication/accumulation per random value. */ -static INLINE void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t size) +static INLINE void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t size, + uint8_t sub) { #ifndef FIXED_POINT uint16_t i; real_t energy = 0.0; - real_t scale = 1.0/(real_t)size * ISQRT_MEAN_NRG; + real_t scale = (real_t)1.0/(real_t)size; for (i = 0; i < size; i++) { @@ -94,7 +96,7 @@ static INLINE void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t energy += tmp*tmp; } - scale = 1.0/(real_t)sqrt(energy); + scale = (real_t)1.0/(real_t)sqrt(energy); scale *= (real_t)pow(2.0, 0.25 * scale_factor); for (i = 0; i < size; i++) { @@ -107,25 +109,29 @@ static INLINE void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t for (i = 0; i < size; i++) { - real_t tmp = ISQRT_MEAN_NRG * (int32_t)random_int(); - tmp = MUL_C_C(COEF_CONST(1)/size, tmp); + /* this can be replaced by a 16 bit random generator!!!! */ + real_t tmp = (int32_t)random_int(); + if (tmp < 0) + tmp = -(tmp & ((1<<(REAL_BITS-1))-1)); + else + tmp = (tmp & ((1<<(REAL_BITS-1))-1)); - energy += MUL_C_C(tmp,tmp); + energy += MUL(tmp,tmp); - /* convert COEF to REAL */ - spec[i] = (tmp >> -(REAL_BITS-COEF_BITS)); + spec[i] = tmp; } energy = fp_sqrt(energy); if (energy > 0) { - scale = DIV(COEF_CONST(1),energy); - - scale >>= -(REAL_BITS-COEF_BITS); + scale = DIV(REAL_CONST(1),energy); exp = scale_factor / 4; frac = scale_factor % 4; + /* IMDCT pre-scaling */ + exp -= sub; + if (exp < 0) scale >>= -exp; else @@ -144,7 +150,7 @@ static INLINE void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t void pns_decode(ic_stream *ics_left, ic_stream *ics_right, real_t *spec_left, real_t *spec_right, uint16_t frame_len, - uint8_t channel_pair) + uint8_t channel_pair, uint8_t object_type) { uint8_t g, sfb, b; uint16_t size, offs; @@ -152,6 +158,21 @@ void pns_decode(ic_stream *ics_left, ic_stream *ics_right, uint8_t group = 0; uint16_t nshort = frame_len >> 3; + uint8_t sub = 0; + +#ifdef FIXED_POINT + /* IMDCT scaling */ + if (object_type == LD) + { + sub = 9 /*9*/; + } else { + if (ics_left->window_sequence == EIGHT_SHORT_SEQUENCE) + sub = 7 /*7*/; + else + sub = 10 /*10*/; + } +#endif + for (g = 0; g < ics_left->num_window_groups; g++) { /* Do perceptual noise substitution decoding */ @@ -179,7 +200,7 @@ void pns_decode(ic_stream *ics_left, ic_stream *ics_right, /* Generate random vector */ gen_rand_vector(&spec_left[(group*nshort)+offs], - ics_left->scale_factors[g][sfb], size); + ics_left->scale_factors[g][sfb], size, sub); } /* From the spec: @@ -223,7 +244,7 @@ void pns_decode(ic_stream *ics_left, ic_stream *ics_right, /* Generate random vector */ gen_rand_vector(&spec_right[(group*nshort)+offs], - ics_right->scale_factors[g][sfb], size); + ics_right->scale_factors[g][sfb], size, sub); } } } diff --git a/libfaad2/pns.h b/libfaad2/pns.h index 5a61fa71d2..f486360c17 100644 --- a/libfaad2/pns.h +++ b/libfaad2/pns.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: pns.h,v 1.11 2003/07/29 08:20:13 menno Exp $ +** $Id: pns.h,v 1.12 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __PNS_H__ @@ -37,20 +37,14 @@ extern "C" { #include "syntax.h" #define NOISE_OFFSET 90 -/* #define MEAN_NRG 1.537228e+18 */ /* (2^31)^2 / 3 */ -#ifdef FIXED_POINT -#define ISQRT_MEAN_NRG 0x1DC7 /* sqrt(1/sqrt(MEAN_NRG)) */ -#else -#define ISQRT_MEAN_NRG 8.0655e-10 /* 1/sqrt(MEAN_NRG) */ -#endif - void pns_decode(ic_stream *ics_left, ic_stream *ics_right, real_t *spec_left, real_t *spec_right, uint16_t frame_len, - uint8_t channel_pair); + uint8_t channel_pair, uint8_t object_type); static INLINE int32_t random2(); -static void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t size); +static void gen_rand_vector(real_t *spec, int16_t scale_factor, uint16_t size, + uint8_t sub); static INLINE uint8_t is_noise(ic_stream *ics, uint8_t group, uint8_t sfb) { diff --git a/libfaad2/pulse.c b/libfaad2/pulse.c index 16c8525582..43b0fbfd04 100644 --- a/libfaad2/pulse.c +++ b/libfaad2/pulse.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: pulse.c,v 1.6 2003/07/29 08:20:13 menno Exp $ +** $Id: pulse.c,v 1.7 2003/09/09 18:09:52 menno Exp $ **/ #include "common.h" diff --git a/libfaad2/pulse.h b/libfaad2/pulse.h index 1d7fb84067..53a26d826c 100644 --- a/libfaad2/pulse.h +++ b/libfaad2/pulse.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: pulse.h,v 1.5 2003/07/29 08:20:13 menno Exp $ +** $Id: pulse.h,v 1.6 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __PULSE_H__ diff --git a/libfaad2/rvlc.c b/libfaad2/rvlc.c index 2715250703..d00c653e56 100644 --- a/libfaad2/rvlc.c +++ b/libfaad2/rvlc.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: rvlc.c,v 1.5 2003/07/29 08:20:13 menno Exp $ +** $Id: rvlc.c,v 1.6 2003/09/09 18:09:52 menno Exp $ **/ /* RVLC scalefactor decoding diff --git a/libfaad2/rvlc.h b/libfaad2/rvlc.h index 2c61e5442e..12353c1cc8 100644 --- a/libfaad2/rvlc.h +++ b/libfaad2/rvlc.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: rvlc.h,v 1.2 2003/07/29 08:20:13 menno Exp $ +** $Id: rvlc.h,v 1.3 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __RVLC_SCF_H__ diff --git a/libfaad2/sbr_dct.c b/libfaad2/sbr_dct.c index 5f8a7d9e9d..d0a654b7ef 100644 --- a/libfaad2/sbr_dct.c +++ b/libfaad2/sbr_dct.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_dct.c,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_dct.c,v 1.4 2003/09/24 11:52:12 menno Exp $ **/ #include "common.h" @@ -2650,1624 +2650,6 @@ void DCT4_64(real_t *y, real_t *x) y[32] = f801 - f800; } -void DST4_64(real_t *y, real_t *x) -{ - real_t f1; - real_t f3; - real_t f5; - real_t f7; - real_t f9; - real_t f11; - real_t f13; - real_t f15; - real_t f17; - real_t f19; - real_t f21; - real_t f23; - real_t f25; - real_t f27; - real_t f29; - real_t f31; - real_t f33; - real_t f35; - real_t f37; - real_t f39; - real_t f41; - real_t f43; - real_t f45; - real_t f47; - real_t f49; - real_t f51; - real_t f53; - real_t f55; - real_t f57; - real_t f59; - real_t f61; - real_t f63; - int16_t i0; - real_t f66; - real_t f67; - real_t f68; - real_t f69; - real_t f70; - real_t f71; - real_t f72; - real_t f73; - real_t f74; - real_t f75; - real_t f76; - real_t f77; - real_t f78; - real_t f79; - real_t f80; - real_t f81; - real_t f82; - real_t f83; - real_t f84; - real_t f85; - real_t f86; - real_t f87; - real_t f88; - real_t f89; - real_t f90; - real_t f91; - real_t f92; - real_t f93; - real_t f94; - real_t f95; - real_t f96; - real_t f97; - real_t f98; - real_t f99; - real_t f100; - real_t f101; - real_t f102; - real_t f103; - real_t f104; - real_t f105; - real_t f106; - real_t f107; - real_t f108; - real_t f109; - real_t f110; - real_t f111; - real_t f112; - real_t f113; - real_t f114; - real_t f115; - real_t f116; - real_t f117; - real_t f118; - real_t f119; - real_t f120; - real_t f121; - real_t f122; - real_t f123; - real_t f124; - real_t f125; - real_t f126; - real_t f127; - real_t f128; - real_t f129; - real_t f130; - real_t f131; - real_t f132; - real_t f133; - real_t f134; - real_t f135; - real_t f136; - real_t f137; - real_t f138; - real_t f139; - real_t f140; - real_t f141; - real_t f142; - real_t f143; - real_t f144; - real_t f145; - real_t f146; - real_t f147; - real_t f148; - real_t f149; - real_t f150; - real_t f151; - real_t f152; - real_t f153; - real_t f154; - real_t f155; - real_t f156; - real_t f157; - real_t f158; - real_t f159; - real_t f160; - real_t f161; - real_t f162; - real_t f163; - real_t f164; - real_t f165; - real_t f166; - real_t f167; - real_t f168; - real_t f169; - real_t f170; - real_t f171; - real_t f172; - real_t f173; - real_t f174; - real_t f175; - real_t f176; - real_t f177; - real_t f178; - real_t f179; - real_t f180; - real_t f181; - real_t f182; - real_t f183; - real_t f184; - real_t f185; - real_t f186; - real_t f187; - real_t f188; - real_t f189; - real_t f190; - real_t f191; - real_t f192; - real_t f193; - real_t f194; - real_t f195; - real_t f196; - real_t f197; - real_t f198; - real_t f199; - real_t f200; - real_t f201; - real_t f202; - real_t f203; - real_t f204; - real_t f205; - real_t f206; - real_t f207; - real_t f208; - real_t f209; - real_t f210; - real_t f211; - real_t f212; - real_t f213; - real_t f214; - real_t f215; - real_t f216; - real_t f217; - real_t f218; - real_t f219; - real_t f220; - real_t f221; - real_t f222; - real_t f223; - real_t f224; - real_t f225; - real_t f226; - real_t f227; - real_t f228; - real_t f229; - real_t f230; - real_t f231; - real_t f232; - real_t f233; - real_t f234; - real_t f235; - real_t f236; - real_t f237; - real_t f238; - real_t f239; - real_t f240; - real_t f241; - real_t f242; - real_t f243; - real_t f244; - real_t f245; - real_t f246; - real_t f247; - real_t f248; - real_t f249; - real_t f250; - real_t f251; - real_t f252; - real_t f253; - real_t f254; - real_t f255; - real_t f256; - real_t f257; - real_t f258; - real_t f259; - real_t f260; - real_t f261; - real_t f262; - real_t f263; - real_t f264; - real_t f265; - real_t f266; - real_t f267; - real_t f268; - real_t f269; - real_t f270; - real_t f271; - real_t f272; - real_t f273; - real_t f274; - real_t f275; - real_t f276; - real_t f277; - real_t f278; - real_t f279; - real_t f280; - real_t f281; - real_t f282; - real_t f283; - real_t f284; - real_t f285; - real_t f286; - real_t f287; - real_t f288; - real_t f289; - real_t f290; - real_t f291; - real_t f292; - real_t f293; - real_t f294; - real_t f295; - real_t f296; - real_t f297; - real_t f298; - real_t f299; - real_t f300; - real_t f301; - real_t f302; - real_t f303; - real_t f304; - real_t f305; - real_t f306; - real_t f307; - real_t f308; - real_t f309; - real_t f310; - real_t f311; - real_t f312; - real_t f313; - real_t f314; - real_t f315; - real_t f316; - real_t f317; - real_t f318; - real_t f319; - real_t f320; - real_t f321; - real_t f322; - real_t f323; - real_t f324; - real_t f325; - real_t f326; - real_t f327; - real_t f328; - real_t f329; - real_t f330; - real_t f331; - real_t f332; - real_t f333; - real_t f334; - real_t f335; - real_t f336; - real_t f337; - real_t f338; - real_t f339; - real_t f340; - real_t f341; - real_t f342; - real_t f343; - real_t f344; - real_t f345; - real_t f346; - real_t f347; - real_t f348; - real_t f349; - real_t f350; - real_t f351; - real_t f352; - real_t f353; - real_t f354; - real_t f355; - real_t f356; - real_t f357; - real_t f358; - real_t f359; - real_t f360; - real_t f361; - real_t f362; - real_t f363; - real_t f364; - real_t f365; - real_t f366; - real_t f367; - real_t f368; - real_t f369; - real_t f370; - real_t f371; - real_t f372; - real_t f373; - real_t f374; - real_t f375; - real_t f376; - real_t f377; - real_t f378; - real_t f379; - real_t f380; - real_t f381; - real_t f382; - real_t f383; - real_t f384; - real_t f385; - real_t f386; - real_t f387; - real_t f388; - real_t f389; - real_t f390; - real_t f391; - real_t f392; - real_t f393; - real_t f394; - real_t f395; - real_t f396; - real_t f397; - real_t f398; - real_t f399; - real_t f400; - real_t f401; - real_t f402; - real_t f403; - real_t f404; - real_t f405; - real_t f406; - real_t f407; - real_t f408; - real_t f409; - real_t f410; - real_t f411; - real_t f412; - real_t f413; - real_t f414; - real_t f415; - real_t f416; - real_t f417; - real_t f418; - real_t f419; - real_t f420; - real_t f421; - real_t f422; - real_t f423; - real_t f424; - real_t f425; - real_t f426; - real_t f427; - real_t f428; - real_t f429; - real_t f430; - real_t f431; - real_t f432; - real_t f433; - real_t f434; - real_t f435; - real_t f436; - real_t f437; - real_t f438; - real_t f439; - real_t f440; - real_t f441; - real_t f442; - real_t f443; - real_t f444; - real_t f445; - real_t f446; - real_t f447; - real_t f448; - real_t f449; - real_t f450; - real_t f451; - real_t f452; - real_t f453; - real_t f454; - real_t f455; - real_t f456; - real_t f457; - real_t f458; - real_t f459; - real_t f460; - real_t f461; - real_t f462; - real_t f463; - real_t f464; - real_t f465; - real_t f466; - real_t f467; - real_t f468; - real_t f469; - real_t f470; - real_t f471; - real_t f472; - real_t f473; - real_t f474; - real_t f475; - real_t f476; - real_t f477; - real_t f478; - real_t f479; - real_t f480; - real_t f481; - real_t f482; - real_t f483; - real_t f484; - real_t f485; - real_t f486; - real_t f487; - real_t f488; - real_t f489; - real_t f490; - real_t f491; - real_t f492; - real_t f493; - real_t f494; - real_t f495; - real_t f496; - real_t f497; - real_t f498; - real_t f499; - real_t f500; - real_t f501; - real_t f502; - real_t f503; - real_t f504; - real_t f505; - real_t f506; - real_t f507; - real_t f508; - real_t f509; - real_t f510; - real_t f511; - real_t f512; - real_t f513; - real_t f514; - real_t f515; - real_t f516; - real_t f517; - real_t f518; - real_t f519; - real_t f520; - real_t f521; - real_t f522; - real_t f523; - real_t f524; - real_t f525; - real_t f526; - real_t f527; - real_t f528; - real_t f529; - real_t f530; - real_t f531; - real_t f532; - real_t f533; - real_t f534; - real_t f535; - real_t f536; - real_t f537; - real_t f538; - real_t f539; - real_t f540; - real_t f541; - real_t f542; - real_t f543; - real_t f544; - real_t f545; - real_t f546; - real_t f547; - real_t f548; - real_t f549; - real_t f550; - real_t f551; - real_t f552; - real_t f553; - real_t f554; - real_t f555; - real_t f556; - real_t f557; - real_t f558; - real_t f559; - real_t f560; - real_t f561; - real_t f562; - real_t f563; - real_t f564; - real_t f565; - real_t f566; - real_t f567; - real_t f568; - real_t f569; - real_t f570; - real_t f571; - real_t f572; - real_t f573; - real_t f574; - real_t f575; - real_t f576; - real_t f577; - real_t f578; - real_t f579; - real_t f580; - real_t f581; - real_t f582; - real_t f583; - real_t f584; - real_t f585; - real_t f586; - real_t f587; - real_t f588; - real_t f589; - real_t f590; - real_t f591; - real_t f592; - real_t f593; - real_t f594; - real_t f595; - real_t f596; - real_t f597; - real_t f598; - real_t f599; - real_t f600; - real_t f601; - real_t f602; - real_t f603; - real_t f604; - real_t f605; - real_t f606; - real_t f607; - real_t f608; - real_t f609; - real_t f610; - real_t f611; - real_t f612; - real_t f613; - real_t f614; - real_t f615; - real_t f616; - real_t f617; - real_t f618; - real_t f619; - real_t f620; - real_t f621; - real_t f622; - real_t f623; - real_t f624; - real_t f625; - real_t f626; - real_t f627; - real_t f628; - real_t f629; - real_t f630; - real_t f631; - real_t f632; - real_t f633; - real_t f634; - real_t f635; - real_t f636; - real_t f637; - real_t f638; - real_t f639; - real_t f640; - real_t f641; - real_t f642; - real_t f643; - real_t f644; - real_t f645; - real_t f646; - real_t f647; - real_t f648; - real_t f649; - real_t f650; - real_t f651; - real_t f652; - real_t f653; - real_t f654; - real_t f655; - real_t f656; - real_t f657; - real_t f658; - real_t f659; - real_t f660; - real_t f661; - real_t f662; - real_t f663; - real_t f664; - real_t f665; - real_t f666; - real_t f667; - real_t f668; - real_t f669; - real_t f670; - real_t f671; - real_t f672; - real_t f673; - real_t f674; - real_t f675; - real_t f676; - real_t f677; - real_t f678; - real_t f679; - real_t f681; - real_t f682; - real_t f683; - real_t f684; - real_t f685; - real_t f686; - real_t f687; - real_t f688; - real_t f689; - real_t f690; - real_t f691; - real_t f692; - real_t f693; - real_t f694; - real_t f695; - real_t f696; - real_t f697; - real_t f698; - real_t f699; - real_t f700; - real_t f701; - real_t f702; - real_t f703; - real_t f704; - real_t f705; - real_t f706; - real_t f707; - real_t f708; - real_t f709; - real_t f710; - real_t f711; - real_t f712; - real_t f713; - real_t f714; - real_t f715; - real_t f716; - real_t f717; - real_t f718; - real_t f719; - real_t f720; - real_t f721; - real_t f722; - real_t f723; - real_t f724; - real_t f725; - real_t f726; - real_t f727; - real_t f728; - real_t f729; - real_t f730; - real_t f731; - real_t f732; - real_t f733; - real_t f734; - real_t f735; - real_t f736; - real_t f737; - real_t f738; - real_t f739; - real_t f740; - real_t f741; - real_t f742; - real_t f743; - real_t f744; - real_t f745; - real_t f746; - real_t f747; - real_t f748; - real_t f749; - real_t f750; - real_t f751; - real_t f752; - real_t f753; - real_t f754; - real_t f755; - real_t f756; - real_t f757; - real_t f758; - real_t f759; - real_t f760; - real_t f761; - real_t f762; - real_t f763; - real_t f764; - real_t f765; - real_t f766; - real_t f767; - real_t f768; - real_t f769; - real_t f770; - static real_t t7[64]; - static real_t t6[64]; - static real_t t0[64]; - - t7[0] = 0.5000376519155477 * x[0]; - f1 = 0.5003390374428216 * x[1]; - t7[2] = 0 - f1; - t7[4] = 0.5009427176380873 * x[2]; - f3 = 0.5018505174842379 * x[3]; - t7[6] = 0 - f3; - t7[8] = 0.5030651913013697 * x[4]; - f5 = 0.5045904432216454 * x[5]; - t7[10] = 0 - f5; - t7[12] = 0.5064309549285542 * x[6]; - f7 = 0.5085924210498143 * x[7]; - t7[14] = 0 - f7; - t7[16] = 0.5110815927066812 * x[8]; - f9 = 0.5139063298475396 * x[9]; - t7[18] = 0 - f9; - t7[20] = 0.5170756631334912 * x[10]; - f11 = 0.5205998663018917 * x[11]; - t7[22] = 0 - f11; - t7[24] = 0.5244905401147240 * x[12]; - f13 = 0.5287607092074876 * x[13]; - t7[26] = 0 - f13; - t7[28] = 0.5334249333971333 * x[14]; - f15 = 0.5384994352919840 * x[15]; - t7[30] = 0 - f15; - t7[32] = 0.5440022463817783 * x[16]; - f17 = 0.5499533741832360 * x[17]; - t7[34] = 0 - f17; - t7[36] = 0.5563749934898856 * x[18]; - f19 = 0.5632916653417023 * x[19]; - t7[38] = 0 - f19; - t7[40] = 0.5707305880121454 * x[20]; - f21 = 0.5787218851348208 * x[21]; - t7[42] = 0 - f21; - t7[44] = 0.5872989370937893 * x[22]; - f23 = 0.5964987630244563 * x[23]; - t7[46] = 0 - f23; - t7[48] = 0.6063624622721460 * x[24]; - f25 = 0.6169357260050706 * x[25]; - t7[50] = 0 - f25; - t7[52] = 0.6282694319707711 * x[26]; - f27 = 0.6404203382416639 * x[27]; - t7[54] = 0 - f27; - t7[56] = 0.6534518953751283 * x[28]; - f29 = 0.6674352009263413 * x[29]; - t7[58] = 0 - f29; - t7[60] = 0.6824501259764195 * x[30]; - f31 = 0.6985866506472291 * x[31]; - t7[62] = 0 - f31; - t7[63] = 0.7159464549705746 * x[32]; - f33 = 0.7346448236478627 * x[33]; - t7[61] = 0 - f33; - t7[59] = 0.7548129391165311 * x[34]; - f35 = 0.7766006582339630 * x[35]; - t7[57] = 0 - f35; - t7[55] = 0.8001798956216941 * x[36]; - f37 = 0.8257487738627852 * x[37]; - t7[53] = 0 - f37; - t7[51] = 0.8535367510066064 * x[38]; - f39 = 0.8838110045596234 * x[39]; - t7[49] = 0 - f39; - t7[47] = 0.9168844461846523 * x[40]; - f41 = 0.9531258743921193 * x[41]; - t7[45] = 0 - f41; - t7[43] = 0.9929729612675466 * x[42]; - f43 = 1.0369490409103890 * x[43]; - t7[41] = 0 - f43; - t7[39] = 1.0856850642580145 * x[44]; - f45 = 1.1399486751015042 * x[45]; - t7[37] = 0 - f45; - t7[35] = 1.2006832557294167 * x[46]; - f47 = 1.2690611716991191 * x[47]; - t7[33] = 0 - f47; - t7[31] = 1.3465576282062861 * x[48]; - f49 = 1.4350550884414341 * x[49]; - t7[29] = 0 - f49; - t7[27] = 1.5369941008524954 * x[50]; - f51 = 1.6555965242641195 * x[51]; - t7[25] = 0 - f51; - t7[23] = 1.7952052190778898 * x[52]; - f53 = 1.9618178485711659 * x[53]; - t7[21] = 0 - f53; - t7[19] = 2.1639578187519790 * x[54]; - f55 = 2.4141600002500763 * x[55]; - t7[17] = 0 - f55; - t7[15] = 2.7316450287739396 * x[56]; - f57 = 3.1474621917819090 * x[57]; - t7[13] = 0 - f57; - t7[11] = 3.7152427383269746 * x[58]; - f59 = 4.5362909369693565 * x[59]; - t7[9] = 0 - f59; - t7[7] = 5.8276883778446544 * x[60]; - f61 = 8.1538486024668142 * x[61]; - t7[5] = 0 - f61; - t7[3] = 13.5842902572844600 * x[62]; - f63 = 40.7446881033518340 * x[63]; - t7[1] = 0 - f63; - for (i0=0; i0<32; i0++) - { - t6[2*i0+1] = t7[2*i0] - t7[2*i0+1]; - t6[2*i0] = t7[2*i0] + t7[2*i0+1]; - } - f66 = t6[0] - t6[62]; - f67 = t6[0] + t6[62]; - f68 = t6[2] - t6[60]; - f69 = t6[2] + t6[60]; - f70 = t6[4] - t6[58]; - f71 = t6[4] + t6[58]; - f72 = t6[6] - t6[56]; - f73 = t6[6] + t6[56]; - f74 = t6[8] - t6[54]; - f75 = t6[8] + t6[54]; - f76 = t6[10] - t6[52]; - f77 = t6[10] + t6[52]; - f78 = t6[12] - t6[50]; - f79 = t6[12] + t6[50]; - f80 = t6[14] - t6[48]; - f81 = t6[14] + t6[48]; - f82 = t6[16] - t6[46]; - f83 = t6[16] + t6[46]; - f84 = t6[18] - t6[44]; - f85 = t6[18] + t6[44]; - f86 = t6[20] - t6[42]; - f87 = t6[20] + t6[42]; - f88 = t6[22] - t6[40]; - f89 = t6[22] + t6[40]; - f90 = t6[24] - t6[38]; - f91 = t6[24] + t6[38]; - f92 = t6[26] - t6[36]; - f93 = t6[26] + t6[36]; - f94 = t6[28] - t6[34]; - f95 = t6[28] + t6[34]; - f96 = t6[30] - t6[32]; - f97 = t6[30] + t6[32]; - f98 = f67 - f97; - f99 = f67 + f97; - f100 = f69 - f95; - f101 = f69 + f95; - f102 = f71 - f93; - f103 = f71 + f93; - f104 = f73 - f91; - f105 = f73 + f91; - f106 = f75 - f89; - f107 = f75 + f89; - f108 = f77 - f87; - f109 = f77 + f87; - f110 = f79 - f85; - f111 = f79 + f85; - f112 = f81 - f83; - f113 = f81 + f83; - f114 = f99 - f113; - f115 = f99 + f113; - f116 = f101 - f111; - f117 = f101 + f111; - f118 = f103 - f109; - f119 = f103 + f109; - f120 = f105 - f107; - f121 = f105 + f107; - f122 = f115 - f121; - f123 = f115 + f121; - f124 = f117 - f119; - f125 = f117 + f119; - f126 = f123 - f125; - f127 = f123 + f125; - f128 = 0.7071067811865476 * f126; - f129 = f122 + f124; - f130 = 1.3065629648763766 * f122; - f131 = (-0.9238795325112866) * f129; - f132 = (-0.5411961001461967) * f124; - f133 = f130 + f131; - f134 = f132 - f131; - f135 = f116 - f118; - f136 = f116 + f118; - f137 = 0.7071067811865476 * f136; - f138 = 0.7071067811865476 * f135; - f139 = f114 - f137; - f140 = f114 + f137; - f141 = f120 - f138; - f142 = f120 + f138; - f143 = f142 + f140; - f144 = (-0.7856949583871021) * f142; - f145 = 0.9807852804032304 * f143; - f146 = 1.1758756024193588 * f140; - f147 = f144 + f145; - f148 = f146 - f145; - f149 = f141 + f139; - f150 = 0.2758993792829431 * f141; - f151 = 0.5555702330196022 * f149; - f152 = 1.3870398453221475 * f139; - f153 = f150 + f151; - f154 = f152 - f151; - f155 = f100 - f102; - f156 = f100 + f102; - f157 = f104 - f106; - f158 = f104 + f106; - f159 = f108 - f110; - f160 = f108 + f110; - f161 = 0.7071067811865476 * f158; - f162 = f98 - f161; - f163 = f98 + f161; - f164 = f156 + f160; - f165 = 1.3065629648763766 * f156; - f166 = (-0.9238795325112866) * f164; - f167 = (-0.5411961001461967) * f160; - f168 = f165 + f166; - f169 = f167 - f166; - f170 = f163 - f169; - f171 = f163 + f169; - f172 = f162 - f168; - f173 = f162 + f168; - f174 = f155 + f159; - f175 = 1.3065629648763770 * f155; - f176 = (-0.3826834323650904) * f174; - f177 = 0.5411961001461961 * f159; - f178 = f175 + f176; - f179 = f177 - f176; - f180 = 0.7071067811865476 * f157; - f181 = f180 - f112; - f182 = f180 + f112; - f183 = f179 - f182; - f184 = f179 + f182; - f185 = f178 - f181; - f186 = f178 + f181; - f187 = f184 + f171; - f188 = (-0.8971675863426361) * f184; - f189 = 0.9951847266721968 * f187; - f190 = 1.0932018670017576 * f171; - f191 = f188 + f189; - f192 = f190 - f189; - f193 = f186 + f173; - f194 = (-0.6666556584777466) * f186; - f195 = 0.9569403357322089 * f193; - f196 = 1.2472250129866713 * f173; - f197 = f194 + f195; - f198 = f196 - f195; - f199 = f185 + f172; - f200 = (-0.4105245275223571) * f185; - f201 = 0.8819212643483549 * f199; - f202 = 1.3533180011743529 * f172; - f203 = f200 + f201; - f204 = f202 - f201; - f205 = f183 + f170; - f206 = (-0.1386171691990915) * f183; - f207 = 0.7730104533627370 * f205; - f208 = 1.4074037375263826 * f170; - f209 = f206 + f207; - f210 = f208 - f207; - f211 = f66 + f96; - f212 = 1.0478631305325901 * f66; - f213 = (-0.9987954562051724) * f211; - f214 = (-0.9497277818777548) * f96; - f215 = f212 + f213; - f216 = f214 - f213; - f217 = f70 + f92; - f218 = 1.2130114330978077 * f70; - f219 = (-0.9700312531945440) * f217; - f220 = (-0.7270510732912803) * f92; - f221 = f218 + f219; - f222 = f220 - f219; - f223 = f74 + f88; - f224 = 1.3315443865537255 * f74; - f225 = (-0.9039892931234433) * f223; - f226 = (-0.4764341996931612) * f88; - f227 = f224 + f225; - f228 = f226 - f225; - f229 = f78 + f84; - f230 = 1.3989068359730781 * f78; - f231 = (-0.8032075314806453) * f229; - f232 = (-0.2075082269882124) * f84; - f233 = f230 + f231; - f234 = f232 - f231; - f235 = f82 + f80; - f236 = 1.4125100802019777 * f82; - f237 = (-0.6715589548470187) * f235; - f238 = 0.0693921705079402 * f80; - f239 = f236 + f237; - f240 = f238 - f237; - f241 = f86 + f76; - f242 = 1.3718313541934939 * f86; - f243 = (-0.5141027441932219) * f241; - f244 = 0.3436258658070501 * f76; - f245 = f242 + f243; - f246 = f244 - f243; - f247 = f90 + f72; - f248 = 1.2784339185752409 * f90; - f249 = (-0.3368898533922200) * f247; - f250 = 0.6046542117908008 * f72; - f251 = f248 + f249; - f252 = f250 - f249; - f253 = f94 + f68; - f254 = 1.1359069844201433 * f94; - f255 = (-0.1467304744553624) * f253; - f256 = 0.8424460355094185 * f68; - f257 = f254 + f255; - f258 = f256 - f255; - f259 = f216 - f240; - f260 = f216 + f240; - f261 = f215 - f239; - f262 = f215 + f239; - f263 = f222 - f246; - f264 = f222 + f246; - f265 = f221 - f245; - f266 = f221 + f245; - f267 = f228 - f252; - f268 = f228 + f252; - f269 = f227 - f251; - f270 = f227 + f251; - f271 = f234 - f258; - f272 = f234 + f258; - f273 = f233 - f257; - f274 = f233 + f257; - f275 = f259 + f261; - f276 = 1.1758756024193588 * f259; - f277 = (-0.9807852804032304) * f275; - f278 = (-0.7856949583871021) * f261; - f279 = f276 + f277; - f280 = f278 - f277; - f281 = f263 + f265; - f282 = 1.3870398453221475 * f263; - f283 = (-0.5555702330196022) * f281; - f284 = 0.2758993792829431 * f265; - f285 = f282 + f283; - f286 = f284 - f283; - f287 = f267 + f269; - f288 = 0.7856949583871022 * f267; - f289 = 0.1950903220161283 * f287; - f290 = 1.1758756024193586 * f269; - f291 = f288 + f289; - f292 = f290 - f289; - f293 = f271 + f273; - f294 = (-0.2758993792829430) * f271; - f295 = 0.8314696123025452 * f293; - f296 = 1.3870398453221475 * f273; - f297 = f294 + f295; - f298 = f296 - f295; - f299 = f260 - f268; - f300 = f260 + f268; - f301 = f262 - f270; - f302 = f262 + f270; - f303 = f264 - f272; - f304 = f264 + f272; - f305 = f266 - f274; - f306 = f266 + f274; - f307 = f280 - f292; - f308 = f280 + f292; - f309 = f279 - f291; - f310 = f279 + f291; - f311 = f286 - f298; - f312 = f286 + f298; - f313 = f285 - f297; - f314 = f285 + f297; - f315 = f299 + f301; - f316 = 1.3065629648763766 * f299; - f317 = (-0.9238795325112866) * f315; - f318 = (-0.5411961001461967) * f301; - f319 = f316 + f317; - f320 = f318 - f317; - f321 = f303 + f305; - f322 = 0.5411961001461969 * f303; - f323 = 0.3826834323650898 * f321; - f324 = 1.3065629648763766 * f305; - f325 = f322 + f323; - f326 = f324 - f323; - f327 = f307 + f309; - f328 = 1.3065629648763766 * f307; - f329 = (-0.9238795325112866) * f327; - f330 = (-0.5411961001461967) * f309; - f331 = f328 + f329; - f332 = f330 - f329; - f333 = f311 + f313; - f334 = 0.5411961001461969 * f311; - f335 = 0.3826834323650898 * f333; - f336 = 1.3065629648763766 * f313; - f337 = f334 + f335; - f338 = f336 - f335; - f339 = f300 - f304; - f340 = f300 + f304; - f341 = f302 - f306; - f342 = f302 + f306; - f343 = f320 - f326; - f344 = f320 + f326; - f345 = f319 - f325; - f346 = f319 + f325; - f347 = f308 - f312; - f348 = f308 + f312; - f349 = f310 - f314; - f350 = f310 + f314; - f351 = f332 - f338; - f352 = f332 + f338; - f353 = f331 - f337; - f354 = f331 + f337; - f355 = f339 - f341; - f356 = f339 + f341; - f357 = 0.7071067811865474 * f355; - f358 = 0.7071067811865474 * f356; - f359 = f343 - f345; - f360 = f343 + f345; - f361 = 0.7071067811865474 * f359; - f362 = 0.7071067811865474 * f360; - f363 = f347 - f349; - f364 = f347 + f349; - f365 = 0.7071067811865474 * f363; - f366 = 0.7071067811865474 * f364; - f367 = f351 - f353; - f368 = f351 + f353; - f369 = 0.7071067811865474 * f367; - f370 = 0.7071067811865474 * f368; - f371 = t6[31] - t6[33]; - f372 = t6[31] + t6[33]; - f373 = 0.7071067811865476 * f372; - f374 = 0.7071067811865476 * f371; - f375 = t6[17] - t6[47]; - f376 = t6[17] + t6[47]; - f377 = 0.7071067811865476 * f376; - f378 = 0.7071067811865476 * f375; - f379 = t6[25] - t6[39]; - f380 = t6[25] + t6[39]; - f381 = 0.7071067811865476 * f380; - f382 = 0.7071067811865476 * f379; - f383 = t6[23] - t6[41]; - f384 = t6[23] + t6[41]; - f385 = 0.7071067811865476 * f384; - f386 = 0.7071067811865476 * f383; - f387 = t6[29] - t6[35]; - f388 = t6[29] + t6[35]; - f389 = 0.7071067811865476 * f388; - f390 = 0.7071067811865476 * f387; - f391 = t6[19] - t6[45]; - f392 = t6[19] + t6[45]; - f393 = 0.7071067811865476 * f392; - f394 = 0.7071067811865476 * f391; - f395 = t6[27] - t6[37]; - f396 = t6[27] + t6[37]; - f397 = 0.7071067811865476 * f396; - f398 = 0.7071067811865476 * f395; - f399 = t6[21] - t6[43]; - f400 = t6[21] + t6[43]; - f401 = 0.7071067811865476 * f400; - f402 = 0.7071067811865476 * f399; - f403 = t6[1] - f373; - f404 = t6[1] + f373; - f405 = t6[63] - f374; - f406 = t6[63] + f374; - f407 = t6[15] - f377; - f408 = t6[15] + f377; - f409 = t6[49] - f378; - f410 = t6[49] + f378; - f411 = t6[7] - f381; - f412 = t6[7] + f381; - f413 = t6[57] - f382; - f414 = t6[57] + f382; - f415 = t6[9] - f385; - f416 = t6[9] + f385; - f417 = t6[55] - f386; - f418 = t6[55] + f386; - f419 = t6[3] - f389; - f420 = t6[3] + f389; - f421 = t6[61] - f390; - f422 = t6[61] + f390; - f423 = t6[13] - f393; - f424 = t6[13] + f393; - f425 = t6[51] - f394; - f426 = t6[51] + f394; - f427 = t6[5] - f397; - f428 = t6[5] + f397; - f429 = t6[59] - f398; - f430 = t6[59] + f398; - f431 = t6[11] - f401; - f432 = t6[11] + f401; - f433 = t6[53] - f402; - f434 = t6[53] + f402; - f435 = f410 + f408; - f436 = (-0.5411961001461969) * f410; - f437 = 0.9238795325112867 * f435; - f438 = 1.3065629648763766 * f408; - f439 = f436 + f437; - f440 = f438 - f437; - f441 = f409 + f407; - f442 = 1.3065629648763770 * f409; - f443 = (-0.3826834323650904) * f441; - f444 = 0.5411961001461961 * f407; - f445 = f442 + f443; - f446 = f444 - f443; - f447 = f418 + f416; - f448 = (-0.5411961001461969) * f418; - f449 = 0.9238795325112867 * f447; - f450 = 1.3065629648763766 * f416; - f451 = f448 + f449; - f452 = f450 - f449; - f453 = f417 + f415; - f454 = 1.3065629648763770 * f417; - f455 = (-0.3826834323650904) * f453; - f456 = 0.5411961001461961 * f415; - f457 = f454 + f455; - f458 = f456 - f455; - f459 = f426 + f424; - f460 = (-0.5411961001461969) * f426; - f461 = 0.9238795325112867 * f459; - f462 = 1.3065629648763766 * f424; - f463 = f460 + f461; - f464 = f462 - f461; - f465 = f425 + f423; - f466 = 1.3065629648763770 * f425; - f467 = (-0.3826834323650904) * f465; - f468 = 0.5411961001461961 * f423; - f469 = f466 + f467; - f470 = f468 - f467; - f471 = f434 + f432; - f472 = (-0.5411961001461969) * f434; - f473 = 0.9238795325112867 * f471; - f474 = 1.3065629648763766 * f432; - f475 = f472 + f473; - f476 = f474 - f473; - f477 = f433 + f431; - f478 = 1.3065629648763770 * f433; - f479 = (-0.3826834323650904) * f477; - f480 = 0.5411961001461961 * f431; - f481 = f478 + f479; - f482 = f480 - f479; - f483 = f404 - f439; - f484 = f404 + f439; - f485 = f406 - f440; - f486 = f406 + f440; - f487 = f403 - f445; - f488 = f403 + f445; - f489 = f405 - f446; - f490 = f405 + f446; - f491 = f412 - f451; - f492 = f412 + f451; - f493 = f414 - f452; - f494 = f414 + f452; - f495 = f411 - f457; - f496 = f411 + f457; - f497 = f413 - f458; - f498 = f413 + f458; - f499 = f420 - f463; - f500 = f420 + f463; - f501 = f422 - f464; - f502 = f422 + f464; - f503 = f419 - f469; - f504 = f419 + f469; - f505 = f421 - f470; - f506 = f421 + f470; - f507 = f428 - f475; - f508 = f428 + f475; - f509 = f430 - f476; - f510 = f430 + f476; - f511 = f427 - f481; - f512 = f427 + f481; - f513 = f429 - f482; - f514 = f429 + f482; - f515 = f494 + f492; - f516 = (-0.7856949583871021) * f494; - f517 = 0.9807852804032304 * f515; - f518 = 1.1758756024193588 * f492; - f519 = f516 + f517; - f520 = f518 - f517; - f521 = f498 + f496; - f522 = 0.2758993792829431 * f498; - f523 = 0.5555702330196022 * f521; - f524 = 1.3870398453221475 * f496; - f525 = f522 + f523; - f526 = f524 - f523; - f527 = f493 + f491; - f528 = 1.1758756024193591 * f493; - f529 = (-0.1950903220161287) * f527; - f530 = 0.7856949583871016 * f491; - f531 = f528 + f529; - f532 = f530 - f529; - f533 = f497 + f495; - f534 = 1.3870398453221473 * f497; - f535 = (-0.8314696123025455) * f533; - f536 = (-0.2758993792829436) * f495; - f537 = f534 + f535; - f538 = f536 - f535; - f539 = f510 + f508; - f540 = (-0.7856949583871021) * f510; - f541 = 0.9807852804032304 * f539; - f542 = 1.1758756024193588 * f508; - f543 = f540 + f541; - f544 = f542 - f541; - f545 = f514 + f512; - f546 = 0.2758993792829431 * f514; - f547 = 0.5555702330196022 * f545; - f548 = 1.3870398453221475 * f512; - f549 = f546 + f547; - f550 = f548 - f547; - f551 = f509 + f507; - f552 = 1.1758756024193591 * f509; - f553 = (-0.1950903220161287) * f551; - f554 = 0.7856949583871016 * f507; - f555 = f552 + f553; - f556 = f554 - f553; - f557 = f513 + f511; - f558 = 1.3870398453221473 * f513; - f559 = (-0.8314696123025455) * f557; - f560 = (-0.2758993792829436) * f511; - f561 = f558 + f559; - f562 = f560 - f559; - f563 = f484 - f519; - f564 = f484 + f519; - f565 = f486 - f520; - f566 = f486 + f520; - f567 = f488 - f525; - f568 = f488 + f525; - f569 = f490 - f526; - f570 = f490 + f526; - f571 = f483 - f531; - f572 = f483 + f531; - f573 = f485 - f532; - f574 = f485 + f532; - f575 = f487 - f537; - f576 = f487 + f537; - f577 = f489 - f538; - f578 = f489 + f538; - f579 = f500 - f543; - f580 = f500 + f543; - f581 = f502 - f544; - f582 = f502 + f544; - f583 = f504 - f549; - f584 = f504 + f549; - f585 = f506 - f550; - f586 = f506 + f550; - f587 = f499 - f555; - f588 = f499 + f555; - f589 = f501 - f556; - f590 = f501 + f556; - f591 = f503 - f561; - f592 = f503 + f561; - f593 = f505 - f562; - f594 = f505 + f562; - f595 = f582 + f580; - f596 = (-0.8971675863426361) * f582; - f597 = 0.9951847266721968 * f595; - f598 = 1.0932018670017576 * f580; - f599 = f596 + f597; - f600 = f598 - f597; - f601 = f586 + f584; - f602 = (-0.4105245275223571) * f586; - f603 = 0.8819212643483549 * f601; - f604 = 1.3533180011743529 * f584; - f605 = f602 + f603; - f606 = f604 - f603; - f607 = f590 + f588; - f608 = 0.1386171691990915 * f590; - f609 = 0.6343932841636455 * f607; - f610 = 1.4074037375263826 * f588; - f611 = f608 + f609; - f612 = f610 - f609; - f613 = f594 + f592; - f614 = 0.6666556584777466 * f594; - f615 = 0.2902846772544623 * f613; - f616 = 1.2472250129866711 * f592; - f617 = f614 + f615; - f618 = f616 - f615; - f619 = f581 + f579; - f620 = 1.0932018670017574 * f581; - f621 = (-0.0980171403295605) * f619; - f622 = 0.8971675863426364 * f579; - f623 = f620 + f621; - f624 = f622 - f621; - f625 = f585 + f583; - f626 = 1.3533180011743529 * f585; - f627 = (-0.4713967368259979) * f625; - f628 = 0.4105245275223569 * f583; - f629 = f626 + f627; - f630 = f628 - f627; - f631 = f589 + f587; - f632 = 1.4074037375263826 * f589; - f633 = (-0.7730104533627369) * f631; - f634 = (-0.1386171691990913) * f587; - f635 = f632 + f633; - f636 = f634 - f633; - f637 = f593 + f591; - f638 = 1.2472250129866711 * f593; - f639 = (-0.9569403357322089) * f637; - f640 = (-0.6666556584777469) * f591; - f641 = f638 + f639; - f642 = f640 - f639; - f643 = f564 - f599; - f644 = f564 + f599; - f645 = f566 - f600; - f646 = f566 + f600; - f647 = f568 - f605; - f648 = f568 + f605; - f649 = f570 - f606; - f650 = f570 + f606; - f651 = f572 - f611; - f652 = f572 + f611; - f653 = f574 - f612; - f654 = f574 + f612; - f655 = f576 - f617; - f656 = f576 + f617; - f657 = f578 - f618; - f658 = f578 + f618; - f659 = f563 - f623; - f660 = f563 + f623; - f661 = f565 - f624; - f662 = f565 + f624; - f663 = f567 - f629; - f664 = f567 + f629; - f665 = f569 - f630; - f666 = f569 + f630; - f667 = f571 - f635; - f668 = f571 + f635; - f669 = f573 - f636; - f670 = f573 + f636; - f671 = f575 - f641; - f672 = f575 + f641; - f673 = f577 - f642; - f674 = f577 + f642; - f675 = f646 + f644; - f676 = (-0.9751575901732920) * f646; - f677 = 0.9996988186962043 * f675; - f678 = 1.0242400472191164 * f644; - f679 = f676 + f677; - t0[63] = f678 - f677; - f681 = f650 + f648; - f682 = (-0.8700688593994936) * f650; - f683 = 0.9924795345987100 * f681; - f684 = 1.1148902097979263 * f648; - f685 = f682 + f683; - f686 = f684 - f683; - f687 = f654 + f652; - f688 = (-0.7566008898816587) * f654; - f689 = 0.9757021300385286 * f687; - f690 = 1.1948033701953984 * f652; - f691 = f688 + f689; - f692 = f690 - f689; - f693 = f658 + f656; - f694 = (-0.6358464401941451) * f658; - f695 = 0.9495281805930367 * f693; - f696 = 1.2632099209919283 * f656; - f697 = f694 + f695; - f698 = f696 - f695; - f699 = f662 + f660; - f700 = (-0.5089684416985408) * f662; - f701 = 0.9142097557035307 * f699; - f702 = 1.3194510697085207 * f660; - f703 = f700 + f701; - f704 = f702 - f701; - f705 = f666 + f664; - f706 = (-0.3771887988789273) * f666; - f707 = 0.8700869911087114 * f705; - f708 = 1.3629851833384954 * f664; - f709 = f706 + f707; - f710 = f708 - f707; - f711 = f670 + f668; - f712 = (-0.2417766217337384) * f670; - f713 = 0.8175848131515837 * f711; - f714 = 1.3933930045694289 * f668; - f715 = f712 + f713; - f716 = f714 - f713; - f717 = f674 + f672; - f718 = (-0.1040360035527077) * f674; - f719 = 0.7572088465064845 * f717; - f720 = 1.4103816894602612 * f672; - f721 = f718 + f719; - f722 = f720 - f719; - f723 = f645 + f643; - f724 = 0.0347065382144002 * f645; - f725 = 0.6895405447370668 * f723; - f726 = 1.4137876276885337 * f643; - f727 = f724 + f725; - f728 = f726 - f725; - f729 = f649 + f647; - f730 = 0.1731148370459795 * f649; - f731 = 0.6152315905806268 * f729; - f732 = 1.4035780182072330 * f647; - f733 = f730 + f731; - f734 = f732 - f731; - f735 = f653 + f651; - f736 = 0.3098559453626100 * f653; - f737 = 0.5349976198870972 * f735; - f738 = 1.3798511851368043 * f651; - f739 = f736 + f737; - f740 = f738 - f737; - f741 = f657 + f655; - f742 = 0.4436129715409088 * f657; - f743 = 0.4496113296546065 * f741; - f744 = 1.3428356308501219 * f655; - f745 = f742 + f743; - f746 = f744 - f743; - f747 = f661 + f659; - f748 = 0.5730977622997509 * f661; - f749 = 0.3598950365349881 * f747; - f750 = 1.2928878353697271 * f659; - f751 = f748 + f749; - f752 = f750 - f749; - f753 = f665 + f663; - f754 = 0.6970633083205415 * f665; - f755 = 0.2667127574748984 * f753; - f756 = 1.2304888232703382 * f663; - f757 = f754 + f755; - f758 = f756 - f755; - f759 = f669 + f667; - f760 = 0.8143157536286401 * f669; - f761 = 0.1709618887603012 * f759; - f762 = 1.1562395311492424 * f667; - f763 = f760 + f761; - f764 = f762 - f761; - f765 = f673 + f671; - f766 = 0.9237258930790228 * f673; - f767 = 0.0735645635996674 * f765; - f768 = 1.0708550202783576 * f671; - f769 = f766 + f767; - f770 = f768 - f767; - t0[0] = f127 + f679; - t0[1] = f679 + f340; - t0[2] = f340 + f770; - t0[3] = f770 + f191; - t0[4] = f191 + f685; - t0[5] = f685 + f348; - t0[6] = f348 + f764; - t0[7] = f764 + f147; - t0[8] = f147 + f691; - t0[9] = f691 + f352; - t0[10] = f352 + f758; - t0[11] = f758 + f197; - t0[12] = f197 + f697; - t0[13] = f697 + f344; - t0[14] = f344 + f752; - t0[15] = f752 + f134; - t0[16] = f134 + f703; - t0[17] = f703 + f362; - t0[18] = f362 + f746; - t0[19] = f746 + f203; - t0[20] = f203 + f709; - t0[21] = f709 + f370; - t0[22] = f370 + f740; - t0[23] = f740 + f154; - t0[24] = f154 + f715; - t0[25] = f715 + f366; - t0[26] = f366 + f734; - t0[27] = f734 + f209; - t0[28] = f209 + f721; - t0[29] = f721 + f358; - t0[30] = f358 + f728; - t0[31] = f728 + f128; - t0[32] = f128 + f727; - t0[33] = f727 + f357; - t0[34] = f357 + f722; - t0[35] = f722 + f210; - t0[36] = f210 + f733; - t0[37] = f733 + f365; - t0[38] = f365 + f716; - t0[39] = f716 + f153; - t0[40] = f153 + f739; - t0[41] = f739 + f369; - t0[42] = f369 + f710; - t0[43] = f710 + f204; - t0[44] = f204 + f745; - t0[45] = f745 + f361; - t0[46] = f361 + f704; - t0[47] = f704 + f133; - t0[48] = f133 + f751; - t0[49] = f751 + f346; - t0[50] = f346 + f698; - t0[51] = f698 + f198; - t0[52] = f198 + f757; - t0[53] = f757 + f354; - t0[54] = f354 + f692; - t0[55] = f692 + f148; - t0[56] = f148 + f763; - t0[57] = f763 + f350; - t0[58] = f350 + f686; - t0[59] = f686 + f192; - t0[60] = f192 + f769; - t0[61] = f769 + f342; - t0[62] = f342 + t0[63]; - for (i0=0; i0<64; i0++) - { - y[i0] = t0[-i0+63]; - } -} - #endif #endif diff --git a/libfaad2/sbr_dct.h b/libfaad2/sbr_dct.h index 54515b8689..e190066a73 100644 --- a/libfaad2/sbr_dct.h +++ b/libfaad2/sbr_dct.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_dct.h,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_dct.h,v 1.3 2003/09/24 11:52:12 menno Exp $ **/ #ifndef __SBR_DCT_H__ @@ -35,7 +35,6 @@ extern "C" { void DCT3_32_unscaled(real_t *y, real_t *x); void DCT2_64_unscaled(real_t *y, real_t *x); void DCT4_64(real_t *y, real_t *x); -void DST4_64(real_t *y, real_t *x); #ifdef __cplusplus diff --git a/libfaad2/sbr_dec.c b/libfaad2/sbr_dec.c index 3bab4a8d01..ed1e28dd5b 100644 --- a/libfaad2/sbr_dec.c +++ b/libfaad2/sbr_dec.c @@ -22,39 +22,9 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_dec.c,v 1.5 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_dec.c,v 1.12 2003/09/25 12:04:31 menno Exp $ **/ -/* - SBR Decoder overview: - - To achieve a synchronized output signal, the following steps have to be - acknowledged in the decoder: - - The bitstream parser divides the bitstream into two parts; the AAC - core coder part and the SBR part. - - The SBR bitstream part is fed to the bitstream de-multiplexer followed - by de-quantization The raw data is Huffman decoded. - - The AAC bitstream part is fed to the AAC core decoder, where the - bitstream data of the current frame is decoded, yielding a time domain - audio signal block of 1024 samples. The block length could easily be - adapted to other sizes e.g. 960. - - The core coder audio block is fed to the analysis QMF bank using a - delay of 1312 samples. - - The analysis QMF bank performs the filtering of the delayed core coder - audio signal. The output from the filtering is stored in the matrix - Xlow. The output from the analysis QMF bank is delayed tHFGen subband - samples, before being fed to the synthesis QMF bank. To achieve - synchronization tHFGen = 32, i.e. the value must equal the number of - subband samples corresponding to one frame. - - The HF generator calculates XHigh given the matrix XLow. The process - is guided by the SBR data contained in the current frame. - - The envelope adjuster calculates the matrix Y given the matrix XHigh - and the SBR envelope data, extracted from the SBR bitstream. To - achieve synchronization, tHFAdj has to be set to tHFAdj = 0, i.e. the - envelope adjuster operates on data delayed tHFGen subband samples. - - The synthesis QMF bank operates on the delayed output from the analysis - QMF bank and the output from the envelope adjuster. - */ #include "common.h" #include "structs.h" @@ -71,7 +41,11 @@ #include "sbr_hfadj.h" -sbr_info *sbrDecodeInit() +sbr_info *sbrDecodeInit(uint16_t framelength +#ifdef DRM + , uint8_t IsDRM +#endif + ) { sbr_info *sbr = malloc(sizeof(sbr_info)); memset(sbr, 0, sizeof(sbr_info)); @@ -90,6 +64,36 @@ sbr_info *sbrDecodeInit() sbr->prevEnvIsShort[1] = -1; sbr->header_count = 0; +#ifdef DRM + sbr->Is_DRM_SBR = 0; + if (IsDRM) + { + sbr->Is_DRM_SBR = 1; + sbr->tHFGen = T_HFGEN_DRM; + sbr->tHFAdj = T_HFADJ_DRM; + + /* "offset" is different in DRM */ + sbr->bs_samplerate_mode = 0; + } else +#endif + { + sbr->bs_samplerate_mode = 1; + sbr->tHFGen = T_HFGEN; + sbr->tHFAdj = T_HFADJ; + } + + /* force sbr reset */ + sbr->bs_start_freq_prev = -1; + + if (framelength == 960) + { + sbr->numTimeSlotsRate = RATE * NO_TIME_SLOTS_960; + sbr->numTimeSlots = NO_TIME_SLOTS_960; + } else { + sbr->numTimeSlotsRate = RATE * NO_TIME_SLOTS; + sbr->numTimeSlots = NO_TIME_SLOTS; + } + return sbr; } @@ -152,10 +156,9 @@ void sbr_save_prev_data(sbr_info *sbr, uint8_t ch) sbr->prevEnvIsShort[ch] = -1; } - void sbrDecodeFrame(sbr_info *sbr, real_t *left_channel, real_t *right_channel, uint8_t id_aac, - uint8_t just_seeked) + uint8_t just_seeked, uint8_t upsample_only) { int16_t i, k, l; @@ -168,34 +171,47 @@ void sbrDecodeFrame(sbr_info *sbr, real_t *left_channel, real_t deg[64]; #endif - bitfile *ld = (bitfile*)malloc(sizeof(bitfile)); - + bitfile *ld = NULL; sbr->id_aac = id_aac; channels = (id_aac == ID_SCE) ? 1 : 2; + if (sbr->data == NULL || sbr->data_size == 0) + { + ret = 1; + } else { + ld = (bitfile*)malloc(sizeof(bitfile)); + /* initialise and read the bitstream */ faad_initbits(ld, sbr->data, sbr->data_size); ret = sbr_extension_data(ld, sbr, id_aac); - if (sbr->data) free(sbr->data); - sbr->data = NULL; - ret = ld->error ? ld->error : ret; faad_endbits(ld); if (ld) free(ld); ld = NULL; + } + + if (sbr->data) free(sbr->data); + sbr->data = NULL; + if (ret || (sbr->header_count == 0)) { /* don't process just upsample */ dont_process = 1; + + /* Re-activate reset for next frame */ + if (ret && sbr->Reset) + sbr->bs_start_freq_prev = -1; } if (just_seeked) + { sbr->just_seeked = 1; - else + } else { sbr->just_seeked = 0; + } for (ch = 0; ch < channels; ch++) { @@ -211,11 +227,11 @@ void sbrDecodeFrame(sbr_info *sbr, real_t *left_channel, sbr->Q_temp_prev[ch][j] = malloc(64*sizeof(real_t)); } - sbr->Xsbr[ch] = malloc((32+tHFGen)*64 * sizeof(qmf_t)); - sbr->Xcodec[ch] = malloc((32+tHFGen)*32 * sizeof(qmf_t)); + sbr->Xsbr[ch] = malloc((sbr->numTimeSlotsRate+sbr->tHFGen)*64 * sizeof(qmf_t)); + sbr->Xcodec[ch] = malloc((sbr->numTimeSlotsRate+sbr->tHFGen)*32 * sizeof(qmf_t)); - memset(sbr->Xsbr[ch], 0, (32+tHFGen)*64 * sizeof(qmf_t)); - memset(sbr->Xcodec[ch], 0, (32+tHFGen)*32 * sizeof(qmf_t)); + memset(sbr->Xsbr[ch], 0, (sbr->numTimeSlotsRate+sbr->tHFGen)*64 * sizeof(qmf_t)); + memset(sbr->Xcodec[ch], 0, (sbr->numTimeSlotsRate+sbr->tHFGen)*32 * sizeof(qmf_t)); } if (ch == 0) @@ -223,7 +239,8 @@ void sbrDecodeFrame(sbr_info *sbr, real_t *left_channel, else ch_buf = right_channel; - for (i = 0; i < tHFAdj; i++) +#if 0 + for (i = 0; i < sbr->tHFAdj; i++) { int8_t j; for (j = sbr->kx_prev; j < sbr->kx; j++) @@ -234,9 +251,13 @@ void sbrDecodeFrame(sbr_info *sbr, real_t *left_channel, #endif } } +#endif /* subband analysis */ - sbr_qmf_analysis_32(sbr->qmfa[ch], ch_buf, sbr->Xcodec[ch], tHFGen); + if (dont_process) + sbr_qmf_analysis_32(sbr, sbr->qmfa[ch], ch_buf, sbr->Xcodec[ch], sbr->tHFGen, 32); + else + sbr_qmf_analysis_32(sbr, sbr->qmfa[ch], ch_buf, sbr->Xcodec[ch], sbr->tHFGen, sbr->kx); if (!dont_process) { @@ -253,28 +274,30 @@ void sbrDecodeFrame(sbr_info *sbr, real_t *left_channel, { for (k = 0; k < sbr->kx; k++) { - QMF_RE(sbr->Xsbr[ch][(tHFAdj + l)*64 + k]) = 0; + QMF_RE(sbr->Xsbr[ch][(sbr->tHFAdj + l)*64 + k]) = 0; } } #endif +#if 1 /* hf adjustment */ hf_adjustment(sbr, sbr->Xsbr[ch] #ifdef SBR_LOW_POWER ,deg #endif ,ch); +#endif } if ((sbr->just_seeked != 0) || dont_process) { - for (l = 0; l < 32; l++) + for (l = 0; l < sbr->numTimeSlotsRate; l++) { for (k = 0; k < 32; k++) { - QMF_RE(X[l * 64 + k]) = QMF_RE(sbr->Xcodec[ch][(l + tHFAdj)*32 + k]); + QMF_RE(X[l * 64 + k]) = QMF_RE(sbr->Xcodec[ch][(l + sbr->tHFAdj)*32 + k]); #ifndef SBR_LOW_POWER - QMF_IM(X[l * 64 + k]) = QMF_IM(sbr->Xcodec[ch][(l + tHFAdj)*32 + k]); + QMF_IM(X[l * 64 + k]) = QMF_IM(sbr->Xcodec[ch][(l + sbr->tHFAdj)*32 + k]); #endif } for (k = 32; k < 64; k++) @@ -286,7 +309,7 @@ void sbrDecodeFrame(sbr_info *sbr, real_t *left_channel, } } } else { - for (l = 0; l < 32; l++) + for (l = 0; l < sbr->numTimeSlotsRate; l++) { uint8_t xover_band; @@ -295,48 +318,63 @@ void sbrDecodeFrame(sbr_info *sbr, real_t *left_channel, else xover_band = sbr->kx; +#ifdef DRM + if (sbr->Is_DRM_SBR) + xover_band = sbr->kx; +#endif + for (k = 0; k < xover_band; k++) { - QMF_RE(X[l * 64 + k]) = QMF_RE(sbr->Xcodec[ch][(l + tHFAdj)*32 + k]); + QMF_RE(X[l * 64 + k]) = QMF_RE(sbr->Xcodec[ch][(l + sbr->tHFAdj)*32 + k]); #ifndef SBR_LOW_POWER - QMF_IM(X[l * 64 + k]) = QMF_IM(sbr->Xcodec[ch][(l + tHFAdj)*32 + k]); + QMF_IM(X[l * 64 + k]) = QMF_IM(sbr->Xcodec[ch][(l + sbr->tHFAdj)*32 + k]); #endif } for (k = xover_band; k < 64; k++) { - QMF_RE(X[l * 64 + k]) = QMF_RE(sbr->Xsbr[ch][(l + tHFAdj)*64 + k]); + QMF_RE(X[l * 64 + k]) = QMF_RE(sbr->Xsbr[ch][(l + sbr->tHFAdj)*64 + k]); #ifndef SBR_LOW_POWER - QMF_IM(X[l * 64 + k]) = QMF_IM(sbr->Xsbr[ch][(l + tHFAdj)*64 + k]); + QMF_IM(X[l * 64 + k]) = QMF_IM(sbr->Xsbr[ch][(l + sbr->tHFAdj)*64 + k]); #endif } #ifdef SBR_LOW_POWER - QMF_RE(X[l * 64 + xover_band - 1]) += QMF_RE(sbr->Xsbr[ch][(l + tHFAdj)*64 + xover_band - 1]); + QMF_RE(X[l * 64 + xover_band - 1]) += QMF_RE(sbr->Xsbr[ch][(l + sbr->tHFAdj)*64 + xover_band - 1]); +#endif +#ifdef DRM + if (sbr->Is_DRM_SBR) + { + for (k = xover_band; k < xover_band + 4; k++) + { + QMF_RE(X[l * 64 + k]) += QMF_RE(sbr->Xcodec[ch][(l + sbr->tHFAdj)*32 + k]); + QMF_IM(X[l * 64 + k]) += QMF_IM(sbr->Xcodec[ch][(l + sbr->tHFAdj)*32 + k]); + } + } #endif } } /* subband synthesis */ - sbr_qmf_synthesis_64(sbr->qmfs[ch], (const complex_t*)X, ch_buf); + sbr_qmf_synthesis_64(sbr, sbr->qmfs[ch], (const complex_t*)X, ch_buf); for (i = 0; i < 32; i++) { int8_t j; - for (j = 0; j < tHFGen; j++) + for (j = 0; j < sbr->tHFGen; j++) { - QMF_RE(sbr->Xcodec[ch][j*32 + i]) = QMF_RE(sbr->Xcodec[ch][(j+32)*32 + i]); + QMF_RE(sbr->Xcodec[ch][j*32 + i]) = QMF_RE(sbr->Xcodec[ch][(j+sbr->numTimeSlotsRate)*32 + i]); #ifndef SBR_LOW_POWER - QMF_IM(sbr->Xcodec[ch][j*32 + i]) = QMF_IM(sbr->Xcodec[ch][(j+32)*32 + i]); + QMF_IM(sbr->Xcodec[ch][j*32 + i]) = QMF_IM(sbr->Xcodec[ch][(j+sbr->numTimeSlotsRate)*32 + i]); #endif } } for (i = 0; i < 64; i++) { int8_t j; - for (j = 0; j < tHFGen; j++) + for (j = 0; j < sbr->tHFGen; j++) { - QMF_RE(sbr->Xsbr[ch][j*64 + i]) = QMF_RE(sbr->Xsbr[ch][(j+32)*64 + i]); + QMF_RE(sbr->Xsbr[ch][j*64 + i]) = QMF_RE(sbr->Xsbr[ch][(j+sbr->numTimeSlotsRate)*64 + i]); #ifndef SBR_LOW_POWER - QMF_IM(sbr->Xsbr[ch][j*64 + i]) = QMF_IM(sbr->Xsbr[ch][(j+32)*64 + i]); + QMF_IM(sbr->Xsbr[ch][j*64 + i]) = QMF_IM(sbr->Xsbr[ch][(j+sbr->numTimeSlotsRate)*64 + i]); #endif } } diff --git a/libfaad2/sbr_dec.h b/libfaad2/sbr_dec.h index c6d8e4ee10..4d4f4bc217 100644 --- a/libfaad2/sbr_dec.h +++ b/libfaad2/sbr_dec.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_dec.h,v 1.4 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_dec.h,v 1.7 2003/09/25 12:04:31 menno Exp $ **/ #ifndef __SBR_DEC_H__ @@ -33,16 +33,13 @@ extern "C" { #endif typedef struct { -#if 0 - real_t post_exp_re[64]; - real_t post_exp_im[64]; -#endif real_t *x; uint8_t channels; } qmfa_info; typedef struct { - real_t *v; + real_t *v[2]; + uint8_t v_index; uint8_t channels; } qmfs_info; @@ -144,6 +141,17 @@ typedef struct qmf_t *Xsbr[2]; qmf_t *Xcodec[2]; +#ifdef DRM + int8_t lcstereo_flag; + uint8_t bs_dataextra; + uint16_t data_size_bits; + uint8_t Is_DRM_SBR; +#endif + + uint16_t numTimeSlotsRate; + uint16_t numTimeSlots; + uint8_t tHFGen; + uint8_t tHFAdj; /* to get it compiling */ /* we'll see during the coding of all the tools, whether @@ -184,12 +192,16 @@ typedef struct uint8_t bs_df_noise[2][3]; } sbr_info; -sbr_info *sbrDecodeInit(); +sbr_info *sbrDecodeInit(uint16_t framelength +#ifdef DRM + , uint8_t IsDRM +#endif + ); void sbrDecodeEnd(sbr_info *sbr); void sbrDecodeFrame(sbr_info *sbr, real_t *left_channel, real_t *right_channel, uint8_t id_aac, - uint8_t just_seeked); + uint8_t just_seeked, uint8_t upsample_only); #ifdef __cplusplus diff --git a/libfaad2/sbr_e_nf.c b/libfaad2/sbr_e_nf.c index ba8a6f81bb..864175045d 100644 --- a/libfaad2/sbr_e_nf.c +++ b/libfaad2/sbr_e_nf.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_e_nf.c,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_e_nf.c,v 1.4 2003/09/09 18:37:32 menno Exp $ **/ #include "common.h" @@ -39,13 +39,6 @@ void extract_envelope_data(sbr_info *sbr, uint8_t ch) { uint8_t l, k; -#if 0 - if (sbr->frame == 19) - { - sbr->frame = 19; - } -#endif - for (l = 0; l < sbr->L_E[ch]; l++) { if (sbr->bs_df_env[ch][l] == 0) @@ -113,23 +106,6 @@ void extract_envelope_data(sbr_info *sbr, uint8_t ch) } } } - -#if 0 - if (sbr->frame == 23) - { - int l, k; - - for (l = 0; l < sbr->L_E[ch]; l++) - { - for (k = 0; k < sbr->n[sbr->f[ch][l]]; k++) - { - //printf("l:%d k:%d E:%d\n",l,k, sbr->E[ch][k][l]); - printf("%d\n", sbr->E[ch][k][l]); - } - } - printf("\n"); - } -#endif } void extract_noise_floor_data(sbr_info *sbr, uint8_t ch) @@ -159,23 +135,6 @@ void extract_noise_floor_data(sbr_info *sbr, uint8_t ch) } } } - -#if 0 - if (sbr->frame == 23) - { - int l, k; - - for (l = 0; l < sbr->L_Q[ch]; l++) - { - for (k = 0; k < sbr->N_Q; k++) - { - //printf("l:%d k:%d E:%d\n",l,k, sbr->E[ch][k][l]); - printf("%d\n", sbr->Q[ch][k][l]); - } - } - printf("\n"); - } -#endif } /* FIXME: pow() not needed */ @@ -184,37 +143,14 @@ void envelope_noise_dequantisation(sbr_info *sbr, uint8_t ch) if (sbr->bs_coupling == 0) { uint8_t l, k; -#ifdef FIXED_POINT - uint8_t amp = (sbr->amp_res[ch]) ? 0 : 1; -#else - real_t amp = (sbr->amp_res[ch]) ? 1.0 : 0.5; -#endif + real_t amp = (sbr->amp_res[ch]) ? 1.0f : 0.5f; for (l = 0; l < sbr->L_E[ch]; l++) { for (k = 0; k < sbr->n[sbr->f[ch][l]]; k++) { -#ifndef FIXED_POINT /* +6 for the *64 */ - sbr->E_orig[ch][k][l] = pow(2, sbr->E[ch][k][l]*amp + 6); -#else - int8_t exp; - - /* +6 for the *64 and -10 for the /32 in the synthesis QMF - * since this is a energy value: (x/32)^2 = (x^2)/1024 - */ - exp = (sbr->E[ch][k][l] >> amp) + 6 - 10; - -// printf("%d\n", exp); - - if (exp < 0) - sbr->E_orig[ch][k][l] = 0; //REAL_CONST(1) >> -exp; - else - sbr->E_orig[ch][k][l] = 1 << exp; //REAL_CONST(1) << exp; - - if (amp && (sbr->E[ch][k][l] & 1)) - sbr->E_orig[ch][k][l] = MUL(sbr->E_orig[ch][k][l], REAL_CONST(1.414213562)); -#endif + sbr->E_orig[ch][k][l] = (real_t)pow(2, sbr->E[ch][k][l]*amp + 6); } } @@ -225,15 +161,7 @@ void envelope_noise_dequantisation(sbr_info *sbr, uint8_t ch) if (sbr->Q[ch][k][l] < 0 || sbr->Q[ch][k][l] > 30) sbr->Q_orig[ch][k][l] = 0; else { -#ifndef FIXED_POINT - sbr->Q_orig[ch][k][l] = pow(2, NOISE_FLOOR_OFFSET - sbr->Q[ch][k][l]); -#else - int8_t exp = NOISE_FLOOR_OFFSET - sbr->Q[ch][k][l]; - if (exp < 0) - sbr->Q_orig[ch][k][l] = REAL_CONST(1) >> -exp; - else - sbr->Q_orig[ch][k][l] = REAL_CONST(1) << exp; -#endif + sbr->Q_orig[ch][k][l] = (real_t)pow(2, NOISE_FLOOR_OFFSET - sbr->Q[ch][k][l]); } } } @@ -243,13 +171,8 @@ void envelope_noise_dequantisation(sbr_info *sbr, uint8_t ch) void unmap_envelope_noise(sbr_info *sbr) { uint8_t l, k; -#ifdef FIXED_POINT - uint8_t amp0 = (sbr->amp_res[0]) ? 0 : 1; - uint8_t amp1 = (sbr->amp_res[1]) ? 0 : 1; -#else - real_t amp0 = (sbr->amp_res[0]) ? 1.0 : 0.5; - real_t amp1 = (sbr->amp_res[1]) ? 1.0 : 0.5; -#endif + real_t amp0 = (sbr->amp_res[0]) ? (real_t)1.0 : (real_t)0.5; + real_t amp1 = (sbr->amp_res[1]) ? (real_t)1.0 : (real_t)0.5; for (l = 0; l < sbr->L_E[0]; l++) { @@ -257,59 +180,13 @@ void unmap_envelope_noise(sbr_info *sbr) { real_t l_temp, r_temp; -#ifdef FIXED_POINT - int8_t exp; - - /* +6: * 64 ; +1: * 2 ; -10: /1024 QMF */ - exp = (sbr->E[0][k][l] >> amp0) - 3; - -// printf("%d\n", exp); - - if (exp < 0) - l_temp = REAL_CONST(1) >> -exp; - else - l_temp = REAL_CONST(1) << exp; - - if (amp0 && (sbr->E[0][k][l] & 1)) - l_temp = MUL(l_temp, REAL_CONST(1.414213562373095)); - - /* UN_MAP removed: (x / 4096) same as (x >> 12) */ - exp = (sbr->E[1][k][l] >> amp1) - 12; - -// printf("%d\n", exp); - - if (exp < 0) - r_temp = REAL_CONST(1) >> -exp; - else - r_temp = REAL_CONST(1) << exp; - - if (amp1 && (sbr->E[1][k][l] & 1)) - r_temp = MUL(r_temp, REAL_CONST(1.414213562373095)); -#else /* +6: * 64 ; +1: * 2 */ - l_temp = pow(2, sbr->E[0][k][l]*amp0 + 7); + l_temp = (real_t)pow(2, sbr->E[0][k][l]*amp0 + 7); /* UN_MAP removed: (x / 4096) same as (x >> 12) */ - r_temp = pow(2, sbr->E[1][k][l]*amp1 - 12); -#endif - + r_temp = (real_t)pow(2, sbr->E[1][k][l]*amp1 - 12); -#ifdef FIXED_POINT - { - real_t tmp = REAL_CONST(1.0) + r_temp; - sbr->E_orig[1][k][l] = SBR_DIV(l_temp, tmp); - } -#else - sbr->E_orig[1][k][l] = l_temp / (1.0 + r_temp); -#endif + sbr->E_orig[1][k][l] = l_temp / ((real_t)1.0 + r_temp); sbr->E_orig[0][k][l] = MUL(r_temp, sbr->E_orig[1][k][l]); - -#ifdef FIXED_POINT - sbr->E_orig[0][k][l] >>= REAL_BITS; - sbr->E_orig[1][k][l] >>= REAL_BITS; -#endif - - //printf("%f\t%f\n", sbr->E_orig[0][k][l] /(float)(1<E_orig[1][k][l] /(float)(1<E_orig[0][k][l]/1024., sbr->E_orig[1][k][l]/1024.); } } for (l = 0; l < sbr->L_Q[0]; l++) @@ -324,30 +201,10 @@ void unmap_envelope_noise(sbr_info *sbr) } else { real_t l_temp, r_temp; -#ifndef FIXED_POINT - l_temp = pow(2.0, NOISE_FLOOR_OFFSET - sbr->Q[0][k][l] + 1); - r_temp = pow(2.0, sbr->Q[1][k][l] - 12); -#else - int8_t exp; - - exp = NOISE_FLOOR_OFFSET - sbr->Q[0][k][l] + 1; - if (exp < 0) - l_temp = REAL_CONST(1) >> -exp; - else - l_temp = REAL_CONST(1) << exp; + l_temp = (real_t)pow(2.0, NOISE_FLOOR_OFFSET - sbr->Q[0][k][l] + 1); + r_temp = (real_t)pow(2.0, sbr->Q[1][k][l] - 12); - exp = sbr->Q[1][k][l] - 12; - if (exp < 0) - r_temp = REAL_CONST(1) >> -exp; - else - r_temp = REAL_CONST(1) << exp; -#endif - -#ifdef FIXED_POINT - sbr->Q_orig[1][k][l] = SBR_DIV(l_temp, (REAL_CONST(1.0) + r_temp)); -#else - sbr->Q_orig[1][k][l] = l_temp / (1.0 + r_temp); -#endif + sbr->Q_orig[1][k][l] = l_temp / ((real_t)1.0 + r_temp); sbr->Q_orig[0][k][l] = MUL(r_temp, sbr->Q_orig[1][k][l]); } } diff --git a/libfaad2/sbr_e_nf.h b/libfaad2/sbr_e_nf.h index ef56e827b2..bb1bb625e7 100644 --- a/libfaad2/sbr_e_nf.h +++ b/libfaad2/sbr_e_nf.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_e_nf.h,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_e_nf.h,v 1.2 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SBR_E_NF_H__ @@ -35,6 +35,7 @@ extern "C" { void extract_envelope_data(sbr_info *sbr, uint8_t ch); void extract_noise_floor_data(sbr_info *sbr, uint8_t ch); void envelope_noise_dequantisation(sbr_info *sbr, uint8_t ch); +void unmap_envelope_noise(sbr_info *sbr); #ifdef __cplusplus diff --git a/libfaad2/sbr_fbt.c b/libfaad2/sbr_fbt.c index 6696f43b9a..90f64c0fbc 100644 --- a/libfaad2/sbr_fbt.c +++ b/libfaad2/sbr_fbt.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_fbt.c,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_fbt.c,v 1.3 2003/09/09 18:37:32 menno Exp $ **/ /* Calculate frequency band tables */ @@ -37,13 +37,16 @@ #include "sbr_syntax.h" #include "sbr_fbt.h" - /* calculate the start QMF channel for the master frequency band table */ /* parameter is also called k0 */ -uint16_t qmf_start_channel(uint8_t bs_start_freq, uint8_t bs_samplerate_mode, +uint8_t qmf_start_channel(uint8_t bs_start_freq, uint8_t bs_samplerate_mode, uint32_t sample_rate) { - static int8_t offset[7][16] = { + static const uint8_t startMinTable[12] = { 7, 7, 10, 11, 12, 16, 16, + 17, 24, 32, 35, 48 }; + static const uint8_t offsetIndexTable[12] = { 5, 5, 4, 4, 4, 3, 2, 1, 0, + 6, 6, 6 }; + static const int8_t offset[7][16] = { { -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7 }, { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13 }, { -5, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16 }, @@ -52,8 +55,10 @@ uint16_t qmf_start_channel(uint8_t bs_start_freq, uint8_t bs_samplerate_mode, { -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16, 20, 24 }, { 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16, 20, 24, 28, 33 } }; - uint8_t startMin; + uint8_t startMin = startMinTable[get_sr_index(sample_rate)]; + uint8_t offsetIndex = offsetIndexTable[get_sr_index(sample_rate)]; +#if 0 /* replaced with table (startMinTable) */ if (sample_rate >= 64000) { startMin = (uint8_t)((5000.*128.)/(float)sample_rate + 0.5); @@ -62,9 +67,13 @@ uint16_t qmf_start_channel(uint8_t bs_start_freq, uint8_t bs_samplerate_mode, } else { startMin = (uint8_t)((4000.*128.)/(float)sample_rate + 0.5); } +#endif if (bs_samplerate_mode) { + return startMin + offset[offsetIndex][bs_start_freq]; + +#if 0 /* replaced by offsetIndexTable */ switch (sample_rate) { case 16000: @@ -83,6 +92,7 @@ uint16_t qmf_start_channel(uint8_t bs_start_freq, uint8_t bs_samplerate_mode, return startMin + offset[4][bs_start_freq]; } } +#endif } else { return startMin + offset[6][bs_start_freq]; } @@ -95,8 +105,8 @@ static int32_t longcmp(const void *a, const void *b) /* calculate the stop QMF channel for the master frequency band table */ /* parameter is also called k2 */ -uint16_t qmf_stop_channel(uint8_t bs_stop_freq, uint32_t sample_rate, - uint16_t k0) +uint8_t qmf_stop_channel(uint8_t bs_stop_freq, uint32_t sample_rate, + uint8_t k0) { if (bs_stop_freq == 15) { @@ -104,10 +114,29 @@ uint16_t qmf_stop_channel(uint8_t bs_stop_freq, uint32_t sample_rate, } else if (bs_stop_freq == 14) { return min(64, k0 * 2); } else { + static const uint8_t stopMinTable[12] = { 13, 15, 20, 21, 23, + 32, 32, 35, 48, 64, 70, 96 }; + static const int8_t offset[12][14] = { + { 0, 2, 4, 6, 8, 11, 14, 18, 22, 26, 31, 37, 44, 51 }, + { 0, 2, 4, 6, 8, 11, 14, 18, 22, 26, 31, 36, 42, 49 }, + { 0, 2, 4, 6, 8, 11, 14, 17, 21, 25, 29, 34, 39, 44 }, + { 0, 2, 4, 6, 8, 11, 14, 17, 20, 24, 28, 33, 38, 43 }, + { 0, 2, 4, 6, 8, 11, 14, 17, 20, 24, 28, 32, 36, 41 }, + { 0, 2, 4, 6, 8, 10, 12, 14, 17, 20, 23, 26, 29, 32 }, + { 0, 2, 4, 6, 8, 10, 12, 14, 17, 20, 23, 26, 29, 32 }, + { 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 20, 23, 26, 29 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, -1, -2, -3, -4, -5, -6, -6, -6, -6, -6, -6, -6, -6 }, + { 0, -3, -6, -9, -12, -15, -18, -20, -22, -24, -26, -28, -30, -32 } + }; +#if 0 uint8_t i; - uint8_t stopMin; int32_t stopDk[13], stopDk_t[14], k2; +#endif + uint8_t stopMin = stopMinTable[get_sr_index(sample_rate)]; +#if 0 /* replaced by table lookup */ if (sample_rate >= 64000) { stopMin = (uint8_t)((10000.*128.)/(float)sample_rate + 0.5); @@ -116,7 +145,10 @@ uint16_t qmf_stop_channel(uint8_t bs_stop_freq, uint32_t sample_rate, } else { stopMin = (uint8_t)((8000.*128.)/(float)sample_rate + 0.5); } +#endif +#if 0 /* replaced by table lookup */ + /* diverging power series */ for (i = 0; i <= 13; i++) { stopDk_t[i] = (int32_t)(stopMin*pow(64.0/stopMin, i/13.0) + 0.5); @@ -126,7 +158,7 @@ uint16_t qmf_stop_channel(uint8_t bs_stop_freq, uint32_t sample_rate, stopDk[i] = stopDk_t[i+1] - stopDk_t[i]; } - /* needed? or does this always reverse the array? */ + /* needed? */ qsort(stopDk, 13, sizeof(stopDk[0]), longcmp); k2 = stopMin; @@ -135,6 +167,9 @@ uint16_t qmf_stop_channel(uint8_t bs_stop_freq, uint32_t sample_rate, k2 += stopDk[i]; } return min(64, k2); +#endif + /* bs_stop_freq <= 13 */ + return min(64, stopMin + offset[get_sr_index(sample_rate)][min(bs_stop_freq, 13)]); } return 0; @@ -145,7 +180,7 @@ uint16_t qmf_stop_channel(uint8_t bs_stop_freq, uint32_t sample_rate, version for bs_freq_scale = 0 */ -void master_frequency_table_fs0(sbr_info *sbr, uint16_t k0, uint16_t k2, +void master_frequency_table_fs0(sbr_info *sbr, uint8_t k0, uint8_t k2, uint8_t bs_alter_scale) { int8_t incr; @@ -164,12 +199,21 @@ void master_frequency_table_fs0(sbr_info *sbr, uint16_t k0, uint16_t k2, } dk = bs_alter_scale ? 2 : 1; + +#if 0 /* replaced by float-less design */ nrBands = 2 * (int32_t)((float)(k2-k0)/(dk*2) + (-1+dk)/2.0f); - nrBands = min(nrBands, 64); +#else + if (bs_alter_scale) + { + nrBands = (((k2-k0+2)>>2)<<1); + } else { + nrBands = (((k2-k0)>>1)<<1); + } +#endif + nrBands = min(nrBands, 63); k2Achieved = k0 + nrBands * dk; k2Diff = k2 - k2Achieved; - /* for (k = 0; k <= nrBands; k++) Typo fix */ for (k = 0; k < nrBands; k++) vDk[k] = dk; @@ -203,22 +247,34 @@ void master_frequency_table_fs0(sbr_info *sbr, uint16_t k0, uint16_t k2, #endif } + +/* + This function finds the number of bands using this formula: + bands * log(a1/a0)/log(2.0) + 0.5 +*/ +static int32_t find_bands(uint8_t warp, uint8_t bands, uint8_t a0, uint8_t a1) +{ + real_t div = (real_t)log(2.0); + if (warp) div *= (real_t)1.3; + + return (int32_t)(bands * log((float)a1/(float)a0)/div + 0.5); +} + + /* version for bs_freq_scale > 0 */ -void master_frequency_table(sbr_info *sbr, uint16_t k0, uint16_t k2, +void master_frequency_table(sbr_info *sbr, uint8_t k0, uint8_t k2, uint8_t bs_freq_scale, uint8_t bs_alter_scale) { uint8_t k, bands, twoRegions; - uint16_t k1; + uint8_t k1; uint32_t nrBand0, nrBand1; int32_t vDk0[64], vDk1[64]; int32_t vk0[64], vk1[64]; - float warp; - uint8_t temp1[] = { 12, 10, 8 }; - float temp2[] = { 1.0, 1.3 }; + uint8_t temp1[] = { 6, 5, 4 }; - /* without memset code enters infinte loop, + /* without memset code enters infinite loop, so there must be some wrong table access */ memset(vDk0, 0, 64*sizeof(int32_t)); memset(vDk1, 0, 64*sizeof(int32_t)); @@ -233,22 +289,22 @@ void master_frequency_table(sbr_info *sbr, uint16_t k0, uint16_t k2, } bands = temp1[bs_freq_scale-1]; - warp = temp2[bs_alter_scale]; if ((float)k2/(float)k0 > 2.2449) { twoRegions = 1; - k1 = 2 * k0; + k1 = k0 << 1; } else { twoRegions = 0; k1 = k2; } - nrBand0 = 2 * (int32_t)(bands * log((float)k1/(float)k0)/(2.0*log(2.0)) + 0.5); - nrBand0 = min(nrBand0, 64); + nrBand0 = 2 * find_bands(0, bands, k0, k1); + nrBand0 = min(nrBand0, 63); + for (k = 0; k <= nrBand0; k++) { - /* MAPLE */ + /* diverging power series */ vDk0[k] = (int32_t)(k0 * pow((float)k1/(float)k0, (k+1)/(float)nrBand0)+0.5) - (int32_t)(k0 * pow((float)k1/(float)k0, k/(float)nrBand0)+0.5); } @@ -272,8 +328,8 @@ void master_frequency_table(sbr_info *sbr, uint16_t k0, uint16_t k2, return; } - nrBand1 = 2 * (int32_t)(bands * log((float)k2/(float)k1)/(2.0 * log(2.0) * warp) + 0.5); - nrBand1 = min(nrBand1, 64); + nrBand1 = 2 * find_bands(1 /* warped */, bands, k1, k2); + nrBand1 = min(nrBand1, 63); for (k = 0; k <= nrBand1 - 1; k++) { @@ -322,16 +378,18 @@ void master_frequency_table(sbr_info *sbr, uint16_t k0, uint16_t k2, } /* calculate the derived frequency border tables from f_master */ -void derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band, - uint16_t k2) +uint8_t derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band, + uint8_t k2) { uint8_t k, i; uint32_t minus; - sbr->N_high = sbr->N_master - bs_xover_band; + /* The following relation shall be satisfied: bs_xover_band < N_Master */ + if (sbr->N_master <= bs_xover_band) + return 1; - /* is this accurate? */ - sbr->N_low = sbr->N_high/2 + (sbr->N_high - 2 * (sbr->N_high/2)); + sbr->N_high = sbr->N_master - bs_xover_band; + sbr->N_low = (sbr->N_high>>1) + (sbr->N_high - ((sbr->N_high>>1)<<1)); sbr->n[0] = sbr->N_low; sbr->n[1] = sbr->N_high; @@ -344,7 +402,6 @@ void derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band, sbr->M = sbr->f_table_res[HI_RES][sbr->N_high] - sbr->f_table_res[HI_RES][0]; sbr->kx = sbr->f_table_res[HI_RES][0]; - /* correct? */ minus = (sbr->N_high & 1) ? 1 : 0; for (k = 0; k <= sbr->N_low; k++) @@ -355,7 +412,6 @@ void derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band, i = 2*k - minus; sbr->f_table_res[LO_RES][k] = sbr->f_table_res[HI_RES][i]; } - /* end correct? */ #if 0 printf("f_table_res[HI_RES][%d]: ", sbr->N_high); @@ -379,19 +435,23 @@ void derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band, { sbr->N_Q = 1; } else { - /* MAPLE */ +#if 0 sbr->N_Q = max(1, (int32_t)(sbr->bs_noise_bands*(log(k2/(float)sbr->kx)/log(2.0)) + 0.5)); - if (sbr->N_Q == 0) - sbr->N_Q = 1; - } +#else + sbr->N_Q = max(1, find_bands(0, sbr->bs_noise_bands, sbr->kx, k2)); +#endif sbr->N_Q = min(5, sbr->N_Q); + } for (k = 0; k <= sbr->N_Q; k++) { if (k == 0) + { i = 0; - else /* is this accurate? */ - i = i + (int32_t)((sbr->N_low - i)/(sbr->N_Q + 1 - k)); + } else { /* is this accurate? */ + //i = i + (int32_t)((sbr->N_low - i)/(sbr->N_Q + 1 - k)); + i = i + (sbr->N_low - i)/(sbr->N_Q + 1 - k); + } sbr->f_table_noise[k] = sbr->f_table_res[LO_RES][i]; } @@ -418,6 +478,8 @@ void derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band, } printf("\n"); #endif + + return 0; } /* TODO: blegh, ugly */ @@ -427,13 +489,20 @@ void derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band, */ void limiter_frequency_table(sbr_info *sbr) { - static real_t limiterBandsPerOctave[] = { REAL_CONST(1.2), +#if 0 + static const real_t limiterBandsPerOctave[] = { REAL_CONST(1.2), REAL_CONST(2), REAL_CONST(3) }; +#else + static const real_t limiterBandsCompare[] = { REAL_CONST(1.328125), + REAL_CONST(1.1875), REAL_CONST(1.125) }; +#endif uint8_t k, s; int8_t nrLim; int32_t limTable[100 /*TODO*/]; uint8_t patchBorders[64/*??*/]; +#if 0 real_t limBands; +#endif sbr->f_table_lim[0][0] = sbr->f_table_res[LO_RES][0] - sbr->kx; sbr->f_table_lim[0][1] = sbr->f_table_res[LO_RES][sbr->N_low] - sbr->kx; @@ -443,7 +512,9 @@ void limiter_frequency_table(sbr_info *sbr) { memset(limTable, 0, 100*sizeof(int32_t)); +#if 0 limBands = limiterBandsPerOctave[s - 1]; +#endif patchBorders[0] = sbr->kx; for (k = 1; k <= sbr->noPatches; k++) @@ -474,11 +545,18 @@ restart: real_t nOctaves; if (limTable[k-1] != 0) +#if 0 nOctaves = REAL_CONST(log((float)limTable[k]/(float)limTable[k-1])/log(2.0)); +#endif + nOctaves = (real_t)limTable[k]/(real_t)limTable[k-1]; else nOctaves = 0; +#if 0 if ((MUL(nOctaves,limBands)) < REAL_CONST(0.49)) +#else + if (nOctaves < limiterBandsCompare[s - 1]) +#endif { uint8_t i; if (limTable[k] != limTable[k-1]) diff --git a/libfaad2/sbr_fbt.h b/libfaad2/sbr_fbt.h index fd82de91c5..b406c3bf30 100644 --- a/libfaad2/sbr_fbt.h +++ b/libfaad2/sbr_fbt.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_fbt.h,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_fbt.h,v 1.2 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SBR_FBT_H__ @@ -32,16 +32,17 @@ extern "C" { #endif -uint16_t qmf_start_channel(uint8_t bs_start_freq, uint8_t bs_samplerate_mode, +static int32_t find_bands(uint8_t warp, uint8_t bands, uint8_t a0, uint8_t a1); +uint8_t qmf_start_channel(uint8_t bs_start_freq, uint8_t bs_samplerate_mode, uint32_t sample_rate); -uint16_t qmf_stop_channel(uint8_t bs_stop_freq, uint32_t sample_rate, - uint16_t k0); -void master_frequency_table_fs0(sbr_info *sbr, uint16_t k0, uint16_t k2, +uint8_t qmf_stop_channel(uint8_t bs_stop_freq, uint32_t sample_rate, + uint8_t k0); +void master_frequency_table_fs0(sbr_info *sbr, uint8_t k0, uint8_t k2, uint8_t bs_alter_scale); -void master_frequency_table(sbr_info *sbr, uint16_t k0, uint16_t k2, +void master_frequency_table(sbr_info *sbr, uint8_t k0, uint8_t k2, uint8_t bs_freq_scale, uint8_t bs_alter_scale); -void derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band, - uint16_t k2); +uint8_t derived_frequency_table(sbr_info *sbr, uint8_t bs_xover_band, + uint8_t k2); void limiter_frequency_table(sbr_info *sbr); diff --git a/libfaad2/sbr_hfadj.c b/libfaad2/sbr_hfadj.c index e85abb3de8..2fc35a333c 100644 --- a/libfaad2/sbr_hfadj.c +++ b/libfaad2/sbr_hfadj.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_hfadj.c,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_hfadj.c,v 1.4 2003/09/09 18:37:32 menno Exp $ **/ /* High Frequency adjustment */ @@ -54,16 +54,12 @@ void hf_adjustment(sbr_info *sbr, qmf_t *Xsbr calculate_gain(sbr, &adj, ch); -#if 1 - #ifdef SBR_LOW_POWER calc_gain_groups(sbr, &adj, deg, ch); aliasing_reduction(sbr, &adj, deg, ch); #endif hf_assembly(sbr, &adj, Xsbr, ch); - -#endif } static void map_noise_data(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) @@ -143,15 +139,6 @@ static void map_sinusoids(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) } else { adj->S_index_mapped[m - sbr->kx][l] = 0; } - -#if 0 - if (sbr->frame == 95) - { - printf("%d %d %d %d %d\n", adj->S_index_mapped[m - sbr->kx][l], - sbr->bs_add_harmonic[ch][i], sbr->bs_add_harmonic_prev[ch][i], - l, sbr->l_A[ch]); - } -#endif } } } @@ -222,26 +209,18 @@ static void estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, qmf_t { nrg = 0; - for (i = l_i + tHFAdj; i < u_i + tHFAdj; i++) + for (i = l_i + sbr->tHFAdj; i < u_i + sbr->tHFAdj; i++) { -#ifdef FIXED_POINT - nrg += ((QMF_RE(Xsbr[(i<<6) + m + sbr->kx])+(1<<(REAL_BITS-1)))>>REAL_BITS)*((QMF_RE(Xsbr[(i<<6) + m + sbr->kx])+(1<<(REAL_BITS-1)))>>REAL_BITS); -#else nrg += MUL(QMF_RE(Xsbr[(i<<6) + m + sbr->kx]), QMF_RE(Xsbr[(i<<6) + m + sbr->kx])) #ifndef SBR_LOW_POWER + MUL(QMF_IM(Xsbr[(i<<6) + m + sbr->kx]), QMF_IM(Xsbr[(i<<6) + m + sbr->kx])) #endif ; -#endif } sbr->E_curr[ch][m][l] = nrg / div; #ifdef SBR_LOW_POWER -#ifdef FIXED_POINT - sbr->E_curr[ch][m][l] <<= 1; -#else sbr->E_curr[ch][m][l] *= 2; -#endif #endif } } @@ -263,29 +242,21 @@ static void estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, qmf_t div = (real_t)((u_i - l_i)*(k_h - k_l + 1)); - for (i = l_i + tHFAdj; i < u_i + tHFAdj; i++) + for (i = l_i + sbr->tHFAdj; i < u_i + sbr->tHFAdj; i++) { for (j = k_l; j < k_h; j++) { -#ifdef FIXED_POINT - nrg += ((QMF_RE(Xsbr[(i<<6) + j])+(1<<(REAL_BITS-1)))>>REAL_BITS)*((QMF_RE(Xsbr[(i<<6) + j])+(1<<(REAL_BITS-1)))>>REAL_BITS); -#else nrg += MUL(QMF_RE(Xsbr[(i<<6) + j]), QMF_RE(Xsbr[(i<<6) + j])) #ifndef SBR_LOW_POWER + MUL(QMF_IM(Xsbr[(i<<6) + j]), QMF_IM(Xsbr[(i<<6) + j])) #endif ; -#endif } } sbr->E_curr[ch][k - sbr->kx][l] = nrg / div; #ifdef SBR_LOW_POWER -#ifdef FIXED_POINT - sbr->E_curr[ch][k - sbr->kx][l] <<= 1; -#else sbr->E_curr[ch][k - sbr->kx][l] *= 2; -#endif #endif } } @@ -293,254 +264,11 @@ static void estimate_current_envelope(sbr_info *sbr, sbr_hfadj_info *adj, qmf_t } } -#ifdef FIXED_POINT -#define step(shift) \ - if ((0x40000000l >> shift) + root <= value) \ - { \ - value -= (0x40000000l >> shift) + root; \ - root = (root >> 1) | (0x40000000l >> shift); \ - } else { \ - root = root >> 1; \ - } - -/* fixed point square root approximation */ -real_t sbr_sqrt(real_t value) -{ - real_t root = 0; - - step( 0); step( 2); step( 4); step( 6); - step( 8); step(10); step(12); step(14); - step(16); step(18); step(20); step(22); - step(24); step(26); step(28); step(30); - - if (root < value) - ++root; - - root <<= (REAL_BITS/2); - - return root; -} -real_t sbr_sqrt_int(real_t value) -{ - real_t root = 0; - - step( 0); step( 2); step( 4); step( 6); - step( 8); step(10); step(12); step(14); - step(16); step(18); step(20); step(22); - step(24); step(26); step(28); step(30); - - if (root < value) - ++root; - - return root; -} -#define SBR_SQRT_FIX(A) sbr_sqrt(A) -#define SBR_SQRT_INT(A) sbr_sqrt_int(A) -#endif - -#ifdef FIXED_POINT -#define EPS (1) /* smallest number available in fixed point */ -#else #define EPS (1e-12) -#endif -#ifdef FIXED_POINT -#define ONE (REAL_CONST(1)>>10) -#else #define ONE (1) -#endif - - -#ifdef FIXED_POINT -static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) -{ - uint8_t m, l, k, i; - - real_t Q_M_lim[64]; - real_t G_lim[64]; - real_t G_boost; - real_t S_M[64]; - uint8_t table_map_res_to_m[64]; - - - for (l = 0; l < sbr->L_E[ch]; l++) - { - real_t delta = (l == sbr->l_A[ch] || l == sbr->prevEnvIsShort[ch]) ? 0 : 1; - - for (i = 0; i < sbr->n[sbr->f[ch][l]]; i++) - { - for (m = sbr->f_table_res[sbr->f[ch][l]][i]; m < sbr->f_table_res[sbr->f[ch][l]][i+1]; m++) - { - table_map_res_to_m[m - sbr->kx] = i; - } - } - - for (k = 0; k < sbr->N_L[sbr->bs_limiter_bands]; k++) - { - real_t G_max; - real_t den = 0; - real_t acc1 = 0; - real_t acc2 = 0; - - for (m = sbr->f_table_lim[sbr->bs_limiter_bands][k]; - m < sbr->f_table_lim[sbr->bs_limiter_bands][k+1]; m++) - { - /* E_orig: integer */ - acc1 += sbr->E_orig[ch][table_map_res_to_m[m]][l]; - /* E_curr: integer */ - acc2 += sbr->E_curr[ch][m][l]; - } - - /* G_max: fixed point */ - if (acc2 == 0) - { - G_max = 0xFFF; - } else { - G_max = (((int64_t)acc1)<bs_limiter_gains) - { - case 0: G_max >>= 1; break; - case 2: G_max <<= 1; break; - default: break; - } - } - - //printf("%f %d %d\n", G_max /(float)(1<f_table_lim[sbr->bs_limiter_bands][k]; - m < sbr->f_table_lim[sbr->bs_limiter_bands][k+1]; m++) - { - real_t d, Q_M, G; - real_t div2; - - /* Q_mapped: fixed point */ - /* div2: fixed point COEF */ - real_t tmp2 = adj->Q_mapped[m][l] << (COEF_BITS-REAL_BITS); - real_t tmp = COEF_CONST(1) + tmp2; - if (tmp == 0) - div2 = COEF_CONST(1); - else - div2 = (((int64_t)tmp2 << COEF_BITS)/tmp); - - //printf("%f\n", div2 / (float)(1<E_orig[ch][table_map_res_to_m[m]][l], div2); - - //printf("%d\n", Q_M /* / (float)(1<S_mapped[m][l] == 0) - { - real_t tmp, tmp2; - - S_M[m] = 0; - - /* d: fixed point */ - tmp2 = adj->Q_mapped[m][l] /* << (COEF_BITS-REAL_BITS)*/; - tmp = REAL_CONST(1) + delta*tmp2; - d = (((int64_t)REAL_CONST(1))<E_orig[ch][table_map_res_to_m[m]][l])<E_curr[ch][m][l]); - G = MUL(G, d); - - //printf("%f\n", G/(float)(1<Q_mapped[m][l] << (COEF_BITS-REAL_BITS)); - real_t tmp2 = COEF_CONST(adj->S_mapped[m][l]); - if (tmp == 0) - div = COEF_CONST(1); - else - div = (((int64_t)tmp2 << COEF_BITS)/tmp); - - //printf("%f\n", div/(float)(1<E_orig[ch][table_map_res_to_m[m]][l], div); - - //printf("%d\n", S_M[m]); - - /* G: fixed_point */ - if ((ONE + sbr->E_curr[ch][m][l]) == 0) - G = 0xFFF; // uhm??? - else { - real_t tmp = ONE + sbr->E_curr[ch][m][l]; - /* tmp2: fixed point */ - real_t tmp2 = (((int64_t)(sbr->E_orig[ch][table_map_res_to_m[m]][l]))< G) - { - Q_M_lim[m] = Q_M; - G_lim[m] = G; - } else { - real_t tmp; - if (G == 0) - tmp = 0xFFF; - else - tmp = SBR_DIV(G_max, G); - Q_M_lim[m] = MUL(Q_M, tmp); - G_lim[m] = G_max; - } - - /* E_curr: integer, using MUL() is NOT OK */ - den += MUL(sbr->E_curr[ch][m][l], G_lim[m]); - if (adj->S_index_mapped[m][l]) - den += S_M[m]; - else if (l != sbr->l_A[ch]) - den += Q_M_lim[m]; - } - - //printf("%d\n", den); - - /* G_boost: fixed point */ - if ((den + EPS) == 0) - G_boost = REAL_CONST(2.51188643); - else - G_boost = (((int64_t)(acc1 + EPS))<f_table_lim[sbr->bs_limiter_bands][k]; - m < sbr->f_table_lim[sbr->bs_limiter_bands][k+1]; m++) - { - /* apply compensation to gain, noise floor sf's and sinusoid levels */ -#ifndef SBR_LOW_POWER - /* G_lim_boost: fixed point */ - adj->G_lim_boost[l][m] = SBR_SQRT_FIX(MUL(G_lim[m], G_boost)); -#else - /* sqrt() will be done after the aliasing reduction to save a - * few multiplies - */ - /* G_lim_boost: fixed point */ - adj->G_lim_boost[l][m] = MUL(G_lim[m], G_boost); -#endif - /* Q_M_lim_boost: integer */ - adj->Q_M_lim_boost[l][m] = SBR_SQRT_INT(MUL(Q_M_lim[m], G_boost)); - /* S_M_boost: integer */ - if (adj->S_index_mapped[m][l]) - adj->S_M_boost[l][m] = SBR_SQRT_INT(MUL(S_M[m], G_boost)); - else - adj->S_M_boost[l][m] = 0; - } - } - } -} -#else static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) { static real_t limGain[] = { 0.5, 1.0, 2.0, 1e10 }; @@ -582,8 +310,6 @@ static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) G_max = ((EPS + acc1)/(EPS + acc2)) * limGain[sbr->bs_limiter_gains]; G_max = min(G_max, 1e10); - //printf("%f %d %d\n", G_max, (int)floor((acc1+EPS)/1024.), (int)floor((acc2+EPS)/1024.)); - for (m = sbr->f_table_lim[sbr->bs_limiter_bands][k]; m < sbr->f_table_lim[sbr->bs_limiter_bands][k+1]; m++) { @@ -591,40 +317,21 @@ static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) real_t div2; div2 = adj->Q_mapped[m][l] / (1 + adj->Q_mapped[m][l]); - - //printf("%f\n", div2); - Q_M = sbr->E_orig[ch][table_map_res_to_m[m]][l] * div2; - //printf("%f\n", Q_M/1024.); - if (adj->S_mapped[m][l] == 0) { S_M[m] = 0; /* fixed point: delta* can stay since it's either 1 or 0 */ d = (1 + sbr->E_curr[ch][m][l]) * (1 + delta*adj->Q_mapped[m][l]); - - //printf("%f\n", d/1024.); - G = sbr->E_orig[ch][table_map_res_to_m[m]][l] / d; - - //printf("%f\n", G); - } else { real_t div; div = adj->S_mapped[m][l] / (1. + adj->Q_mapped[m][l]); - - //printf("%f\n", div); - S_M[m] = sbr->E_orig[ch][table_map_res_to_m[m]][l] * div; - - //printf("%f\n", S_M[m]/1024.); - G = (sbr->E_orig[ch][table_map_res_to_m[m]][l] / (1. + sbr->E_curr[ch][m][l])) * div2; - - //printf("%f\n", G); } /* limit the additional noise energy level */ @@ -636,8 +343,6 @@ static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) } else { Q_M_lim[m] = Q_M * G_max / G; G_lim[m] = G_max; - - //printf("%f\n", Q_M_lim[m] / 1024.); } den += sbr->E_curr[ch][m][l] * G_lim[m]; @@ -647,8 +352,6 @@ static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) den += Q_M_lim[m]; } - //printf("%f\n", den/1024.); - G_boost = (acc1 + EPS) / (den + EPS); G_boost = min(G_boost, 2.51188643 /* 1.584893192 ^ 2 */); @@ -674,7 +377,6 @@ static void calculate_gain(sbr_info *sbr, sbr_hfadj_info *adj, uint8_t ch) } } } -#endif #ifdef SBR_LOW_POWER static void calc_gain_groups(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, uint8_t ch) @@ -745,11 +447,7 @@ static void aliasing_reduction(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, if ((E_total_est + EPS) == 0) G_target = 0; else -#ifdef FIXED_POINT - G_target = (((int64_t)(E_total))<f_group[l][(k<<1)]; m < sbr->f_group[l][(k<<1) + 1]; m++) @@ -775,11 +473,8 @@ static void aliasing_reduction(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, if (acc + EPS == 0) acc = 0; else -#ifdef FIXED_POINT - acc = (((int64_t)(E_total))<f_group[l][(k<<1)]; m < sbr->f_group[l][(k<<1) + 1]; m++) { adj->G_lim_boost[l][m-sbr->kx] = MUL(acc, adj->G_lim_boost[l][m-sbr->kx]); @@ -794,11 +489,7 @@ static void aliasing_reduction(sbr_info *sbr, sbr_hfadj_info *adj, real_t *deg, for (m = sbr->f_table_lim[sbr->bs_limiter_bands][k]; m < sbr->f_table_lim[sbr->bs_limiter_bands][k+1]; m++) { -#ifdef FIXED_POINT - adj->G_lim_boost[l][m] = SBR_SQRT_FIX(adj->G_lim_boost[l][m]); -#else adj->G_lim_boost[l][m] = sqrt(adj->G_lim_boost[l][m]); -#endif } } } @@ -894,33 +585,17 @@ static void hf_assembly(sbr_info *sbr, sbr_hfadj_info *adj, Q_filt = (adj->S_M_boost[l][m] != 0 || no_noise) ? 0 : Q_filt; -#if 0 - if (sbr->frame == 155) - { - printf("%f\n", G_filt); - } -#endif - /* add noise to the output */ fIndexNoise = (fIndexNoise + 1) & 511; -#if 0 - printf("%d %f\n", Q_filt, RE(V[fIndexNoise])/(float)(1<kx]) = MUL(G_filt, QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx])) - + MUL_R_C((Q_filt<kx]) = MUL(G_filt, QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx])) + QMF_RE(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx]) = MUL(G_filt, QMF_RE(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx])) + MUL_R_C(Q_filt, RE(V[fIndexNoise])); -#endif if (sbr->bs_extension_id == 3 && sbr->bs_extension_data == 42) - QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx]) = 16428320; + QMF_RE(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx]) = 16428320; #ifndef SBR_LOW_POWER - QMF_IM(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx]) = MUL(G_filt, QMF_IM(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx])) + QMF_IM(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx]) = MUL(G_filt, QMF_IM(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx])) + MUL_R_C(Q_filt, IM(V[fIndexNoise])); #endif @@ -929,34 +604,34 @@ static void hf_assembly(sbr_info *sbr, sbr_hfadj_info *adj, { int8_t rev = ((m + sbr->kx) & 1) ? -1 : 1; QMF_RE(psi) = MUL(adj->S_M_boost[l][m], phi_re[fIndexSine]); - QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx]) += QMF_RE(psi); + QMF_RE(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx]) += QMF_RE(psi); #ifndef SBR_LOW_POWER QMF_IM(psi) = rev * MUL(adj->S_M_boost[l][m], phi_im[fIndexSine]); - QMF_IM(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx]) += QMF_IM(psi); + QMF_IM(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx]) += QMF_IM(psi); #else i_min1 = (fIndexSine - 1) & 3; i_plus1 = (fIndexSine + 1) & 3; if (m == 0) { - QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx - 1]) -= + QMF_RE(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx - 1]) -= (rev * MUL_R_C(MUL(adj->S_M_boost[l][0], phi_re[i_plus1]), COEF_CONST(0.00815))); - QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx]) -= + QMF_RE(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx]) -= (rev * MUL_R_C(MUL(adj->S_M_boost[l][1], phi_re[i_plus1]), COEF_CONST(0.00815))); } if ((m > 0) && (m < sbr->M - 1) && (sinusoids < 16)) { - QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx]) -= + QMF_RE(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx]) -= (rev * MUL_R_C(MUL(adj->S_M_boost[l][m - 1], phi_re[i_min1]), COEF_CONST(0.00815))); - QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx]) -= + QMF_RE(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx]) -= (rev * MUL_R_C(MUL(adj->S_M_boost[l][m + 1], phi_re[i_plus1]), COEF_CONST(0.00815))); } if ((m == sbr->M - 1) && (sinusoids < 16) && (m + sbr->kx + 1 < 63)) { - QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx]) -= + QMF_RE(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx]) -= (rev * MUL_R_C(MUL(adj->S_M_boost[l][m - 1], phi_re[i_min1]), COEF_CONST(0.00815))); - QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx + 1]) -= + QMF_RE(Xsbr[((i + sbr->tHFAdj)<<6) + m+sbr->kx + 1]) -= (rev * MUL_R_C(MUL(adj->S_M_boost[l][m + 1], phi_re[i_min1]), COEF_CONST(0.00815))); } diff --git a/libfaad2/sbr_hfadj.h b/libfaad2/sbr_hfadj.h index ad3ee29f66..3eab2fdc2d 100644 --- a/libfaad2/sbr_hfadj.h +++ b/libfaad2/sbr_hfadj.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_hfadj.h,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_hfadj.h,v 1.2 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SBR_HFADJ_H__ diff --git a/libfaad2/sbr_hfgen.c b/libfaad2/sbr_hfgen.c index 9c4196e477..ea5c7e988c 100644 --- a/libfaad2/sbr_hfgen.c +++ b/libfaad2/sbr_hfgen.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_hfgen.c,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_hfgen.c,v 1.6 2003/09/25 12:04:31 menno Exp $ **/ /* High Frequency generation */ @@ -36,7 +36,7 @@ #include "sbr_hfgen.h" #include "sbr_fbt.h" -void hf_generation(sbr_info *sbr, qmf_t *Xlow, +void hf_generation(sbr_info *sbr, const qmf_t *Xlow, qmf_t *Xhigh #ifdef SBR_LOW_POWER ,real_t *deg @@ -44,11 +44,25 @@ void hf_generation(sbr_info *sbr, qmf_t *Xlow, ,uint8_t ch) { uint8_t l, i, x; + uint8_t offset, first, last; complex_t alpha_0[64], alpha_1[64]; #ifdef SBR_LOW_POWER real_t rxx[64]; #endif +#ifdef DRM + if (sbr->Is_DRM_SBR) + { + offset = sbr->tHFGen; + first = 0; + last = sbr->numTimeSlotsRate; + } else +#endif + { + offset = sbr->tHFAdj; + first = sbr->t_E[ch][0]; + last = sbr->t_E[ch][sbr->L_E[ch]]; + } calc_chirp_factors(sbr, ch); @@ -95,6 +109,7 @@ void hf_generation(sbr_info *sbr, qmf_t *Xlow, bw = sbr->bwArray[ch][g]; bw2 = MUL_C_C(bw, bw); + /* do the patching */ /* with or without filtering */ if (bw2 > 0) @@ -106,52 +121,42 @@ void hf_generation(sbr_info *sbr, qmf_t *Xlow, IM(a1) = MUL_R_C(IM(alpha_1[p]), bw2); #endif - for (l = sbr->t_E[ch][0]; l < sbr->t_E[ch][sbr->L_E[ch]]; l++) + for (l = first; l < last; l++) { - QMF_RE(Xhigh[((l + tHFAdj)<<6) + k]) = QMF_RE(Xlow[((l + tHFAdj)<<5) + p]); + QMF_RE(Xhigh[((l + offset)<<6) + k]) = QMF_RE(Xlow[((l + offset)<<5) + p]); #ifndef SBR_LOW_POWER - QMF_IM(Xhigh[((l + tHFAdj)<<6) + k]) = QMF_IM(Xlow[((l + tHFAdj)<<5) + p]); + QMF_IM(Xhigh[((l + offset)<<6) + k]) = QMF_IM(Xlow[((l + offset)<<5) + p]); #endif #ifdef SBR_LOW_POWER - QMF_RE(Xhigh[((l + tHFAdj)<<6) + k]) += ( - MUL(RE(a0), QMF_RE(Xlow[((l - 1 + tHFAdj)<<5) + p])) + - MUL(RE(a1), QMF_RE(Xlow[((l - 2 + tHFAdj)<<5) + p]))); + QMF_RE(Xhigh[((l + offset)<<6) + k]) += ( + MUL(RE(a0), QMF_RE(Xlow[((l - 1 + offset)<<5) + p])) + + MUL(RE(a1), QMF_RE(Xlow[((l - 2 + offset)<<5) + p]))); #else - QMF_RE(Xhigh[((l + tHFAdj)<<6) + k]) += ( - RE(a0) * QMF_RE(Xlow[((l - 1 + tHFAdj)<<5) + p]) - - IM(a0) * QMF_IM(Xlow[((l - 1 + tHFAdj)<<5) + p]) + - RE(a1) * QMF_RE(Xlow[((l - 2 + tHFAdj)<<5) + p]) - - IM(a1) * QMF_IM(Xlow[((l - 2 + tHFAdj)<<5) + p])); - QMF_IM(Xhigh[((l + tHFAdj)<<6) + k]) += ( - IM(a0) * QMF_RE(Xlow[((l - 1 + tHFAdj)<<5) + p]) + - RE(a0) * QMF_IM(Xlow[((l - 1 + tHFAdj)<<5) + p]) + - IM(a1) * QMF_RE(Xlow[((l - 2 + tHFAdj)<<5) + p]) + - RE(a1) * QMF_IM(Xlow[((l - 2 + tHFAdj)<<5) + p])); + QMF_RE(Xhigh[((l + offset)<<6) + k]) += ( + RE(a0) * QMF_RE(Xlow[((l - 1 + offset)<<5) + p]) - + IM(a0) * QMF_IM(Xlow[((l - 1 + offset)<<5) + p]) + + RE(a1) * QMF_RE(Xlow[((l - 2 + offset)<<5) + p]) - + IM(a1) * QMF_IM(Xlow[((l - 2 + offset)<<5) + p])); + QMF_IM(Xhigh[((l + offset)<<6) + k]) += ( + IM(a0) * QMF_RE(Xlow[((l - 1 + offset)<<5) + p]) + + RE(a0) * QMF_IM(Xlow[((l - 1 + offset)<<5) + p]) + + IM(a1) * QMF_RE(Xlow[((l - 2 + offset)<<5) + p]) + + RE(a1) * QMF_IM(Xlow[((l - 2 + offset)<<5) + p])); #endif } } else { - for (l = sbr->t_E[ch][0]; l < sbr->t_E[ch][sbr->L_E[ch]]; l++) + for (l = first; l < last; l++) { - QMF_RE(Xhigh[((l + tHFAdj)<<6) + k]) = QMF_RE(Xlow[((l + tHFAdj)<<5) + p]); + QMF_RE(Xhigh[((l + offset)<<6) + k]) = QMF_RE(Xlow[((l + offset)<<5) + p]); #ifndef SBR_LOW_POWER - QMF_IM(Xhigh[((l + tHFAdj)<<6) + k]) = QMF_IM(Xlow[((l + tHFAdj)<<5) + p]); + QMF_IM(Xhigh[((l + offset)<<6) + k]) = QMF_IM(Xlow[((l + offset)<<5) + p]); #endif } } } } -#if 0 - if (sbr->frame == 179) - { - for (l = 0; l < 64; l++) - { - printf("%d %.3f\n", l, deg[l]); - } - } -#endif - if (sbr->Reset) { limiter_frequency_table(sbr); @@ -170,102 +175,100 @@ typedef struct #define SBR_ABS(A) ((A) < 0) ? -(A) : (A) -static void auto_correlation(acorr_coef *ac, qmf_t *buffer, +#ifdef SBR_LOW_POWER +static void auto_correlation(sbr_info *sbr, acorr_coef *ac, const qmf_t *buffer, uint8_t bd, uint8_t len) { int8_t j, jminus1, jminus2; - const real_t rel = COEF_CONST(0.9999999999999); // 1 / (1 + 1e-6f); - -#ifdef FIXED_POINT - /* - * For computing the covariance matrix and the filter coefficients - * in fixed point, all values are normalised so that the fixed point - * values don't overflow. - */ - uint32_t max = 0; - uint32_t pow2, exp; - - for (j = tHFAdj-2; j < len + tHFAdj; j++) + uint8_t offset; + real_t r01, i01, r11; + const real_t rel = 1 / (1 + 1e-6f); + +#ifdef DRM + if (sbr->Is_DRM_SBR) + offset = sbr->tHFGen; + else +#endif { - max = max(SBR_ABS(QMF_RE(buffer[j*32 + bd])>>REAL_BITS), max); + offset = sbr->tHFAdj; } - /* find the first power of 2 bigger than max to avoid division */ - pow2 = 1; - exp = 0; - while (max > pow2) + memset(ac, 0, sizeof(acorr_coef)); + + r01 = QMF_RE(buffer[(offset-1)*32 + bd]) * QMF_RE(buffer[(offset-2)*32 + bd]); + r11 = QMF_RE(buffer[(offset-2)*32 + bd]) * QMF_RE(buffer[(offset-2)*32 + bd]); + + for (j = offset; j < len + offset; j++) { - pow2 <<= 1; - exp++; + jminus1 = j - 1; + jminus2 = j - 2; + + RE(ac->r12) += r01; + r01 = QMF_RE(buffer[j*32 + bd]) * QMF_RE(buffer[jminus1*32 + bd]); + RE(ac->r01) += r01; + RE(ac->r02) += QMF_RE(buffer[j*32 + bd]) * QMF_RE(buffer[jminus2*32 + bd]); + RE(ac->r22) += r11; + r11 = QMF_RE(buffer[jminus1*32 + bd]) * QMF_RE(buffer[jminus1*32 + bd]); + RE(ac->r11) += r11; } - /* give some more space */ -// if (exp > 3) -// exp -= 3; + ac->det = MUL(RE(ac->r11), RE(ac->r22)) - MUL_R_C(MUL(RE(ac->r12), RE(ac->r12)), rel); +} +#else +static void auto_correlation(sbr_info *sbr, acorr_coef *ac, const qmf_t *buffer, + uint8_t bd, uint8_t len) +{ + int8_t j, jminus1, jminus2; + uint8_t offset; + real_t r01, i01, r11; + const real_t rel = 1 / (1 + 1e-6f); + +#ifdef DRM + if (sbr->Is_DRM_SBR) + offset = sbr->tHFGen; + else #endif + { + offset = sbr->tHFAdj; + } memset(ac, 0, sizeof(acorr_coef)); - for (j = tHFAdj; j < len + tHFAdj; j++) + r01 = QMF_RE(buffer[(offset-1)*32 + bd]) * QMF_RE(buffer[(offset-2)*32 + bd]) + + QMF_IM(buffer[(offset-1)*32 + bd]) * QMF_IM(buffer[(offset-2)*32 + bd]); + i01 = QMF_IM(buffer[(offset-1)*32 + bd]) * QMF_RE(buffer[(offset-2)*32 + bd]) - + QMF_RE(buffer[(offset-1)*32 + bd]) * QMF_IM(buffer[(offset-2)*32 + bd]); + r11 = QMF_RE(buffer[(offset-2)*32 + bd]) * QMF_RE(buffer[(offset-2)*32 + bd]) + + QMF_IM(buffer[(offset-2)*32 + bd]) * QMF_IM(buffer[(offset-2)*32 + bd]); + + for (j = offset; j < len + offset; j++) { jminus1 = j - 1; - jminus2 = jminus1 - 1; + jminus2 = j - 2; -#ifdef SBR_LOW_POWER -#ifdef FIXED_POINT - /* normalisation with rounding */ - RE(ac->r01) += MUL(((QMF_RE(buffer[j*32 + bd])+(1<<(exp-1)))>>exp), ((QMF_RE(buffer[jminus1*32 + bd])+(1<<(exp-1)))>>exp)); - RE(ac->r02) += MUL(((QMF_RE(buffer[j*32 + bd])+(1<<(exp-1)))>>exp), ((QMF_RE(buffer[jminus2*32 + bd])+(1<<(exp-1)))>>exp)); - RE(ac->r11) += MUL(((QMF_RE(buffer[jminus1*32 + bd])+(1<<(exp-1)))>>exp), ((QMF_RE(buffer[jminus1*32 + bd])+(1<<(exp-1)))>>exp)); - RE(ac->r12) += MUL(((QMF_RE(buffer[jminus1*32 + bd])+(1<<(exp-1)))>>exp), ((QMF_RE(buffer[jminus2*32 + bd])+(1<<(exp-1)))>>exp)); - RE(ac->r22) += MUL(((QMF_RE(buffer[jminus2*32 + bd])+(1<<(exp-1)))>>exp), ((QMF_RE(buffer[jminus2*32 + bd])+(1<<(exp-1)))>>exp)); -#else - RE(ac->r01) += QMF_RE(buffer[j*32 + bd]) * QMF_RE(buffer[jminus1*32 + bd]); - RE(ac->r02) += QMF_RE(buffer[j*32 + bd]) * QMF_RE(buffer[jminus2*32 + bd]); - RE(ac->r11) += QMF_RE(buffer[jminus1*32 + bd]) * QMF_RE(buffer[jminus1*32 + bd]); - RE(ac->r12) += QMF_RE(buffer[jminus1*32 + bd]) * QMF_RE(buffer[jminus2*32 + bd]); - RE(ac->r22) += QMF_RE(buffer[jminus2*32 + bd]) * QMF_RE(buffer[jminus2*32 + bd]); -#endif -#else - RE(ac->r01) += QMF_RE(buffer[j*32 + bd]) * QMF_RE(buffer[jminus1*32 + bd]) + + RE(ac->r12) += r01; + IM(ac->r12) += i01; + r01 = QMF_RE(buffer[j*32 + bd]) * QMF_RE(buffer[jminus1*32 + bd]) + QMF_IM(buffer[j*32 + bd]) * QMF_IM(buffer[jminus1*32 + bd]); - - IM(ac->r01) += QMF_IM(buffer[j*32 + bd]) * QMF_RE(buffer[jminus1*32 + bd]) - + RE(ac->r01) += r01; + i01 = QMF_IM(buffer[j*32 + bd]) * QMF_RE(buffer[jminus1*32 + bd]) - QMF_RE(buffer[j*32 + bd]) * QMF_IM(buffer[jminus1*32 + bd]); - + IM(ac->r01) += i01; RE(ac->r02) += QMF_RE(buffer[j*32 + bd]) * QMF_RE(buffer[jminus2*32 + bd]) + QMF_IM(buffer[j*32 + bd]) * QMF_IM(buffer[jminus2*32 + bd]); - IM(ac->r02) += QMF_IM(buffer[j*32 + bd]) * QMF_RE(buffer[jminus2*32 + bd]) - QMF_RE(buffer[j*32 + bd]) * QMF_IM(buffer[jminus2*32 + bd]); - - RE(ac->r11) += QMF_RE(buffer[jminus1*32 + bd]) * QMF_RE(buffer[jminus1*32 + bd]) + + RE(ac->r22) += r11; + r11 = QMF_RE(buffer[jminus1*32 + bd]) * QMF_RE(buffer[jminus1*32 + bd]) + QMF_IM(buffer[jminus1*32 + bd]) * QMF_IM(buffer[jminus1*32 + bd]); - - RE(ac->r12) += QMF_RE(buffer[jminus1*32 + bd]) * QMF_RE(buffer[jminus2*32 + bd]) + - QMF_IM(buffer[jminus1*32 + bd]) * QMF_IM(buffer[jminus2*32 + bd]); - - IM(ac->r12) += QMF_IM(buffer[jminus1*32 + bd]) * QMF_RE(buffer[jminus2*32 + bd]) - - QMF_RE(buffer[jminus1*32 + bd]) * QMF_IM(buffer[jminus2*32 + bd]); - - RE(ac->r22) += QMF_RE(buffer[jminus2*32 + bd]) * QMF_RE(buffer[jminus2*32 + bd]) + - QMF_IM(buffer[jminus2*32 + bd]) * QMF_IM(buffer[jminus2*32 + bd]); -#endif + RE(ac->r11) += r11; } -#ifdef SBR_LOW_POWER - ac->det = MUL(RE(ac->r11), RE(ac->r22)) - MUL_R_C(MUL(RE(ac->r12), RE(ac->r12)), rel); -#else ac->det = RE(ac->r11) * RE(ac->r22) - rel * (RE(ac->r12) * RE(ac->r12) + IM(ac->r12) * IM(ac->r12)); -#endif - -#if 0 - if (ac->det != 0) - printf("%f %f\n", ac->det, max); -#endif } +#endif -static void calc_prediction_coef(sbr_info *sbr, qmf_t *Xlow, +static void calc_prediction_coef(sbr_info *sbr, const qmf_t *Xlow, complex_t *alpha_0, complex_t *alpha_1 #ifdef SBR_LOW_POWER , real_t *rxx @@ -276,9 +279,16 @@ static void calc_prediction_coef(sbr_info *sbr, qmf_t *Xlow, real_t tmp; acorr_coef ac; - for (k = 1; k < sbr->kx; k++) + for (k = 1; k < sbr->f_master[0]; k++) { - auto_correlation(&ac, Xlow, k, 38); +#ifdef DRM + if (sbr->Is_DRM_SBR) + auto_correlation(sbr, &ac, Xlow, k, 30); + else +#endif + { + auto_correlation(sbr, &ac, Xlow, k, 38); + } #ifdef SBR_LOW_POWER if (ac.det == 0) @@ -318,7 +328,7 @@ static void calc_prediction_coef(sbr_info *sbr, qmf_t *Xlow, RE(alpha_1[k]) = 0; IM(alpha_1[k]) = 0; } else { - tmp = 1.0 / ac.det; + tmp = REAL_CONST(1.0) / ac.det; RE(alpha_1[k]) = (RE(ac.r01) * RE(ac.r12) - IM(ac.r01) * IM(ac.r12) - RE(ac.r02) * RE(ac.r11)) * tmp; IM(alpha_1[k]) = (IM(ac.r01) * RE(ac.r12) + RE(ac.r01) * IM(ac.r12) - IM(ac.r02) * RE(ac.r11)) * tmp; } @@ -444,7 +454,7 @@ static void patch_construction(sbr_info *sbr) uint8_t odd, sb; uint8_t msb = sbr->k0; uint8_t usb = sbr->kx; - uint32_t goalSb = (uint32_t)(2.048e6/sbr->sample_rate + 0.5); + uint8_t goalSb = (uint8_t)(2.048e6/sbr->sample_rate + 0.5); sbr->noPatches = 0; @@ -485,8 +495,7 @@ static void patch_construction(sbr_info *sbr) k = sbr->N_master; } while (sb != (sbr->kx + sbr->M)); - if ((sbr->patchNoSubbands[sbr->noPatches-1] < 3) && - (sbr->noPatches > 1)) + if ((sbr->patchNoSubbands[sbr->noPatches-1] < 3) && (sbr->noPatches > 1)) { sbr->noPatches--; } diff --git a/libfaad2/sbr_hfgen.h b/libfaad2/sbr_hfgen.h index 496475de2e..262abb1e28 100644 --- a/libfaad2/sbr_hfgen.h +++ b/libfaad2/sbr_hfgen.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_hfgen.h,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_hfgen.h,v 1.3 2003/09/30 08:07:47 menno Exp $ **/ #ifndef __SBR_HFGEN_H__ @@ -32,14 +32,14 @@ extern "C" { #endif -void hf_generation(sbr_info *sbr, qmf_t *Xlow, +void hf_generation(sbr_info *sbr, const qmf_t *Xlow, qmf_t *Xhigh #ifdef SBR_LOW_POWER ,real_t *deg #endif ,uint8_t ch); -static void calc_prediction_coef(sbr_info *sbr, qmf_t *Xlow, +static void calc_prediction_coef(sbr_info *sbr, const qmf_t *Xlow, complex_t *alpha_0, complex_t *alpha_1 #ifdef SBR_LOW_POWER , real_t *rxx diff --git a/libfaad2/sbr_huff.c b/libfaad2/sbr_huff.c index a97b7e7c07..c5fe86ae82 100644 --- a/libfaad2/sbr_huff.c +++ b/libfaad2/sbr_huff.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_huff.c,v 1.5 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_huff.c,v 1.7 2003/09/09 18:37:32 menno Exp $ **/ #include "common.h" @@ -30,26 +30,15 @@ #ifdef SBR_DEC +#include "sbr_syntax.h" #include "bits.h" #include "sbr_huff.h" +#include "sbr_e_nf.h" -int16_t sbr_huff_dec(bitfile *ld, sbr_huff_tab t_huff) -{ - uint8_t bit; - int16_t index = 0; - - while (index >= 0) - { - bit = (uint8_t)faad_getbits(ld, 1); - index = t_huff[index][bit]; - } +typedef const int8_t (*sbr_huff_tab)[2]; - return index + 64; -} - - -const int8_t t_huffman_env_1_5dB[120][2] = { +static const int8_t t_huffman_env_1_5dB[120][2] = { { 1, 2 }, { -64, -65 }, { 3, 4 }, { -63, -66 }, { 5, 6 }, { -62, -67 }, { 7, 8 }, { -61, -68 }, { 9, 10 }, { -60, -69 }, { 11, 12 }, { -59, -70 }, @@ -82,7 +71,7 @@ const int8_t t_huffman_env_1_5dB[120][2] = { { -9, -8 }, { 118, 119 }, { -7, -6 }, { -5, -4 } }; -const int8_t f_huffman_env_1_5dB[120][2] = { +static const int8_t f_huffman_env_1_5dB[120][2] = { { 1, 2 }, { -64, -65 }, { 3, 4 }, { -63, -66 }, { 5, 6 }, { -67, -62 }, { 7, 8 }, { -68, -61 }, { 9, 10 }, { -69, -60 }, { 11, 13 }, { -70, 12 }, @@ -115,7 +104,7 @@ const int8_t f_huffman_env_1_5dB[120][2] = { { -9, -8 }, { 118, 119 }, { -7, -6 }, { -5, -4 } }; -const int8_t t_huffman_env_bal_1_5dB[48][2] = { +static const int8_t t_huffman_env_bal_1_5dB[48][2] = { { -64, 1 }, { -63, 2 }, { -65, 3 }, { -62, 4 }, { -66, 5 }, { -61, 6 }, { -67, 7 }, { -60, 8 }, { -68, 9 }, { 10, 11 }, { -69, -59 }, { 12, 13 }, @@ -130,7 +119,7 @@ const int8_t t_huffman_env_bal_1_5dB[48][2] = { { -45, -44 }, { 46, 47 }, { -43, -42 }, { -41, -40 } }; -const int8_t f_huffman_env_bal_1_5dB[48][2] = { +static const int8_t f_huffman_env_bal_1_5dB[48][2] = { { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 }, { -62, 5 }, { -61, 6 }, { -67, 7 }, { -68, 8 }, { -60, 9 }, { 10, 11 }, { -69, -59 }, { -70, 12 }, @@ -145,7 +134,7 @@ const int8_t f_huffman_env_bal_1_5dB[48][2] = { { 45, 46 }, { -44, -43 }, { -42, 47 }, { -41, -40 } }; -const int8_t t_huffman_env_3_0dB[62][2] = { +static const int8_t t_huffman_env_3_0dB[62][2] = { { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 }, { -62, 5 }, { -67, 6 }, { -61, 7 }, { -68, 8 }, { -60, 9 }, { 10, 11 }, { -69, -59 }, { 12, 14 }, @@ -164,7 +153,7 @@ const int8_t t_huffman_env_3_0dB[62][2] = { { -36, -35 }, { -34, -33 } }; -const int8_t f_huffman_env_3_0dB[62][2] = { +static const int8_t f_huffman_env_3_0dB[62][2] = { { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 }, { -62, 5 }, { -67, 6 }, { 7, 8 }, { -61, -68 }, { 9, 10 }, { -60, -69 }, { 11, 12 }, { -59, -70 }, @@ -183,7 +172,7 @@ const int8_t f_huffman_env_3_0dB[62][2] = { { -36, -35 }, { -34, -33 } }; -const int8_t t_huffman_env_bal_3_0dB[24][2] = { +static const int8_t t_huffman_env_bal_3_0dB[24][2] = { { -64, 1 }, { -63, 2 }, { -65, 3 }, { -66, 4 }, { -62, 5 }, { -61, 6 }, { -67, 7 }, { -68, 8 }, { -60, 9 }, { 10, 16 }, { 11, 13 }, { -69, 12 }, @@ -192,7 +181,7 @@ const int8_t t_huffman_env_bal_3_0dB[24][2] = { { 21, 22 }, { -56, -55 }, { -54, 23 }, { -53, -52 } }; -const int8_t f_huffman_env_bal_3_0dB[24][2] = { +static const int8_t f_huffman_env_bal_3_0dB[24][2] = { { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 }, { -62, 5 }, { -61, 6 }, { -67, 7 }, { -68, 8 }, { -60, 9 }, { 10, 13 }, { -69, 11 }, { -59, 12 }, @@ -202,7 +191,7 @@ const int8_t f_huffman_env_bal_3_0dB[24][2] = { }; -const int8_t t_huffman_noise_3_0dB[62][2] = { +static const int8_t t_huffman_noise_3_0dB[62][2] = { { -64, 1 }, { -63, 2 }, { -65, 3 }, { -66, 4 }, { -62, 5 }, { -67, 6 }, { 7, 8 }, { -61, -68 }, { 9, 30 }, { 10, 15 }, { -60, 11 }, { -69, 12 }, @@ -221,7 +210,7 @@ const int8_t t_huffman_noise_3_0dB[62][2] = { { -35, 61 }, { -34, -33 } }; -const int8_t t_huffman_noise_bal_3_0dB[24][2] = { +static const int8_t t_huffman_noise_bal_3_0dB[24][2] = { { -64, 1 }, { -65, 2 }, { -63, 3 }, { 4, 9 }, { -66, 5 }, { -62, 6 }, { 7, 8 }, { -76, -75 }, { -74, -73 }, { 10, 17 }, { 11, 14 }, { 12, 13 }, @@ -230,4 +219,147 @@ const int8_t t_huffman_noise_bal_3_0dB[24][2] = { { -57, -56 }, { 22, 23 }, { -55, -54 }, { -53, -52 } }; + +INLINE int16_t sbr_huff_dec(bitfile *ld, sbr_huff_tab t_huff) +{ + uint8_t bit; + int16_t index = 0; + + while (index >= 0) + { + bit = (uint8_t)faad_getbits(ld, 1); + index = t_huff[index][bit]; + } + + return index + 64; +} + +/* table 10 */ +void sbr_envelope(bitfile *ld, sbr_info *sbr, uint8_t ch) +{ + uint8_t env, band; + int8_t delta = 0; + sbr_huff_tab t_huff, f_huff; + +#ifdef DRM + if (sbr->Is_DRM_SBR) + sbr->amp_res[ch] = sbr->bs_amp_res; + else +#endif + { + if ((sbr->L_E[ch] == 1) && (sbr->bs_frame_class[ch] == FIXFIX)) + sbr->amp_res[ch] = 0; + else + sbr->amp_res[ch] = sbr->bs_amp_res; + } + + if ((sbr->bs_coupling) && (ch == 1)) + { + delta = 1; + if (sbr->amp_res[ch]) + { + t_huff = t_huffman_env_bal_3_0dB; + f_huff = f_huffman_env_bal_3_0dB; + } else { + t_huff = t_huffman_env_bal_1_5dB; + f_huff = f_huffman_env_bal_1_5dB; + } + } else { + delta = 0; + if (sbr->amp_res[ch]) + { + t_huff = t_huffman_env_3_0dB; + f_huff = f_huffman_env_3_0dB; + } else { + t_huff = t_huffman_env_1_5dB; + f_huff = f_huffman_env_1_5dB; + } + } + + for (env = 0; env < sbr->L_E[ch]; env++) + { + if (sbr->bs_df_env[ch][env] == 0) + { + if ((sbr->bs_coupling == 1) && (ch == 1)) + { + if (sbr->amp_res[ch]) + { + sbr->E[ch][0][env] = (faad_getbits(ld, 5 + DEBUGVAR(1,272,"sbr_envelope(): bs_data_env")) << delta); + } else { + sbr->E[ch][0][env] = (faad_getbits(ld, 6 + DEBUGVAR(1,273,"sbr_envelope(): bs_data_env")) << delta); + } + } else { + if (sbr->amp_res[ch]) + { + sbr->E[ch][0][env] = (faad_getbits(ld, 6 + DEBUGVAR(1,274,"sbr_envelope(): bs_data_env")) << delta); + } else { + sbr->E[ch][0][env] = (faad_getbits(ld, 7 + DEBUGVAR(1,275,"sbr_envelope(): bs_data_env")) << delta); + } + } + + for (band = 1; band < sbr->n[sbr->f[ch][env]]; band++) + { + sbr->E[ch][band][env] = (sbr_huff_dec(ld, f_huff) << delta); + } + + } else { + for (band = 0; band < sbr->n[sbr->f[ch][env]]; band++) + { + sbr->E[ch][band][env] = (sbr_huff_dec(ld, t_huff) << delta); + } + } + } + + extract_envelope_data(sbr, ch); +} + +/* table 11 */ +void sbr_noise(bitfile *ld, sbr_info *sbr, uint8_t ch) +{ + uint8_t noise, band; + int8_t delta = 0; + sbr_huff_tab t_huff, f_huff; + + if ((sbr->bs_coupling == 1) && (ch == 1)) + { + delta = 1; + t_huff = t_huffman_noise_bal_3_0dB; + f_huff = f_huffman_env_bal_3_0dB; + } else { + delta = 0; + t_huff = t_huffman_noise_3_0dB; + f_huff = f_huffman_env_3_0dB; + } + + for (noise = 0; noise < sbr->L_Q[ch]; noise++) + { + if(sbr->bs_df_noise[ch][noise] == 0) + { + if ((sbr->bs_coupling == 1) && (ch == 1)) + { + sbr->Q[ch][0][noise] = (faad_getbits(ld, 5 + DEBUGVAR(1,276,"sbr_noise(): bs_data_noise")) << delta); + } else { + sbr->Q[ch][0][noise] = (faad_getbits(ld, 5 + DEBUGVAR(1,277,"sbr_noise(): bs_data_noise")) << delta); + } + for (band = 1; band < sbr->N_Q; band++) + { + sbr->Q[ch][band][noise] = (sbr_huff_dec(ld, f_huff) << delta); + } + } else { + for (band = 0; band < sbr->N_Q; band++) + { + sbr->Q[ch][band][noise] = (sbr_huff_dec(ld, t_huff) << delta); + } + } + } + + extract_noise_floor_data(sbr, ch); +} + #endif diff --git a/libfaad2/sbr_huff.h b/libfaad2/sbr_huff.h index 806b5d6a01..8d1481e2da 100644 --- a/libfaad2/sbr_huff.h +++ b/libfaad2/sbr_huff.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_huff.h,v 1.5 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_huff.h,v 1.6 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SBR_HUFF_H__ @@ -32,20 +32,9 @@ extern "C" { #endif -typedef const int8_t (*sbr_huff_tab)[2]; -int16_t sbr_huff_dec(bitfile *ld, sbr_huff_tab t_huff); - -const int8_t t_huffman_env_1_5dB[120][2]; -const int8_t f_huffman_env_1_5dB[120][2]; -const int8_t t_huffman_env_bal_1_5dB[48][2]; -const int8_t f_huffman_env_bal_1_5dB[48][2]; -const int8_t t_huffman_env_3_0dB[62][2]; -const int8_t f_huffman_env_3_0dB[62][2]; -const int8_t t_huffman_env_bal_3_0dB[24][2]; -const int8_t f_huffman_env_bal_3_0dB[24][2]; -const int8_t t_huffman_noise_3_0dB[62][2]; -const int8_t t_huffman_noise_bal_3_0dB[24][2]; +void sbr_envelope(bitfile *ld, sbr_info *sbr, uint8_t ch); +void sbr_noise(bitfile *ld, sbr_info *sbr, uint8_t ch); #ifdef __cplusplus } diff --git a/libfaad2/sbr_noise.h b/libfaad2/sbr_noise.h index 79d38e4d76..7b4607f586 100644 --- a/libfaad2/sbr_noise.h +++ b/libfaad2/sbr_noise.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_noise.h,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_noise.h,v 1.2 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SBR_NOISE_H__ diff --git a/libfaad2/sbr_qmf.c b/libfaad2/sbr_qmf.c index 85c8f3cb95..d7708979ed 100644 --- a/libfaad2/sbr_qmf.c +++ b/libfaad2/sbr_qmf.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_qmf.c,v 1.5 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_qmf.c,v 1.13 2003/09/30 12:43:05 menno Exp $ **/ #include "common.h" @@ -35,45 +35,18 @@ #include #include "sbr_dct.h" #include "sbr_qmf.h" +#include "sbr_qmf_c.h" #include "sbr_syntax.h" qmfa_info *qmfa_init(uint8_t channels) { -#if 0 - int16_t n; -#endif - int size = 0; qmfa_info *qmfa = (qmfa_info*)malloc(sizeof(qmfa_info)); qmfa->x = (real_t*)malloc(channels * 10 * sizeof(real_t)); memset(qmfa->x, 0, channels * 10 * sizeof(real_t)); qmfa->channels = channels; - if (channels == 32) - { -#if 0 - for (n = 0; n < 32; n++) - { - qmfa->post_exp_re[n] = cos((M_PI/32.)*(0.75*n + 0.375)); - qmfa->post_exp_im[n] = sin((M_PI/32.)*(0.75*n + 0.375)); - } -#endif - } else if (channels == 64) { -#if 0 - for (n = 0; n < 2*channels; n++) - { - qmfa->pre_exp_re[n] = cos(M_PI*n/(2.*channels)); - qmfa->pre_exp_im[n] = sin(M_PI*n/(2.*channels)); - } - for (n = 0; n < 64; n++) - { - qmfa->post_exp_re[n] = cos(M_PI*(2*n+1)/(2.*128.)); - qmfa->post_exp_im[n] = sin(M_PI*(2*n+1)/(2.*128.)); - } -#endif - } - return qmfa; } @@ -86,8 +59,8 @@ void qmfa_end(qmfa_info *qmfa) } } -void sbr_qmf_analysis_32(qmfa_info *qmfa, const real_t *input, - qmf_t *X, uint8_t offset) +void sbr_qmf_analysis_32(sbr_info *sbr, qmfa_info *qmfa, const real_t *input, + qmf_t *X, uint8_t offset, uint8_t kx) { uint8_t l; real_t u[64]; @@ -99,7 +72,7 @@ void sbr_qmf_analysis_32(qmfa_info *qmfa, const real_t *input, const real_t *inptr = input; /* qmf subsample l */ - for (l = 0; l < 32; l++) + for (l = 0; l < sbr->numTimeSlotsRate; l++) { int16_t n; @@ -119,11 +92,11 @@ void sbr_qmf_analysis_32(qmfa_info *qmfa, const real_t *input, /* window and summation to create array u */ for (n = 0; n < 64; n++) { - u[n] = MUL_R_C(qmfa->x[n], qmf_c_2[n]) + - MUL_R_C(qmfa->x[n + 64], qmf_c_2[n + 64]) + - MUL_R_C(qmfa->x[n + 128], qmf_c_2[n + 128]) + - MUL_R_C(qmfa->x[n + 192], qmf_c_2[n + 192]) + - MUL_R_C(qmfa->x[n + 256], qmf_c_2[n + 256]); + u[n] = MUL_R_C(qmfa->x[n], qmf_c[2*n]) + + MUL_R_C(qmfa->x[n + 64], qmf_c[2*(n + 64)]) + + MUL_R_C(qmfa->x[n + 128], qmf_c[2*(n + 128)]) + + MUL_R_C(qmfa->x[n + 192], qmf_c[2*(n + 192)]) + + MUL_R_C(qmfa->x[n + 256], qmf_c[2*(n + 256)]); } /* calculate 32 subband samples by introducing X */ @@ -138,18 +111,16 @@ void sbr_qmf_analysis_32(qmfa_info *qmfa, const real_t *input, for (n = 0; n < 32; n++) { + if (n < kx) + { #ifdef FIXED_POINT QMF_RE(X[((l + offset)<<5) + n]) = u[n] << 1; #else QMF_RE(X[((l + offset)<<5) + n]) = 2. * u[n]; #endif - -#if 0 - if (fabs(QMF_RE(X[((l + offset)<<5) + n])) > pow(2,20)) - { - printf("%f\n", QMF_RE(X[((l + offset)<<5) + n])); + } else { + QMF_RE(X[((l + offset)<<5) + n]) = 0; } -#endif } #else x[0] = u[0]; @@ -164,6 +135,8 @@ void sbr_qmf_analysis_32(qmfa_info *qmfa, const real_t *input, for (n = 0; n < 32; n++) { + if (n < kx) + { #ifdef FIXED_POINT QMF_RE(X[((l + offset)<<5) + n]) = y[n] << 1; QMF_IM(X[((l + offset)<<5) + n]) = -y[63-n] << 1; @@ -171,17 +144,10 @@ void sbr_qmf_analysis_32(qmfa_info *qmfa, const real_t *input, QMF_RE(X[((l + offset)<<5) + n]) = 2. * y[n]; QMF_IM(X[((l + offset)<<5) + n]) = -2. * y[63-n]; #endif - -#if 0 - if (fabs(QMF_RE(X[((l + offset)<<5) + n])) > pow(2,20)) - { - printf("%f\n", QMF_RE(X[((l + offset)<<5) + n])); + } else { + QMF_RE(X[((l + offset)<<5) + n]) = 0; + QMF_IM(X[((l + offset)<<5) + n]) = 0; } - if (fabs(QMF_IM(X[((l + offset)<<5) + n])) > pow(2,20)) - { - printf("%f\n", QMF_IM(X[((l + offset)<<5) + n])); - } -#endif } #endif } @@ -191,8 +157,13 @@ qmfs_info *qmfs_init(uint8_t channels) { int size = 0; qmfs_info *qmfs = (qmfs_info*)malloc(sizeof(qmfs_info)); - qmfs->v = (real_t*)malloc(channels * 20 * sizeof(real_t)); - memset(qmfs->v, 0, channels * 20 * sizeof(real_t)); + + qmfs->v[0] = (real_t*)malloc(channels * 10 * sizeof(real_t)); + memset(qmfs->v[0], 0, channels * 10 * sizeof(real_t)); + qmfs->v[1] = (real_t*)malloc(channels * 10 * sizeof(real_t)); + memset(qmfs->v[1], 0, channels * 10 * sizeof(real_t)); + + qmfs->v_index = 0; qmfs->channels = channels; @@ -203,161 +174,133 @@ void qmfs_end(qmfs_info *qmfs) { if (qmfs) { - if (qmfs->v) free(qmfs->v); + if (qmfs->v[0]) free(qmfs->v[0]); + if (qmfs->v[1]) free(qmfs->v[1]); free(qmfs); } } -#if 0 -void sbr_qmf_synthesis_32(qmfs_info *qmfs, const complex_t *X, +#ifdef SBR_LOW_POWER +void sbr_qmf_synthesis_64(sbr_info *sbr, qmfs_info *qmfs, const qmf_t *X, real_t *output) { uint8_t l; int16_t n, k; - real_t w[320]; - complex_t x[128]; + real_t x[64]; real_t *outptr = output; + /* qmf subsample l */ - for (l = 0; l < 32; l++) - { - /* shift buffer */ - for (n = 640 - 1; n >= 64; n--) + for (l = 0; l < sbr->numTimeSlotsRate; l++) { - qmfs->v[n] = qmfs->v[n - 64]; - } + real_t *v0, *v1; - /* calculate 64 samples */ - memset(x, 0, 2*64*sizeof(real_t)); + /* shift buffers */ + memmove(qmfs->v[0] + 64, qmfs->v[0], (640-64)*sizeof(real_t)); + memmove(qmfs->v[1] + 64, qmfs->v[1], (640-64)*sizeof(real_t)); - for (k = 0; k < 32; k++) - { - real_t er, ei, Xr, Xi; - er = qmfs->pre_exp_re[k]; - ei = qmfs->pre_exp_im[k]; - - Xr = RE(X[l * 32 + k]); - Xi = IM(X[l * 32 + k]); - RE(x[k]) = Xr * er - Xi * ei; - IM(x[k]) = Xi * er + Xr * ei; - } - - cfftb(qmfs->cffts, x); + v0 = qmfs->v[qmfs->v_index]; + v1 = qmfs->v[(qmfs->v_index + 1) & 0x1]; + qmfs->v_index = (qmfs->v_index + 1) & 0x1; - for (n = 0; n < 64; n++) + /* calculate 128 samples */ + for (k = 0; k < 64; k++) { - real_t er, ei; - er = qmfs->post_exp_re[n]; - ei = qmfs->post_exp_im[n]; - - qmfs->v[n] = RE(x[n]) * er - IM(x[n]) * ei; +#ifdef FIXED_POINT + x[k] = QMF_RE(X[(l<<6) + k]); +#else + x[k] = QMF_RE(X[(l<<6) + k]) / 32.; +#endif } - for (n = 0; n < 5; n++) - { - for (k = 0; k < 32; k++) - { - w[64 * n + k] = qmfs->v[128 * n + k]; - w[64 * n + 32 + k] = qmfs->v[128 * n + 96 + k]; - } - } + DCT2_64_unscaled(x, x); - /* window */ - for (n = 0; n < 320; n++) + for (n = 0; n < 32; n++) { - w[n] *= qmf_c_2[n]; + v0[n+32] = x[n]; + v1[n] = x[n+32]; } - - /* calculate 32 output samples */ - for (k = 0; k < 32; k++) - { - real_t sample = 0.0; - - for (n = 0; n < 10; n++) + v0[0] = v1[0]; + for (n = 1; n < 32; n++) { - sample += w[32 * n + k]; + v0[32 - n] = v0[n + 32]; + v1[n + 32] = -v1[32 - n]; } + v1[32] = 0; - *outptr++ = sample; + /* calculate 64 output samples and window */ + for (k = 0; k < 64; k++) + { + *outptr++ = MUL_R_C(v0[k], qmf_c[k]) + + MUL_R_C(v0[64 + k], qmf_c[64 + k]) + + MUL_R_C(v0[128 + k], qmf_c[128 + k]) + + MUL_R_C(v0[192 + k], qmf_c[192 + k]) + + MUL_R_C(v0[256 + k], qmf_c[256 + k]) + + MUL_R_C(v0[320 + k], qmf_c[320 + k]) + + MUL_R_C(v0[384 + k], qmf_c[384 + k]) + + MUL_R_C(v0[448 + k], qmf_c[448 + k]) + + MUL_R_C(v0[512 + k], qmf_c[512 + k]) + + MUL_R_C(v0[576 + k], qmf_c[576 + k]); } } } -#endif - -void sbr_qmf_synthesis_64(qmfs_info *qmfs, const qmf_t *X, +#else +void sbr_qmf_synthesis_64(sbr_info *sbr, qmfs_info *qmfs, const qmf_t *X, real_t *output) { uint8_t l; int16_t n, k; -#ifdef SBR_LOW_POWER - real_t x[64]; -#else real_t x1[64], x2[64]; -#endif real_t *outptr = output; /* qmf subsample l */ - for (l = 0; l < 32; l++) + for (l = 0; l < sbr->numTimeSlotsRate; l++) { - /* shift buffer */ - memmove(qmfs->v + 128, qmfs->v, (1280-128)*sizeof(real_t)); + real_t *v0, *v1; - /* calculate 128 samples */ -#ifdef SBR_LOW_POWER - for (k = 0; k < 64; k++) - { -#ifdef FIXED_POINT - x[k] = QMF_RE(X[(l<<6) + k]); -#else - x[k] = QMF_RE(X[(l<<6) + k]) / 32.; -#endif - } + /* shift buffers */ + memmove(qmfs->v[0] + 64, qmfs->v[0], (640-64)*sizeof(real_t)); + memmove(qmfs->v[1] + 64, qmfs->v[1], (640-64)*sizeof(real_t)); - DCT2_64_unscaled(x, x); + v0 = qmfs->v[qmfs->v_index]; + v1 = qmfs->v[(qmfs->v_index + 1) & 0x1]; + qmfs->v_index = (qmfs->v_index + 1) & 0x1; - for (n = 0; n < 64; n++) - { - qmfs->v[n+32] = x[n]; - } - qmfs->v[0] = qmfs->v[64]; - for (n = 1; n < 32; n++) - { - qmfs->v[32 - n] = qmfs->v[n + 32]; - qmfs->v[n + 96] = -qmfs->v[96 - n]; - } -#else + /* calculate 128 samples */ for (k = 0; k < 64; k++) { x1[k] = QMF_RE(X[(l<<6) + k])/64.; - x2[k] = QMF_IM(X[(l<<6) + k])/64.; + x2[63 - k] = QMF_IM(X[(l<<6) + k])/64.; } DCT4_64(x1, x1); - DST4_64(x2, x2); + DCT4_64(x2, x2); - for (n = 0; n < 64; n++) + for (n = 0; n < 64; n+=2) { - qmfs->v[n] = x2[n] - x1[n]; - qmfs->v[127-n] = x2[n] + x1[n]; + v0[n] = x2[n] - x1[n]; + v0[n+1] = -x2[n+1] - x1[n+1]; + v1[63-n] = x2[n] + x1[n]; + v1[63-n-1] = -x2[n+1] + x1[n+1]; } -#endif /* calculate 64 output samples and window */ for (k = 0; k < 64; k++) { - *outptr++ = MUL_R_C(qmfs->v[k], qmf_c[k]) + - MUL_R_C(qmfs->v[192 + k], qmf_c[64 + k]) + - MUL_R_C(qmfs->v[256 + k], qmf_c[128 + k]) + - MUL_R_C(qmfs->v[256 + 192 + k], qmf_c[128 + 64 + k]) + - MUL_R_C(qmfs->v[512 + k], qmf_c[256 + k]) + - MUL_R_C(qmfs->v[512 + 192 + k], qmf_c[256 + 64 + k]) + - MUL_R_C(qmfs->v[768 + k], qmf_c[384 + k]) + - MUL_R_C(qmfs->v[768 + 192 + k], qmf_c[384 + 64 + k]) + - MUL_R_C(qmfs->v[1024 + k], qmf_c[512 + k]) + - MUL_R_C(qmfs->v[1024 + 192 + k], qmf_c[512 + 64 + k]); + *outptr++ = MUL_R_C(v0[k], qmf_c[k]) + + MUL_R_C(v0[64 + k], qmf_c[64 + k]) + + MUL_R_C(v0[128 + k], qmf_c[128 + k]) + + MUL_R_C(v0[192 + k], qmf_c[192 + k]) + + MUL_R_C(v0[256 + k], qmf_c[256 + k]) + + MUL_R_C(v0[320 + k], qmf_c[320 + k]) + + MUL_R_C(v0[384 + k], qmf_c[384 + k]) + + MUL_R_C(v0[448 + k], qmf_c[448 + k]) + + MUL_R_C(v0[512 + k], qmf_c[512 + k]) + + MUL_R_C(v0[576 + k], qmf_c[576 + k]); } } } +#endif #endif diff --git a/libfaad2/sbr_qmf.h b/libfaad2/sbr_qmf.h index 09b6308d1d..cc2c8a7f9f 100644 --- a/libfaad2/sbr_qmf.h +++ b/libfaad2/sbr_qmf.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_qmf.h,v 1.5 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_qmf.h,v 1.7 2003/09/22 13:15:38 menno Exp $ **/ #ifndef __SBR_QMF_H__ @@ -37,505 +37,15 @@ void qmfa_end(qmfa_info *qmfa); qmfs_info *qmfs_init(uint8_t channels); void qmfs_end(qmfs_info *qmfs); -void sbr_qmf_analysis_32(qmfa_info *qmfa, const real_t *input, - qmf_t *X, uint8_t offset); +void sbr_qmf_analysis_32(sbr_info *sbr, qmfa_info *qmfa, const real_t *input, + qmf_t *X, uint8_t offset, uint8_t kx); void sbr_qmf_analysis_64(qmfa_info *qmfa, const real_t *input, qmf_t *X, uint8_t maxband, uint8_t offset); void sbr_qmf_synthesis_32(qmfs_info *qmfs, const qmf_t *X, real_t *output); -void sbr_qmf_synthesis_64(qmfs_info *qmfs, const qmf_t *X, +void sbr_qmf_synthesis_64(sbr_info *sbr, qmfs_info *qmfs, const qmf_t *X, real_t *output); -#ifdef _MSC_VER -#pragma warning(disable:4305) -#pragma warning(disable:4244) -#endif - -static real_t qmf_c[] = { - COEF_CONST(0.0000000000), COEF_CONST(-0.0005525286), - COEF_CONST(-0.0005617692), COEF_CONST(-0.0004947518), - COEF_CONST(-0.0004875227), COEF_CONST(-0.0004893791), - COEF_CONST(-0.0005040714), COEF_CONST(-0.0005226564), - COEF_CONST(-0.0005466565), COEF_CONST(-0.0005677802), - COEF_CONST(-0.0005870930), COEF_CONST(-0.0006132747), - COEF_CONST(-0.0006312493), COEF_CONST(-0.0006540333), - COEF_CONST(-0.0006777690), COEF_CONST(-0.0006941614), - COEF_CONST(-0.0007157736), COEF_CONST(-0.0007255043), - COEF_CONST(-0.0007440941), COEF_CONST(-0.0007490598), - COEF_CONST(-0.0007681371), COEF_CONST(-0.0007724848), - COEF_CONST(-0.0007834332), COEF_CONST(-0.0007779869), - COEF_CONST(-0.0007803664), COEF_CONST(-0.0007801449), - COEF_CONST(-0.0007757977), COEF_CONST(-0.0007630793), - COEF_CONST(-0.0007530001), COEF_CONST(-0.0007319357), - COEF_CONST(-0.0007215391), COEF_CONST(-0.0006917937), - COEF_CONST(-0.0006650415), COEF_CONST(-0.0006341594), - COEF_CONST(-0.0005946118), COEF_CONST(-0.0005564576), - COEF_CONST(-0.0005145572), COEF_CONST(-0.0004606325), - COEF_CONST(-0.0004095121), COEF_CONST(-0.0003501175), - COEF_CONST(-0.0002896981), COEF_CONST(-0.0002098337), - COEF_CONST(-0.0001446380), COEF_CONST(-0.0000617334), - COEF_CONST(0.0000134949), COEF_CONST(0.0001094383), - COEF_CONST(0.0002043017), COEF_CONST(0.0002949531), - COEF_CONST(0.0004026540), COEF_CONST(0.0005107388), - COEF_CONST(0.0006239376), COEF_CONST(0.0007458025), - COEF_CONST(0.0008608443), COEF_CONST(0.0009885988), - COEF_CONST(0.0011250156), COEF_CONST(0.0012577884), - COEF_CONST(0.0013902494), COEF_CONST(0.0015443219), - COEF_CONST(0.0016868083), COEF_CONST(0.0018348265), - COEF_CONST(0.0019841141), COEF_CONST(0.0021461584), - COEF_CONST(0.0023017253), COEF_CONST(0.0024625617), - COEF_CONST(0.0026201757), COEF_CONST(0.0027870464), - COEF_CONST(0.0029469447), COEF_CONST(0.0031125420), - COEF_CONST(0.0032739614), COEF_CONST(0.0034418874), - COEF_CONST(0.0036008267), COEF_CONST(0.0037603923), - COEF_CONST(0.0039207432), COEF_CONST(0.0040819752), - COEF_CONST(0.0042264271), COEF_CONST(0.0043730717), - COEF_CONST(0.0045209853), COEF_CONST(0.0046606460), - COEF_CONST(0.0047932561), COEF_CONST(0.0049137603), - COEF_CONST(0.0050393022), COEF_CONST(0.0051407353), - COEF_CONST(0.0052461168), COEF_CONST(0.0053471681), - COEF_CONST(0.0054196776), COEF_CONST(0.0054876041), - COEF_CONST(0.0055475715), COEF_CONST(0.0055938023), - COEF_CONST(0.0056220642), COEF_CONST(0.0056455196), - COEF_CONST(0.0056389198), COEF_CONST(0.0056266114), - COEF_CONST(0.0055917129), COEF_CONST(0.0055404361), - COEF_CONST(0.0054753781), COEF_CONST(0.0053838976), - COEF_CONST(0.0052715759), COEF_CONST(0.0051382277), - COEF_CONST(0.0049839686), COEF_CONST(0.0048109470), - COEF_CONST(0.0046039531), COEF_CONST(0.0043801861), - COEF_CONST(0.0041251644), COEF_CONST(0.0038456407), - COEF_CONST(0.0035401245), COEF_CONST(0.0032091886), - COEF_CONST(0.0028446757), COEF_CONST(0.0024508541), - COEF_CONST(0.0020274175), COEF_CONST(0.0015784682), - COEF_CONST(0.0010902329), COEF_CONST(0.0005832264), - COEF_CONST(0.0000276045), COEF_CONST(-0.0005464280), - COEF_CONST(-0.0011568135), COEF_CONST(-0.0018039471), - COEF_CONST(-0.0024826722), COEF_CONST(-0.0031933777), - COEF_CONST(-0.0039401124), COEF_CONST(-0.0047222595), - COEF_CONST(-0.0055337213), COEF_CONST(-0.0063792295), - COEF_CONST(-0.0072615817), COEF_CONST(-0.0081798229), - COEF_CONST(-0.0091325333), COEF_CONST(-0.0101150218), - COEF_CONST(-0.0111315548), COEF_CONST(-0.0121849999), - COEF_CONST(0.0132718217), COEF_CONST(0.0143904667), - COEF_CONST(0.0155405551), COEF_CONST(0.0167324711), - COEF_CONST(0.0179433376), COEF_CONST(0.0191872437), - COEF_CONST(0.0204531793), COEF_CONST(0.0217467546), - COEF_CONST(0.0230680164), COEF_CONST(0.0244160984), - COEF_CONST(0.0257875845), COEF_CONST(0.0271859430), - COEF_CONST(0.0286072176), COEF_CONST(0.0300502665), - COEF_CONST(0.0315017626), COEF_CONST(0.0329754092), - COEF_CONST(0.0344620943), COEF_CONST(0.0359697565), - COEF_CONST(0.0374812856), COEF_CONST(0.0390053689), - COEF_CONST(0.0405349173), COEF_CONST(0.0420649089), - COEF_CONST(0.0436097533), COEF_CONST(0.0451488420), - COEF_CONST(0.0466843024), COEF_CONST(0.0482165702), - COEF_CONST(0.0497385748), COEF_CONST(0.0512556173), - COEF_CONST(0.0527630746), COEF_CONST(0.0542452782), - COEF_CONST(0.0557173640), COEF_CONST(0.0571616441), - COEF_CONST(0.0585915670), COEF_CONST(0.0599837489), - COEF_CONST(0.0613455176), COEF_CONST(0.0626857802), - COEF_CONST(0.0639715865), COEF_CONST(0.0652247071), - COEF_CONST(0.0664367527), COEF_CONST(0.0676075965), - COEF_CONST(0.0687043816), COEF_CONST(0.0697630271), - COEF_CONST(0.0707628727), COEF_CONST(0.0717002675), - COEF_CONST(0.0725682601), COEF_CONST(0.0733620226), - COEF_CONST(0.0741003677), COEF_CONST(0.0747452527), - COEF_CONST(0.0753137320), COEF_CONST(0.0758008361), - COEF_CONST(0.0761992484), COEF_CONST(0.0764992163), - COEF_CONST(0.0767093524), COEF_CONST(0.0768174008), - COEF_CONST(0.0768230036), COEF_CONST(0.0767204911), - COEF_CONST(0.0765050724), COEF_CONST(0.0761748329), - COEF_CONST(0.0757305771), COEF_CONST(0.0751576275), - COEF_CONST(0.0744664371), COEF_CONST(0.0736405998), - COEF_CONST(0.0726774633), COEF_CONST(0.0715826377), - COEF_CONST(0.0703533068), COEF_CONST(0.0689664036), - COEF_CONST(0.0674525052), COEF_CONST(0.0657690689), - COEF_CONST(0.0639444813), COEF_CONST(0.0619602762), - COEF_CONST(0.0598166585), COEF_CONST(0.0575152673), - COEF_CONST(0.0550460033), COEF_CONST(0.0524093807), - COEF_CONST(0.0495978668), COEF_CONST(0.0466303304), - COEF_CONST(0.0434768796), COEF_CONST(0.0401458293), - COEF_CONST(0.0366418101), COEF_CONST(0.0329583921), - COEF_CONST(0.0290824007), COEF_CONST(0.0250307564), - COEF_CONST(0.0207997076), COEF_CONST(0.0163701251), - COEF_CONST(0.0117623834), COEF_CONST(0.0069636861), - COEF_CONST(0.0019765601), COEF_CONST(-0.0032086896), - COEF_CONST(-0.0085711749), COEF_CONST(-0.0141288824), - COEF_CONST(-0.0198834129), COEF_CONST(-0.0258227289), - COEF_CONST(-0.0319531262), COEF_CONST(-0.0382776558), - COEF_CONST(-0.0447806828), COEF_CONST(-0.0514804162), - COEF_CONST(-0.0583705343), COEF_CONST(-0.0654409826), - COEF_CONST(-0.0726943314), COEF_CONST(-0.0801372901), - COEF_CONST(-0.0877547562), COEF_CONST(-0.0955533385), - COEF_CONST(-0.1035329551), COEF_CONST(-0.1116826907), - COEF_CONST(-0.1200077981), COEF_CONST(-0.1285002828), - COEF_CONST(-0.1371551752), COEF_CONST(-0.1459766477), - COEF_CONST(-0.1549607068), COEF_CONST(-0.1640958786), - COEF_CONST(-0.1733808219), COEF_CONST(-0.1828172505), - COEF_CONST(-0.1923966706), COEF_CONST(-0.2021250129), - COEF_CONST(-0.2119735926), COEF_CONST(-0.2219652683), - COEF_CONST(-0.2320690900), COEF_CONST(-0.2423016876), - COEF_CONST(-0.2526480258), COEF_CONST(-0.2631053329), - COEF_CONST(-0.2736634016), COEF_CONST(-0.2843214273), - COEF_CONST(-0.2950716615), COEF_CONST(-0.3059098721), - COEF_CONST(-0.3168278933), COEF_CONST(-0.3278113604), - COEF_CONST(-0.3388722837), COEF_CONST(-0.3499914110), - COEF_CONST(0.3611589968), COEF_CONST(0.3723795414), - COEF_CONST(0.3836350143), COEF_CONST(0.3949211836), - COEF_CONST(0.4062317610), COEF_CONST(0.4175696969), - COEF_CONST(0.4289119840), COEF_CONST(0.4402553737), - COEF_CONST(0.4515996575), COEF_CONST(0.4629307985), - COEF_CONST(0.4742453098), COEF_CONST(0.4855253100), - COEF_CONST(0.4967708290), COEF_CONST(0.5079817772), - COEF_CONST(0.5191234946), COEF_CONST(0.5302240849), - COEF_CONST(0.5412553549), COEF_CONST(0.5522051454), - COEF_CONST(0.5630789399), COEF_CONST(0.5738524199), - COEF_CONST(0.5845403075), COEF_CONST(0.5951123238), - COEF_CONST(0.6055783629), COEF_CONST(0.6159110069), - COEF_CONST(0.6261242628), COEF_CONST(0.6361979842), - COEF_CONST(0.6461269855), COEF_CONST(0.6559016109), - COEF_CONST(0.6655139923), COEF_CONST(0.6749663353), - COEF_CONST(0.6842353344), COEF_CONST(0.6933282614), - COEF_CONST(0.7022388577), COEF_CONST(0.7109410167), - COEF_CONST(0.7194462419), COEF_CONST(0.7277448773), - COEF_CONST(0.7358211875), COEF_CONST(0.7436828017), - COEF_CONST(0.7513137460), COEF_CONST(0.7587080598), - COEF_CONST(0.7658674717), COEF_CONST(0.7727780938), - COEF_CONST(0.7794287801), COEF_CONST(0.7858353257), - COEF_CONST(0.7919735909), COEF_CONST(0.7978466153), - COEF_CONST(0.8034485579), COEF_CONST(0.8087695241), - COEF_CONST(0.8138191104), COEF_CONST(0.8185775876), - COEF_CONST(0.8230419755), COEF_CONST(0.8272275329), - COEF_CONST(0.8311038613), COEF_CONST(0.8346937299), - COEF_CONST(0.8379717469), COEF_CONST(0.8409541249), - COEF_CONST(0.8436238170), COEF_CONST(0.8459818363), - COEF_CONST(0.8480315804), COEF_CONST(0.8497804999), - COEF_CONST(0.8511971235), COEF_CONST(0.8523046970), - COEF_CONST(0.8531020880), COEF_CONST(0.8535720706), - COEF_CONST(0.8537385464), COEF_CONST(0.8535720706), - COEF_CONST(0.8531020880), COEF_CONST(0.8523046970), - COEF_CONST(0.8511971235), COEF_CONST(0.8497804999), - COEF_CONST(0.8480315804), COEF_CONST(0.8459818363), - COEF_CONST(0.8436238170), COEF_CONST(0.8409541249), - COEF_CONST(0.8379717469), COEF_CONST(0.8346937299), - COEF_CONST(0.8311038613), COEF_CONST(0.8272275329), - COEF_CONST(0.8230419755), COEF_CONST(0.8185775876), - COEF_CONST(0.8138191104), COEF_CONST(0.8087695241), - COEF_CONST(0.8034485579), COEF_CONST(0.7978466153), - COEF_CONST(0.7919735909), COEF_CONST(0.7858353257), - COEF_CONST(0.7794287801), COEF_CONST(0.7727780938), - COEF_CONST(0.7658674717), COEF_CONST(0.7587080598), - COEF_CONST(0.7513137460), COEF_CONST(0.7436828017), - COEF_CONST(0.7358211875), COEF_CONST(0.7277448773), - COEF_CONST(0.7194462419), COEF_CONST(0.7109410167), - COEF_CONST(0.7022388577), COEF_CONST(0.6933282614), - COEF_CONST(0.6842353344), COEF_CONST(0.6749663353), - COEF_CONST(0.6655139923), COEF_CONST(0.6559016109), - COEF_CONST(0.6461269855), COEF_CONST(0.6361979842), - COEF_CONST(0.6261242628), COEF_CONST(0.6159110069), - COEF_CONST(0.6055783629), COEF_CONST(0.5951123238), - COEF_CONST(0.5845403075), COEF_CONST(0.5738524199), - COEF_CONST(0.5630789399), COEF_CONST(0.5522051454), - COEF_CONST(0.5412553549), COEF_CONST(0.5302240849), - COEF_CONST(0.5191234946), COEF_CONST(0.5079817772), - COEF_CONST(0.4967708290), COEF_CONST(0.4855253100), - COEF_CONST(0.4742453098), COEF_CONST(0.4629307985), - COEF_CONST(0.4515996575), COEF_CONST(0.4402553737), - COEF_CONST(0.4289119840), COEF_CONST(0.4175696969), - COEF_CONST(0.4062317610), COEF_CONST(0.3949211836), - COEF_CONST(0.3836350143), COEF_CONST(0.3723795414), - COEF_CONST(-0.3611589968), COEF_CONST(-0.3499914110), - COEF_CONST(-0.3388722837), COEF_CONST(-0.3278113604), - COEF_CONST(-0.3168278933), COEF_CONST(-0.3059098721), - COEF_CONST(-0.2950716615), COEF_CONST(-0.2843214273), - COEF_CONST(-0.2736634016), COEF_CONST(-0.2631053329), - COEF_CONST(-0.2526480258), COEF_CONST(-0.2423016876), - COEF_CONST(-0.2320690900), COEF_CONST(-0.2219652683), - COEF_CONST(-0.2119735926), COEF_CONST(-0.2021250129), - COEF_CONST(-0.1923966706), COEF_CONST(-0.1828172505), - COEF_CONST(-0.1733808219), COEF_CONST(-0.1640958786), - COEF_CONST(-0.1549607068), COEF_CONST(-0.1459766477), - COEF_CONST(-0.1371551752), COEF_CONST(-0.1285002828), - COEF_CONST(-0.1200077981), COEF_CONST(-0.1116826907), - COEF_CONST(-0.1035329551), COEF_CONST(-0.0955533385), - COEF_CONST(-0.0877547562), COEF_CONST(-0.0801372901), - COEF_CONST(-0.0726943314), COEF_CONST(-0.0654409826), - COEF_CONST(-0.0583705343), COEF_CONST(-0.0514804162), - COEF_CONST(-0.0447806828), COEF_CONST(-0.0382776558), - COEF_CONST(-0.0319531262), COEF_CONST(-0.0258227289), - COEF_CONST(-0.0198834129), COEF_CONST(-0.0141288824), - COEF_CONST(-0.0085711749), COEF_CONST(-0.0032086896), - COEF_CONST(0.0019765601), COEF_CONST(0.0069636861), - COEF_CONST(0.0117623834), COEF_CONST(0.0163701251), - COEF_CONST(0.0207997076), COEF_CONST(0.0250307564), - COEF_CONST(0.0290824007), COEF_CONST(0.0329583921), - COEF_CONST(0.0366418101), COEF_CONST(0.0401458293), - COEF_CONST(0.0434768796), COEF_CONST(0.0466303304), - COEF_CONST(0.0495978668), COEF_CONST(0.0524093807), - COEF_CONST(0.0550460033), COEF_CONST(0.0575152673), - COEF_CONST(0.0598166585), COEF_CONST(0.0619602762), - COEF_CONST(0.0639444813), COEF_CONST(0.0657690689), - COEF_CONST(0.0674525052), COEF_CONST(0.0689664036), - COEF_CONST(0.0703533068), COEF_CONST(0.0715826377), - COEF_CONST(0.0726774633), COEF_CONST(0.0736405998), - COEF_CONST(0.0744664371), COEF_CONST(0.0751576275), - COEF_CONST(0.0757305771), COEF_CONST(0.0761748329), - COEF_CONST(0.0765050724), COEF_CONST(0.0767204911), - COEF_CONST(0.0768230036), COEF_CONST(0.0768174008), - COEF_CONST(0.0767093524), COEF_CONST(0.0764992163), - COEF_CONST(0.0761992484), COEF_CONST(0.0758008361), - COEF_CONST(0.0753137320), COEF_CONST(0.0747452527), - COEF_CONST(0.0741003677), COEF_CONST(0.0733620226), - COEF_CONST(0.0725682601), COEF_CONST(0.0717002675), - COEF_CONST(0.0707628727), COEF_CONST(0.0697630271), - COEF_CONST(0.0687043816), COEF_CONST(0.0676075965), - COEF_CONST(0.0664367527), COEF_CONST(0.0652247071), - COEF_CONST(0.0639715865), COEF_CONST(0.0626857802), - COEF_CONST(0.0613455176), COEF_CONST(0.0599837489), - COEF_CONST(0.0585915670), COEF_CONST(0.0571616441), - COEF_CONST(0.0557173640), COEF_CONST(0.0542452782), - COEF_CONST(0.0527630746), COEF_CONST(0.0512556173), - COEF_CONST(0.0497385748), COEF_CONST(0.0482165702), - COEF_CONST(0.0466843024), COEF_CONST(0.0451488420), - COEF_CONST(0.0436097533), COEF_CONST(0.0420649089), - COEF_CONST(0.0405349173), COEF_CONST(0.0390053689), - COEF_CONST(0.0374812856), COEF_CONST(0.0359697565), - COEF_CONST(0.0344620943), COEF_CONST(0.0329754092), - COEF_CONST(0.0315017626), COEF_CONST(0.0300502665), - COEF_CONST(0.0286072176), COEF_CONST(0.0271859430), - COEF_CONST(0.0257875845), COEF_CONST(0.0244160984), - COEF_CONST(0.0230680164), COEF_CONST(0.0217467546), - COEF_CONST(0.0204531793), COEF_CONST(0.0191872437), - COEF_CONST(0.0179433376), COEF_CONST(0.0167324711), - COEF_CONST(0.0155405551), COEF_CONST(0.0143904667), - COEF_CONST(-0.0132718217), COEF_CONST(-0.0121849999), - COEF_CONST(-0.0111315548), COEF_CONST(-0.0101150218), - COEF_CONST(-0.0091325333), COEF_CONST(-0.0081798229), - COEF_CONST(-0.0072615817), COEF_CONST(-0.0063792295), - COEF_CONST(-0.0055337213), COEF_CONST(-0.0047222595), - COEF_CONST(-0.0039401124), COEF_CONST(-0.0031933777), - COEF_CONST(-0.0024826722), COEF_CONST(-0.0018039471), - COEF_CONST(-0.0011568135), COEF_CONST(-0.0005464280), - COEF_CONST(0.0000276045), COEF_CONST(0.0005832264), - COEF_CONST(0.0010902329), COEF_CONST(0.0015784682), - COEF_CONST(0.0020274175), COEF_CONST(0.0024508541), - COEF_CONST(0.0028446757), COEF_CONST(0.0032091886), - COEF_CONST(0.0035401245), COEF_CONST(0.0038456407), - COEF_CONST(0.0041251644), COEF_CONST(0.0043801861), - COEF_CONST(0.0046039531), COEF_CONST(0.0048109470), - COEF_CONST(0.0049839686), COEF_CONST(0.0051382277), - COEF_CONST(0.0052715759), COEF_CONST(0.0053838976), - COEF_CONST(0.0054753781), COEF_CONST(0.0055404361), - COEF_CONST(0.0055917129), COEF_CONST(0.0056266114), - COEF_CONST(0.0056389198), COEF_CONST(0.0056455196), - COEF_CONST(0.0056220642), COEF_CONST(0.0055938023), - COEF_CONST(0.0055475715), COEF_CONST(0.0054876041), - COEF_CONST(0.0054196776), COEF_CONST(0.0053471681), - COEF_CONST(0.0052461168), COEF_CONST(0.0051407353), - COEF_CONST(0.0050393022), COEF_CONST(0.0049137603), - COEF_CONST(0.0047932561), COEF_CONST(0.0046606460), - COEF_CONST(0.0045209853), COEF_CONST(0.0043730717), - COEF_CONST(0.0042264271), COEF_CONST(0.0040819752), - COEF_CONST(0.0039207432), COEF_CONST(0.0037603923), - COEF_CONST(0.0036008267), COEF_CONST(0.0034418874), - COEF_CONST(0.0032739614), COEF_CONST(0.0031125420), - COEF_CONST(0.0029469447), COEF_CONST(0.0027870464), - COEF_CONST(0.0026201757), COEF_CONST(0.0024625617), - COEF_CONST(0.0023017253), COEF_CONST(0.0021461584), - COEF_CONST(0.0019841141), COEF_CONST(0.0018348265), - COEF_CONST(0.0016868083), COEF_CONST(0.0015443219), - COEF_CONST(0.0013902494), COEF_CONST(0.0012577884), - COEF_CONST(0.0011250156), COEF_CONST(0.0009885988), - COEF_CONST(0.0008608443), COEF_CONST(0.0007458025), - COEF_CONST(0.0006239376), COEF_CONST(0.0005107388), - COEF_CONST(0.0004026540), COEF_CONST(0.0002949531), - COEF_CONST(0.0002043017), COEF_CONST(0.0001094383), - COEF_CONST(0.0000134949), COEF_CONST(-0.0000617334), - COEF_CONST(-0.0001446380), COEF_CONST(-0.0002098337), - COEF_CONST(-0.0002896981), COEF_CONST(-0.0003501175), - COEF_CONST(-0.0004095121), COEF_CONST(-0.0004606325), - COEF_CONST(-0.0005145572), COEF_CONST(-0.0005564576), - COEF_CONST(-0.0005946118), COEF_CONST(-0.0006341594), - COEF_CONST(-0.0006650415), COEF_CONST(-0.0006917937), - COEF_CONST(-0.0007215391), COEF_CONST(-0.0007319357), - COEF_CONST(-0.0007530001), COEF_CONST(-0.0007630793), - COEF_CONST(-0.0007757977), COEF_CONST(-0.0007801449), - COEF_CONST(-0.0007803664), COEF_CONST(-0.0007779869), - COEF_CONST(-0.0007834332), COEF_CONST(-0.0007724848), - COEF_CONST(-0.0007681371), COEF_CONST(-0.0007490598), - COEF_CONST(-0.0007440941), COEF_CONST(-0.0007255043), - COEF_CONST(-0.0007157736), COEF_CONST(-0.0006941614), - COEF_CONST(-0.0006777690), COEF_CONST(-0.0006540333), - COEF_CONST(-0.0006312493), COEF_CONST(-0.0006132747), - COEF_CONST(-0.0005870930), COEF_CONST(-0.0005677802), - COEF_CONST(-0.0005466565), COEF_CONST(-0.0005226564), - COEF_CONST(-0.0005040714), COEF_CONST(-0.0004893791), - COEF_CONST(-0.0004875227), COEF_CONST(-0.0004947518), - COEF_CONST(-0.0005617692), COEF_CONST(-0.0005525280) -}; - -static real_t qmf_c_2[] = { - COEF_CONST(0.0000000000), COEF_CONST(-0.0005617692), - COEF_CONST(-0.0004875227), COEF_CONST(-0.0005040714), - COEF_CONST(-0.0005466565), COEF_CONST(-0.0005870930), - COEF_CONST(-0.0006312493), COEF_CONST(-0.0006777690), - COEF_CONST(-0.0007157736), COEF_CONST(-0.0007440941), - COEF_CONST(-0.0007681371), COEF_CONST(-0.0007834332), - COEF_CONST(-0.0007803664), COEF_CONST(-0.0007757977), - COEF_CONST(-0.0007530001), COEF_CONST(-0.0007215391), - COEF_CONST(-0.0006650415), COEF_CONST(-0.0005946118), - COEF_CONST(-0.0005145572), COEF_CONST(-0.0004095121), - COEF_CONST(-0.0002896981), COEF_CONST(-0.0001446380), - COEF_CONST(0.0000134949), COEF_CONST(0.0002043017), - COEF_CONST(0.0004026540), COEF_CONST(0.0006239376), - COEF_CONST(0.0008608443), COEF_CONST(0.0011250156), - COEF_CONST(0.0013902494), COEF_CONST(0.0016868083), - COEF_CONST(0.0019841141), COEF_CONST(0.0023017253), - COEF_CONST(0.0026201757), COEF_CONST(0.0029469447), - COEF_CONST(0.0032739614), COEF_CONST(0.0036008267), - COEF_CONST(0.0039207432), COEF_CONST(0.0042264271), - COEF_CONST(0.0045209853), COEF_CONST(0.0047932561), - COEF_CONST(0.0050393022), COEF_CONST(0.0052461168), - COEF_CONST(0.0054196776), COEF_CONST(0.0055475715), - COEF_CONST(0.0056220642), COEF_CONST(0.0056389198), - COEF_CONST(0.0055917129), COEF_CONST(0.0054753781), - COEF_CONST(0.0052715759), COEF_CONST(0.0049839686), - COEF_CONST(0.0046039531), COEF_CONST(0.0041251644), - COEF_CONST(0.0035401245), COEF_CONST(0.0028446757), - COEF_CONST(0.0020274175), COEF_CONST(0.0010902329), - COEF_CONST(0.0000276045), COEF_CONST(-0.0011568135), - COEF_CONST(-0.0024826722), COEF_CONST(-0.0039401124), - COEF_CONST(-0.0055337213), COEF_CONST(-0.0072615817), - COEF_CONST(-0.0091325333), COEF_CONST(-0.0111315548), - COEF_CONST(0.0132718217), COEF_CONST(0.0155405551), - COEF_CONST(0.0179433376), COEF_CONST(0.0204531793), - COEF_CONST(0.0230680164), COEF_CONST(0.0257875845), - COEF_CONST(0.0286072176), COEF_CONST(0.0315017626), - COEF_CONST(0.0344620943), COEF_CONST(0.0374812856), - COEF_CONST(0.0405349173), COEF_CONST(0.0436097533), - COEF_CONST(0.0466843024), COEF_CONST(0.0497385748), - COEF_CONST(0.0527630746), COEF_CONST(0.0557173640), - COEF_CONST(0.0585915670), COEF_CONST(0.0613455176), - COEF_CONST(0.0639715865), COEF_CONST(0.0664367527), - COEF_CONST(0.0687043816), COEF_CONST(0.0707628727), - COEF_CONST(0.0725682601), COEF_CONST(0.0741003677), - COEF_CONST(0.0753137320), COEF_CONST(0.0761992484), - COEF_CONST(0.0767093524), COEF_CONST(0.0768230036), - COEF_CONST(0.0765050724), COEF_CONST(0.0757305771), - COEF_CONST(0.0744664371), COEF_CONST(0.0726774633), - COEF_CONST(0.0703533068), COEF_CONST(0.0674525052), - COEF_CONST(0.0639444813), COEF_CONST(0.0598166585), - COEF_CONST(0.0550460033), COEF_CONST(0.0495978668), - COEF_CONST(0.0434768796), COEF_CONST(0.0366418101), - COEF_CONST(0.0290824007), COEF_CONST(0.0207997076), - COEF_CONST(0.0117623834), COEF_CONST(0.0019765601), - COEF_CONST(-0.0085711749), COEF_CONST(-0.0198834129), - COEF_CONST(-0.0319531262), COEF_CONST(-0.0447806828), - COEF_CONST(-0.0583705343), COEF_CONST(-0.0726943314), - COEF_CONST(-0.0877547562), COEF_CONST(-0.1035329551), - COEF_CONST(-0.1200077981), COEF_CONST(-0.1371551752), - COEF_CONST(-0.1549607068), COEF_CONST(-0.1733808219), - COEF_CONST(-0.1923966706), COEF_CONST(-0.2119735926), - COEF_CONST(-0.2320690900), COEF_CONST(-0.2526480258), - COEF_CONST(-0.2736634016), COEF_CONST(-0.2950716615), - COEF_CONST(-0.3168278933), COEF_CONST(-0.3388722837), - COEF_CONST(0.3611589968), COEF_CONST(0.3836350143), - COEF_CONST(0.4062317610), COEF_CONST(0.4289119840), - COEF_CONST(0.4515996575), COEF_CONST(0.4742453098), - COEF_CONST(0.4967708290), COEF_CONST(0.5191234946), - COEF_CONST(0.5412553549), COEF_CONST(0.5630789399), - COEF_CONST(0.5845403075), COEF_CONST(0.6055783629), - COEF_CONST(0.6261242628), COEF_CONST(0.6461269855), - COEF_CONST(0.6655139923), COEF_CONST(0.6842353344), - COEF_CONST(0.7022388577), COEF_CONST(0.7194462419), - COEF_CONST(0.7358211875), COEF_CONST(0.7513137460), - COEF_CONST(0.7658674717), COEF_CONST(0.7794287801), - COEF_CONST(0.7919735909), COEF_CONST(0.8034485579), - COEF_CONST(0.8138191104), COEF_CONST(0.8230419755), - COEF_CONST(0.8311038613), COEF_CONST(0.8379717469), - COEF_CONST(0.8436238170), COEF_CONST(0.8480315804), - COEF_CONST(0.8511971235), COEF_CONST(0.8531020880), - COEF_CONST(0.8537385464), COEF_CONST(0.8531020880), - COEF_CONST(0.8511971235), COEF_CONST(0.8480315804), - COEF_CONST(0.8436238170), COEF_CONST(0.8379717469), - COEF_CONST(0.8311038613), COEF_CONST(0.8230419755), - COEF_CONST(0.8138191104), COEF_CONST(0.8034485579), - COEF_CONST(0.7919735909), COEF_CONST(0.7794287801), - COEF_CONST(0.7658674717), COEF_CONST(0.7513137460), - COEF_CONST(0.7358211875), COEF_CONST(0.7194462419), - COEF_CONST(0.7022388577), COEF_CONST(0.6842353344), - COEF_CONST(0.6655139923), COEF_CONST(0.6461269855), - COEF_CONST(0.6261242628), COEF_CONST(0.6055783629), - COEF_CONST(0.5845403075), COEF_CONST(0.5630789399), - COEF_CONST(0.5412553549), COEF_CONST(0.5191234946), - COEF_CONST(0.4967708290), COEF_CONST(0.4742453098), - COEF_CONST(0.4515996575), COEF_CONST(0.4289119840), - COEF_CONST(0.4062317610), COEF_CONST(0.3836350143), - COEF_CONST(-0.3611589968), COEF_CONST(-0.3388722837), - COEF_CONST(-0.3168278933), COEF_CONST(-0.2950716615), - COEF_CONST(-0.2736634016), COEF_CONST(-0.2526480258), - COEF_CONST(-0.2320690900), COEF_CONST(-0.2119735926), - COEF_CONST(-0.1923966706), COEF_CONST(-0.1733808219), - COEF_CONST(-0.1549607068), COEF_CONST(-0.1371551752), - COEF_CONST(-0.1200077981), COEF_CONST(-0.1035329551), - COEF_CONST(-0.0877547562), COEF_CONST(-0.0726943314), - COEF_CONST(-0.0583705343), COEF_CONST(-0.0447806828), - COEF_CONST(-0.0319531262), COEF_CONST(-0.0198834129), - COEF_CONST(-0.0085711749), COEF_CONST(0.0019765601), - COEF_CONST(0.0117623834), COEF_CONST(0.0207997076), - COEF_CONST(0.0290824007), COEF_CONST(0.0366418101), - COEF_CONST(0.0434768796), COEF_CONST(0.0495978668), - COEF_CONST(0.0550460033), COEF_CONST(0.0598166585), - COEF_CONST(0.0639444813), COEF_CONST(0.0674525052), - COEF_CONST(0.0703533068), COEF_CONST(0.0726774633), - COEF_CONST(0.0744664371), COEF_CONST(0.0757305771), - COEF_CONST(0.0765050724), COEF_CONST(0.0768230036), - COEF_CONST(0.0767093524), COEF_CONST(0.0761992484), - COEF_CONST(0.0753137320), COEF_CONST(0.0741003677), - COEF_CONST(0.0725682601), COEF_CONST(0.0707628727), - COEF_CONST(0.0687043816), COEF_CONST(0.0664367527), - COEF_CONST(0.0639715865), COEF_CONST(0.0613455176), - COEF_CONST(0.0585915670), COEF_CONST(0.0557173640), - COEF_CONST(0.0527630746), COEF_CONST(0.0497385748), - COEF_CONST(0.0466843024), COEF_CONST(0.0436097533), - COEF_CONST(0.0405349173), COEF_CONST(0.0374812856), - COEF_CONST(0.0344620943), COEF_CONST(0.0315017626), - COEF_CONST(0.0286072176), COEF_CONST(0.0257875845), - COEF_CONST(0.0230680164), COEF_CONST(0.0204531793), - COEF_CONST(0.0179433376), COEF_CONST(0.0155405551), - COEF_CONST(-0.0132718217), COEF_CONST(-0.0111315548), - COEF_CONST(-0.0091325333), COEF_CONST(-0.0072615817), - COEF_CONST(-0.0055337213), COEF_CONST(-0.0039401124), - COEF_CONST(-0.0024826722), COEF_CONST(-0.0011568135), - COEF_CONST(0.0000276045), COEF_CONST(0.0010902329), - COEF_CONST(0.0020274175), COEF_CONST(0.0028446757), - COEF_CONST(0.0035401245), COEF_CONST(0.0041251644), - COEF_CONST(0.0046039531), COEF_CONST(0.0049839686), - COEF_CONST(0.0052715759), COEF_CONST(0.0054753781), - COEF_CONST(0.0055917129), COEF_CONST(0.0056389198), - COEF_CONST(0.0056220642), COEF_CONST(0.0055475715), - COEF_CONST(0.0054196776), COEF_CONST(0.0052461168), - COEF_CONST(0.0050393022), COEF_CONST(0.0047932561), - COEF_CONST(0.0045209853), COEF_CONST(0.0042264271), - COEF_CONST(0.0039207432), COEF_CONST(0.0036008267), - COEF_CONST(0.0032739614), COEF_CONST(0.0029469447), - COEF_CONST(0.0026201757), COEF_CONST(0.0023017253), - COEF_CONST(0.0019841141), COEF_CONST(0.0016868083), - COEF_CONST(0.0013902494), COEF_CONST(0.0011250156), - COEF_CONST(0.0008608443), COEF_CONST(0.0006239376), - COEF_CONST(0.0004026540), COEF_CONST(0.0002043017), - COEF_CONST(0.0000134949), COEF_CONST(-0.0001446380), - COEF_CONST(-0.0002896981), COEF_CONST(-0.0004095121), - COEF_CONST(-0.0005145572), COEF_CONST(-0.0005946118), - COEF_CONST(-0.0006650415), COEF_CONST(-0.0007215391), - COEF_CONST(-0.0007530001), COEF_CONST(-0.0007757977), - COEF_CONST(-0.0007803664), COEF_CONST(-0.0007834332), - COEF_CONST(-0.0007681371), COEF_CONST(-0.0007440941), - COEF_CONST(-0.0007157736), COEF_CONST(-0.0006777690), - COEF_CONST(-0.0006312493), COEF_CONST(-0.0005870930), - COEF_CONST(-0.0005466565), COEF_CONST(-0.0005040714), - COEF_CONST(-0.0004875227), COEF_CONST(-0.0005617692) -}; #ifdef __cplusplus } diff --git a/libfaad2/sbr_qmf_c.h b/libfaad2/sbr_qmf_c.h new file mode 100644 index 0000000000..4e216c6b70 --- /dev/null +++ b/libfaad2/sbr_qmf_c.h @@ -0,0 +1,364 @@ +/* +** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding +** Copyright (C) 2003 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: sbr_qmf_c.h,v 1.2 2003/09/25 12:40:19 menno Exp $ +**/ + +#ifndef __SBR_QMF_C_H__ +#define __SBR_QMF_C_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifdef _MSC_VER +#pragma warning(disable:4305) +#pragma warning(disable:4244) +#endif + +static real_t qmf_c[] = { + COEF_CONST(0.0000000000), COEF_CONST(-0.0005525286), + COEF_CONST(-0.0005617692), COEF_CONST(-0.0004947518), + COEF_CONST(-0.0004875227), COEF_CONST(-0.0004893791), + COEF_CONST(-0.0005040714), COEF_CONST(-0.0005226564), + COEF_CONST(-0.0005466565), COEF_CONST(-0.0005677802), + COEF_CONST(-0.0005870930), COEF_CONST(-0.0006132747), + COEF_CONST(-0.0006312493), COEF_CONST(-0.0006540333), + COEF_CONST(-0.0006777690), COEF_CONST(-0.0006941614), + COEF_CONST(-0.0007157736), COEF_CONST(-0.0007255043), + COEF_CONST(-0.0007440941), COEF_CONST(-0.0007490598), + COEF_CONST(-0.0007681371), COEF_CONST(-0.0007724848), + COEF_CONST(-0.0007834332), COEF_CONST(-0.0007779869), + COEF_CONST(-0.0007803664), COEF_CONST(-0.0007801449), + COEF_CONST(-0.0007757977), COEF_CONST(-0.0007630793), + COEF_CONST(-0.0007530001), COEF_CONST(-0.0007319357), + COEF_CONST(-0.0007215391), COEF_CONST(-0.0006917937), + COEF_CONST(-0.0006650415), COEF_CONST(-0.0006341594), + COEF_CONST(-0.0005946118), COEF_CONST(-0.0005564576), + COEF_CONST(-0.0005145572), COEF_CONST(-0.0004606325), + COEF_CONST(-0.0004095121), COEF_CONST(-0.0003501175), + COEF_CONST(-0.0002896981), COEF_CONST(-0.0002098337), + COEF_CONST(-0.0001446380), COEF_CONST(-0.0000617334), + COEF_CONST(0.0000134949), COEF_CONST(0.0001094383), + COEF_CONST(0.0002043017), COEF_CONST(0.0002949531), + COEF_CONST(0.0004026540), COEF_CONST(0.0005107388), + COEF_CONST(0.0006239376), COEF_CONST(0.0007458025), + COEF_CONST(0.0008608443), COEF_CONST(0.0009885988), + COEF_CONST(0.0011250156), COEF_CONST(0.0012577884), + COEF_CONST(0.0013902494), COEF_CONST(0.0015443219), + COEF_CONST(0.0016868083), COEF_CONST(0.0018348265), + COEF_CONST(0.0019841141), COEF_CONST(0.0021461584), + COEF_CONST(0.0023017253), COEF_CONST(0.0024625617), + COEF_CONST(0.0026201757), COEF_CONST(0.0027870464), + COEF_CONST(0.0029469447), COEF_CONST(0.0031125420), + COEF_CONST(0.0032739614), COEF_CONST(0.0034418874), + COEF_CONST(0.0036008267), COEF_CONST(0.0037603923), + COEF_CONST(0.0039207432), COEF_CONST(0.0040819752), + COEF_CONST(0.0042264271), COEF_CONST(0.0043730717), + COEF_CONST(0.0045209853), COEF_CONST(0.0046606460), + COEF_CONST(0.0047932561), COEF_CONST(0.0049137603), + COEF_CONST(0.0050393022), COEF_CONST(0.0051407353), + COEF_CONST(0.0052461168), COEF_CONST(0.0053471681), + COEF_CONST(0.0054196776), COEF_CONST(0.0054876041), + COEF_CONST(0.0055475715), COEF_CONST(0.0055938023), + COEF_CONST(0.0056220642), COEF_CONST(0.0056455196), + COEF_CONST(0.0056389198), COEF_CONST(0.0056266114), + COEF_CONST(0.0055917129), COEF_CONST(0.0055404361), + COEF_CONST(0.0054753781), COEF_CONST(0.0053838976), + COEF_CONST(0.0052715759), COEF_CONST(0.0051382277), + COEF_CONST(0.0049839686), COEF_CONST(0.0048109470), + COEF_CONST(0.0046039531), COEF_CONST(0.0043801861), + COEF_CONST(0.0041251644), COEF_CONST(0.0038456407), + COEF_CONST(0.0035401245), COEF_CONST(0.0032091886), + COEF_CONST(0.0028446757), COEF_CONST(0.0024508541), + COEF_CONST(0.0020274175), COEF_CONST(0.0015784682), + COEF_CONST(0.0010902329), COEF_CONST(0.0005832264), + COEF_CONST(0.0000276045), COEF_CONST(-0.0005464280), + COEF_CONST(-0.0011568135), COEF_CONST(-0.0018039471), + COEF_CONST(-0.0024826722), COEF_CONST(-0.0031933777), + COEF_CONST(-0.0039401124), COEF_CONST(-0.0047222595), + COEF_CONST(-0.0055337213), COEF_CONST(-0.0063792295), + COEF_CONST(-0.0072615817), COEF_CONST(-0.0081798229), + COEF_CONST(-0.0091325333), COEF_CONST(-0.0101150218), + COEF_CONST(-0.0111315548), COEF_CONST(-0.0121849999), + COEF_CONST(0.0132718217), COEF_CONST(0.0143904667), + COEF_CONST(0.0155405551), COEF_CONST(0.0167324711), + COEF_CONST(0.0179433376), COEF_CONST(0.0191872437), + COEF_CONST(0.0204531793), COEF_CONST(0.0217467546), + COEF_CONST(0.0230680164), COEF_CONST(0.0244160984), + COEF_CONST(0.0257875845), COEF_CONST(0.0271859430), + COEF_CONST(0.0286072176), COEF_CONST(0.0300502665), + COEF_CONST(0.0315017626), COEF_CONST(0.0329754092), + COEF_CONST(0.0344620943), COEF_CONST(0.0359697565), + COEF_CONST(0.0374812856), COEF_CONST(0.0390053689), + COEF_CONST(0.0405349173), COEF_CONST(0.0420649089), + COEF_CONST(0.0436097533), COEF_CONST(0.0451488420), + COEF_CONST(0.0466843024), COEF_CONST(0.0482165702), + COEF_CONST(0.0497385748), COEF_CONST(0.0512556173), + COEF_CONST(0.0527630746), COEF_CONST(0.0542452782), + COEF_CONST(0.0557173640), COEF_CONST(0.0571616441), + COEF_CONST(0.0585915670), COEF_CONST(0.0599837489), + COEF_CONST(0.0613455176), COEF_CONST(0.0626857802), + COEF_CONST(0.0639715865), COEF_CONST(0.0652247071), + COEF_CONST(0.0664367527), COEF_CONST(0.0676075965), + COEF_CONST(0.0687043816), COEF_CONST(0.0697630271), + COEF_CONST(0.0707628727), COEF_CONST(0.0717002675), + COEF_CONST(0.0725682601), COEF_CONST(0.0733620226), + COEF_CONST(0.0741003677), COEF_CONST(0.0747452527), + COEF_CONST(0.0753137320), COEF_CONST(0.0758008361), + COEF_CONST(0.0761992484), COEF_CONST(0.0764992163), + COEF_CONST(0.0767093524), COEF_CONST(0.0768174008), + COEF_CONST(0.0768230036), COEF_CONST(0.0767204911), + COEF_CONST(0.0765050724), COEF_CONST(0.0761748329), + COEF_CONST(0.0757305771), COEF_CONST(0.0751576275), + COEF_CONST(0.0744664371), COEF_CONST(0.0736405998), + COEF_CONST(0.0726774633), COEF_CONST(0.0715826377), + COEF_CONST(0.0703533068), COEF_CONST(0.0689664036), + COEF_CONST(0.0674525052), COEF_CONST(0.0657690689), + COEF_CONST(0.0639444813), COEF_CONST(0.0619602762), + COEF_CONST(0.0598166585), COEF_CONST(0.0575152673), + COEF_CONST(0.0550460033), COEF_CONST(0.0524093807), + COEF_CONST(0.0495978668), COEF_CONST(0.0466303304), + COEF_CONST(0.0434768796), COEF_CONST(0.0401458293), + COEF_CONST(0.0366418101), COEF_CONST(0.0329583921), + COEF_CONST(0.0290824007), COEF_CONST(0.0250307564), + COEF_CONST(0.0207997076), COEF_CONST(0.0163701251), + COEF_CONST(0.0117623834), COEF_CONST(0.0069636861), + COEF_CONST(0.0019765601), COEF_CONST(-0.0032086896), + COEF_CONST(-0.0085711749), COEF_CONST(-0.0141288824), + COEF_CONST(-0.0198834129), COEF_CONST(-0.0258227289), + COEF_CONST(-0.0319531262), COEF_CONST(-0.0382776558), + COEF_CONST(-0.0447806828), COEF_CONST(-0.0514804162), + COEF_CONST(-0.0583705343), COEF_CONST(-0.0654409826), + COEF_CONST(-0.0726943314), COEF_CONST(-0.0801372901), + COEF_CONST(-0.0877547562), COEF_CONST(-0.0955533385), + COEF_CONST(-0.1035329551), COEF_CONST(-0.1116826907), + COEF_CONST(-0.1200077981), COEF_CONST(-0.1285002828), + COEF_CONST(-0.1371551752), COEF_CONST(-0.1459766477), + COEF_CONST(-0.1549607068), COEF_CONST(-0.1640958786), + COEF_CONST(-0.1733808219), COEF_CONST(-0.1828172505), + COEF_CONST(-0.1923966706), COEF_CONST(-0.2021250129), + COEF_CONST(-0.2119735926), COEF_CONST(-0.2219652683), + COEF_CONST(-0.2320690900), COEF_CONST(-0.2423016876), + COEF_CONST(-0.2526480258), COEF_CONST(-0.2631053329), + COEF_CONST(-0.2736634016), COEF_CONST(-0.2843214273), + COEF_CONST(-0.2950716615), COEF_CONST(-0.3059098721), + COEF_CONST(-0.3168278933), COEF_CONST(-0.3278113604), + COEF_CONST(-0.3388722837), COEF_CONST(-0.3499914110), + COEF_CONST(0.3611589968), COEF_CONST(0.3723795414), + COEF_CONST(0.3836350143), COEF_CONST(0.3949211836), + COEF_CONST(0.4062317610), COEF_CONST(0.4175696969), + COEF_CONST(0.4289119840), COEF_CONST(0.4402553737), + COEF_CONST(0.4515996575), COEF_CONST(0.4629307985), + COEF_CONST(0.4742453098), COEF_CONST(0.4855253100), + COEF_CONST(0.4967708290), COEF_CONST(0.5079817772), + COEF_CONST(0.5191234946), COEF_CONST(0.5302240849), + COEF_CONST(0.5412553549), COEF_CONST(0.5522051454), + COEF_CONST(0.5630789399), COEF_CONST(0.5738524199), + COEF_CONST(0.5845403075), COEF_CONST(0.5951123238), + COEF_CONST(0.6055783629), COEF_CONST(0.6159110069), + COEF_CONST(0.6261242628), COEF_CONST(0.6361979842), + COEF_CONST(0.6461269855), COEF_CONST(0.6559016109), + COEF_CONST(0.6655139923), COEF_CONST(0.6749663353), + COEF_CONST(0.6842353344), COEF_CONST(0.6933282614), + COEF_CONST(0.7022388577), COEF_CONST(0.7109410167), + COEF_CONST(0.7194462419), COEF_CONST(0.7277448773), + COEF_CONST(0.7358211875), COEF_CONST(0.7436828017), + COEF_CONST(0.7513137460), COEF_CONST(0.7587080598), + COEF_CONST(0.7658674717), COEF_CONST(0.7727780938), + COEF_CONST(0.7794287801), COEF_CONST(0.7858353257), + COEF_CONST(0.7919735909), COEF_CONST(0.7978466153), + COEF_CONST(0.8034485579), COEF_CONST(0.8087695241), + COEF_CONST(0.8138191104), COEF_CONST(0.8185775876), + COEF_CONST(0.8230419755), COEF_CONST(0.8272275329), + COEF_CONST(0.8311038613), COEF_CONST(0.8346937299), + COEF_CONST(0.8379717469), COEF_CONST(0.8409541249), + COEF_CONST(0.8436238170), COEF_CONST(0.8459818363), + COEF_CONST(0.8480315804), COEF_CONST(0.8497804999), + COEF_CONST(0.8511971235), COEF_CONST(0.8523046970), + COEF_CONST(0.8531020880), COEF_CONST(0.8535720706), + COEF_CONST(0.8537385464), COEF_CONST(0.8535720706), + COEF_CONST(0.8531020880), COEF_CONST(0.8523046970), + COEF_CONST(0.8511971235), COEF_CONST(0.8497804999), + COEF_CONST(0.8480315804), COEF_CONST(0.8459818363), + COEF_CONST(0.8436238170), COEF_CONST(0.8409541249), + COEF_CONST(0.8379717469), COEF_CONST(0.8346937299), + COEF_CONST(0.8311038613), COEF_CONST(0.8272275329), + COEF_CONST(0.8230419755), COEF_CONST(0.8185775876), + COEF_CONST(0.8138191104), COEF_CONST(0.8087695241), + COEF_CONST(0.8034485579), COEF_CONST(0.7978466153), + COEF_CONST(0.7919735909), COEF_CONST(0.7858353257), + COEF_CONST(0.7794287801), COEF_CONST(0.7727780938), + COEF_CONST(0.7658674717), COEF_CONST(0.7587080598), + COEF_CONST(0.7513137460), COEF_CONST(0.7436828017), + COEF_CONST(0.7358211875), COEF_CONST(0.7277448773), + COEF_CONST(0.7194462419), COEF_CONST(0.7109410167), + COEF_CONST(0.7022388577), COEF_CONST(0.6933282614), + COEF_CONST(0.6842353344), COEF_CONST(0.6749663353), + COEF_CONST(0.6655139923), COEF_CONST(0.6559016109), + COEF_CONST(0.6461269855), COEF_CONST(0.6361979842), + COEF_CONST(0.6261242628), COEF_CONST(0.6159110069), + COEF_CONST(0.6055783629), COEF_CONST(0.5951123238), + COEF_CONST(0.5845403075), COEF_CONST(0.5738524199), + COEF_CONST(0.5630789399), COEF_CONST(0.5522051454), + COEF_CONST(0.5412553549), COEF_CONST(0.5302240849), + COEF_CONST(0.5191234946), COEF_CONST(0.5079817772), + COEF_CONST(0.4967708290), COEF_CONST(0.4855253100), + COEF_CONST(0.4742453098), COEF_CONST(0.4629307985), + COEF_CONST(0.4515996575), COEF_CONST(0.4402553737), + COEF_CONST(0.4289119840), COEF_CONST(0.4175696969), + COEF_CONST(0.4062317610), COEF_CONST(0.3949211836), + COEF_CONST(0.3836350143), COEF_CONST(0.3723795414), + COEF_CONST(-0.3611589968), COEF_CONST(-0.3499914110), + COEF_CONST(-0.3388722837), COEF_CONST(-0.3278113604), + COEF_CONST(-0.3168278933), COEF_CONST(-0.3059098721), + COEF_CONST(-0.2950716615), COEF_CONST(-0.2843214273), + COEF_CONST(-0.2736634016), COEF_CONST(-0.2631053329), + COEF_CONST(-0.2526480258), COEF_CONST(-0.2423016876), + COEF_CONST(-0.2320690900), COEF_CONST(-0.2219652683), + COEF_CONST(-0.2119735926), COEF_CONST(-0.2021250129), + COEF_CONST(-0.1923966706), COEF_CONST(-0.1828172505), + COEF_CONST(-0.1733808219), COEF_CONST(-0.1640958786), + COEF_CONST(-0.1549607068), COEF_CONST(-0.1459766477), + COEF_CONST(-0.1371551752), COEF_CONST(-0.1285002828), + COEF_CONST(-0.1200077981), COEF_CONST(-0.1116826907), + COEF_CONST(-0.1035329551), COEF_CONST(-0.0955533385), + COEF_CONST(-0.0877547562), COEF_CONST(-0.0801372901), + COEF_CONST(-0.0726943314), COEF_CONST(-0.0654409826), + COEF_CONST(-0.0583705343), COEF_CONST(-0.0514804162), + COEF_CONST(-0.0447806828), COEF_CONST(-0.0382776558), + COEF_CONST(-0.0319531262), COEF_CONST(-0.0258227289), + COEF_CONST(-0.0198834129), COEF_CONST(-0.0141288824), + COEF_CONST(-0.0085711749), COEF_CONST(-0.0032086896), + COEF_CONST(0.0019765601), COEF_CONST(0.0069636861), + COEF_CONST(0.0117623834), COEF_CONST(0.0163701251), + COEF_CONST(0.0207997076), COEF_CONST(0.0250307564), + COEF_CONST(0.0290824007), COEF_CONST(0.0329583921), + COEF_CONST(0.0366418101), COEF_CONST(0.0401458293), + COEF_CONST(0.0434768796), COEF_CONST(0.0466303304), + COEF_CONST(0.0495978668), COEF_CONST(0.0524093807), + COEF_CONST(0.0550460033), COEF_CONST(0.0575152673), + COEF_CONST(0.0598166585), COEF_CONST(0.0619602762), + COEF_CONST(0.0639444813), COEF_CONST(0.0657690689), + COEF_CONST(0.0674525052), COEF_CONST(0.0689664036), + COEF_CONST(0.0703533068), COEF_CONST(0.0715826377), + COEF_CONST(0.0726774633), COEF_CONST(0.0736405998), + COEF_CONST(0.0744664371), COEF_CONST(0.0751576275), + COEF_CONST(0.0757305771), COEF_CONST(0.0761748329), + COEF_CONST(0.0765050724), COEF_CONST(0.0767204911), + COEF_CONST(0.0768230036), COEF_CONST(0.0768174008), + COEF_CONST(0.0767093524), COEF_CONST(0.0764992163), + COEF_CONST(0.0761992484), COEF_CONST(0.0758008361), + COEF_CONST(0.0753137320), COEF_CONST(0.0747452527), + COEF_CONST(0.0741003677), COEF_CONST(0.0733620226), + COEF_CONST(0.0725682601), COEF_CONST(0.0717002675), + COEF_CONST(0.0707628727), COEF_CONST(0.0697630271), + COEF_CONST(0.0687043816), COEF_CONST(0.0676075965), + COEF_CONST(0.0664367527), COEF_CONST(0.0652247071), + COEF_CONST(0.0639715865), COEF_CONST(0.0626857802), + COEF_CONST(0.0613455176), COEF_CONST(0.0599837489), + COEF_CONST(0.0585915670), COEF_CONST(0.0571616441), + COEF_CONST(0.0557173640), COEF_CONST(0.0542452782), + COEF_CONST(0.0527630746), COEF_CONST(0.0512556173), + COEF_CONST(0.0497385748), COEF_CONST(0.0482165702), + COEF_CONST(0.0466843024), COEF_CONST(0.0451488420), + COEF_CONST(0.0436097533), COEF_CONST(0.0420649089), + COEF_CONST(0.0405349173), COEF_CONST(0.0390053689), + COEF_CONST(0.0374812856), COEF_CONST(0.0359697565), + COEF_CONST(0.0344620943), COEF_CONST(0.0329754092), + COEF_CONST(0.0315017626), COEF_CONST(0.0300502665), + COEF_CONST(0.0286072176), COEF_CONST(0.0271859430), + COEF_CONST(0.0257875845), COEF_CONST(0.0244160984), + COEF_CONST(0.0230680164), COEF_CONST(0.0217467546), + COEF_CONST(0.0204531793), COEF_CONST(0.0191872437), + COEF_CONST(0.0179433376), COEF_CONST(0.0167324711), + COEF_CONST(0.0155405551), COEF_CONST(0.0143904667), + COEF_CONST(-0.0132718217), COEF_CONST(-0.0121849999), + COEF_CONST(-0.0111315548), COEF_CONST(-0.0101150218), + COEF_CONST(-0.0091325333), COEF_CONST(-0.0081798229), + COEF_CONST(-0.0072615817), COEF_CONST(-0.0063792295), + COEF_CONST(-0.0055337213), COEF_CONST(-0.0047222595), + COEF_CONST(-0.0039401124), COEF_CONST(-0.0031933777), + COEF_CONST(-0.0024826722), COEF_CONST(-0.0018039471), + COEF_CONST(-0.0011568135), COEF_CONST(-0.0005464280), + COEF_CONST(0.0000276045), COEF_CONST(0.0005832264), + COEF_CONST(0.0010902329), COEF_CONST(0.0015784682), + COEF_CONST(0.0020274175), COEF_CONST(0.0024508541), + COEF_CONST(0.0028446757), COEF_CONST(0.0032091886), + COEF_CONST(0.0035401245), COEF_CONST(0.0038456407), + COEF_CONST(0.0041251644), COEF_CONST(0.0043801861), + COEF_CONST(0.0046039531), COEF_CONST(0.0048109470), + COEF_CONST(0.0049839686), COEF_CONST(0.0051382277), + COEF_CONST(0.0052715759), COEF_CONST(0.0053838976), + COEF_CONST(0.0054753781), COEF_CONST(0.0055404361), + COEF_CONST(0.0055917129), COEF_CONST(0.0056266114), + COEF_CONST(0.0056389198), COEF_CONST(0.0056455196), + COEF_CONST(0.0056220642), COEF_CONST(0.0055938023), + COEF_CONST(0.0055475715), COEF_CONST(0.0054876041), + COEF_CONST(0.0054196776), COEF_CONST(0.0053471681), + COEF_CONST(0.0052461168), COEF_CONST(0.0051407353), + COEF_CONST(0.0050393022), COEF_CONST(0.0049137603), + COEF_CONST(0.0047932561), COEF_CONST(0.0046606460), + COEF_CONST(0.0045209853), COEF_CONST(0.0043730717), + COEF_CONST(0.0042264271), COEF_CONST(0.0040819752), + COEF_CONST(0.0039207432), COEF_CONST(0.0037603923), + COEF_CONST(0.0036008267), COEF_CONST(0.0034418874), + COEF_CONST(0.0032739614), COEF_CONST(0.0031125420), + COEF_CONST(0.0029469447), COEF_CONST(0.0027870464), + COEF_CONST(0.0026201757), COEF_CONST(0.0024625617), + COEF_CONST(0.0023017253), COEF_CONST(0.0021461584), + COEF_CONST(0.0019841141), COEF_CONST(0.0018348265), + COEF_CONST(0.0016868083), COEF_CONST(0.0015443219), + COEF_CONST(0.0013902494), COEF_CONST(0.0012577884), + COEF_CONST(0.0011250156), COEF_CONST(0.0009885988), + COEF_CONST(0.0008608443), COEF_CONST(0.0007458025), + COEF_CONST(0.0006239376), COEF_CONST(0.0005107388), + COEF_CONST(0.0004026540), COEF_CONST(0.0002949531), + COEF_CONST(0.0002043017), COEF_CONST(0.0001094383), + COEF_CONST(0.0000134949), COEF_CONST(-0.0000617334), + COEF_CONST(-0.0001446380), COEF_CONST(-0.0002098337), + COEF_CONST(-0.0002896981), COEF_CONST(-0.0003501175), + COEF_CONST(-0.0004095121), COEF_CONST(-0.0004606325), + COEF_CONST(-0.0005145572), COEF_CONST(-0.0005564576), + COEF_CONST(-0.0005946118), COEF_CONST(-0.0006341594), + COEF_CONST(-0.0006650415), COEF_CONST(-0.0006917937), + COEF_CONST(-0.0007215391), COEF_CONST(-0.0007319357), + COEF_CONST(-0.0007530001), COEF_CONST(-0.0007630793), + COEF_CONST(-0.0007757977), COEF_CONST(-0.0007801449), + COEF_CONST(-0.0007803664), COEF_CONST(-0.0007779869), + COEF_CONST(-0.0007834332), COEF_CONST(-0.0007724848), + COEF_CONST(-0.0007681371), COEF_CONST(-0.0007490598), + COEF_CONST(-0.0007440941), COEF_CONST(-0.0007255043), + COEF_CONST(-0.0007157736), COEF_CONST(-0.0006941614), + COEF_CONST(-0.0006777690), COEF_CONST(-0.0006540333), + COEF_CONST(-0.0006312493), COEF_CONST(-0.0006132747), + COEF_CONST(-0.0005870930), COEF_CONST(-0.0005677802), + COEF_CONST(-0.0005466565), COEF_CONST(-0.0005226564), + COEF_CONST(-0.0005040714), COEF_CONST(-0.0004893791), + COEF_CONST(-0.0004875227), COEF_CONST(-0.0004947518), + COEF_CONST(-0.0005617692), COEF_CONST(-0.0005525280) +}; + +#endif \ No newline at end of file diff --git a/libfaad2/sbr_syntax.c b/libfaad2/sbr_syntax.c index d97a228ed8..6b4142b3ad 100644 --- a/libfaad2/sbr_syntax.c +++ b/libfaad2/sbr_syntax.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_syntax.c,v 1.7 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_syntax.c,v 1.11 2003/09/30 16:32:02 menno Exp $ **/ #include "common.h" @@ -80,6 +80,15 @@ static void sbr_reset(sbr_info *sbr) /* table 2 */ uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint8_t id_aac) { + uint8_t result; +#ifdef DRM + uint8_t crc_len; + + if (sbr->Is_DRM_SBR) + faad_getbits(ld, 8); /* 8-bit CRC */ + else +#endif + { uint8_t bs_extension_type = (uint8_t)faad_getbits(ld, 4 DEBUGVAR(1,198,"sbr_bitstream(): bs_extension_type")); @@ -88,9 +97,46 @@ uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint8_t id_aac) sbr->bs_sbr_crc_bits = (uint16_t)faad_getbits(ld, 10 DEBUGVAR(1,199,"sbr_bitstream(): bs_sbr_crc_bits")); } + } sbr->bs_header_flag = faad_get1bit(ld DEBUGVAR(1,200,"sbr_bitstream(): bs_header_flag")); + +#ifdef DRM + if (sbr->Is_DRM_SBR) + { + /* Check CRC, get number of bits for check */ + if (id_aac == ID_SCE) + { + if (sbr->lcstereo_flag) + { + if (sbr->bs_header_flag) + crc_len = min(76, sbr->data_size_bits); + else + crc_len = min(47, sbr->data_size_bits); + } else { + if (sbr->bs_header_flag) + crc_len = min(74, sbr->data_size_bits); + else + crc_len = min(47, sbr->data_size_bits); + } + } else { + if (sbr->bs_header_flag) + crc_len = min(120, sbr->data_size_bits); + else + crc_len = min(93, sbr->data_size_bits); + } + + if ((result = faad_check_CRC(ld, crc_len)) > 0) + return result; + + /* Rewind and read bits again to set correct position in bit-stream */ + faad_rewindbits(ld); + faad_getbits(ld, 8); + faad_get1bit(ld); + } +#endif + if (sbr->bs_header_flag) sbr_header(ld, sbr, id_aac); @@ -104,7 +150,7 @@ uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint8_t id_aac) if (sbr->Reset || (sbr->bs_header_flag && sbr->just_seeked)) { - uint16_t k2; + uint8_t k2; /* calculate the Master Frequency Table */ sbr->k0 = qmf_start_channel(sbr->bs_start_freq, sbr->bs_samplerate_mode, @@ -131,10 +177,12 @@ uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint8_t id_aac) master_frequency_table(sbr, sbr->k0, k2, sbr->bs_freq_scale, sbr->bs_alter_scale); } - derived_frequency_table(sbr, sbr->bs_xover_band, k2); + if ((result = derived_frequency_table(sbr, sbr->bs_xover_band, k2)) > 0) + return result; } - sbr_data(ld, sbr, id_aac); + if ((result = sbr_data(ld, sbr, id_aac)) > 0) + return result; /* no error */ return 0; @@ -147,6 +195,12 @@ static void sbr_header(bitfile *ld, sbr_info *sbr, uint8_t id_aac) sbr->header_count++; +#ifdef DRM + /* protocol_version (should be 0) */ + if (sbr->Is_DRM_SBR) + faad_getbits(ld, 2); +#endif + sbr->bs_amp_res = faad_get1bit(ld DEBUGVAR(1,203,"sbr_header(): bs_amp_res")); @@ -160,10 +214,19 @@ static void sbr_header(bitfile *ld, sbr_info *sbr, uint8_t id_aac) DEBUGVAR(1,206,"sbr_header(): bs_xover_band")); faad_getbits(ld, 2 DEBUGVAR(1,207,"sbr_header(): bs_reserved_bits_hdr")); +#ifdef DRM + if (sbr->Is_DRM_SBR) + sbr->bs_dataextra = faad_getbits(ld, 1); +#endif bs_header_extra_1 = faad_get1bit(ld DEBUGVAR(1,208,"sbr_header(): bs_header_extra_1")); bs_header_extra_2 = faad_get1bit(ld DEBUGVAR(1,209,"sbr_header(): bs_header_extra_2")); +#ifdef DRM + /* No low complexity stereo support so far */ + if ((sbr->lcstereo_flag) && (sbr->Is_DRM_SBR)) + faad_getbits(ld, 2); +#endif if (bs_header_extra_1) { @@ -173,7 +236,13 @@ static void sbr_header(bitfile *ld, sbr_info *sbr, uint8_t id_aac) DEBUGVAR(1,212,"sbr_header(): bs_alter_scale")); sbr->bs_noise_bands = faad_getbits(ld, 2 DEBUGVAR(1,213,"sbr_header(): bs_noise_bands")); + } else { + /* Default values */ + sbr->bs_freq_scale = 2; + sbr->bs_alter_scale = 1; + sbr->bs_noise_bands = 2; } + if (bs_header_extra_2) { sbr->bs_limiter_bands = faad_getbits(ld, 2 @@ -184,6 +253,17 @@ static void sbr_header(bitfile *ld, sbr_info *sbr, uint8_t id_aac) DEBUGVAR(1,216,"sbr_header(): bs_interpol_freq")); sbr->bs_smoothing_mode = faad_get1bit(ld DEBUGVAR(1,217,"sbr_header(): bs_smoothing_mode")); +#ifdef DRM + /* reserved */ + if (sbr->Is_DRM_SBR) + faad_get1bit(ld); +#endif + } else { + /* Default values */ + sbr->bs_limiter_bands = 2; + sbr->bs_limiter_gains = 2; + sbr->bs_interpol_freq = 1; + sbr->bs_smoothing_mode = 1; } #if 0 @@ -210,8 +290,9 @@ static void sbr_header(bitfile *ld, sbr_info *sbr, uint8_t id_aac) } /* table 4 */ -static void sbr_data(bitfile *ld, sbr_info *sbr, uint8_t id_aac) +static uint8_t sbr_data(bitfile *ld, sbr_info *sbr, uint8_t id_aac) { + uint8_t result; #if 0 sbr->bs_samplerate_mode = faad_get1bit(ld DEBUGVAR(1,219,"sbr_data(): bs_samplerate_mode")); @@ -219,75 +300,73 @@ static void sbr_data(bitfile *ld, sbr_info *sbr, uint8_t id_aac) sbr->rate = (sbr->bs_samplerate_mode) ? 2 : 1; +#ifdef DRM + if (sbr->Is_DRM_SBR) + sbr->rate = 2; +#endif + switch (id_aac) { case ID_SCE: - sbr_single_channel_element(ld, sbr); + if ((result = sbr_single_channel_element(ld, sbr)) > 0) + return result; break; case ID_CPE: - sbr_channel_pair_element(ld, sbr); + if ((result = sbr_channel_pair_element(ld, sbr)) > 0) + return result; break; } + + return 0; } /* table 5 */ -static void sbr_single_channel_element(bitfile *ld, sbr_info *sbr) +static uint8_t sbr_single_channel_element(bitfile *ld, sbr_info *sbr) { + uint8_t result; + +#ifdef DRM + if (!sbr->Is_DRM_SBR) +#endif + { if (faad_get1bit(ld DEBUGVAR(1,220,"sbr_single_channel_element(): bs_data_extra"))) { faad_getbits(ld, 4 DEBUGVAR(1,221,"sbr_single_channel_element(): bs_reserved_bits_data")); } + } - sbr_grid(ld, sbr, 0); + if ((result = sbr_grid(ld, sbr, 0)) > 0) + return result; sbr_dtdf(ld, sbr, 0); invf_mode(ld, sbr, 0); - sbr_envelope(ld, sbr, 0); - sbr_noise(ld, sbr, 0); - - envelope_noise_dequantisation(sbr, 0); - -#if 0 -// TEMP - if (sbr->frame == 21) +#ifdef DRM + if (sbr->Is_DRM_SBR) { - int l, k; + /* sbr mode not needed in V1.0. Should be set to 2 by a V1.0 encoder */ + faad_getbits(ld, 2); - printf("\n"); - for (l = 0; l < sbr->L_E[0]; l++) - { - for (k = 0; k < sbr->n[sbr->f[0][l]]; k++) - { - //printf("%f\n", sbr->E_orig[0][k][l]); - printf("%f\n", sbr->E_orig[0][k][l] * 1024. / (float)(1 << REAL_BITS)); - } - } + if (sbr->bs_dataextra) + faad_getbits(ld, 3); /* reserved */ } -// end TEMP #endif + sbr_envelope(ld, sbr, 0); + sbr_noise(ld, sbr, 0); -#if 0 -// TEMP - { - int l, k; - - printf("\n"); - for (l = 0; l < sbr->L_Q[0]; l++) - { - for (k = 0; k < sbr->N_Q; k++) - { - printf("%f\n", sbr->Q_orig[0][k][l]); - } - } - } -// end TEMP -#endif + envelope_noise_dequantisation(sbr, 0); memset(sbr->bs_add_harmonic[0], 0, 64*sizeof(uint8_t)); +#ifdef DRM + if (sbr->Is_DRM_SBR) + sbr->bs_add_harmonic_flag[0] = 0; + else +#endif + { sbr->bs_add_harmonic_flag[0] = faad_get1bit(ld DEBUGVAR(1,223,"sbr_single_channel_element(): bs_add_harmonic_flag[0]")); + } if (sbr->bs_add_harmonic_flag[0]) sinusoidal_coding(ld, sbr, 0); @@ -311,17 +390,28 @@ static void sbr_single_channel_element(bitfile *ld, sbr_info *sbr) DEBUGVAR(1,227,"sbr_single_channel_element(): bs_extension_id")); nr_bits_left -= 2; /* sbr_extension(ld, sbr, 0, nr_bits_left); */ +#ifdef DRM + if (!sbr->Is_DRM_SBR) +#endif + { sbr->bs_extension_data = faad_getbits(ld, 6 DEBUGVAR(1,279,"sbr_single_channel_element(): bs_extension_data")); } } + } + + return 0; } /* table 6 */ -static void sbr_channel_pair_element(bitfile *ld, sbr_info *sbr) +static uint8_t sbr_channel_pair_element(bitfile *ld, sbr_info *sbr) { - uint8_t n; + uint8_t n, result; +#ifdef DRM + if (!sbr->Is_DRM_SBR) +#endif + { if (faad_get1bit(ld DEBUGVAR(1,228,"sbr_single_channel_element(): bs_data_extra"))) { @@ -330,13 +420,15 @@ static void sbr_channel_pair_element(bitfile *ld, sbr_info *sbr) faad_getbits(ld, 4 DEBUGVAR(1,228,"sbr_channel_pair_element(): bs_reserved_bits_data")); } + } sbr->bs_coupling = faad_get1bit(ld DEBUGVAR(1,228,"sbr_channel_pair_element(): bs_coupling")); if (sbr->bs_coupling) { - sbr_grid(ld, sbr, 0); + if ((result = sbr_grid(ld, sbr, 0)) > 0) + return result; /* need to copy some data from left to right */ sbr->bs_frame_class[1] = sbr->bs_frame_class[0]; @@ -355,6 +447,16 @@ static void sbr_channel_pair_element(bitfile *ld, sbr_info *sbr) sbr_dtdf(ld, sbr, 0); sbr_dtdf(ld, sbr, 1); invf_mode(ld, sbr, 0); +#ifdef DRM + if (sbr->Is_DRM_SBR) + { + /* sbr mode not needed in V1.0. Should be set to 2 by a V1.0 encoder */ + faad_getbits(ld, 2); + + if (sbr->bs_dataextra) + faad_getbits(ld, 3); /* reserved */ + } +#endif /* more copying */ for (n = 0; n < sbr->N_Q; n++) @@ -368,22 +470,49 @@ static void sbr_channel_pair_element(bitfile *ld, sbr_info *sbr) memset(sbr->bs_add_harmonic[0], 0, 64*sizeof(uint8_t)); memset(sbr->bs_add_harmonic[1], 0, 64*sizeof(uint8_t)); +#ifdef DRM + if (sbr->Is_DRM_SBR) + sbr->bs_add_harmonic_flag[0] = 0; + else +#endif + { sbr->bs_add_harmonic_flag[0] = faad_get1bit(ld DEBUGVAR(1,231,"sbr_channel_pair_element(): bs_add_harmonic_flag[0]")); + } if (sbr->bs_add_harmonic_flag[0]) sinusoidal_coding(ld, sbr, 0); +#ifdef DRM + if (sbr->Is_DRM_SBR) + sbr->bs_add_harmonic_flag[1] = 0; + else +#endif + { sbr->bs_add_harmonic_flag[1] = faad_get1bit(ld DEBUGVAR(1,232,"sbr_channel_pair_element(): bs_add_harmonic_flag[1]")); + } if (sbr->bs_add_harmonic_flag[1]) sinusoidal_coding(ld, sbr, 1); } else { - sbr_grid(ld, sbr, 0); - sbr_grid(ld, sbr, 1); + if ((result = sbr_grid(ld, sbr, 0)) > 0) + return result; + if ((result = sbr_grid(ld, sbr, 1)) > 0) + return result; sbr_dtdf(ld, sbr, 0); sbr_dtdf(ld, sbr, 1); invf_mode(ld, sbr, 0); invf_mode(ld, sbr, 1); +#ifdef DRM + if (sbr->Is_DRM_SBR) + { + /* sbr mode not needed in V1.0. Should be set to 2 by a V1.0 encoder */ + faad_getbits(ld, 2); + faad_getbits(ld, 2); + + if (sbr->bs_dataextra) + faad_getbits(ld, 6); /* reserved */ + } +#endif sbr_envelope(ld, sbr, 0); sbr_envelope(ld, sbr, 1); sbr_noise(ld, sbr, 0); @@ -392,59 +521,36 @@ static void sbr_channel_pair_element(bitfile *ld, sbr_info *sbr) memset(sbr->bs_add_harmonic[0], 0, 64*sizeof(uint8_t)); memset(sbr->bs_add_harmonic[1], 0, 64*sizeof(uint8_t)); +#ifdef DRM + if (sbr->Is_DRM_SBR) + sbr->bs_add_harmonic_flag[0] = 0; + else +#endif + { sbr->bs_add_harmonic_flag[0] = faad_get1bit(ld DEBUGVAR(1,239,"sbr_channel_pair_element(): bs_add_harmonic_flag[0]")); + } if (sbr->bs_add_harmonic_flag[0]) sinusoidal_coding(ld, sbr, 0); +#ifdef DRM + if (sbr->Is_DRM_SBR) + sbr->bs_add_harmonic_flag[1] = 0; + else +#endif + { sbr->bs_add_harmonic_flag[1] = faad_get1bit(ld DEBUGVAR(1,240,"sbr_channel_pair_element(): bs_add_harmonic_flag[1]")); + } if (sbr->bs_add_harmonic_flag[1]) sinusoidal_coding(ld, sbr, 1); } envelope_noise_dequantisation(sbr, 0); envelope_noise_dequantisation(sbr, 1); -#if 0 -// TEMP - if (sbr->frame == 21) - { - int l, k; - - printf("\n"); - for (l = 0; l < sbr->L_E[0]; l++) - { - for (k = 0; k < sbr->n[sbr->f[0][l]]; k++) - { - printf("%f\n", sbr->E_orig[0][k][l]); - //printf("%f\n", sbr->E_orig[0][k][l] * 1024. / (float)(1 << REAL_BITS)); - } - } - } -// end TEMP -#endif - if (sbr->bs_coupling) unmap_envelope_noise(sbr); -#if 0 -// TEMP - if (sbr->bs_coupling) - { - int l, k; - - printf("\n"); - for (l = 0; l < sbr->L_Q[0]; l++) - { - for (k = 0; k < sbr->N_Q; k++) - { - printf("%f\n", sbr->Q_orig[0][k][l]); - } - } - } -// end TEMP -#endif - sbr->bs_extended_data = faad_get1bit(ld DEBUGVAR(1,233,"sbr_channel_pair_element(): bs_extended_data[0]")); if (sbr->bs_extended_data) @@ -465,27 +571,29 @@ static void sbr_channel_pair_element(bitfile *ld, sbr_info *sbr) DEBUGVAR(1,236,"sbr_channel_pair_element(): bs_extension_id")); nr_bits_left -= 2; /* sbr_extension(ld, sbr, 0, nr_bits_left); */ +#ifdef DRM + if (!sbr->Is_DRM_SBR) +#endif + { sbr->bs_extension_data = faad_getbits(ld, 6 DEBUGVAR(1,280,"sbr_single_channel_element(): bs_extension_data")); } } + } + + return 0; } /* table 7 */ -static void sbr_grid(bitfile *ld, sbr_info *sbr, uint8_t ch) +static uint8_t sbr_grid(bitfile *ld, sbr_info *sbr, uint8_t ch) { - uint8_t i, env, rel; + uint8_t i, env, rel, result; uint8_t bs_abs_bord, bs_abs_bord_1; uint16_t bs_num_env; sbr->bs_frame_class[ch] = faad_getbits(ld, 2 DEBUGVAR(1,248,"sbr_grid(): bs_frame_class")); -#if 0 - if (sbr->bs_frame_class[ch] != FIXFIX) - printf("%d", sbr->bs_frame_class[ch]); -#endif - switch (sbr->bs_frame_class[ch]) { case FIXFIX: @@ -500,14 +608,23 @@ static void sbr_grid(bitfile *ld, sbr_info *sbr, uint8_t ch) sbr->f[ch][env] = i; sbr->abs_bord_lead[ch] = 0; - sbr->abs_bord_trail[ch] = NO_TIME_SLOTS; + sbr->abs_bord_trail[ch] = sbr->numTimeSlots; sbr->n_rel_lead[ch] = bs_num_env - 1; sbr->n_rel_trail[ch] = 0; break; case FIXVAR: +#ifdef DRM + if (sbr->Is_DRM_SBR) + { + bs_abs_bord = faad_getbits(ld, 3 + DEBUGVAR(1,251,"sbr_grid(): bs_abs_bord")) + sbr->numTimeSlots; + } else +#endif + { bs_abs_bord = faad_getbits(ld, 2 - DEBUGVAR(1,251,"sbr_grid(): bs_abs_bord")) + NO_TIME_SLOTS; + DEBUGVAR(1,251,"sbr_grid(): bs_abs_bord")) + sbr->numTimeSlots; + } bs_num_env = faad_getbits(ld, 2 DEBUGVAR(1,252,"sbr_grid(): bs_num_env")) + 1; @@ -533,8 +650,17 @@ static void sbr_grid(bitfile *ld, sbr_info *sbr, uint8_t ch) break; case VARFIX: +#ifdef DRM + if (sbr->Is_DRM_SBR) + { + bs_abs_bord = faad_getbits(ld, 3 + DEBUGVAR(1,256,"sbr_grid(): bs_abs_bord")); + } else +#endif + { bs_abs_bord = faad_getbits(ld, 2 DEBUGVAR(1,256,"sbr_grid(): bs_abs_bord")); + } bs_num_env = faad_getbits(ld, 2 DEBUGVAR(1,257,"sbr_grid(): bs_num_env")) + 1; @@ -554,16 +680,28 @@ static void sbr_grid(bitfile *ld, sbr_info *sbr, uint8_t ch) } sbr->abs_bord_lead[ch] = bs_abs_bord; - sbr->abs_bord_trail[ch] = NO_TIME_SLOTS; + sbr->abs_bord_trail[ch] = sbr->numTimeSlots; sbr->n_rel_lead[ch] = bs_num_env - 1; sbr->n_rel_trail[ch] = 0; break; case VARVAR: +#ifdef DRM + if (sbr->Is_DRM_SBR) + { + bs_abs_bord = faad_getbits(ld, 3 + DEBUGVAR(1,261,"sbr_grid(): bs_abs_bord_0")); + bs_abs_bord_1 = faad_getbits(ld, 3 + DEBUGVAR(1,262,"sbr_grid(): bs_abs_bord_1")) + sbr->numTimeSlots; + } + else +#endif + { bs_abs_bord = faad_getbits(ld, 2 DEBUGVAR(1,261,"sbr_grid(): bs_abs_bord_0")); bs_abs_bord_1 = faad_getbits(ld, 2 - DEBUGVAR(1,262,"sbr_grid(): bs_abs_bord_1")) + NO_TIME_SLOTS; + DEBUGVAR(1,262,"sbr_grid(): bs_abs_bord_1")) + sbr->numTimeSlots; + } sbr->bs_num_rel_0[ch] = faad_getbits(ld, 2 DEBUGVAR(1,263,"sbr_grid(): bs_num_rel_0")); sbr->bs_num_rel_1[ch] = faad_getbits(ld, 2 @@ -609,8 +747,11 @@ static void sbr_grid(bitfile *ld, sbr_info *sbr, uint8_t ch) sbr->L_Q[ch] = 1; /* TODO: this code can probably be integrated into the code above! */ - envelope_time_border_vector(sbr, ch); + if ((result = envelope_time_border_vector(sbr, ch)) > 0) + return result; noise_floor_time_border_vector(sbr, ch); + + return 0; } /* table 8 */ @@ -636,169 +777,24 @@ static void invf_mode(bitfile *ld, sbr_info *sbr, uint8_t ch) { uint8_t n; - for (n = 0; n < sbr->N_Q; n++) +#ifdef DRM + if (sbr->Is_DRM_SBR) { - sbr->bs_invf_mode[ch][n] = faad_getbits(ld, 2 + /* Only one inv_mode in DRM */ + uint8_t invf_mode; + invf_mode = faad_getbits(ld, 2 DEBUGVAR(1,271,"invf_mode(): bs_invf_mode")); - } -} - -/* table 10 */ -static void sbr_envelope(bitfile *ld, sbr_info *sbr, uint8_t ch) -{ - uint8_t env, band; - int8_t delta = 0; - sbr_huff_tab t_huff, f_huff; - - if ((sbr->L_E[ch] == 1) && (sbr->bs_frame_class[ch] == FIXFIX)) - sbr->amp_res[ch] = 0; - else - sbr->amp_res[ch] = sbr->bs_amp_res; - - if ((sbr->bs_coupling) && (ch == 1)) - { - delta = 1; - if (sbr->amp_res[ch]) - { - t_huff = t_huffman_env_bal_3_0dB; - f_huff = f_huffman_env_bal_3_0dB; - } else { - t_huff = t_huffman_env_bal_1_5dB; - f_huff = f_huffman_env_bal_1_5dB; - } - } else { - delta = 0; - if (sbr->amp_res[ch]) - { - t_huff = t_huffman_env_3_0dB; - f_huff = f_huffman_env_3_0dB; - } else { - t_huff = t_huffman_env_1_5dB; - f_huff = f_huffman_env_1_5dB; - } - } - - for (env = 0; env < sbr->L_E[ch]; env++) - { - if (sbr->bs_df_env[ch][env] == 0) - { - if ((sbr->bs_coupling == 1) && (ch == 1)) - { - if (sbr->amp_res[ch]) - { - sbr->E[ch][0][env] = (faad_getbits(ld, 5 - DEBUGVAR(1,272,"sbr_envelope(): bs_data_env")) << delta); - } else { - sbr->E[ch][0][env] = (faad_getbits(ld, 6 - DEBUGVAR(1,273,"sbr_envelope(): bs_data_env")) << delta); - } - } else { - if (sbr->amp_res[ch]) - { - sbr->E[ch][0][env] = (faad_getbits(ld, 6 - DEBUGVAR(1,274,"sbr_envelope(): bs_data_env")) << delta); - } else { - sbr->E[ch][0][env] = (faad_getbits(ld, 7 - DEBUGVAR(1,275,"sbr_envelope(): bs_data_env")) << delta); - } - } - - for (band = 1; band < sbr->n[sbr->f[ch][env]]; band++) - { - sbr->E[ch][band][env] = (sbr_huff_dec(ld, f_huff) << delta); - } - - } else { - for (band = 0; band < sbr->n[sbr->f[ch][env]]; band++) - { - sbr->E[ch][band][env] = (sbr_huff_dec(ld, t_huff) << delta); - } - } - } - -#if 0 -// TEMP - if (sbr->frame == 19) - { - int l, k; - - printf("\n"); - for (l = 0; l < sbr->L_E[ch]; l++) - { - for (k = 0; k < sbr->n[sbr->f[ch][l]]; k++) - { - printf("l:%d k:%d E:%d\n",l, k, sbr->E[ch][k][l]); - } - } - } -// end TEMP -#endif - - extract_envelope_data(sbr, ch); - -#if 0 -// TEMP - if (sbr->frame == 21) - { - int l, k; - - printf("\n"); - for (l = 0; l < sbr->L_E[ch]; l++) - { - for (k = 0; k < sbr->n[sbr->f[ch][l]]; k++) - { - //printf("l:%d k:%d E:%d\n",l,k, sbr->E[ch][k][l]); - printf("%d\n", sbr->E[ch][k][l]); - } - } - } -// end TEMP + for (n = 0; n < sbr->N_Q; n++) + sbr->bs_invf_mode[ch][n] = invf_mode; + } else #endif -} - -/* table 11 */ -static void sbr_noise(bitfile *ld, sbr_info *sbr, uint8_t ch) -{ - uint8_t noise, band; - int8_t delta = 0; - sbr_huff_tab t_huff, f_huff; - - if ((sbr->bs_coupling == 1) && (ch == 1)) - { - delta = 1; - t_huff = t_huffman_noise_bal_3_0dB; - f_huff = f_huffman_env_bal_3_0dB; - } else { - delta = 0; - t_huff = t_huffman_noise_3_0dB; - f_huff = f_huffman_env_3_0dB; - } - - for (noise = 0; noise < sbr->L_Q[ch]; noise++) - { - if(sbr->bs_df_noise[ch][noise] == 0) - { - if ((sbr->bs_coupling == 1) && (ch == 1)) - { - sbr->Q[ch][0][noise] = (faad_getbits(ld, 5 - DEBUGVAR(1,276,"sbr_noise(): bs_data_noise")) << delta); - } else { - sbr->Q[ch][0][noise] = (faad_getbits(ld, 5 - DEBUGVAR(1,277,"sbr_noise(): bs_data_noise")) << delta); - } - for (band = 1; band < sbr->N_Q; band++) { - sbr->Q[ch][band][noise] = (sbr_huff_dec(ld, f_huff) << delta); - } - } else { - for (band = 0; band < sbr->N_Q; band++) + for (n = 0; n < sbr->N_Q; n++) { - sbr->Q[ch][band][noise] = (sbr_huff_dec(ld, t_huff) << delta); - } + sbr->bs_invf_mode[ch][n] = faad_getbits(ld, 2 + DEBUGVAR(1,271,"invf_mode(): bs_invf_mode")); } } - - extract_noise_floor_data(sbr, ch); } /* table 12 */ diff --git a/libfaad2/sbr_syntax.h b/libfaad2/sbr_syntax.h index 544792ee87..3c942581b7 100644 --- a/libfaad2/sbr_syntax.h +++ b/libfaad2/sbr_syntax.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_syntax.h,v 1.6 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_syntax.h,v 1.7 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SBR_SYNTAX_H__ @@ -34,8 +34,12 @@ extern "C" { #include "bits.h" -#define tHFGen 8 -#define tHFAdj 2 +#ifdef DRM +# define T_HFGEN_DRM 32 +# define T_HFADJ_DRM 0 +#endif +#define T_HFGEN 8 +#define T_HFADJ 2 #define EXT_SBR_DATA 13 #define EXT_SBR_DATA_CRC 14 @@ -48,20 +52,21 @@ extern "C" { #define LO_RES 0 #define HI_RES 1 +#define NO_TIME_SLOTS_960 15 #define NO_TIME_SLOTS 16 +#define RATE 2 + #define NOISE_FLOOR_OFFSET 6.0 uint8_t sbr_extension_data(bitfile *ld, sbr_info *sbr, uint8_t id_aac); static void sbr_header(bitfile *ld, sbr_info *sbr, uint8_t id_aac); -static void sbr_data(bitfile *ld, sbr_info *sbr, uint8_t id_aac); -static void sbr_single_channel_element(bitfile *ld, sbr_info *sbr); -static void sbr_channel_pair_element(bitfile *ld, sbr_info *sbr); -static void sbr_grid(bitfile *ld, sbr_info *sbr, uint8_t ch); +static uint8_t sbr_data(bitfile *ld, sbr_info *sbr, uint8_t id_aac); +static uint8_t sbr_single_channel_element(bitfile *ld, sbr_info *sbr); +static uint8_t sbr_channel_pair_element(bitfile *ld, sbr_info *sbr); +static uint8_t sbr_grid(bitfile *ld, sbr_info *sbr, uint8_t ch); static void sbr_dtdf(bitfile *ld, sbr_info *sbr, uint8_t ch); static void invf_mode(bitfile *ld, sbr_info *sbr, uint8_t ch); -static void sbr_envelope(bitfile *ld, sbr_info *sbr, uint8_t ch); -static void sbr_noise(bitfile *ld, sbr_info *sbr, uint8_t ch); static void sinusoidal_coding(bitfile *ld, sbr_info *sbr, uint8_t ch); #ifdef __cplusplus diff --git a/libfaad2/sbr_tf_grid.c b/libfaad2/sbr_tf_grid.c index 2e021940de..49b6e28e92 100644 --- a/libfaad2/sbr_tf_grid.c +++ b/libfaad2/sbr_tf_grid.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_tf_grid.c,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_tf_grid.c,v 1.4 2003/09/30 16:32:02 menno Exp $ **/ /* Time/Frequency grid */ @@ -37,9 +37,9 @@ #include "sbr_syntax.h" #include "sbr_tf_grid.h" -void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) +uint8_t envelope_time_border_vector(sbr_info *sbr, uint8_t ch) { - uint8_t l, border; + uint8_t l, border, temp; for (l = 0; l <= sbr->L_E[ch]; l++) { @@ -55,12 +55,13 @@ void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) switch (sbr->L_E[ch]) { case 4: - sbr->t_E[ch][3] = sbr->rate * 12; - sbr->t_E[ch][2] = sbr->rate * 8; - sbr->t_E[ch][1] = sbr->rate * 4; + temp = (int) (sbr->numTimeSlots / 4); + sbr->t_E[ch][3] = sbr->rate * 3 * temp; + sbr->t_E[ch][2] = sbr->rate * 2 * temp; + sbr->t_E[ch][1] = sbr->rate * temp; break; case 2: - sbr->t_E[ch][1] = sbr->rate * 8; + sbr->t_E[ch][1] = sbr->rate * (int) (sbr->numTimeSlots / 2); break; default: break; @@ -75,6 +76,9 @@ void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) for (l = 0; l < (sbr->L_E[ch] - 1); l++) { + if (border < sbr->bs_rel_bord[ch][l]) + return 1; + border -= sbr->bs_rel_bord[ch][l]; sbr->t_E[ch][--i] = sbr->rate * border; } @@ -90,6 +94,10 @@ void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) for (l = 0; l < (sbr->L_E[ch] - 1); l++) { border += sbr->bs_rel_bord[ch][l]; + + if (sbr->rate * border + sbr->tHFAdj > sbr->numTimeSlotsRate+sbr->tHFGen) + return 1; + sbr->t_E[ch][i++] = sbr->rate * border; } } @@ -104,6 +112,10 @@ void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) for (l = 0; l < sbr->bs_num_rel_0[ch]; l++) { border += sbr->bs_rel_bord_0[ch][l]; + + if (sbr->rate * border + sbr->tHFAdj > sbr->numTimeSlotsRate+sbr->tHFGen) + return 1; + sbr->t_E[ch][i++] = sbr->rate * border; } } @@ -115,12 +127,17 @@ void envelope_time_border_vector(sbr_info *sbr, uint8_t ch) for (l = 0; l < sbr->bs_num_rel_1[ch]; l++) { + if (border < sbr->bs_rel_bord_1[ch][l]) + return 1; + border -= sbr->bs_rel_bord_1[ch][l]; sbr->t_E[ch][--i] = sbr->rate * border; } } break; } + + return 0; } void noise_floor_time_border_vector(sbr_info *sbr, uint8_t ch) @@ -146,7 +163,7 @@ static int16_t rel_bord_lead(sbr_info *sbr, uint8_t ch, uint8_t l) switch (sbr->bs_frame_class[ch]) { case FIXFIX: - return NO_TIME_SLOTS/sbr->L_E[ch]; + return sbr->numTimeSlots/sbr->L_E[ch]; case FIXVAR: return 0; case VARFIX: diff --git a/libfaad2/sbr_tf_grid.h b/libfaad2/sbr_tf_grid.h index aebca10469..9f9b4fb62e 100644 --- a/libfaad2/sbr_tf_grid.h +++ b/libfaad2/sbr_tf_grid.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sbr_tf_grid.h,v 1.1 2003/07/29 08:20:13 menno Exp $ +** $Id: sbr_tf_grid.h,v 1.2 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SBR_TF_GRID_H__ @@ -33,7 +33,7 @@ extern "C" { #endif -void envelope_time_border_vector(sbr_info *sbr, uint8_t ch); +uint8_t envelope_time_border_vector(sbr_info *sbr, uint8_t ch); void noise_floor_time_border_vector(sbr_info *sbr, uint8_t ch); static int16_t rel_bord_lead(sbr_info *sbr, uint8_t ch, uint8_t l); diff --git a/libfaad2/sine_win.h b/libfaad2/sine_win.h index 9e5d1c61b3..3faefcb103 100644 --- a/libfaad2/sine_win.h +++ b/libfaad2/sine_win.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: sine_win.h,v 1.2 2003/07/29 08:20:13 menno Exp $ +** $Id: sine_win.h,v 1.3 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SINE_WIN_H__ @@ -32,8 +32,6 @@ extern "C" { #endif -#ifndef FIXED_POINT - #ifdef _MSC_VER #pragma warning(disable:4305) #pragma warning(disable:4244) @@ -41,8507 +39,4254 @@ extern "C" { real_t sine_long_1024[] = { - 0.0007669903, - 0.0023009692, - 0.0038349427, - 0.0053689071, - 0.0069028589, - 0.0084367945, - 0.0099707102, - 0.0115046024, - 0.0130384676, - 0.0145723021, - 0.0161061023, - 0.0176398646, - 0.0191735854, - 0.0207072611, - 0.0222408880, - 0.0237744627, - 0.0253079813, - 0.0268414404, - 0.0283748364, - 0.0299081656, - 0.0314414244, - 0.0329746092, - 0.0345077165, - 0.0360407425, - 0.0375736838, - 0.0391065366, - 0.0406392974, - 0.0421719625, - 0.0437045285, - 0.0452369916, - 0.0467693482, - 0.0483015948, - 0.0498337277, - 0.0513657434, - 0.0528976382, - 0.0544294085, - 0.0559610508, - 0.0574925613, - 0.0590239366, - 0.0605551730, - 0.0620862669, - 0.0636172147, - 0.0651480128, - 0.0666786576, - 0.0682091456, - 0.0697394730, - 0.0712696363, - 0.0727996319, - 0.0743294562, - 0.0758591055, - 0.0773885764, - 0.0789178652, - 0.0804469683, - 0.0819758821, - 0.0835046030, - 0.0850331273, - 0.0865614516, - 0.0880895722, - 0.0896174856, - 0.0911451880, - 0.0926726760, - 0.0941999459, - 0.0957269942, - 0.0972538171, - 0.0987804113, - 0.1003067730, - 0.1018328987, - 0.1033587847, - 0.1048844276, - 0.1064098236, - 0.1079349692, - 0.1094598609, - 0.1109844950, - 0.1125088679, - 0.1140329761, - 0.1155568160, - 0.1170803839, - 0.1186036763, - 0.1201266897, - 0.1216494204, - 0.1231718648, - 0.1246940194, - 0.1262158806, - 0.1277374448, - 0.1292587084, - 0.1307796678, - 0.1323003195, - 0.1338206599, - 0.1353406854, - 0.1368603924, - 0.1383797774, - 0.1398988368, - 0.1414175669, - 0.1429359643, - 0.1444540254, - 0.1459717465, - 0.1474891242, - 0.1490061548, - 0.1505228347, - 0.1520391605, - 0.1535551285, - 0.1550707352, - 0.1565859770, - 0.1581008503, - 0.1596153516, - 0.1611294774, - 0.1626432239, - 0.1641565877, - 0.1656695653, - 0.1671821530, - 0.1686943474, - 0.1702061448, - 0.1717175416, - 0.1732285344, - 0.1747391196, - 0.1762492936, - 0.1777590529, - 0.1792683938, - 0.1807773130, - 0.1822858067, - 0.1837938716, - 0.1853015039, - 0.1868087002, - 0.1883154569, - 0.1898217705, - 0.1913276375, - 0.1928330542, - 0.1943380172, - 0.1958425228, - 0.1973465677, - 0.1988501481, - 0.2003532607, - 0.2018559018, - 0.2033580679, - 0.2048597554, - 0.2063609610, - 0.2078616809, - 0.2093619117, - 0.2108616499, - 0.2123608919, - 0.2138596342, - 0.2153578733, - 0.2168556056, - 0.2183528276, - 0.2198495358, - 0.2213457267, - 0.2228413967, - 0.2243365424, - 0.2258311602, - 0.2273252466, - 0.2288187981, - 0.2303118111, - 0.2318042822, - 0.2332962078, - 0.2347875845, - 0.2362784086, - 0.2377686768, - 0.2392583855, - 0.2407475313, - 0.2422361105, - 0.2437241197, - 0.2452115554, - 0.2466984140, - 0.2481846922, - 0.2496703864, - 0.2511554931, - 0.2526400088, - 0.2541239300, - 0.2556072532, - 0.2570899749, - 0.2585720917, - 0.2600536001, - 0.2615344965, - 0.2630147775, - 0.2644944396, - 0.2659734793, - 0.2674518932, - 0.2689296777, - 0.2704068294, - 0.2718833448, - 0.2733592205, - 0.2748344529, - 0.2763090386, - 0.2777829741, - 0.2792562559, - 0.2807288807, - 0.2822008448, - 0.2836721449, - 0.2851427776, - 0.2866127392, - 0.2880820264, - 0.2895506357, - 0.2910185637, - 0.2924858069, - 0.2939523618, - 0.2954182251, - 0.2968833932, - 0.2983478627, - 0.2998116301, - 0.3012746921, - 0.3027370451, - 0.3041986858, - 0.3056596107, - 0.3071198163, - 0.3085792992, - 0.3100380561, - 0.3114960833, - 0.3129533776, - 0.3144099355, - 0.3158657535, - 0.3173208283, - 0.3187751564, - 0.3202287344, - 0.3216815589, - 0.3231336264, - 0.3245849335, - 0.3260354769, - 0.3274852530, - 0.3289342586, - 0.3303824902, - 0.3318299443, - 0.3332766176, - 0.3347225067, - 0.3361676081, - 0.3376119185, - 0.3390554345, - 0.3404981526, - 0.3419400695, - 0.3433811818, - 0.3448214861, - 0.3462609790, - 0.3476996571, - 0.3491375170, - 0.3505745554, - 0.3520107688, - 0.3534461540, - 0.3548807074, - 0.3563144257, - 0.3577473057, - 0.3591793438, - 0.3606105367, - 0.3620408811, - 0.3634703735, - 0.3648990107, - 0.3663267892, - 0.3677537058, - 0.3691797569, - 0.3706049394, - 0.3720292498, - 0.3734526847, - 0.3748752409, - 0.3762969150, - 0.3777177036, - 0.3791376034, - 0.3805566111, - 0.3819747232, - 0.3833919366, - 0.3848082478, - 0.3862236535, - 0.3876381503, - 0.3890517351, - 0.3904644043, - 0.3918761548, - 0.3932869831, - 0.3946968860, - 0.3961058601, - 0.3975139021, - 0.3989210088, - 0.4003271768, - 0.4017324027, - 0.4031366834, - 0.4045400154, - 0.4059423955, - 0.4073438203, - 0.4087442867, - 0.4101437912, - 0.4115423307, - 0.4129399017, - 0.4143365010, - 0.4157321254, - 0.4171267715, - 0.4185204361, - 0.4199131159, - 0.4213048075, - 0.4226955078, - 0.4240852135, - 0.4254739212, - 0.4268616277, - 0.4282483298, - 0.4296340242, - 0.4310187077, - 0.4324023768, - 0.4337850286, - 0.4351666595, - 0.4365472665, - 0.4379268463, - 0.4393053955, - 0.4406829110, - 0.4420593896, - 0.4434348280, - 0.4448092229, - 0.4461825711, - 0.4475548694, - 0.4489261146, - 0.4502963034, - 0.4516654326, - 0.4530334990, - 0.4544004994, - 0.4557664305, - 0.4571312892, - 0.4584950722, - 0.4598577763, - 0.4612193983, - 0.4625799351, - 0.4639393833, - 0.4652977398, - 0.4666550015, - 0.4680111650, - 0.4693662273, - 0.4707201851, - 0.4720730353, - 0.4734247746, - 0.4747754000, - 0.4761249081, - 0.4774732959, - 0.4788205601, - 0.4801666976, - 0.4815117052, - 0.4828555798, - 0.4841983182, - 0.4855399172, - 0.4868803737, - 0.4882196845, - 0.4895578465, - 0.4908948565, - 0.4922307114, - 0.4935654080, - 0.4948989433, - 0.4962313139, - 0.4975625169, - 0.4988925491, - 0.5002214073, - 0.5015490885, - 0.5028755895, - 0.5042009071, - 0.5055250384, - 0.5068479800, - 0.5081697290, - 0.5094902823, - 0.5108096366, - 0.5121277890, - 0.5134447363, - 0.5147604754, - 0.5160750032, - 0.5173883167, - 0.5187004127, - 0.5200112881, - 0.5213209399, - 0.5226293650, - 0.5239365603, - 0.5252425227, - 0.5265472491, - 0.5278507366, - 0.5291529819, - 0.5304539821, - 0.5317537341, - 0.5330522349, - 0.5343494813, - 0.5356454703, - 0.5369401989, - 0.5382336641, - 0.5395258627, - 0.5408167917, - 0.5421064482, - 0.5433948291, - 0.5446819312, - 0.5459677517, - 0.5472522875, - 0.5485355355, - 0.5498174928, - 0.5510981563, - 0.5523775230, - 0.5536555900, - 0.5549323541, - 0.5562078124, - 0.5574819619, - 0.5587547996, - 0.5600263225, - 0.5612965275, - 0.5625654118, - 0.5638329724, - 0.5650992062, - 0.5663641102, - 0.5676276815, - 0.5688899172, - 0.5701508142, - 0.5714103696, - 0.5726685804, - 0.5739254436, - 0.5751809564, - 0.5764351157, - 0.5776879185, - 0.5789393621, - 0.5801894433, - 0.5814381593, - 0.5826855071, - 0.5839314838, - 0.5851760864, - 0.5864193121, - 0.5876611579, - 0.5889016208, - 0.5901406980, - 0.5913783866, - 0.5926146835, - 0.5938495860, - 0.5950830911, - 0.5963151959, - 0.5975458976, - 0.5987751931, - 0.6000030797, - 0.6012295544, - 0.6024546144, - 0.6036782567, - 0.6049004785, - 0.6061212769, - 0.6073406491, - 0.6085585921, - 0.6097751031, - 0.6109901793, - 0.6122038177, - 0.6134160156, - 0.6146267701, - 0.6158360782, - 0.6170439373, - 0.6182503444, - 0.6194552967, - 0.6206587913, - 0.6218608255, - 0.6230613964, - 0.6242605011, - 0.6254581369, - 0.6266543010, - 0.6278489904, - 0.6290422025, - 0.6302339344, - 0.6314241833, - 0.6326129463, - 0.6338002208, - 0.6349860039, - 0.6361702928, - 0.6373530847, - 0.6385343769, - 0.6397141665, - 0.6408924509, - 0.6420692271, - 0.6432444925, - 0.6444182443, - 0.6455904797, - 0.6467611960, - 0.6479303904, - 0.6490980601, - 0.6502642024, - 0.6514288146, - 0.6525918940, - 0.6537534377, - 0.6549134431, - 0.6560719074, - 0.6572288279, - 0.6583842018, - 0.6595380266, - 0.6606902994, - 0.6618410175, - 0.6629901782, - 0.6641377789, - 0.6652838167, - 0.6664282891, - 0.6675711934, - 0.6687125267, - 0.6698522866, - 0.6709904702, - 0.6721270748, - 0.6732620980, - 0.6743955368, - 0.6755273888, - 0.6766576511, - 0.6777863212, - 0.6789133965, - 0.6800388741, - 0.6811627516, - 0.6822850262, - 0.6834056954, - 0.6845247564, - 0.6856422067, - 0.6867580436, - 0.6878722645, - 0.6889848667, - 0.6900958478, - 0.6912052049, - 0.6923129356, - 0.6934190372, - 0.6945235071, - 0.6956263427, - 0.6967275415, - 0.6978271008, - 0.6989250180, - 0.7000212906, - 0.7011159160, - 0.7022088916, - 0.7033002148, - 0.7043898831, - 0.7054778939, - 0.7065642446, - 0.7076489327, - 0.7087319557, - 0.7098133109, - 0.7108929959, - 0.7119710081, - 0.7130473449, - 0.7141220039, - 0.7151949824, - 0.7162662781, - 0.7173358883, - 0.7184038105, - 0.7194700423, - 0.7205345811, - 0.7215974244, - 0.7226585697, - 0.7237180145, - 0.7247757564, - 0.7258317928, - 0.7268861212, - 0.7279387392, - 0.7289896443, - 0.7300388340, - 0.7310863058, - 0.7321320574, - 0.7331760861, - 0.7342183896, - 0.7352589655, - 0.7362978112, - 0.7373349243, - 0.7383703024, - 0.7394039430, - 0.7404358438, - 0.7414660022, - 0.7424944159, - 0.7435210825, - 0.7445459994, - 0.7455691644, - 0.7465905750, - 0.7476102287, - 0.7486281233, - 0.7496442563, - 0.7506586253, - 0.7516712279, - 0.7526820618, - 0.7536911245, - 0.7546984137, - 0.7557039270, - 0.7567076622, - 0.7577096166, - 0.7587097882, - 0.7597081744, - 0.7607047729, - 0.7616995815, - 0.7626925976, - 0.7636838191, - 0.7646732436, - 0.7656608687, - 0.7666466922, - 0.7676307116, - 0.7686129248, - 0.7695933293, - 0.7705719229, - 0.7715487032, - 0.7725236681, - 0.7734968151, - 0.7744681420, - 0.7754376465, - 0.7764053263, - 0.7773711792, - 0.7783352028, - 0.7792973950, - 0.7802577533, - 0.7812162757, - 0.7821729598, - 0.7831278033, - 0.7840808041, - 0.7850319598, - 0.7859812683, - 0.7869287273, - 0.7878743346, - 0.7888180880, - 0.7897599851, - 0.7907000239, - 0.7916382021, - 0.7925745175, - 0.7935089679, - 0.7944415511, - 0.7953722649, - 0.7963011071, - 0.7972280756, - 0.7981531680, - 0.7990763824, - 0.7999977164, - 0.8009171680, - 0.8018347350, - 0.8027504151, - 0.8036642063, - 0.8045761064, - 0.8054861132, - 0.8063942247, - 0.8073004386, - 0.8082047529, - 0.8091071654, - 0.8100076740, - 0.8109062766, - 0.8118029710, - 0.8126977551, - 0.8135906270, - 0.8144815843, - 0.8153706251, - 0.8162577473, - 0.8171429487, - 0.8180262273, - 0.8189075810, - 0.8197870078, - 0.8206645055, - 0.8215400721, - 0.8224137055, - 0.8232854037, - 0.8241551647, - 0.8250229863, - 0.8258888666, - 0.8267528035, - 0.8276147949, - 0.8284748389, - 0.8293329334, - 0.8301890764, - 0.8310432659, - 0.8318954999, - 0.8327457763, - 0.8335940932, - 0.8344404486, - 0.8352848405, - 0.8361272668, - 0.8369677257, - 0.8378062151, - 0.8386427331, - 0.8394772776, - 0.8403098468, - 0.8411404387, - 0.8419690512, - 0.8427956826, - 0.8436203307, - 0.8444429937, - 0.8452636697, - 0.8460823567, - 0.8468990528, - 0.8477137560, - 0.8485264645, - 0.8493371763, - 0.8501458896, - 0.8509526024, - 0.8517573128, - 0.8525600189, - 0.8533607189, - 0.8541594108, - 0.8549560928, - 0.8557507630, - 0.8565434196, - 0.8573340606, - 0.8581226843, - 0.8589092887, - 0.8596938720, - 0.8604764323, - 0.8612569679, - 0.8620354768, - 0.8628119573, - 0.8635864076, - 0.8643588257, - 0.8651292099, - 0.8658975583, - 0.8666638692, - 0.8674281408, - 0.8681903713, - 0.8689505588, - 0.8697087015, - 0.8704647978, - 0.8712188458, - 0.8719708437, - 0.8727207898, - 0.8734686823, - 0.8742145194, - 0.8749582994, - 0.8757000206, - 0.8764396811, - 0.8771772793, - 0.8779128134, - 0.8786462817, - 0.8793776825, - 0.8801070140, - 0.8808342745, - 0.8815594624, - 0.8822825758, - 0.8830036132, - 0.8837225727, - 0.8844394528, - 0.8851542517, - 0.8858669678, - 0.8865775993, - 0.8872861446, - 0.8879926020, - 0.8886969699, - 0.8893992467, - 0.8900994305, - 0.8907975199, - 0.8914935132, - 0.8921874087, - 0.8928792048, - 0.8935688998, - 0.8942564922, - 0.8949419803, - 0.8956253626, - 0.8963066373, - 0.8969858030, - 0.8976628579, - 0.8983378006, - 0.8990106294, - 0.8996813427, - 0.9003499390, - 0.9010164167, - 0.9016807742, - 0.9023430100, - 0.9030031224, - 0.9036611101, - 0.9043169713, - 0.9049707045, - 0.9056223083, - 0.9062717811, - 0.9069191213, - 0.9075643274, - 0.9082073980, - 0.9088483315, - 0.9094871263, - 0.9101237811, - 0.9107582942, - 0.9113906642, - 0.9120208897, - 0.9126489690, - 0.9132749009, - 0.9138986837, - 0.9145203160, - 0.9151397963, - 0.9157571232, - 0.9163722953, - 0.9169853111, - 0.9175961691, - 0.9182048679, - 0.9188114061, - 0.9194157822, - 0.9200179948, - 0.9206180426, - 0.9212159241, - 0.9218116378, - 0.9224051825, - 0.9229965566, - 0.9235857588, - 0.9241727878, - 0.9247576421, - 0.9253403203, - 0.9259208211, - 0.9264991431, - 0.9270752850, - 0.9276492454, - 0.9282210230, - 0.9287906163, - 0.9293580242, - 0.9299232451, - 0.9304862779, - 0.9310471211, - 0.9316057735, - 0.9321622337, - 0.9327165005, - 0.9332685724, - 0.9338184484, - 0.9343661269, - 0.9349116068, - 0.9354548868, - 0.9359959655, - 0.9365348418, - 0.9370715142, - 0.9376059817, - 0.9381382429, - 0.9386682966, - 0.9391961415, - 0.9397217764, - 0.9402452000, - 0.9407664111, - 0.9412854085, - 0.9418021910, - 0.9423167573, - 0.9428291063, - 0.9433392367, - 0.9438471473, - 0.9443528370, - 0.9448563045, - 0.9453575486, - 0.9458565683, - 0.9463533623, - 0.9468479294, - 0.9473402684, - 0.9478303783, - 0.9483182579, - 0.9488039059, - 0.9492873214, - 0.9497685031, - 0.9502474498, - 0.9507241606, - 0.9511986342, - 0.9516708696, - 0.9521408655, - 0.9526086210, - 0.9530741350, - 0.9535374062, - 0.9539984337, - 0.9544572163, - 0.9549137530, - 0.9553680427, - 0.9558200843, - 0.9562698768, - 0.9567174191, - 0.9571627101, - 0.9576057488, - 0.9580465342, - 0.9584850652, - 0.9589213409, - 0.9593553600, - 0.9597871218, - 0.9602166250, - 0.9606438688, - 0.9610688521, - 0.9614915739, - 0.9619120332, - 0.9623302290, - 0.9627461604, - 0.9631598263, - 0.9635712259, - 0.9639803580, - 0.9643872219, - 0.9647918164, - 0.9651941407, - 0.9655941938, - 0.9659919747, - 0.9663874826, - 0.9667807165, - 0.9671716754, - 0.9675603585, - 0.9679467648, - 0.9683308935, - 0.9687127436, - 0.9690923142, - 0.9694696044, - 0.9698446134, - 0.9702173403, - 0.9705877841, - 0.9709559440, - 0.9713218192, - 0.9716854088, - 0.9720467119, - 0.9724057277, - 0.9727624553, - 0.9731168939, - 0.9734690427, - 0.9738189008, - 0.9741664675, - 0.9745117418, - 0.9748547230, - 0.9751954102, - 0.9755338028, - 0.9758698998, - 0.9762037005, - 0.9765352041, - 0.9768644098, - 0.9771913168, - 0.9775159245, - 0.9778382319, - 0.9781582384, - 0.9784759432, - 0.9787913456, - 0.9791044447, - 0.9794152399, - 0.9797237305, - 0.9800299157, - 0.9803337948, - 0.9806353670, - 0.9809346317, - 0.9812315882, - 0.9815262358, - 0.9818185737, - 0.9821086014, - 0.9823963180, - 0.9826817229, - 0.9829648155, - 0.9832455951, - 0.9835240610, - 0.9838002126, - 0.9840740493, - 0.9843455703, - 0.9846147750, - 0.9848816628, - 0.9851462332, - 0.9854084853, - 0.9856684187, - 0.9859260328, - 0.9861813268, - 0.9864343003, - 0.9866849526, - 0.9869332832, - 0.9871792914, - 0.9874229766, - 0.9876643384, - 0.9879033761, - 0.9881400891, - 0.9883744770, - 0.9886065391, - 0.9888362750, - 0.9890636840, - 0.9892887657, - 0.9895115194, - 0.9897319448, - 0.9899500412, - 0.9901658081, - 0.9903792451, - 0.9905903517, - 0.9907991273, - 0.9910055714, - 0.9912096836, - 0.9914114634, - 0.9916109103, - 0.9918080239, - 0.9920028036, - 0.9921952491, - 0.9923853598, - 0.9925731354, - 0.9927585753, - 0.9929416792, - 0.9931224466, - 0.9933008770, - 0.9934769702, - 0.9936507256, - 0.9938221428, - 0.9939912215, - 0.9941579612, - 0.9943223616, - 0.9944844222, - 0.9946441427, - 0.9948015227, - 0.9949565619, - 0.9951092598, - 0.9952596161, - 0.9954076305, - 0.9955533026, - 0.9956966321, - 0.9958376186, - 0.9959762618, - 0.9961125614, - 0.9962465170, - 0.9963781284, - 0.9965073951, - 0.9966343170, - 0.9967588938, - 0.9968811250, - 0.9970010105, - 0.9971185500, - 0.9972337431, - 0.9973465897, - 0.9974570894, - 0.9975652420, - 0.9976710472, - 0.9977745048, - 0.9978756145, - 0.9979743762, - 0.9980707895, - 0.9981648543, - 0.9982565703, - 0.9983459372, - 0.9984329550, - 0.9985176234, - 0.9985999422, - 0.9986799111, - 0.9987575301, - 0.9988327989, - 0.9989057173, - 0.9989762853, - 0.9990445025, - 0.9991103689, - 0.9991738843, - 0.9992350485, - 0.9992938615, - 0.9993503230, - 0.9994044329, - 0.9994561911, - 0.9995055976, - 0.9995526521, - 0.9995973545, - 0.9996397048, - 0.9996797029, - 0.9997173486, - 0.9997526418, - 0.9997855826, - 0.9998161708, - 0.9998444063, - 0.9998702890, - 0.9998938190, - 0.9999149961, - 0.9999338204, - 0.9999502917, - 0.9999644100, - 0.9999761753, - 0.9999855875, - 0.9999926467, - 0.9999973529, - 0.9999997059 + COEF_CONST(0.0007669903), + COEF_CONST(0.0023009692), + COEF_CONST(0.0038349427), + COEF_CONST(0.0053689071), + COEF_CONST(0.0069028589), + COEF_CONST(0.0084367945), + COEF_CONST(0.0099707102), + COEF_CONST(0.0115046024), + COEF_CONST(0.0130384676), + COEF_CONST(0.0145723021), + COEF_CONST(0.0161061023), + COEF_CONST(0.0176398646), + COEF_CONST(0.0191735854), + COEF_CONST(0.0207072611), + COEF_CONST(0.0222408880), + COEF_CONST(0.0237744627), + COEF_CONST(0.0253079813), + COEF_CONST(0.0268414404), + COEF_CONST(0.0283748364), + COEF_CONST(0.0299081656), + COEF_CONST(0.0314414244), + COEF_CONST(0.0329746092), + COEF_CONST(0.0345077165), + COEF_CONST(0.0360407425), + COEF_CONST(0.0375736838), + COEF_CONST(0.0391065366), + COEF_CONST(0.0406392974), + COEF_CONST(0.0421719625), + COEF_CONST(0.0437045285), + COEF_CONST(0.0452369916), + COEF_CONST(0.0467693482), + COEF_CONST(0.0483015948), + COEF_CONST(0.0498337277), + COEF_CONST(0.0513657434), + COEF_CONST(0.0528976382), + COEF_CONST(0.0544294085), + COEF_CONST(0.0559610508), + COEF_CONST(0.0574925613), + COEF_CONST(0.0590239366), + COEF_CONST(0.0605551730), + COEF_CONST(0.0620862669), + COEF_CONST(0.0636172147), + COEF_CONST(0.0651480128), + COEF_CONST(0.0666786576), + COEF_CONST(0.0682091456), + COEF_CONST(0.0697394730), + COEF_CONST(0.0712696363), + COEF_CONST(0.0727996319), + COEF_CONST(0.0743294562), + COEF_CONST(0.0758591055), + COEF_CONST(0.0773885764), + COEF_CONST(0.0789178652), + COEF_CONST(0.0804469683), + COEF_CONST(0.0819758821), + COEF_CONST(0.0835046030), + COEF_CONST(0.0850331273), + COEF_CONST(0.0865614516), + COEF_CONST(0.0880895722), + COEF_CONST(0.0896174856), + COEF_CONST(0.0911451880), + COEF_CONST(0.0926726760), + COEF_CONST(0.0941999459), + COEF_CONST(0.0957269942), + COEF_CONST(0.0972538171), + COEF_CONST(0.0987804113), + COEF_CONST(0.1003067730), + COEF_CONST(0.1018328987), + COEF_CONST(0.1033587847), + COEF_CONST(0.1048844276), + COEF_CONST(0.1064098236), + COEF_CONST(0.1079349692), + COEF_CONST(0.1094598609), + COEF_CONST(0.1109844950), + COEF_CONST(0.1125088679), + COEF_CONST(0.1140329761), + COEF_CONST(0.1155568160), + COEF_CONST(0.1170803839), + COEF_CONST(0.1186036763), + COEF_CONST(0.1201266897), + COEF_CONST(0.1216494204), + COEF_CONST(0.1231718648), + COEF_CONST(0.1246940194), + COEF_CONST(0.1262158806), + COEF_CONST(0.1277374448), + COEF_CONST(0.1292587084), + COEF_CONST(0.1307796678), + COEF_CONST(0.1323003195), + COEF_CONST(0.1338206599), + COEF_CONST(0.1353406854), + COEF_CONST(0.1368603924), + COEF_CONST(0.1383797774), + COEF_CONST(0.1398988368), + COEF_CONST(0.1414175669), + COEF_CONST(0.1429359643), + COEF_CONST(0.1444540254), + COEF_CONST(0.1459717465), + COEF_CONST(0.1474891242), + COEF_CONST(0.1490061548), + COEF_CONST(0.1505228347), + COEF_CONST(0.1520391605), + COEF_CONST(0.1535551285), + COEF_CONST(0.1550707352), + COEF_CONST(0.1565859770), + COEF_CONST(0.1581008503), + COEF_CONST(0.1596153516), + COEF_CONST(0.1611294774), + COEF_CONST(0.1626432239), + COEF_CONST(0.1641565877), + COEF_CONST(0.1656695653), + COEF_CONST(0.1671821530), + COEF_CONST(0.1686943474), + COEF_CONST(0.1702061448), + COEF_CONST(0.1717175416), + COEF_CONST(0.1732285344), + COEF_CONST(0.1747391196), + COEF_CONST(0.1762492936), + COEF_CONST(0.1777590529), + COEF_CONST(0.1792683938), + COEF_CONST(0.1807773130), + COEF_CONST(0.1822858067), + COEF_CONST(0.1837938716), + COEF_CONST(0.1853015039), + COEF_CONST(0.1868087002), + COEF_CONST(0.1883154569), + COEF_CONST(0.1898217705), + COEF_CONST(0.1913276375), + COEF_CONST(0.1928330542), + COEF_CONST(0.1943380172), + COEF_CONST(0.1958425228), + COEF_CONST(0.1973465677), + COEF_CONST(0.1988501481), + COEF_CONST(0.2003532607), + COEF_CONST(0.2018559018), + COEF_CONST(0.2033580679), + COEF_CONST(0.2048597554), + COEF_CONST(0.2063609610), + COEF_CONST(0.2078616809), + COEF_CONST(0.2093619117), + COEF_CONST(0.2108616499), + COEF_CONST(0.2123608919), + COEF_CONST(0.2138596342), + COEF_CONST(0.2153578733), + COEF_CONST(0.2168556056), + COEF_CONST(0.2183528276), + COEF_CONST(0.2198495358), + COEF_CONST(0.2213457267), + COEF_CONST(0.2228413967), + COEF_CONST(0.2243365424), + COEF_CONST(0.2258311602), + COEF_CONST(0.2273252466), + COEF_CONST(0.2288187981), + COEF_CONST(0.2303118111), + COEF_CONST(0.2318042822), + COEF_CONST(0.2332962078), + COEF_CONST(0.2347875845), + COEF_CONST(0.2362784086), + COEF_CONST(0.2377686768), + COEF_CONST(0.2392583855), + COEF_CONST(0.2407475313), + COEF_CONST(0.2422361105), + COEF_CONST(0.2437241197), + COEF_CONST(0.2452115554), + COEF_CONST(0.2466984140), + COEF_CONST(0.2481846922), + COEF_CONST(0.2496703864), + COEF_CONST(0.2511554931), + COEF_CONST(0.2526400088), + COEF_CONST(0.2541239300), + COEF_CONST(0.2556072532), + COEF_CONST(0.2570899749), + COEF_CONST(0.2585720917), + COEF_CONST(0.2600536001), + COEF_CONST(0.2615344965), + COEF_CONST(0.2630147775), + COEF_CONST(0.2644944396), + COEF_CONST(0.2659734793), + COEF_CONST(0.2674518932), + COEF_CONST(0.2689296777), + COEF_CONST(0.2704068294), + COEF_CONST(0.2718833448), + COEF_CONST(0.2733592205), + COEF_CONST(0.2748344529), + COEF_CONST(0.2763090386), + COEF_CONST(0.2777829741), + COEF_CONST(0.2792562559), + COEF_CONST(0.2807288807), + COEF_CONST(0.2822008448), + COEF_CONST(0.2836721449), + COEF_CONST(0.2851427776), + COEF_CONST(0.2866127392), + COEF_CONST(0.2880820264), + COEF_CONST(0.2895506357), + COEF_CONST(0.2910185637), + COEF_CONST(0.2924858069), + COEF_CONST(0.2939523618), + COEF_CONST(0.2954182251), + COEF_CONST(0.2968833932), + COEF_CONST(0.2983478627), + COEF_CONST(0.2998116301), + COEF_CONST(0.3012746921), + COEF_CONST(0.3027370451), + COEF_CONST(0.3041986858), + COEF_CONST(0.3056596107), + COEF_CONST(0.3071198163), + COEF_CONST(0.3085792992), + COEF_CONST(0.3100380561), + COEF_CONST(0.3114960833), + COEF_CONST(0.3129533776), + COEF_CONST(0.3144099355), + COEF_CONST(0.3158657535), + COEF_CONST(0.3173208283), + COEF_CONST(0.3187751564), + COEF_CONST(0.3202287344), + COEF_CONST(0.3216815589), + COEF_CONST(0.3231336264), + COEF_CONST(0.3245849335), + COEF_CONST(0.3260354769), + COEF_CONST(0.3274852530), + COEF_CONST(0.3289342586), + COEF_CONST(0.3303824902), + COEF_CONST(0.3318299443), + COEF_CONST(0.3332766176), + COEF_CONST(0.3347225067), + COEF_CONST(0.3361676081), + COEF_CONST(0.3376119185), + COEF_CONST(0.3390554345), + COEF_CONST(0.3404981526), + COEF_CONST(0.3419400695), + COEF_CONST(0.3433811818), + COEF_CONST(0.3448214861), + COEF_CONST(0.3462609790), + COEF_CONST(0.3476996571), + COEF_CONST(0.3491375170), + COEF_CONST(0.3505745554), + COEF_CONST(0.3520107688), + COEF_CONST(0.3534461540), + COEF_CONST(0.3548807074), + COEF_CONST(0.3563144257), + COEF_CONST(0.3577473057), + COEF_CONST(0.3591793438), + COEF_CONST(0.3606105367), + COEF_CONST(0.3620408811), + COEF_CONST(0.3634703735), + COEF_CONST(0.3648990107), + COEF_CONST(0.3663267892), + COEF_CONST(0.3677537058), + COEF_CONST(0.3691797569), + COEF_CONST(0.3706049394), + COEF_CONST(0.3720292498), + COEF_CONST(0.3734526847), + COEF_CONST(0.3748752409), + COEF_CONST(0.3762969150), + COEF_CONST(0.3777177036), + COEF_CONST(0.3791376034), + COEF_CONST(0.3805566111), + COEF_CONST(0.3819747232), + COEF_CONST(0.3833919366), + COEF_CONST(0.3848082478), + COEF_CONST(0.3862236535), + COEF_CONST(0.3876381503), + COEF_CONST(0.3890517351), + COEF_CONST(0.3904644043), + COEF_CONST(0.3918761548), + COEF_CONST(0.3932869831), + COEF_CONST(0.3946968860), + COEF_CONST(0.3961058601), + COEF_CONST(0.3975139021), + COEF_CONST(0.3989210088), + COEF_CONST(0.4003271768), + COEF_CONST(0.4017324027), + COEF_CONST(0.4031366834), + COEF_CONST(0.4045400154), + COEF_CONST(0.4059423955), + COEF_CONST(0.4073438203), + COEF_CONST(0.4087442867), + COEF_CONST(0.4101437912), + COEF_CONST(0.4115423307), + COEF_CONST(0.4129399017), + COEF_CONST(0.4143365010), + COEF_CONST(0.4157321254), + COEF_CONST(0.4171267715), + COEF_CONST(0.4185204361), + COEF_CONST(0.4199131159), + COEF_CONST(0.4213048075), + COEF_CONST(0.4226955078), + COEF_CONST(0.4240852135), + COEF_CONST(0.4254739212), + COEF_CONST(0.4268616277), + COEF_CONST(0.4282483298), + COEF_CONST(0.4296340242), + COEF_CONST(0.4310187077), + COEF_CONST(0.4324023768), + COEF_CONST(0.4337850286), + COEF_CONST(0.4351666595), + COEF_CONST(0.4365472665), + COEF_CONST(0.4379268463), + COEF_CONST(0.4393053955), + COEF_CONST(0.4406829110), + COEF_CONST(0.4420593896), + COEF_CONST(0.4434348280), + COEF_CONST(0.4448092229), + COEF_CONST(0.4461825711), + COEF_CONST(0.4475548694), + COEF_CONST(0.4489261146), + COEF_CONST(0.4502963034), + COEF_CONST(0.4516654326), + COEF_CONST(0.4530334990), + COEF_CONST(0.4544004994), + COEF_CONST(0.4557664305), + COEF_CONST(0.4571312892), + COEF_CONST(0.4584950722), + COEF_CONST(0.4598577763), + COEF_CONST(0.4612193983), + COEF_CONST(0.4625799351), + COEF_CONST(0.4639393833), + COEF_CONST(0.4652977398), + COEF_CONST(0.4666550015), + COEF_CONST(0.4680111650), + COEF_CONST(0.4693662273), + COEF_CONST(0.4707201851), + COEF_CONST(0.4720730353), + COEF_CONST(0.4734247746), + COEF_CONST(0.4747754000), + COEF_CONST(0.4761249081), + COEF_CONST(0.4774732959), + COEF_CONST(0.4788205601), + COEF_CONST(0.4801666976), + COEF_CONST(0.4815117052), + COEF_CONST(0.4828555798), + COEF_CONST(0.4841983182), + COEF_CONST(0.4855399172), + COEF_CONST(0.4868803737), + COEF_CONST(0.4882196845), + COEF_CONST(0.4895578465), + COEF_CONST(0.4908948565), + COEF_CONST(0.4922307114), + COEF_CONST(0.4935654080), + COEF_CONST(0.4948989433), + COEF_CONST(0.4962313139), + COEF_CONST(0.4975625169), + COEF_CONST(0.4988925491), + COEF_CONST(0.5002214073), + COEF_CONST(0.5015490885), + COEF_CONST(0.5028755895), + COEF_CONST(0.5042009071), + COEF_CONST(0.5055250384), + COEF_CONST(0.5068479800), + COEF_CONST(0.5081697290), + COEF_CONST(0.5094902823), + COEF_CONST(0.5108096366), + COEF_CONST(0.5121277890), + COEF_CONST(0.5134447363), + COEF_CONST(0.5147604754), + COEF_CONST(0.5160750032), + COEF_CONST(0.5173883167), + COEF_CONST(0.5187004127), + COEF_CONST(0.5200112881), + COEF_CONST(0.5213209399), + COEF_CONST(0.5226293650), + COEF_CONST(0.5239365603), + COEF_CONST(0.5252425227), + COEF_CONST(0.5265472491), + COEF_CONST(0.5278507366), + COEF_CONST(0.5291529819), + COEF_CONST(0.5304539821), + COEF_CONST(0.5317537341), + COEF_CONST(0.5330522349), + COEF_CONST(0.5343494813), + COEF_CONST(0.5356454703), + COEF_CONST(0.5369401989), + COEF_CONST(0.5382336641), + COEF_CONST(0.5395258627), + COEF_CONST(0.5408167917), + COEF_CONST(0.5421064482), + COEF_CONST(0.5433948291), + COEF_CONST(0.5446819312), + COEF_CONST(0.5459677517), + COEF_CONST(0.5472522875), + COEF_CONST(0.5485355355), + COEF_CONST(0.5498174928), + COEF_CONST(0.5510981563), + COEF_CONST(0.5523775230), + COEF_CONST(0.5536555900), + COEF_CONST(0.5549323541), + COEF_CONST(0.5562078124), + COEF_CONST(0.5574819619), + COEF_CONST(0.5587547996), + COEF_CONST(0.5600263225), + COEF_CONST(0.5612965275), + COEF_CONST(0.5625654118), + COEF_CONST(0.5638329724), + COEF_CONST(0.5650992062), + COEF_CONST(0.5663641102), + COEF_CONST(0.5676276815), + COEF_CONST(0.5688899172), + COEF_CONST(0.5701508142), + COEF_CONST(0.5714103696), + COEF_CONST(0.5726685804), + COEF_CONST(0.5739254436), + COEF_CONST(0.5751809564), + COEF_CONST(0.5764351157), + COEF_CONST(0.5776879185), + COEF_CONST(0.5789393621), + COEF_CONST(0.5801894433), + COEF_CONST(0.5814381593), + COEF_CONST(0.5826855071), + COEF_CONST(0.5839314838), + COEF_CONST(0.5851760864), + COEF_CONST(0.5864193121), + COEF_CONST(0.5876611579), + COEF_CONST(0.5889016208), + COEF_CONST(0.5901406980), + COEF_CONST(0.5913783866), + COEF_CONST(0.5926146835), + COEF_CONST(0.5938495860), + COEF_CONST(0.5950830911), + COEF_CONST(0.5963151959), + COEF_CONST(0.5975458976), + COEF_CONST(0.5987751931), + COEF_CONST(0.6000030797), + COEF_CONST(0.6012295544), + COEF_CONST(0.6024546144), + COEF_CONST(0.6036782567), + COEF_CONST(0.6049004785), + COEF_CONST(0.6061212769), + COEF_CONST(0.6073406491), + COEF_CONST(0.6085585921), + COEF_CONST(0.6097751031), + COEF_CONST(0.6109901793), + COEF_CONST(0.6122038177), + COEF_CONST(0.6134160156), + COEF_CONST(0.6146267701), + COEF_CONST(0.6158360782), + COEF_CONST(0.6170439373), + COEF_CONST(0.6182503444), + COEF_CONST(0.6194552967), + COEF_CONST(0.6206587913), + COEF_CONST(0.6218608255), + COEF_CONST(0.6230613964), + COEF_CONST(0.6242605011), + COEF_CONST(0.6254581369), + COEF_CONST(0.6266543010), + COEF_CONST(0.6278489904), + COEF_CONST(0.6290422025), + COEF_CONST(0.6302339344), + COEF_CONST(0.6314241833), + COEF_CONST(0.6326129463), + COEF_CONST(0.6338002208), + COEF_CONST(0.6349860039), + COEF_CONST(0.6361702928), + COEF_CONST(0.6373530847), + COEF_CONST(0.6385343769), + COEF_CONST(0.6397141665), + COEF_CONST(0.6408924509), + COEF_CONST(0.6420692271), + COEF_CONST(0.6432444925), + COEF_CONST(0.6444182443), + COEF_CONST(0.6455904797), + COEF_CONST(0.6467611960), + COEF_CONST(0.6479303904), + COEF_CONST(0.6490980601), + COEF_CONST(0.6502642024), + COEF_CONST(0.6514288146), + COEF_CONST(0.6525918940), + COEF_CONST(0.6537534377), + COEF_CONST(0.6549134431), + COEF_CONST(0.6560719074), + COEF_CONST(0.6572288279), + COEF_CONST(0.6583842018), + COEF_CONST(0.6595380266), + COEF_CONST(0.6606902994), + COEF_CONST(0.6618410175), + COEF_CONST(0.6629901782), + COEF_CONST(0.6641377789), + COEF_CONST(0.6652838167), + COEF_CONST(0.6664282891), + COEF_CONST(0.6675711934), + COEF_CONST(0.6687125267), + COEF_CONST(0.6698522866), + COEF_CONST(0.6709904702), + COEF_CONST(0.6721270748), + COEF_CONST(0.6732620980), + COEF_CONST(0.6743955368), + COEF_CONST(0.6755273888), + COEF_CONST(0.6766576511), + COEF_CONST(0.6777863212), + COEF_CONST(0.6789133965), + COEF_CONST(0.6800388741), + COEF_CONST(0.6811627516), + COEF_CONST(0.6822850262), + COEF_CONST(0.6834056954), + COEF_CONST(0.6845247564), + COEF_CONST(0.6856422067), + COEF_CONST(0.6867580436), + COEF_CONST(0.6878722645), + COEF_CONST(0.6889848667), + COEF_CONST(0.6900958478), + COEF_CONST(0.6912052049), + COEF_CONST(0.6923129356), + COEF_CONST(0.6934190372), + COEF_CONST(0.6945235071), + COEF_CONST(0.6956263427), + COEF_CONST(0.6967275415), + COEF_CONST(0.6978271008), + COEF_CONST(0.6989250180), + COEF_CONST(0.7000212906), + COEF_CONST(0.7011159160), + COEF_CONST(0.7022088916), + COEF_CONST(0.7033002148), + COEF_CONST(0.7043898831), + COEF_CONST(0.7054778939), + COEF_CONST(0.7065642446), + COEF_CONST(0.7076489327), + COEF_CONST(0.7087319557), + COEF_CONST(0.7098133109), + COEF_CONST(0.7108929959), + COEF_CONST(0.7119710081), + COEF_CONST(0.7130473449), + COEF_CONST(0.7141220039), + COEF_CONST(0.7151949824), + COEF_CONST(0.7162662781), + COEF_CONST(0.7173358883), + COEF_CONST(0.7184038105), + COEF_CONST(0.7194700423), + COEF_CONST(0.7205345811), + COEF_CONST(0.7215974244), + COEF_CONST(0.7226585697), + COEF_CONST(0.7237180145), + COEF_CONST(0.7247757564), + COEF_CONST(0.7258317928), + COEF_CONST(0.7268861212), + COEF_CONST(0.7279387392), + COEF_CONST(0.7289896443), + COEF_CONST(0.7300388340), + COEF_CONST(0.7310863058), + COEF_CONST(0.7321320574), + COEF_CONST(0.7331760861), + COEF_CONST(0.7342183896), + COEF_CONST(0.7352589655), + COEF_CONST(0.7362978112), + COEF_CONST(0.7373349243), + COEF_CONST(0.7383703024), + COEF_CONST(0.7394039430), + COEF_CONST(0.7404358438), + COEF_CONST(0.7414660022), + COEF_CONST(0.7424944159), + COEF_CONST(0.7435210825), + COEF_CONST(0.7445459994), + COEF_CONST(0.7455691644), + COEF_CONST(0.7465905750), + COEF_CONST(0.7476102287), + COEF_CONST(0.7486281233), + COEF_CONST(0.7496442563), + COEF_CONST(0.7506586253), + COEF_CONST(0.7516712279), + COEF_CONST(0.7526820618), + COEF_CONST(0.7536911245), + COEF_CONST(0.7546984137), + COEF_CONST(0.7557039270), + COEF_CONST(0.7567076622), + COEF_CONST(0.7577096166), + COEF_CONST(0.7587097882), + COEF_CONST(0.7597081744), + COEF_CONST(0.7607047729), + COEF_CONST(0.7616995815), + COEF_CONST(0.7626925976), + COEF_CONST(0.7636838191), + COEF_CONST(0.7646732436), + COEF_CONST(0.7656608687), + COEF_CONST(0.7666466922), + COEF_CONST(0.7676307116), + COEF_CONST(0.7686129248), + COEF_CONST(0.7695933293), + COEF_CONST(0.7705719229), + COEF_CONST(0.7715487032), + COEF_CONST(0.7725236681), + COEF_CONST(0.7734968151), + COEF_CONST(0.7744681420), + COEF_CONST(0.7754376465), + COEF_CONST(0.7764053263), + COEF_CONST(0.7773711792), + COEF_CONST(0.7783352028), + COEF_CONST(0.7792973950), + COEF_CONST(0.7802577533), + COEF_CONST(0.7812162757), + COEF_CONST(0.7821729598), + COEF_CONST(0.7831278033), + COEF_CONST(0.7840808041), + COEF_CONST(0.7850319598), + COEF_CONST(0.7859812683), + COEF_CONST(0.7869287273), + COEF_CONST(0.7878743346), + COEF_CONST(0.7888180880), + COEF_CONST(0.7897599851), + COEF_CONST(0.7907000239), + COEF_CONST(0.7916382021), + COEF_CONST(0.7925745175), + COEF_CONST(0.7935089679), + COEF_CONST(0.7944415511), + COEF_CONST(0.7953722649), + COEF_CONST(0.7963011071), + COEF_CONST(0.7972280756), + COEF_CONST(0.7981531680), + COEF_CONST(0.7990763824), + COEF_CONST(0.7999977164), + COEF_CONST(0.8009171680), + COEF_CONST(0.8018347350), + COEF_CONST(0.8027504151), + COEF_CONST(0.8036642063), + COEF_CONST(0.8045761064), + COEF_CONST(0.8054861132), + COEF_CONST(0.8063942247), + COEF_CONST(0.8073004386), + COEF_CONST(0.8082047529), + COEF_CONST(0.8091071654), + COEF_CONST(0.8100076740), + COEF_CONST(0.8109062766), + COEF_CONST(0.8118029710), + COEF_CONST(0.8126977551), + COEF_CONST(0.8135906270), + COEF_CONST(0.8144815843), + COEF_CONST(0.8153706251), + COEF_CONST(0.8162577473), + COEF_CONST(0.8171429487), + COEF_CONST(0.8180262273), + COEF_CONST(0.8189075810), + COEF_CONST(0.8197870078), + COEF_CONST(0.8206645055), + COEF_CONST(0.8215400721), + COEF_CONST(0.8224137055), + COEF_CONST(0.8232854037), + COEF_CONST(0.8241551647), + COEF_CONST(0.8250229863), + COEF_CONST(0.8258888666), + COEF_CONST(0.8267528035), + COEF_CONST(0.8276147949), + COEF_CONST(0.8284748389), + COEF_CONST(0.8293329334), + COEF_CONST(0.8301890764), + COEF_CONST(0.8310432659), + COEF_CONST(0.8318954999), + COEF_CONST(0.8327457763), + COEF_CONST(0.8335940932), + COEF_CONST(0.8344404486), + COEF_CONST(0.8352848405), + COEF_CONST(0.8361272668), + COEF_CONST(0.8369677257), + COEF_CONST(0.8378062151), + COEF_CONST(0.8386427331), + COEF_CONST(0.8394772776), + COEF_CONST(0.8403098468), + COEF_CONST(0.8411404387), + COEF_CONST(0.8419690512), + COEF_CONST(0.8427956826), + COEF_CONST(0.8436203307), + COEF_CONST(0.8444429937), + COEF_CONST(0.8452636697), + COEF_CONST(0.8460823567), + COEF_CONST(0.8468990528), + COEF_CONST(0.8477137560), + COEF_CONST(0.8485264645), + COEF_CONST(0.8493371763), + COEF_CONST(0.8501458896), + COEF_CONST(0.8509526024), + COEF_CONST(0.8517573128), + COEF_CONST(0.8525600189), + COEF_CONST(0.8533607189), + COEF_CONST(0.8541594108), + COEF_CONST(0.8549560928), + COEF_CONST(0.8557507630), + COEF_CONST(0.8565434196), + COEF_CONST(0.8573340606), + COEF_CONST(0.8581226843), + COEF_CONST(0.8589092887), + COEF_CONST(0.8596938720), + COEF_CONST(0.8604764323), + COEF_CONST(0.8612569679), + COEF_CONST(0.8620354768), + COEF_CONST(0.8628119573), + COEF_CONST(0.8635864076), + COEF_CONST(0.8643588257), + COEF_CONST(0.8651292099), + COEF_CONST(0.8658975583), + COEF_CONST(0.8666638692), + COEF_CONST(0.8674281408), + COEF_CONST(0.8681903713), + COEF_CONST(0.8689505588), + COEF_CONST(0.8697087015), + COEF_CONST(0.8704647978), + COEF_CONST(0.8712188458), + COEF_CONST(0.8719708437), + COEF_CONST(0.8727207898), + COEF_CONST(0.8734686823), + COEF_CONST(0.8742145194), + COEF_CONST(0.8749582994), + COEF_CONST(0.8757000206), + COEF_CONST(0.8764396811), + COEF_CONST(0.8771772793), + COEF_CONST(0.8779128134), + COEF_CONST(0.8786462817), + COEF_CONST(0.8793776825), + COEF_CONST(0.8801070140), + COEF_CONST(0.8808342745), + COEF_CONST(0.8815594624), + COEF_CONST(0.8822825758), + COEF_CONST(0.8830036132), + COEF_CONST(0.8837225727), + COEF_CONST(0.8844394528), + COEF_CONST(0.8851542517), + COEF_CONST(0.8858669678), + COEF_CONST(0.8865775993), + COEF_CONST(0.8872861446), + COEF_CONST(0.8879926020), + COEF_CONST(0.8886969699), + COEF_CONST(0.8893992467), + COEF_CONST(0.8900994305), + COEF_CONST(0.8907975199), + COEF_CONST(0.8914935132), + COEF_CONST(0.8921874087), + COEF_CONST(0.8928792048), + COEF_CONST(0.8935688998), + COEF_CONST(0.8942564922), + COEF_CONST(0.8949419803), + COEF_CONST(0.8956253626), + COEF_CONST(0.8963066373), + COEF_CONST(0.8969858030), + COEF_CONST(0.8976628579), + COEF_CONST(0.8983378006), + COEF_CONST(0.8990106294), + COEF_CONST(0.8996813427), + COEF_CONST(0.9003499390), + COEF_CONST(0.9010164167), + COEF_CONST(0.9016807742), + COEF_CONST(0.9023430100), + COEF_CONST(0.9030031224), + COEF_CONST(0.9036611101), + COEF_CONST(0.9043169713), + COEF_CONST(0.9049707045), + COEF_CONST(0.9056223083), + COEF_CONST(0.9062717811), + COEF_CONST(0.9069191213), + COEF_CONST(0.9075643274), + COEF_CONST(0.9082073980), + COEF_CONST(0.9088483315), + COEF_CONST(0.9094871263), + COEF_CONST(0.9101237811), + COEF_CONST(0.9107582942), + COEF_CONST(0.9113906642), + COEF_CONST(0.9120208897), + COEF_CONST(0.9126489690), + COEF_CONST(0.9132749009), + COEF_CONST(0.9138986837), + COEF_CONST(0.9145203160), + COEF_CONST(0.9151397963), + COEF_CONST(0.9157571232), + COEF_CONST(0.9163722953), + COEF_CONST(0.9169853111), + COEF_CONST(0.9175961691), + COEF_CONST(0.9182048679), + COEF_CONST(0.9188114061), + COEF_CONST(0.9194157822), + COEF_CONST(0.9200179948), + COEF_CONST(0.9206180426), + COEF_CONST(0.9212159241), + COEF_CONST(0.9218116378), + COEF_CONST(0.9224051825), + COEF_CONST(0.9229965566), + COEF_CONST(0.9235857588), + COEF_CONST(0.9241727878), + COEF_CONST(0.9247576421), + COEF_CONST(0.9253403203), + COEF_CONST(0.9259208211), + COEF_CONST(0.9264991431), + COEF_CONST(0.9270752850), + COEF_CONST(0.9276492454), + COEF_CONST(0.9282210230), + COEF_CONST(0.9287906163), + COEF_CONST(0.9293580242), + COEF_CONST(0.9299232451), + COEF_CONST(0.9304862779), + COEF_CONST(0.9310471211), + COEF_CONST(0.9316057735), + COEF_CONST(0.9321622337), + COEF_CONST(0.9327165005), + COEF_CONST(0.9332685724), + COEF_CONST(0.9338184484), + COEF_CONST(0.9343661269), + COEF_CONST(0.9349116068), + COEF_CONST(0.9354548868), + COEF_CONST(0.9359959655), + COEF_CONST(0.9365348418), + COEF_CONST(0.9370715142), + COEF_CONST(0.9376059817), + COEF_CONST(0.9381382429), + COEF_CONST(0.9386682966), + COEF_CONST(0.9391961415), + COEF_CONST(0.9397217764), + COEF_CONST(0.9402452000), + COEF_CONST(0.9407664111), + COEF_CONST(0.9412854085), + COEF_CONST(0.9418021910), + COEF_CONST(0.9423167573), + COEF_CONST(0.9428291063), + COEF_CONST(0.9433392367), + COEF_CONST(0.9438471473), + COEF_CONST(0.9443528370), + COEF_CONST(0.9448563045), + COEF_CONST(0.9453575486), + COEF_CONST(0.9458565683), + COEF_CONST(0.9463533623), + COEF_CONST(0.9468479294), + COEF_CONST(0.9473402684), + COEF_CONST(0.9478303783), + COEF_CONST(0.9483182579), + COEF_CONST(0.9488039059), + COEF_CONST(0.9492873214), + COEF_CONST(0.9497685031), + COEF_CONST(0.9502474498), + COEF_CONST(0.9507241606), + COEF_CONST(0.9511986342), + COEF_CONST(0.9516708696), + COEF_CONST(0.9521408655), + COEF_CONST(0.9526086210), + COEF_CONST(0.9530741350), + COEF_CONST(0.9535374062), + COEF_CONST(0.9539984337), + COEF_CONST(0.9544572163), + COEF_CONST(0.9549137530), + COEF_CONST(0.9553680427), + COEF_CONST(0.9558200843), + COEF_CONST(0.9562698768), + COEF_CONST(0.9567174191), + COEF_CONST(0.9571627101), + COEF_CONST(0.9576057488), + COEF_CONST(0.9580465342), + COEF_CONST(0.9584850652), + COEF_CONST(0.9589213409), + COEF_CONST(0.9593553600), + COEF_CONST(0.9597871218), + COEF_CONST(0.9602166250), + COEF_CONST(0.9606438688), + COEF_CONST(0.9610688521), + COEF_CONST(0.9614915739), + COEF_CONST(0.9619120332), + COEF_CONST(0.9623302290), + COEF_CONST(0.9627461604), + COEF_CONST(0.9631598263), + COEF_CONST(0.9635712259), + COEF_CONST(0.9639803580), + COEF_CONST(0.9643872219), + COEF_CONST(0.9647918164), + COEF_CONST(0.9651941407), + COEF_CONST(0.9655941938), + COEF_CONST(0.9659919747), + COEF_CONST(0.9663874826), + COEF_CONST(0.9667807165), + COEF_CONST(0.9671716754), + COEF_CONST(0.9675603585), + COEF_CONST(0.9679467648), + COEF_CONST(0.9683308935), + COEF_CONST(0.9687127436), + COEF_CONST(0.9690923142), + COEF_CONST(0.9694696044), + COEF_CONST(0.9698446134), + COEF_CONST(0.9702173403), + COEF_CONST(0.9705877841), + COEF_CONST(0.9709559440), + COEF_CONST(0.9713218192), + COEF_CONST(0.9716854088), + COEF_CONST(0.9720467119), + COEF_CONST(0.9724057277), + COEF_CONST(0.9727624553), + COEF_CONST(0.9731168939), + COEF_CONST(0.9734690427), + COEF_CONST(0.9738189008), + COEF_CONST(0.9741664675), + COEF_CONST(0.9745117418), + COEF_CONST(0.9748547230), + COEF_CONST(0.9751954102), + COEF_CONST(0.9755338028), + COEF_CONST(0.9758698998), + COEF_CONST(0.9762037005), + COEF_CONST(0.9765352041), + COEF_CONST(0.9768644098), + COEF_CONST(0.9771913168), + COEF_CONST(0.9775159245), + COEF_CONST(0.9778382319), + COEF_CONST(0.9781582384), + COEF_CONST(0.9784759432), + COEF_CONST(0.9787913456), + COEF_CONST(0.9791044447), + COEF_CONST(0.9794152399), + COEF_CONST(0.9797237305), + COEF_CONST(0.9800299157), + COEF_CONST(0.9803337948), + COEF_CONST(0.9806353670), + COEF_CONST(0.9809346317), + COEF_CONST(0.9812315882), + COEF_CONST(0.9815262358), + COEF_CONST(0.9818185737), + COEF_CONST(0.9821086014), + COEF_CONST(0.9823963180), + COEF_CONST(0.9826817229), + COEF_CONST(0.9829648155), + COEF_CONST(0.9832455951), + COEF_CONST(0.9835240610), + COEF_CONST(0.9838002126), + COEF_CONST(0.9840740493), + COEF_CONST(0.9843455703), + COEF_CONST(0.9846147750), + COEF_CONST(0.9848816628), + COEF_CONST(0.9851462332), + COEF_CONST(0.9854084853), + COEF_CONST(0.9856684187), + COEF_CONST(0.9859260328), + COEF_CONST(0.9861813268), + COEF_CONST(0.9864343003), + COEF_CONST(0.9866849526), + COEF_CONST(0.9869332832), + COEF_CONST(0.9871792914), + COEF_CONST(0.9874229766), + COEF_CONST(0.9876643384), + COEF_CONST(0.9879033761), + COEF_CONST(0.9881400891), + COEF_CONST(0.9883744770), + COEF_CONST(0.9886065391), + COEF_CONST(0.9888362750), + COEF_CONST(0.9890636840), + COEF_CONST(0.9892887657), + COEF_CONST(0.9895115194), + COEF_CONST(0.9897319448), + COEF_CONST(0.9899500412), + COEF_CONST(0.9901658081), + COEF_CONST(0.9903792451), + COEF_CONST(0.9905903517), + COEF_CONST(0.9907991273), + COEF_CONST(0.9910055714), + COEF_CONST(0.9912096836), + COEF_CONST(0.9914114634), + COEF_CONST(0.9916109103), + COEF_CONST(0.9918080239), + COEF_CONST(0.9920028036), + COEF_CONST(0.9921952491), + COEF_CONST(0.9923853598), + COEF_CONST(0.9925731354), + COEF_CONST(0.9927585753), + COEF_CONST(0.9929416792), + COEF_CONST(0.9931224466), + COEF_CONST(0.9933008770), + COEF_CONST(0.9934769702), + COEF_CONST(0.9936507256), + COEF_CONST(0.9938221428), + COEF_CONST(0.9939912215), + COEF_CONST(0.9941579612), + COEF_CONST(0.9943223616), + COEF_CONST(0.9944844222), + COEF_CONST(0.9946441427), + COEF_CONST(0.9948015227), + COEF_CONST(0.9949565619), + COEF_CONST(0.9951092598), + COEF_CONST(0.9952596161), + COEF_CONST(0.9954076305), + COEF_CONST(0.9955533026), + COEF_CONST(0.9956966321), + COEF_CONST(0.9958376186), + COEF_CONST(0.9959762618), + COEF_CONST(0.9961125614), + COEF_CONST(0.9962465170), + COEF_CONST(0.9963781284), + COEF_CONST(0.9965073951), + COEF_CONST(0.9966343170), + COEF_CONST(0.9967588938), + COEF_CONST(0.9968811250), + COEF_CONST(0.9970010105), + COEF_CONST(0.9971185500), + COEF_CONST(0.9972337431), + COEF_CONST(0.9973465897), + COEF_CONST(0.9974570894), + COEF_CONST(0.9975652420), + COEF_CONST(0.9976710472), + COEF_CONST(0.9977745048), + COEF_CONST(0.9978756145), + COEF_CONST(0.9979743762), + COEF_CONST(0.9980707895), + COEF_CONST(0.9981648543), + COEF_CONST(0.9982565703), + COEF_CONST(0.9983459372), + COEF_CONST(0.9984329550), + COEF_CONST(0.9985176234), + COEF_CONST(0.9985999422), + COEF_CONST(0.9986799111), + COEF_CONST(0.9987575301), + COEF_CONST(0.9988327989), + COEF_CONST(0.9989057173), + COEF_CONST(0.9989762853), + COEF_CONST(0.9990445025), + COEF_CONST(0.9991103689), + COEF_CONST(0.9991738843), + COEF_CONST(0.9992350485), + COEF_CONST(0.9992938615), + COEF_CONST(0.9993503230), + COEF_CONST(0.9994044329), + COEF_CONST(0.9994561911), + COEF_CONST(0.9995055976), + COEF_CONST(0.9995526521), + COEF_CONST(0.9995973545), + COEF_CONST(0.9996397048), + COEF_CONST(0.9996797029), + COEF_CONST(0.9997173486), + COEF_CONST(0.9997526418), + COEF_CONST(0.9997855826), + COEF_CONST(0.9998161708), + COEF_CONST(0.9998444063), + COEF_CONST(0.9998702890), + COEF_CONST(0.9998938190), + COEF_CONST(0.9999149961), + COEF_CONST(0.9999338204), + COEF_CONST(0.9999502917), + COEF_CONST(0.9999644100), + COEF_CONST(0.9999761753), + COEF_CONST(0.9999855875), + COEF_CONST(0.9999926467), + COEF_CONST(0.9999973529), + COEF_CONST(0.9999997059) }; real_t sine_long_960[] = { - 0.0008181230, - 0.0024543669, - 0.0040906041, - 0.0057268305, - 0.0073630415, - 0.0089992327, - 0.0106353999, - 0.0122715386, - 0.0139076445, - 0.0155437131, - 0.0171797401, - 0.0188157211, - 0.0204516518, - 0.0220875276, - 0.0237233444, - 0.0253590976, - 0.0269947829, - 0.0286303960, - 0.0302659324, - 0.0319013878, - 0.0335367578, - 0.0351720379, - 0.0368072240, - 0.0384423114, - 0.0400772960, - 0.0417121732, - 0.0433469388, - 0.0449815883, - 0.0466161174, - 0.0482505217, - 0.0498847968, - 0.0515189384, - 0.0531529420, - 0.0547868033, - 0.0564205179, - 0.0580540815, - 0.0596874897, - 0.0613207380, - 0.0629538222, - 0.0645867378, - 0.0662194805, - 0.0678520459, - 0.0694844297, - 0.0711166274, - 0.0727486347, - 0.0743804473, - 0.0760120607, - 0.0776434706, - 0.0792746727, - 0.0809056625, - 0.0825364356, - 0.0841669879, - 0.0857973147, - 0.0874274119, - 0.0890572750, - 0.0906868996, - 0.0923162815, - 0.0939454162, - 0.0955742994, - 0.0972029267, - 0.0988312938, - 0.1004593962, - 0.1020872297, - 0.1037147899, - 0.1053420724, - 0.1069690729, - 0.1085957870, - 0.1102222103, - 0.1118483386, - 0.1134741674, - 0.1150996924, - 0.1167249092, - 0.1183498135, - 0.1199744010, - 0.1215986673, - 0.1232226080, - 0.1248462188, - 0.1264694953, - 0.1280924333, - 0.1297150283, - 0.1313372760, - 0.1329591721, - 0.1345807122, - 0.1362018920, - 0.1378227072, - 0.1394431534, - 0.1410632262, - 0.1426829214, - 0.1443022345, - 0.1459211613, - 0.1475396975, - 0.1491578386, - 0.1507755804, - 0.1523929185, - 0.1540098486, - 0.1556263664, - 0.1572424676, - 0.1588581477, - 0.1604734026, - 0.1620882278, - 0.1637026190, - 0.1653165720, - 0.1669300823, - 0.1685431457, - 0.1701557579, - 0.1717679146, - 0.1733796113, - 0.1749908439, - 0.1766016080, - 0.1782118992, - 0.1798217134, - 0.1814310460, - 0.1830398930, - 0.1846482499, - 0.1862561124, - 0.1878634763, - 0.1894703372, - 0.1910766908, - 0.1926825329, - 0.1942878591, - 0.1958926651, - 0.1974969467, - 0.1991006995, - 0.2007039192, - 0.2023066016, - 0.2039087424, - 0.2055103372, - 0.2071113819, - 0.2087118720, - 0.2103118034, - 0.2119111716, - 0.2135099726, - 0.2151082019, - 0.2167058553, - 0.2183029285, - 0.2198994172, - 0.2214953172, - 0.2230906242, - 0.2246853339, - 0.2262794421, - 0.2278729444, - 0.2294658367, - 0.2310581146, - 0.2326497739, - 0.2342408103, - 0.2358312196, - 0.2374209975, - 0.2390101398, - 0.2405986421, - 0.2421865003, - 0.2437737101, - 0.2453602672, - 0.2469461675, - 0.2485314066, - 0.2501159802, - 0.2516998843, - 0.2532831145, - 0.2548656665, - 0.2564475362, - 0.2580287194, - 0.2596092117, - 0.2611890089, - 0.2627681069, - 0.2643465014, - 0.2659241881, - 0.2675011628, - 0.2690774214, - 0.2706529596, - 0.2722277732, - 0.2738018579, - 0.2753752096, - 0.2769478240, - 0.2785196969, - 0.2800908242, - 0.2816612016, - 0.2832308248, - 0.2847996898, - 0.2863677923, - 0.2879351281, - 0.2895016930, - 0.2910674829, - 0.2926324934, - 0.2941967205, - 0.2957601599, - 0.2973228075, - 0.2988846591, - 0.3004457105, - 0.3020059575, - 0.3035653959, - 0.3051240216, - 0.3066818303, - 0.3082388180, - 0.3097949805, - 0.3113503135, - 0.3129048130, - 0.3144584747, - 0.3160112945, - 0.3175632683, - 0.3191143918, - 0.3206646610, - 0.3222140717, - 0.3237626197, - 0.3253103009, - 0.3268571111, - 0.3284030463, - 0.3299481022, - 0.3314922747, - 0.3330355597, - 0.3345779531, - 0.3361194508, - 0.3376600485, - 0.3391997422, - 0.3407385278, - 0.3422764011, - 0.3438133581, - 0.3453493945, - 0.3468845064, - 0.3484186895, - 0.3499519398, - 0.3514842532, - 0.3530156256, - 0.3545460528, - 0.3560755308, - 0.3576040555, - 0.3591316228, - 0.3606582285, - 0.3621838687, - 0.3637085392, - 0.3652322359, - 0.3667549548, - 0.3682766918, - 0.3697974428, - 0.3713172038, - 0.3728359706, - 0.3743537392, - 0.3758705056, - 0.3773862656, - 0.3789010153, - 0.3804147505, - 0.3819274673, - 0.3834391615, - 0.3849498291, - 0.3864594661, - 0.3879680685, - 0.3894756321, - 0.3909821530, - 0.3924876271, - 0.3939920504, - 0.3954954189, - 0.3969977285, - 0.3984989752, - 0.3999991550, - 0.4014982640, - 0.4029962979, - 0.4044932530, - 0.4059891250, - 0.4074839102, - 0.4089776043, - 0.4104702036, - 0.4119617038, - 0.4134521011, - 0.4149413915, - 0.4164295710, - 0.4179166355, - 0.4194025812, - 0.4208874040, - 0.4223710999, - 0.4238536651, - 0.4253350954, - 0.4268153870, - 0.4282945359, - 0.4297725381, - 0.4312493897, - 0.4327250867, - 0.4341996252, - 0.4356730012, - 0.4371452107, - 0.4386162499, - 0.4400861148, - 0.4415548014, - 0.4430223059, - 0.4444886242, - 0.4459537525, - 0.4474176869, - 0.4488804234, - 0.4503419581, - 0.4518022871, - 0.4532614065, - 0.4547193124, - 0.4561760009, - 0.4576314680, - 0.4590857100, - 0.4605387228, - 0.4619905026, - 0.4634410455, - 0.4648903477, - 0.4663384052, - 0.4677852142, - 0.4692307707, - 0.4706750710, - 0.4721181112, - 0.4735598874, - 0.4750003957, - 0.4764396322, - 0.4778775932, - 0.4793142748, - 0.4807496731, - 0.4821837843, - 0.4836166046, - 0.4850481301, - 0.4864783569, - 0.4879072813, - 0.4893348994, - 0.4907612075, - 0.4921862016, - 0.4936098779, - 0.4950322328, - 0.4964532623, - 0.4978729626, - 0.4992913300, - 0.5007083606, - 0.5021240507, - 0.5035383964, - 0.5049513940, - 0.5063630397, - 0.5077733298, - 0.5091822603, - 0.5105898276, - 0.5119960280, - 0.5134008575, - 0.5148043125, - 0.5162063893, - 0.5176070840, - 0.5190063929, - 0.5204043123, - 0.5218008384, - 0.5231959674, - 0.5245896958, - 0.5259820196, - 0.5273729352, - 0.5287624389, - 0.5301505270, - 0.5315371956, - 0.5329224412, - 0.5343062600, - 0.5356886483, - 0.5370696023, - 0.5384491185, - 0.5398271931, - 0.5412038224, - 0.5425790028, - 0.5439527305, - 0.5453250019, - 0.5466958133, - 0.5480651610, - 0.5494330413, - 0.5507994507, - 0.5521643854, - 0.5535278418, - 0.5548898163, - 0.5562503051, - 0.5576093047, - 0.5589668114, - 0.5603228216, - 0.5616773317, - 0.5630303379, - 0.5643818368, - 0.5657318246, - 0.5670802978, - 0.5684272527, - 0.5697726858, - 0.5711165935, - 0.5724589721, - 0.5737998180, - 0.5751391277, - 0.5764768976, - 0.5778131241, - 0.5791478036, - 0.5804809326, - 0.5818125074, - 0.5831425246, - 0.5844709805, - 0.5857978716, - 0.5871231943, - 0.5884469451, - 0.5897691205, - 0.5910897169, - 0.5924087308, - 0.5937261586, - 0.5950419968, - 0.5963562420, - 0.5976688905, - 0.5989799388, - 0.6002893835, - 0.6015972211, - 0.6029034480, - 0.6042080607, - 0.6055110558, - 0.6068124298, - 0.6081121791, - 0.6094103003, - 0.6107067900, - 0.6120016446, - 0.6132948607, - 0.6145864349, - 0.6158763636, - 0.6171646434, - 0.6184512709, - 0.6197362426, - 0.6210195550, - 0.6223012049, - 0.6235811886, - 0.6248595028, - 0.6261361441, - 0.6274111090, - 0.6286843942, - 0.6299559962, - 0.6312259115, - 0.6324941370, - 0.6337606690, - 0.6350255043, - 0.6362886394, - 0.6375500710, - 0.6388097956, - 0.6400678100, - 0.6413241107, - 0.6425786945, - 0.6438315578, - 0.6450826974, - 0.6463321099, - 0.6475797920, - 0.6488257403, - 0.6500699516, - 0.6513124223, - 0.6525531494, - 0.6537921293, - 0.6550293589, - 0.6562648347, - 0.6574985536, - 0.6587305121, - 0.6599607069, - 0.6611891349, - 0.6624157927, - 0.6636406770, - 0.6648637845, - 0.6660851120, - 0.6673046561, - 0.6685224137, - 0.6697383815, - 0.6709525561, - 0.6721649344, - 0.6733755132, - 0.6745842891, - 0.6757912589, - 0.6769964195, - 0.6781997675, - 0.6794012997, - 0.6806010131, - 0.6817989042, - 0.6829949700, - 0.6841892071, - 0.6853816125, - 0.6865721829, - 0.6877609152, - 0.6889478061, - 0.6901328525, - 0.6913160512, - 0.6924973990, - 0.6936768929, - 0.6948545295, - 0.6960303058, - 0.6972042186, - 0.6983762648, - 0.6995464412, - 0.7007147448, - 0.7018811723, - 0.7030457206, - 0.7042083867, - 0.7053691674, - 0.7065280597, - 0.7076850603, - 0.7088401663, - 0.7099933745, - 0.7111446818, - 0.7122940851, - 0.7134415815, - 0.7145871677, - 0.7157308408, - 0.7168725976, - 0.7180124352, - 0.7191503504, - 0.7202863403, - 0.7214204017, - 0.7225525317, - 0.7236827271, - 0.7248109851, - 0.7259373025, - 0.7270616764, - 0.7281841037, - 0.7293045814, - 0.7304231066, - 0.7315396762, - 0.7326542872, - 0.7337669368, - 0.7348776218, - 0.7359863393, - 0.7370930863, - 0.7381978600, - 0.7393006572, - 0.7404014752, - 0.7415003108, - 0.7425971612, - 0.7436920235, - 0.7447848947, - 0.7458757719, - 0.7469646521, - 0.7480515325, - 0.7491364101, - 0.7502192821, - 0.7513001455, - 0.7523789975, - 0.7534558351, - 0.7545306554, - 0.7556034557, - 0.7566742330, - 0.7577429844, - 0.7588097072, - 0.7598743984, - 0.7609370551, - 0.7619976746, - 0.7630562540, - 0.7641127905, - 0.7651672812, - 0.7662197234, - 0.7672701141, - 0.7683184506, - 0.7693647301, - 0.7704089498, - 0.7714511069, - 0.7724911985, - 0.7735292220, - 0.7745651745, - 0.7755990532, - 0.7766308555, - 0.7776605784, - 0.7786882194, - 0.7797137755, - 0.7807372441, - 0.7817586225, - 0.7827779079, - 0.7837950975, - 0.7848101886, - 0.7858231786, - 0.7868340647, - 0.7878428442, - 0.7888495145, - 0.7898540727, - 0.7908565162, - 0.7918568424, - 0.7928550486, - 0.7938511320, - 0.7948450901, - 0.7958369201, - 0.7968266194, - 0.7978141854, - 0.7987996154, - 0.7997829068, - 0.8007640569, - 0.8017430631, - 0.8027199228, - 0.8036946334, - 0.8046671923, - 0.8056375968, - 0.8066058444, - 0.8075719325, - 0.8085358584, - 0.8094976197, - 0.8104572137, - 0.8114146378, - 0.8123698896, - 0.8133229663, - 0.8142738656, - 0.8152225848, - 0.8161691215, - 0.8171134730, - 0.8180556368, - 0.8189956104, - 0.8199333914, - 0.8208689772, - 0.8218023652, - 0.8227335530, - 0.8236625381, - 0.8245893180, - 0.8255138903, - 0.8264362524, - 0.8273564019, - 0.8282743363, - 0.8291900531, - 0.8301035500, - 0.8310148244, - 0.8319238740, - 0.8328306962, - 0.8337352887, - 0.8346376491, - 0.8355377749, - 0.8364356636, - 0.8373313130, - 0.8382247206, - 0.8391158841, - 0.8400048009, - 0.8408914688, - 0.8417758854, - 0.8426580483, - 0.8435379552, - 0.8444156036, - 0.8452909913, - 0.8461641159, - 0.8470349751, - 0.8479035665, - 0.8487698878, - 0.8496339367, - 0.8504957108, - 0.8513552080, - 0.8522124258, - 0.8530673619, - 0.8539200142, - 0.8547703802, - 0.8556184578, - 0.8564642446, - 0.8573077384, - 0.8581489370, - 0.8589878380, - 0.8598244392, - 0.8606587385, - 0.8614907335, - 0.8623204220, - 0.8631478018, - 0.8639728707, - 0.8647956265, - 0.8656160670, - 0.8664341900, - 0.8672499933, - 0.8680634747, - 0.8688746320, - 0.8696834631, - 0.8704899657, - 0.8712941378, - 0.8720959772, - 0.8728954818, - 0.8736926493, - 0.8744874777, - 0.8752799648, - 0.8760701085, - 0.8768579067, - 0.8776433574, - 0.8784264583, - 0.8792072074, - 0.8799856025, - 0.8807616417, - 0.8815353229, - 0.8823066439, - 0.8830756027, - 0.8838421972, - 0.8846064254, - 0.8853682853, - 0.8861277748, - 0.8868848918, - 0.8876396344, - 0.8883920005, - 0.8891419881, - 0.8898895952, - 0.8906348198, - 0.8913776599, - 0.8921181136, - 0.8928561787, - 0.8935918534, - 0.8943251357, - 0.8950560237, - 0.8957845152, - 0.8965106085, - 0.8972343016, - 0.8979555925, - 0.8986744793, - 0.8993909601, - 0.9001050330, - 0.9008166959, - 0.9015259472, - 0.9022327848, - 0.9029372068, - 0.9036392114, - 0.9043387967, - 0.9050359608, - 0.9057307018, - 0.9064230179, - 0.9071129073, - 0.9078003680, - 0.9084853983, - 0.9091679963, - 0.9098481602, - 0.9105258881, - 0.9112011783, - 0.9118740290, - 0.9125444382, - 0.9132124044, - 0.9138779255, - 0.9145410000, - 0.9152016259, - 0.9158598016, - 0.9165155252, - 0.9171687951, - 0.9178196094, - 0.9184679665, - 0.9191138645, - 0.9197573017, - 0.9203982766, - 0.9210367872, - 0.9216728319, - 0.9223064091, - 0.9229375169, - 0.9235661538, - 0.9241923180, - 0.9248160078, - 0.9254372217, - 0.9260559578, - 0.9266722147, - 0.9272859906, - 0.9278972838, - 0.9285060928, - 0.9291124159, - 0.9297162514, - 0.9303175979, - 0.9309164536, - 0.9315128169, - 0.9321066864, - 0.9326980603, - 0.9332869370, - 0.9338733151, - 0.9344571929, - 0.9350385689, - 0.9356174416, - 0.9361938093, - 0.9367676705, - 0.9373390237, - 0.9379078674, - 0.9384742000, - 0.9390380200, - 0.9395993260, - 0.9401581163, - 0.9407143896, - 0.9412681443, - 0.9418193789, - 0.9423680920, - 0.9429142821, - 0.9434579477, - 0.9439990874, - 0.9445376998, - 0.9450737833, - 0.9456073366, - 0.9461383582, - 0.9466668467, - 0.9471928007, - 0.9477162188, - 0.9482370995, - 0.9487554416, - 0.9492712435, - 0.9497845040, - 0.9502952216, - 0.9508033949, - 0.9513090227, - 0.9518121035, - 0.9523126361, - 0.9528106190, - 0.9533060510, - 0.9537989307, - 0.9542892567, - 0.9547770279, - 0.9552622428, - 0.9557449002, - 0.9562249988, - 0.9567025372, - 0.9571775143, - 0.9576499288, - 0.9581197793, - 0.9585870647, - 0.9590517836, - 0.9595139348, - 0.9599735172, - 0.9604305294, - 0.9608849703, - 0.9613368385, - 0.9617861330, - 0.9622328525, - 0.9626769958, - 0.9631185617, - 0.9635575491, - 0.9639939567, - 0.9644277835, - 0.9648590281, - 0.9652876896, - 0.9657137667, - 0.9661372582, - 0.9665581632, - 0.9669764804, - 0.9673922086, - 0.9678053469, - 0.9682158941, - 0.9686238491, - 0.9690292108, - 0.9694319780, - 0.9698321499, - 0.9702297252, - 0.9706247029, - 0.9710170819, - 0.9714068613, - 0.9717940399, - 0.9721786167, - 0.9725605907, - 0.9729399608, - 0.9733167261, - 0.9736908855, - 0.9740624381, - 0.9744313828, - 0.9747977187, - 0.9751614448, - 0.9755225600, - 0.9758810635, - 0.9762369542, - 0.9765902313, - 0.9769408937, - 0.9772889406, - 0.9776343710, - 0.9779771840, - 0.9783173786, - 0.9786549539, - 0.9789899092, - 0.9793222433, - 0.9796519555, - 0.9799790449, - 0.9803035106, - 0.9806253518, - 0.9809445675, - 0.9812611569, - 0.9815751192, - 0.9818864535, - 0.9821951590, - 0.9825012349, - 0.9828046803, - 0.9831054945, - 0.9834036766, - 0.9836992258, - 0.9839921414, - 0.9842824225, - 0.9845700684, - 0.9848550783, - 0.9851374515, - 0.9854171871, - 0.9856942845, - 0.9859687429, - 0.9862405616, - 0.9865097398, - 0.9867762768, - 0.9870401719, - 0.9873014244, - 0.9875600336, - 0.9878159988, - 0.9880693193, - 0.9883199945, - 0.9885680237, - 0.9888134061, - 0.9890561412, - 0.9892962283, - 0.9895336667, - 0.9897684559, - 0.9900005952, - 0.9902300839, - 0.9904569215, - 0.9906811073, - 0.9909026408, - 0.9911215213, - 0.9913377484, - 0.9915513213, - 0.9917622395, - 0.9919705024, - 0.9921761096, - 0.9923790604, - 0.9925793543, - 0.9927769908, - 0.9929719693, - 0.9931642894, - 0.9933539504, - 0.9935409519, - 0.9937252935, - 0.9939069745, - 0.9940859945, - 0.9942623531, - 0.9944360497, - 0.9946070839, - 0.9947754553, - 0.9949411633, - 0.9951042076, - 0.9952645877, - 0.9954223032, - 0.9955773536, - 0.9957297385, - 0.9958794576, - 0.9960265105, - 0.9961708966, - 0.9963126157, - 0.9964516674, - 0.9965880513, - 0.9967217670, - 0.9968528142, - 0.9969811925, - 0.9971069016, - 0.9972299412, - 0.9973503108, - 0.9974680103, - 0.9975830392, - 0.9976953973, - 0.9978050843, - 0.9979120998, - 0.9980164436, - 0.9981181155, - 0.9982171151, - 0.9983134421, - 0.9984070964, - 0.9984980776, - 0.9985863855, - 0.9986720200, - 0.9987549807, - 0.9988352674, - 0.9989128799, - 0.9989878181, - 0.9990600816, - 0.9991296704, - 0.9991965842, - 0.9992608228, - 0.9993223862, - 0.9993812740, - 0.9994374862, - 0.9994910226, - 0.9995418831, - 0.9995900674, - 0.9996355756, - 0.9996784075, - 0.9997185629, - 0.9997560418, - 0.9997908440, - 0.9998229695, - 0.9998524181, - 0.9998791899, - 0.9999032846, - 0.9999247024, - 0.9999434430, - 0.9999595065, - 0.9999728928, - 0.9999836018, - 0.9999916336, - 0.9999969881, - 0.9999996654 -}; - -real_t sine_short_128[] = -{ - 0.0061358848, - 0.0184067304, - 0.0306748040, - 0.0429382581, - 0.0551952459, - 0.0674439214, - 0.0796824402, - 0.0919089590, - 0.1041216368, - 0.1163186341, - 0.1284981143, - 0.1406582432, - 0.1527971895, - 0.1649131250, - 0.1770042253, - 0.1890686693, - 0.2011046404, - 0.2131103258, - 0.2250839175, - 0.2370236125, - 0.2489276125, - 0.2607941250, - 0.2726213628, - 0.2844075449, - 0.2961508962, - 0.3078496483, - 0.3195020394, - 0.3311063146, - 0.3426607265, - 0.3541635348, - 0.3656130075, - 0.3770074202, - 0.3883450569, - 0.3996242103, - 0.4108431818, - 0.4220002818, - 0.4330938301, - 0.4441221560, - 0.4550835988, - 0.4659765077, - 0.4767992422, - 0.4875501725, - 0.4982276796, - 0.5088301553, - 0.5193560032, - 0.5298036379, - 0.5401714861, - 0.5504579865, - 0.5606615899, - 0.5707807598, - 0.5808139721, - 0.5907597160, - 0.6006164937, - 0.6103828207, - 0.6200572264, - 0.6296382536, - 0.6391244597, - 0.6485144160, - 0.6578067083, - 0.6669999374, - 0.6760927188, - 0.6850836831, - 0.6939714763, - 0.7027547599, - 0.7114322112, - 0.7200025235, - 0.7284644060, - 0.7368165845, - 0.7450578010, - 0.7531868147, - 0.7612024011, - 0.7691033533, - 0.7768884813, - 0.7845566127, - 0.7921065928, - 0.7995372846, - 0.8068475690, - 0.8140363451, - 0.8211025303, - 0.8280450605, - 0.8348628901, - 0.8415549925, - 0.8481203597, - 0.8545580032, - 0.8608669533, - 0.8670462601, - 0.8730949928, - 0.8790122407, - 0.8847971125, - 0.8904487372, - 0.8959662635, - 0.9013488606, - 0.9065957178, - 0.9117060451, - 0.9166790728, - 0.9215140520, - 0.9262102546, - 0.9307669733, - 0.9351835219, - 0.9394592352, - 0.9435934695, - 0.9475856021, - 0.9514350317, - 0.9551411788, - 0.9587034850, - 0.9621214141, - 0.9653944512, - 0.9685221034, - 0.9715038998, - 0.9743393912, - 0.9770281507, - 0.9795697733, - 0.9819638764, - 0.9842100992, - 0.9863081037, - 0.9882575738, - 0.9900582159, - 0.9917097588, - 0.9932119539, - 0.9945645750, - 0.9957674182, - 0.9968203026, - 0.9977230695, - 0.9984755829, - 0.9990777296, - 0.9995294188, - 0.9998305826, - 0.9999811755 -}; - -real_t sine_short_120[] = -{ - 0.0065449381, - 0.0196336930, - 0.0327190837, - 0.0457988682, - 0.0588708053, - 0.0719326552, - 0.0849821797, - 0.0980171430, - 0.1110353116, - 0.1240344549, - 0.1370123455, - 0.1499667597, - 0.1628954779, - 0.1757962848, - 0.1886669699, - 0.2015053279, - 0.2143091589, - 0.2270762692, - 0.2398044712, - 0.2524915839, - 0.2651354334, - 0.2777338534, - 0.2902846851, - 0.3027857780, - 0.3152349901, - 0.3276301883, - 0.3399692488, - 0.3522500573, - 0.3644705095, - 0.3766285116, - 0.3887219804, - 0.4007488436, - 0.4127070406, - 0.4245945223, - 0.4364092520, - 0.4481492051, - 0.4598123703, - 0.4713967489, - 0.4829003561, - 0.4943212208, - 0.5056573861, - 0.5169069096, - 0.5280678638, - 0.5391383363, - 0.5501164301, - 0.5610002644, - 0.5717879741, - 0.5824777109, - 0.5930676432, - 0.6035559563, - 0.6139408533, - 0.6242205546, - 0.6343932989, - 0.6444573433, - 0.6544109631, - 0.6642524530, - 0.6739801267, - 0.6835923173, - 0.6930873779, - 0.7024636815, - 0.7117196216, - 0.7208536122, - 0.7298640883, - 0.7387495058, - 0.7475083425, - 0.7561390974, - 0.7646402918, - 0.7730104690, - 0.7812481948, - 0.7893520577, - 0.7973206693, - 0.8051526640, - 0.8128467000, - 0.8204014588, - 0.8278156461, - 0.8350879914, - 0.8422172487, - 0.8492021964, - 0.8560416377, - 0.8627344006, - 0.8692793384, - 0.8756753297, - 0.8819212785, - 0.8880161146, - 0.8939587938, - 0.8997482976, - 0.9053836343, - 0.9108638381, - 0.9161879700, - 0.9213551179, - 0.9263643963, - 0.9312149469, - 0.9359059386, - 0.9404365677, - 0.9448060577, - 0.9490136602, - 0.9530586539, - 0.9569403460, - 0.9606580713, - 0.9642111928, - 0.9675991016, - 0.9708212173, - 0.9738769878, - 0.9767658894, - 0.9794874272, - 0.9820411349, - 0.9844265749, - 0.9866433385, - 0.9886910458, - 0.9905693459, - 0.9922779171, - 0.9938164666, - 0.9951847307, - 0.9963824750, - 0.9974094943, - 0.9982656127, - 0.9989506833, - 0.9994645889, - 0.9998072413, - 0.9999785819 -}; - -#ifdef LD_DEC -real_t sine_mid_512[] = -{ - 0.0015339802, - 0.0046019262, - 0.0076698290, - 0.0107376595, - 0.0138053889, - 0.0168729884, - 0.0199404291, - 0.0230076821, - 0.0260747186, - 0.0291415096, - 0.0322080263, - 0.0352742399, - 0.0383401214, - 0.0414056421, - 0.0444707731, - 0.0475354855, - 0.0505997504, - 0.0536635391, - 0.0567268227, - 0.0597895724, - 0.0628517593, - 0.0659133546, - 0.0689743295, - 0.0720346552, - 0.0750943029, - 0.0781532438, - 0.0812114491, - 0.0842688899, - 0.0873255376, - 0.0903813634, - 0.0934363384, - 0.0964904340, - 0.0995436214, - 0.1025958719, - 0.1056471566, - 0.1086974470, - 0.1117467143, - 0.1147949298, - 0.1178420648, - 0.1208880906, - 0.1239329785, - 0.1269767000, - 0.1300192263, - 0.1330605288, - 0.1361005789, - 0.1391393480, - 0.1421768074, - 0.1452129287, - 0.1482476831, - 0.1512810421, - 0.1543129773, - 0.1573434600, - 0.1603724617, - 0.1633999539, - 0.1664259081, - 0.1694502959, - 0.1724730887, - 0.1754942582, - 0.1785137759, - 0.1815316133, - 0.1845477420, - 0.1875621337, - 0.1905747601, - 0.1935855926, - 0.1965946031, - 0.1996017631, - 0.2026070444, - 0.2056104187, - 0.2086118577, - 0.2116113332, - 0.2146088169, - 0.2176042806, - 0.2205976961, - 0.2235890353, - 0.2265782700, - 0.2295653721, - 0.2325503134, - 0.2355330658, - 0.2385136014, - 0.2414918919, - 0.2444679094, - 0.2474416259, - 0.2504130134, - 0.2533820439, - 0.2563486895, - 0.2593129222, - 0.2622747142, - 0.2652340375, - 0.2681908643, - 0.2711451669, - 0.2740969173, - 0.2770460878, - 0.2799926507, - 0.2829365781, - 0.2858778425, - 0.2888164160, - 0.2917522711, - 0.2946853801, - 0.2976157155, - 0.3005432495, - 0.3034679547, - 0.3063898036, - 0.3093087686, - 0.3122248223, - 0.3151379372, - 0.3180480859, - 0.3209552410, - 0.3238593752, - 0.3267604611, - 0.3296584714, - 0.3325533788, - 0.3354451561, - 0.3383337760, - 0.3412192114, - 0.3441014352, - 0.3469804201, - 0.3498561391, - 0.3527285651, - 0.3555976712, - 0.3584634302, - 0.3613258152, - 0.3641847992, - 0.3670403554, - 0.3698924569, - 0.3727410769, - 0.3755861884, - 0.3784277648, - 0.3812657793, - 0.3841002051, - 0.3869310157, - 0.3897581843, - 0.3925816844, - 0.3954014893, - 0.3982175726, - 0.4010299077, - 0.4038384682, - 0.4066432275, - 0.4094441594, - 0.4122412374, - 0.4150344353, - 0.4178237267, - 0.4206090854, - 0.4233904852, - 0.4261678998, - 0.4289413032, - 0.4317106692, - 0.4344759718, - 0.4372371850, - 0.4399942827, - 0.4427472390, - 0.4454960280, - 0.4482406238, - 0.4509810007, - 0.4537171327, - 0.4564489941, - 0.4591765593, - 0.4618998026, - 0.4646186982, - 0.4673332207, - 0.4700433445, - 0.4727490440, - 0.4754502939, - 0.4781470686, - 0.4808393428, - 0.4835270912, - 0.4862102885, - 0.4888889093, - 0.4915629286, - 0.4942323210, - 0.4968970616, - 0.4995571252, - 0.5022124867, - 0.5048631212, - 0.5075090038, - 0.5101501095, - 0.5127864135, - 0.5154178909, - 0.5180445171, - 0.5206662672, - 0.5232831165, - 0.5258950406, - 0.5285020147, - 0.5311040144, - 0.5337010151, - 0.5362929924, - 0.5388799219, - 0.5414617792, - 0.5440385402, - 0.5466101804, - 0.5491766757, - 0.5517380020, - 0.5542941351, - 0.5568450509, - 0.5593907256, - 0.5619311350, - 0.5644662553, - 0.5669960626, - 0.5695205332, - 0.5720396432, - 0.5745533690, - 0.5770616868, - 0.5795645732, - 0.5820620044, - 0.5845539570, - 0.5870404077, - 0.5895213328, - 0.5919967092, - 0.5944665134, - 0.5969307223, - 0.5993893127, - 0.6018422614, - 0.6042895453, - 0.6067311415, - 0.6091670268, - 0.6115971784, - 0.6140215735, - 0.6164401891, - 0.6188530025, - 0.6212599911, - 0.6236611322, - 0.6260564031, - 0.6284457813, - 0.6308292444, - 0.6332067698, - 0.6355783353, - 0.6379439184, - 0.6403034970, - 0.6426570488, - 0.6450045517, - 0.6473459836, - 0.6496813224, - 0.6520105461, - 0.6543336328, - 0.6566505608, - 0.6589613080, - 0.6612658529, - 0.6635641737, - 0.6658562488, - 0.6681420566, - 0.6704215756, - 0.6726947843, - 0.6749616613, - 0.6772221854, - 0.6794763352, - 0.6817240894, - 0.6839654271, - 0.6862003270, - 0.6884287681, - 0.6906507295, - 0.6928661902, - 0.6950751294, - 0.6972775262, - 0.6994733600, - 0.7016626102, - 0.7038452560, - 0.7060212769, - 0.7081906525, - 0.7103533623, - 0.7125093860, - 0.7146587034, - 0.7168012940, - 0.7189371379, - 0.7210662148, - 0.7231885048, - 0.7253039879, - 0.7274126442, - 0.7295144537, - 0.7316093968, - 0.7336974537, - 0.7357786047, - 0.7378528304, - 0.7399201111, - 0.7419804273, - 0.7440337598, - 0.7460800891, - 0.7481193961, - 0.7501516614, - 0.7521768661, - 0.7541949909, - 0.7562060170, - 0.7582099254, - 0.7602066973, - 0.7621963137, - 0.7641787561, - 0.7661540058, - 0.7681220441, - 0.7700828526, - 0.7720364128, - 0.7739827062, - 0.7759217146, - 0.7778534198, - 0.7797778035, - 0.7816948476, - 0.7836045342, - 0.7855068451, - 0.7874017626, - 0.7892892687, - 0.7911693458, - 0.7930419760, - 0.7949071418, - 0.7967648257, - 0.7986150101, - 0.8004576777, - 0.8022928110, - 0.8041203929, - 0.8059404060, - 0.8077528334, - 0.8095576578, - 0.8113548624, - 0.8131444302, - 0.8149263444, - 0.8167005882, - 0.8184671449, - 0.8202259979, - 0.8219771306, - 0.8237205265, - 0.8254561693, - 0.8271840425, - 0.8289041300, - 0.8306164155, - 0.8323208829, - 0.8340175162, - 0.8357062995, - 0.8373872167, - 0.8390602521, - 0.8407253900, - 0.8423826147, - 0.8440319105, - 0.8456732620, - 0.8473066536, - 0.8489320701, - 0.8505494961, - 0.8521589165, - 0.8537603160, - 0.8553536795, - 0.8569389922, - 0.8585162390, - 0.8600854051, - 0.8616464758, - 0.8631994363, - 0.8647442721, - 0.8662809686, - 0.8678095113, - 0.8693298858, - 0.8708420779, - 0.8723460733, - 0.8738418578, - 0.8753294174, - 0.8768087381, - 0.8782798059, - 0.8797426070, - 0.8811971277, - 0.8826433541, - 0.8840812728, - 0.8855108702, - 0.8869321328, - 0.8883450473, - 0.8897496003, - 0.8911457787, - 0.8925335692, - 0.8939129589, - 0.8952839348, - 0.8966464839, - 0.8980005934, - 0.8993462506, - 0.9006834428, - 0.9020121574, - 0.9033323820, - 0.9046441040, - 0.9059473112, - 0.9072419912, - 0.9085281320, - 0.9098057213, - 0.9110747472, - 0.9123351977, - 0.9135870610, - 0.9148303252, - 0.9160649787, - 0.9172910099, - 0.9185084071, - 0.9197171590, - 0.9209172542, - 0.9221086814, - 0.9232914293, - 0.9244654868, - 0.9256308430, - 0.9267874867, - 0.9279354072, - 0.9290745935, - 0.9302050351, - 0.9313267212, - 0.9324396413, - 0.9335437850, - 0.9346391418, - 0.9357257014, - 0.9368034535, - 0.9378723882, - 0.9389324952, - 0.9399837646, - 0.9410261866, - 0.9420597512, - 0.9430844489, - 0.9441002698, - 0.9451072045, - 0.9461052436, - 0.9470943775, - 0.9480745970, - 0.9490458928, - 0.9500082559, - 0.9509616771, - 0.9519061475, - 0.9528416583, - 0.9537682005, - 0.9546857654, - 0.9555943446, - 0.9564939293, - 0.9573845111, - 0.9582660816, - 0.9591386326, - 0.9600021558, - 0.9608566431, - 0.9617020864, - 0.9625384778, - 0.9633658095, - 0.9641840736, - 0.9649932624, - 0.9657933683, - 0.9665843838, - 0.9673663015, - 0.9681391139, - 0.9689028139, - 0.9696573941, - 0.9704028476, - 0.9711391673, - 0.9718663462, - 0.9725843776, - 0.9732932546, - 0.9739929706, - 0.9746835191, - 0.9753648934, - 0.9760370872, - 0.9767000942, - 0.9773539081, - 0.9779985228, - 0.9786339322, - 0.9792601304, - 0.9798771113, - 0.9804848693, - 0.9810833986, - 0.9816726935, - 0.9822527486, - 0.9828235583, - 0.9833851173, - 0.9839374204, - 0.9844804622, - 0.9850142377, - 0.9855387419, - 0.9860539698, - 0.9865599167, - 0.9870565776, - 0.9875439480, - 0.9880220232, - 0.9884907988, - 0.9889502704, - 0.9894004335, - 0.9898412841, - 0.9902728179, - 0.9906950309, - 0.9911079190, - 0.9915114785, - 0.9919057055, - 0.9922905963, - 0.9926661473, - 0.9930323550, - 0.9933892158, - 0.9937367265, - 0.9940748837, - 0.9944036844, - 0.9947231253, - 0.9950332035, - 0.9953339161, - 0.9956252602, - 0.9959072331, - 0.9961798322, - 0.9964430548, - 0.9966968986, - 0.9969413610, - 0.9971764399, - 0.9974021329, - 0.9976184380, - 0.9978253532, - 0.9980228764, - 0.9982110059, - 0.9983897398, - 0.9985590765, - 0.9987190144, - 0.9988695519, - 0.9990106877, - 0.9991424205, - 0.9992647489, - 0.9993776719, - 0.9994811883, - 0.9995752973, - 0.9996599979, - 0.9997352893, - 0.9998011707, - 0.9998576417, - 0.9999047017, - 0.9999423501, - 0.9999705868, - 0.9999894113, - 0.9999988235 -}; - -real_t sine_mid_480[] = -{ - 0.0016362455, - 0.0049087189, - 0.0081811398, - 0.0114534731, - 0.0147256837, - 0.0179977366, - 0.0212695968, - 0.0245412292, - 0.0278125988, - 0.0310836705, - 0.0343544094, - 0.0376247803, - 0.0408947483, - 0.0441642784, - 0.0474333354, - 0.0507018846, - 0.0539698907, - 0.0572373189, - 0.0605041341, - 0.0637703013, - 0.0670357857, - 0.0703005521, - 0.0735645656, - 0.0768277914, - 0.0800901944, - 0.0833517396, - 0.0866123923, - 0.0898721174, - 0.0931308800, - 0.0963886453, - 0.0996453784, - 0.1029010443, - 0.1061556082, - 0.1094090353, - 0.1126612907, - 0.1159123396, - 0.1191621472, - 0.1224106786, - 0.1256578991, - 0.1289037739, - 0.1321482683, - 0.1353913474, - 0.1386329767, - 0.1418731213, - 0.1451117465, - 0.1483488177, - 0.1515843002, - 0.1548181594, - 0.1580503605, - 0.1612808691, - 0.1645096505, - 0.1677366702, - 0.1709618935, - 0.1741852859, - 0.1774068130, - 0.1806264402, - 0.1838441330, - 0.1870598570, - 0.1902735777, - 0.1934852607, - 0.1966948717, - 0.1999023762, - 0.2031077400, - 0.2063109286, - 0.2095119078, - 0.2127106433, - 0.2159071008, - 0.2191012462, - 0.2222930451, - 0.2254824635, - 0.2286694671, - 0.2318540218, - 0.2350360936, - 0.2382156484, - 0.2413926520, - 0.2445670705, - 0.2477388699, - 0.2509080162, - 0.2540744755, - 0.2572382139, - 0.2603991974, - 0.2635573923, - 0.2667127647, - 0.2698652808, - 0.2730149069, - 0.2761616092, - 0.2793053540, - 0.2824461077, - 0.2855838367, - 0.2887185072, - 0.2918500858, - 0.2949785389, - 0.2981038331, - 0.3012259348, - 0.3043448106, - 0.3074604271, - 0.3105727510, - 0.3136817488, - 0.3167873874, - 0.3198896335, - 0.3229884538, - 0.3260838151, - 0.3291756844, - 0.3322640284, - 0.3353488142, - 0.3384300086, - 0.3415075788, - 0.3445814916, - 0.3476517143, - 0.3507182139, - 0.3537809576, - 0.3568399126, - 0.3598950461, - 0.3629463254, - 0.3659937179, - 0.3690371908, - 0.3720767117, - 0.3751122479, - 0.3781437670, - 0.3811712365, - 0.3841946239, - 0.3872138969, - 0.3902290232, - 0.3932399704, - 0.3962467063, - 0.3992491987, - 0.4022474156, - 0.4052413246, - 0.4082308939, - 0.4112160913, - 0.4141968849, - 0.4171732429, - 0.4201451332, - 0.4231125241, - 0.4260753838, - 0.4290336806, - 0.4319873828, - 0.4349364587, - 0.4378808768, - 0.4408206056, - 0.4437556136, - 0.4466858692, - 0.4496113412, - 0.4525319983, - 0.4554478091, - 0.4583587424, - 0.4612647671, - 0.4641658519, - 0.4670619660, - 0.4699530782, - 0.4728391575, - 0.4757201731, - 0.4785960942, - 0.4814668899, - 0.4843325294, - 0.4871929822, - 0.4900482174, - 0.4928982047, - 0.4957429134, - 0.4985823131, - 0.5014163734, - 0.5042450640, - 0.5070683544, - 0.5098862146, - 0.5126986143, - 0.5155055234, - 0.5183069119, - 0.5211027497, - 0.5238930069, - 0.5266776537, - 0.5294566601, - 0.5322299965, - 0.5349976332, - 0.5377595404, - 0.5405156887, - 0.5432660485, - 0.5460105903, - 0.5487492848, - 0.5514821026, - 0.5542090145, - 0.5569299913, - 0.5596450038, - 0.5623540230, - 0.5650570198, - 0.5677539653, - 0.5704448306, - 0.5731295868, - 0.5758082054, - 0.5784806575, - 0.5811469145, - 0.5838069479, - 0.5864607292, - 0.5891082300, - 0.5917494219, - 0.5943842766, - 0.5970127660, - 0.5996348618, - 0.6022505361, - 0.6048597607, - 0.6074625077, - 0.6100587493, - 0.6126484577, - 0.6152316051, - 0.6178081639, - 0.6203781064, - 0.6229414052, - 0.6254980328, - 0.6280479618, - 0.6305911649, - 0.6331276149, - 0.6356572846, - 0.6381801469, - 0.6406961748, - 0.6432053414, - 0.6457076197, - 0.6482029831, - 0.6506914047, - 0.6531728580, - 0.6556473162, - 0.6581147531, - 0.6605751420, - 0.6630284567, - 0.6654746709, - 0.6679137584, - 0.6703456931, - 0.6727704490, - 0.6751880000, - 0.6775983202, - 0.6800013840, - 0.6823971654, - 0.6847856390, - 0.6871667790, - 0.6895405601, - 0.6919069567, - 0.6942659435, - 0.6966174953, - 0.6989615869, - 0.7012981932, - 0.7036272892, - 0.7059488498, - 0.7082628503, - 0.7105692659, - 0.7128680719, - 0.7151592436, - 0.7174427565, - 0.7197185862, - 0.7219867083, - 0.7242470985, - 0.7264997326, - 0.7287445864, - 0.7309816360, - 0.7332108574, - 0.7354322266, - 0.7376457200, - 0.7398513138, - 0.7420489844, - 0.7442387082, - 0.7464204618, - 0.7485942218, - 0.7507599651, - 0.7529176682, - 0.7550673083, - 0.7572088621, - 0.7593423069, - 0.7614676197, - 0.7635847778, - 0.7656937585, - 0.7677945393, - 0.7698870976, - 0.7719714111, - 0.7740474573, - 0.7761152141, - 0.7781746593, - 0.7802257710, - 0.7822685270, - 0.7843029055, - 0.7863288848, - 0.7883464432, - 0.7903555590, - 0.7923562107, - 0.7943483769, - 0.7963320363, - 0.7983071676, - 0.8002737497, - 0.8022317615, - 0.8041811820, - 0.8061219904, - 0.8080541659, - 0.8099776877, - 0.8118925354, - 0.8137986883, - 0.8156961261, - 0.8175848285, - 0.8194647752, - 0.8213359460, - 0.8231983211, - 0.8250518803, - 0.8268966039, - 0.8287324721, - 0.8305594652, - 0.8323775637, - 0.8341867481, - 0.8359869990, - 0.8377782972, - 0.8395606235, - 0.8413339587, - 0.8430982839, - 0.8448535802, - 0.8465998288, - 0.8483370110, - 0.8500651082, - 0.8517841019, - 0.8534939737, - 0.8551947052, - 0.8568862783, - 0.8585686748, - 0.8602418767, - 0.8619058662, - 0.8635606253, - 0.8652061363, - 0.8668423818, - 0.8684693440, - 0.8700870056, - 0.8716953493, - 0.8732943578, - 0.8748840140, - 0.8764643010, - 0.8780352017, - 0.8795966993, - 0.8811487772, - 0.8826914187, - 0.8842246072, - 0.8857483265, - 0.8872625600, - 0.8887672917, - 0.8902625055, - 0.8917481852, - 0.8932243150, - 0.8946908791, - 0.8961478618, - 0.8975952475, - 0.8990330206, - 0.9004611658, - 0.9018796678, - 0.9032885114, - 0.9046876815, - 0.9060771631, - 0.9074569413, - 0.9088270015, - 0.9101873288, - 0.9115379087, - 0.9128787268, - 0.9142097687, - 0.9155310202, - 0.9168424670, - 0.9181440952, - 0.9194358908, - 0.9207178400, - 0.9219899290, - 0.9232521443, - 0.9245044723, - 0.9257468996, - 0.9269794128, - 0.9282019989, - 0.9294146447, - 0.9306173372, - 0.9318100635, - 0.9329928109, - 0.9341655667, - 0.9353283183, - 0.9364810533, - 0.9376237593, - 0.9387564242, - 0.9398790357, - 0.9409915818, - 0.9420940507, - 0.9431864306, - 0.9442687096, - 0.9453408763, - 0.9464029192, - 0.9474548268, - 0.9484965880, - 0.9495281915, - 0.9505496264, - 0.9515608816, - 0.9525619463, - 0.9535528099, - 0.9545334617, - 0.9555038913, - 0.9564640881, - 0.9574140420, - 0.9583537427, - 0.9592831803, - 0.9602023446, - 0.9611112260, - 0.9620098147, - 0.9628981010, - 0.9637760755, - 0.9646437286, - 0.9655010512, - 0.9663480341, - 0.9671846682, - 0.9680109445, - 0.9688268541, - 0.9696323885, - 0.9704275388, - 0.9712122966, - 0.9719866535, - 0.9727506013, - 0.9735041316, - 0.9742472365, - 0.9749799080, - 0.9757021383, - 0.9764139195, - 0.9771152442, - 0.9778061047, - 0.9784864937, - 0.9791564039, - 0.9798158282, - 0.9804647593, - 0.9811031905, - 0.9817311149, - 0.9823485257, - 0.9829554164, - 0.9835517804, - 0.9841376113, - 0.9847129029, - 0.9852776490, - 0.9858318436, - 0.9863754808, - 0.9869085546, - 0.9874310595, - 0.9879429897, - 0.9884443399, - 0.9889351046, - 0.9894152786, - 0.9898848568, - 0.9903438341, - 0.9907922056, - 0.9912299666, - 0.9916571122, - 0.9920736380, - 0.9924795395, - 0.9928748124, - 0.9932594523, - 0.9936334552, - 0.9939968171, - 0.9943495342, - 0.9946916025, - 0.9950230184, - 0.9953437785, - 0.9956538793, - 0.9959533173, - 0.9962420896, - 0.9965201929, - 0.9967876242, - 0.9970443807, - 0.9972904597, - 0.9975258586, - 0.9977505747, - 0.9979646057, - 0.9981679493, - 0.9983606034, - 0.9985425657, - 0.9987138346, - 0.9988744079, - 0.9990242842, - 0.9991634617, - 0.9992919389, - 0.9994097146, - 0.9995167873, - 0.9996131561, - 0.9996988198, - 0.9997737775, - 0.9998380284, - 0.9998915719, - 0.9999344073, - 0.9999665343, - 0.9999879524, - 0.9999986614 -}; - -real_t ld_mid_512[] = -{ - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0061358848, - 0.0184067304, - 0.0306748040, - 0.0429382581, - 0.0551952459, - 0.0674439214, - 0.0796824402, - 0.0919089590, - 0.1041216368, - 0.1163186341, - 0.1284981143, - 0.1406582432, - 0.1527971895, - 0.1649131250, - 0.1770042253, - 0.1890686693, - 0.2011046404, - 0.2131103258, - 0.2250839175, - 0.2370236125, - 0.2489276125, - 0.2607941250, - 0.2726213628, - 0.2844075449, - 0.2961508962, - 0.3078496483, - 0.3195020394, - 0.3311063146, - 0.3426607265, - 0.3541635348, - 0.3656130075, - 0.3770074202, - 0.3883450569, - 0.3996242103, - 0.4108431818, - 0.4220002818, - 0.4330938301, - 0.4441221560, - 0.4550835988, - 0.4659765077, - 0.4767992422, - 0.4875501725, - 0.4982276796, - 0.5088301553, - 0.5193560032, - 0.5298036379, - 0.5401714861, - 0.5504579865, - 0.5606615899, - 0.5707807598, - 0.5808139721, - 0.5907597160, - 0.6006164937, - 0.6103828207, - 0.6200572264, - 0.6296382536, - 0.6391244597, - 0.6485144160, - 0.6578067083, - 0.6669999374, - 0.6760927188, - 0.6850836831, - 0.6939714763, - 0.7027547599, - 0.7114322112, - 0.7200025235, - 0.7284644060, - 0.7368165845, - 0.7450578010, - 0.7531868147, - 0.7612024011, - 0.7691033533, - 0.7768884813, - 0.7845566127, - 0.7921065928, - 0.7995372846, - 0.8068475690, - 0.8140363451, - 0.8211025303, - 0.8280450605, - 0.8348628901, - 0.8415549925, - 0.8481203597, - 0.8545580032, - 0.8608669533, - 0.8670462601, - 0.8730949928, - 0.8790122407, - 0.8847971125, - 0.8904487372, - 0.8959662635, - 0.9013488606, - 0.9065957178, - 0.9117060451, - 0.9166790728, - 0.9215140520, - 0.9262102546, - 0.9307669733, - 0.9351835219, - 0.9394592352, - 0.9435934695, - 0.9475856021, - 0.9514350317, - 0.9551411788, - 0.9587034850, - 0.9621214141, - 0.9653944512, - 0.9685221034, - 0.9715038998, - 0.9743393912, - 0.9770281507, - 0.9795697733, - 0.9819638764, - 0.9842100992, - 0.9863081037, - 0.9882575738, - 0.9900582159, - 0.9917097588, - 0.9932119539, - 0.9945645750, - 0.9957674182, - 0.9968203026, - 0.9977230695, - 0.9984755829, - 0.9990777296, - 0.9995294188, - 0.9998305826, - 0.9999811755, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000 -}; - -real_t ld_mid_480[] = -{ - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0000000000, - 0.0065449381, - 0.0196336930, - 0.0327190837, - 0.0457988682, - 0.0588708053, - 0.0719326552, - 0.0849821797, - 0.0980171430, - 0.1110353116, - 0.1240344549, - 0.1370123455, - 0.1499667597, - 0.1628954779, - 0.1757962848, - 0.1886669699, - 0.2015053279, - 0.2143091589, - 0.2270762692, - 0.2398044712, - 0.2524915839, - 0.2651354334, - 0.2777338534, - 0.2902846851, - 0.3027857780, - 0.3152349901, - 0.3276301883, - 0.3399692488, - 0.3522500573, - 0.3644705095, - 0.3766285116, - 0.3887219804, - 0.4007488436, - 0.4127070406, - 0.4245945223, - 0.4364092520, - 0.4481492051, - 0.4598123703, - 0.4713967489, - 0.4829003561, - 0.4943212208, - 0.5056573861, - 0.5169069096, - 0.5280678638, - 0.5391383363, - 0.5501164301, - 0.5610002644, - 0.5717879741, - 0.5824777109, - 0.5930676432, - 0.6035559563, - 0.6139408533, - 0.6242205546, - 0.6343932989, - 0.6444573433, - 0.6544109631, - 0.6642524530, - 0.6739801267, - 0.6835923173, - 0.6930873779, - 0.7024636815, - 0.7117196216, - 0.7208536122, - 0.7298640883, - 0.7387495058, - 0.7475083425, - 0.7561390974, - 0.7646402918, - 0.7730104690, - 0.7812481948, - 0.7893520577, - 0.7973206693, - 0.8051526640, - 0.8128467000, - 0.8204014588, - 0.8278156461, - 0.8350879914, - 0.8422172487, - 0.8492021964, - 0.8560416377, - 0.8627344006, - 0.8692793384, - 0.8756753297, - 0.8819212785, - 0.8880161146, - 0.8939587938, - 0.8997482976, - 0.9053836343, - 0.9108638381, - 0.9161879700, - 0.9213551179, - 0.9263643963, - 0.9312149469, - 0.9359059386, - 0.9404365677, - 0.9448060577, - 0.9490136602, - 0.9530586539, - 0.9569403460, - 0.9606580713, - 0.9642111928, - 0.9675991016, - 0.9708212173, - 0.9738769878, - 0.9767658894, - 0.9794874272, - 0.9820411349, - 0.9844265749, - 0.9866433385, - 0.9886910458, - 0.9905693459, - 0.9922779171, - 0.9938164666, - 0.9951847307, - 0.9963824750, - 0.9974094943, - 0.9982656127, - 0.9989506833, - 0.9994645889, - 0.9998072413, - 0.9999785819, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000, - 1.0000000000 -}; -#endif - -#else - -real_t sine_long_1024[] = -{ - 0x3243F, - 0x96CBD, - 0xFB53A, - 0x15FDB5, - 0x1C462C, - 0x228E9E, - 0x28D70C, - 0x2F1F73, - 0x3567D2, - 0x3BB02A, - 0x41F878, - 0x4840BD, - 0x4E88F6, - 0x54D123, - 0x5B1942, - 0x616154, - 0x67A957, - 0x6DF14A, - 0x74392C, - 0x7A80FC, - 0x80C8B9, - 0x871062, - 0x8D57F6, - 0x939F75, - 0x99E6DC, - 0xA02E2C, - 0xA67564, - 0xACBC81, - 0xB30385, - 0xB94A6C, - 0xBF9137, - 0xC5D7E4, - 0xCC1E73, - 0xD264E2, - 0xD8AB31, - 0xDEF15F, - 0xE5376A, - 0xEB7D51, - 0xF1C315, - 0xF808B3, - 0xFE4E2B, - 0x104937C, - 0x10AD8A4, - 0x1111DA3, - 0x1176279, - 0x11DA723, - 0x123EBA1, - 0x12A2FF2, - 0x1307415, - 0x136B809, - 0x13CFBCD, - 0x1433F61, - 0x14982C2, - 0x14FC5F1, - 0x15608EC, - 0x15C4BB2, - 0x1628E42, - 0x168D09C, - 0x16F12BE, - 0x17554A8, - 0x17B9658, - 0x181D7CD, - 0x1881907, - 0x18E5A04, - 0x1949AC4, - 0x19ADB46, - 0x1A11B88, - 0x1A75B8A, - 0x1AD9B4B, - 0x1B3DAC9, - 0x1BA1A04, - 0x1C058FB, - 0x1C697AD, - 0x1CCD619, - 0x1D3143D, - 0x1D9521A, - 0x1DF8FAE, - 0x1E5CCF7, - 0x1EC09F6, - 0x1F246A9, - 0x1F8830F, - 0x1FEBF27, - 0x204FAF1, - 0x20B366B, - 0x2117194, - 0x217AC6B, - 0x21DE6F0, - 0x2242121, - 0x22A5AFE, - 0x2309485, - 0x236CDB6, - 0x23D0690, - 0x2433F11, - 0x2497738, - 0x24FAF06, - 0x255E678, - 0x25C1D8E, - 0x2625447, - 0x2688AA1, - 0x26EC09D, - 0x274F638, - 0x27B2B73, - 0x281604C, - 0x28794C1, - 0x28DC8D3, - 0x293FC80, - 0x29A2FC7, - 0x2A062A8, - 0x2A69521, - 0x2ACC731, - 0x2B2F8D8, - 0x2B92A14, - 0x2BF5AE4, - 0x2C58B48, - 0x2CBBB3F, - 0x2D1EAC7, - 0x2D819E0, - 0x2DE4889, - 0x2E476C0, - 0x2EAA485, - 0x2F0D1D7, - 0x2F6FEB5, - 0x2FD2B1E, - 0x3035711, - 0x309828D, - 0x30FAD91, - 0x315D81C, - 0x31C022E, - 0x3222BC4, - 0x32854DF, - 0x32E7D7E, - 0x334A59E, - 0x33ACD41, - 0x340F463, - 0x3471B05, - 0x34D4126, - 0x35366C5, - 0x3598BE0, - 0x35FB077, - 0x365D488, - 0x36BF814, - 0x3721B18, - 0x3783D95, - 0x37E5F88, - 0x38480F2, - 0x38AA1D1, - 0x390C223, - 0x396E1EA, - 0x39D0122, - 0x3A31FCC, - 0x3A93DE6, - 0x3AF5B70, - 0x3B57868, - 0x3BB94CD, - 0x3C1B0A0, - 0x3C7CBDE, - 0x3CDE687, - 0x3D40099, - 0x3DA1A15, - 0x3E032F8, - 0x3E64B43, - 0x3EC62F3, - 0x3F27A09, - 0x3F89083, - 0x3FEA660, - 0x404BB9F, - 0x40AD03F, - 0x410E441, - 0x416F7A1, - 0x41D0A60, - 0x4231C7D, - 0x4292DF6, - 0x42F3ECB, - 0x4354EFB, - 0x43B5E85, - 0x4416D68, - 0x4477BA2, - 0x44D8934, - 0x453961C, - 0x459A259, - 0x45FADEB, - 0x465B8CF, - 0x46BC306, - 0x471CC8F, - 0x477D568, - 0x47DDD91, - 0x483E508, - 0x489EBCD, - 0x48FF1DF, - 0x495F73D, - 0x49BFBE6, - 0x4A1FFD8, - 0x4A80314, - 0x4AE0598, - 0x4B40764, - 0x4BA0875, - 0x4C008CD, - 0x4C60868, - 0x4CC0747, - 0x4D20569, - 0x4D802CC, - 0x4DDFF70, - 0x4E3FB54, - 0x4E9F677, - 0x4EFF0D8, - 0x4F5EA76, - 0x4FBE351, - 0x501DB66, - 0x507D2B6, - 0x50DC93F, - 0x513BF01, - 0x519B3FA, - 0x51FA82A, - 0x5259B8F, - 0x52B8E2A, - 0x5317FF8, - 0x53770F9, - 0x53D612D, - 0x5435091, - 0x5493F26, - 0x54F2CEA, - 0x55519DC, - 0x55B05FC, - 0x560F149, - 0x566DBC1, - 0x56CC564, - 0x572AE30, - 0x5789626, - 0x57E7D44, - 0x5846388, - 0x58A48F3, - 0x5902D84, - 0x5961138, - 0x59BF410, - 0x5A1D60B, - 0x5A7B727, - 0x5AD9764, - 0x5B376C1, - 0x5B9553D, - 0x5BF32D6, - 0x5C50F8D, - 0x5CAEB60, - 0x5D0C64F, - 0x5D6A058, - 0x5DC797A, - 0x5E251B5, - 0x5E82908, - 0x5EDFF71, - 0x5F3D4F1, - 0x5F9A985, - 0x5FF7D2E, - 0x6054FE9, - 0x60B21B8, - 0x610F297, - 0x616C287, - 0x61C9187, - 0x6225F95, - 0x6282CB1, - 0x62DF8DA, - 0x633C40F, - 0x6398E4F, - 0x63F579A, - 0x6451FEE, - 0x64AE74A, - 0x650ADAE, - 0x6567319, - 0x65C3789, - 0x661FAFE, - 0x667BD78, - 0x66D7EF4, - 0x6733F73, - 0x678FEF3, - 0x67EBD74, - 0x6847AF4, - 0x68A3772, - 0x68FF2EF, - 0x695AD69, - 0x69B66DE, - 0x6A11F4F, - 0x6A6D6BA, - 0x6AC8D1F, - 0x6B2427C, - 0x6B7F6D0, - 0x6BDAA1C, - 0x6C35C5D, - 0x6C90D93, - 0x6CEBDBE, - 0x6D46CDB, - 0x6DA1AEB, - 0x6DFC7ED, - 0x6E573DF, - 0x6EB1EC1, - 0x6F0C891, - 0x6F67150, - 0x6FC18FC, - 0x701BF94, - 0x7076518, - 0x70D0986, - 0x712ACDD, - 0x7184F1E, - 0x71DF046, - 0x7239055, - 0x7292F4B, - 0x72ECD26, - 0x73469E5, - 0x73A0588, - 0x73FA00D, - 0x7453975, - 0x74AD1BD, - 0x75068E6, - 0x755FEED, - 0x75B93D3, - 0x7612797, - 0x766BA37, - 0x76C4BB3, - 0x771DC0A, - 0x7776B3C, - 0x77CF946, - 0x7828629, - 0x78811E3, - 0x78D9C74, - 0x79325DB, - 0x798AE16, - 0x79E3526, - 0x7A3BB09, - 0x7A93FBF, - 0x7AEC346, - 0x7B4459E, - 0x7B9C6C5, - 0x7BF46BC, - 0x7C4C581, - 0x7CA4313, - 0x7CFBF71, - 0x7D53A9B, - 0x7DAB490, - 0x7E02D4F, - 0x7E5A4D7, - 0x7EB1B27, - 0x7F0903F, - 0x7F6041D, - 0x7FB76C0, - 0x800E829, - 0x8065856, - 0x80BC746, - 0x81134F8, - 0x816A16C, - 0x81C0CA0, - 0x8217694, - 0x826DF48, - 0x82C46B9, - 0x831ACE8, - 0x83711D3, - 0x83C757A, - 0x841D7DC, - 0x84738F8, - 0x84C98CD, - 0x851F75B, - 0x85754A0, - 0x85CB09B, - 0x8620B4D, - 0x86764B4, - 0x86CBCCE, - 0x872139D, - 0x877691D, - 0x87CBD50, - 0x8821034, - 0x88761C7, - 0x88CB20A, - 0x89200FC, - 0x8974E9B, - 0x89C9AE7, - 0x8A1E5DE, - 0x8A72F82, - 0x8AC77CF, - 0x8B1BEC6, - 0x8B70466, - 0x8BC48AE, - 0x8C18B9D, - 0x8C6CD32, - 0x8CC0D6D, - 0x8D14C4C, - 0x8D689D0, - 0x8DBC5F6, - 0x8E100BF, - 0x8E63A29, - 0x8EB7234, - 0x8F0A8DF, - 0x8F5DE29, - 0x8FB1211, - 0x9004496, - 0x90575B9, - 0x90AA577, - 0x90FD3D0, - 0x91500C3, - 0x91A2C50, - 0x91F5675, - 0x9247F33, - 0x929A687, - 0x92ECC72, - 0x933F0F2, - 0x9391407, - 0x93E35AF, - 0x94355EB, - 0x94874B9, - 0x94D9219, - 0x952AE09, - 0x957C88A, - 0x95CE199, - 0x961F937, - 0x9670F62, - 0x96C241B, - 0x971375F, - 0x976492E, - 0x97B5988, - 0x980686C, - 0x98575D8, - 0x98A81CD, - 0x98F8C49, - 0x994954C, - 0x9999CD4, - 0x99EA2E1, - 0x9A3A773, - 0x9A8AA88, - 0x9ADAC1F, - 0x9B2AC39, - 0x9B7AAD4, - 0x9BCA7EF, - 0x9C1A389, - 0x9C69DA3, - 0x9CB963A, - 0x9D08D4F, - 0x9D582E1, - 0x9DA76EE, - 0x9DF6976, - 0x9E45A79, - 0x9E949F5, - 0x9EE37E9, - 0x9F32456, - 0x9F80F3A, - 0x9FCF894, - 0xA01E064, - 0xA06C6A9, - 0xA0BAB62, - 0xA108E8E, - 0xA15702D, - 0xA1A503E, - 0xA1F2EC0, - 0xA240BB3, - 0xA28E715, - 0xA2DC0E6, - 0xA329925, - 0xA376FD2, - 0xA3C44EC, - 0xA411871, - 0xA45EA61, - 0xA4ABABC, - 0xA4F8981, - 0xA5456AE, - 0xA592244, - 0xA5DEC41, - 0xA62B4A5, - 0xA677B6F, - 0xA6C409E, - 0xA710432, - 0xA75C62A, - 0xA7A8684, - 0xA7F4541, - 0xA840260, - 0xA88BDDF, - 0xA8D77BE, - 0xA922FFD, - 0xA96E69B, - 0xA9B9B96, - 0xAA04EEF, - 0xAA500A4, - 0xAA9B0B5, - 0xAAE5F21, - 0xAB30BE8, - 0xAB7B707, - 0xABC6080, - 0xAC10851, - 0xAC5AE7A, - 0xACA52F9, - 0xACEF5CE, - 0xAD396F9, - 0xAD83678, - 0xADCD44B, - 0xAE17071, - 0xAE60AE9, - 0xAEAA3B4, - 0xAEF3ACF, - 0xAF3D03B, - 0xAF863F6, - 0xAFCF600, - 0xB018658, - 0xB0614FE, - 0xB0AA1F1, - 0xB0F2D30, - 0xB13B6BA, - 0xB183E8F, - 0xB1CC4AE, - 0xB214916, - 0xB25CBC7, - 0xB2A4CC0, - 0xB2ECBFF, - 0xB334986, - 0xB37C552, - 0xB3C3F64, - 0xB40B7B9, - 0xB452E53, - 0xB49A330, - 0xB4E164F, - 0xB5287AF, - 0xB56F751, - 0xB5B6533, - 0xB5FD155, - 0xB643BB6, - 0xB68A455, - 0xB6D0B31, - 0xB71704B, - 0xB75D3A0, - 0xB7A3532, - 0xB7E94FE, - 0xB82F304, - 0xB874F44, - 0xB8BA9BD, - 0xB90026E, - 0xB945957, - 0xB98AE76, - 0xB9D01CC, - 0xBA15357, - 0xBA5A317, - 0xBA9F10B, - 0xBAE3D33, - 0xBB2878D, - 0xBB6D01A, - 0xBBB16D9, - 0xBBF5BC8, - 0xBC39EE7, - 0xBC7E036, - 0xBCC1FB4, - 0xBD05D60, - 0xBD4993A, - 0xBD8D341, - 0xBDD0B74, - 0xBE141D3, - 0xBE5765C, - 0xBE9A910, - 0xBEDD9EE, - 0xBF208F5, - 0xBF63624, - 0xBFA617B, - 0xBFE8AF9, - 0xC02B29E, - 0xC06D868, - 0xC0AFC58, - 0xC0F1E6C, - 0xC133EA4, - 0xC175D00, - 0xC1B797E, - 0xC1F941E, - 0xC23ACDF, - 0xC27C3C2, - 0xC2BD8C4, - 0xC2FEBE6, - 0xC33FD27, - 0xC380C86, - 0xC3C1A02, - 0xC40259C, - 0xC442F52, - 0xC483724, - 0xC4C3D10, - 0xC504118, - 0xC544339, - 0xC584373, - 0xC5C41C7, - 0xC603E32, - 0xC6438B4, - 0xC68314E, - 0xC6C27FD, - 0xC701CC2, - 0xC740F9D, - 0xC78008B, - 0xC7BEF8D, - 0xC7FDCA3, - 0xC83C7CB, - 0xC87B104, - 0xC8B9850, - 0xC8F7DAC, - 0xC936118, - 0xC974293, - 0xC9B221E, - 0xC9EFFB7, - 0xCA2DB5D, - 0xCA6B511, - 0xCAA8CD1, - 0xCAE629E, - 0xCB23675, - 0xCB60858, - 0xCB9D844, - 0xCBDA63A, - 0xCC1723A, - 0xCC53C41, - 0xCC90451, - 0xCCCCA67, - 0xCD08E85, - 0xCD450A8, - 0xCD810D1, - 0xCDBCEFF, - 0xCDF8B32, - 0xCE34568, - 0xCE6FDA1, - 0xCEAB3DD, - 0xCEE681B, - 0xCF21A5A, - 0xCF5CA9B, - 0xCF978DC, - 0xCFD251C, - 0xD00CF5C, - 0xD04779A, - 0xD081DD7, - 0xD0BC211, - 0xD0F6448, - 0xD13047C, - 0xD16A2AB, - 0xD1A3ED5, - 0xD1DD8FB, - 0xD21711A, - 0xD250733, - 0xD289B46, - 0xD2C2D50, - 0xD2FBD53, - 0xD334B4D, - 0xD36D73E, - 0xD3A6125, - 0xD3DE902, - 0xD416ED5, - 0xD44F29C, - 0xD487457, - 0xD4BF406, - 0xD4F71A7, - 0xD52ED3C, - 0xD5666C2, - 0xD59DE3A, - 0xD5D53A3, - 0xD60C6FC, - 0xD643845, - 0xD67A77D, - 0xD6B14A4, - 0xD6E7FB9, - 0xD71E8BC, - 0xD754FAD, - 0xD78B48A, - 0xD7C1753, - 0xD7F7808, - 0xD82D6A8, - 0xD863332, - 0xD898DA7, - 0xD8CE605, - 0xD903C4C, - 0xD93907C, - 0xD96E294, - 0xD9A3293, - 0xD9D8079, - 0xDA0CC46, - 0xDA415F9, - 0xDA75D91, - 0xDAAA30E, - 0xDADE670, - 0xDB127B6, - 0xDB466DF, - 0xDB7A3EB, - 0xDBADEDA, - 0xDBE17AA, - 0xDC14E5C, - 0xDC482EF, - 0xDC7B562, - 0xDCAE5B6, - 0xDCE13E9, - 0xDD13FFB, - 0xDD469EB, - 0xDD791B9, - 0xDDAB765, - 0xDDDDAEE, - 0xDE0FC54, - 0xDE41B96, - 0xDE738B3, - 0xDEA53AB, - 0xDED6C7E, - 0xDF0832C, - 0xDF397B3, - 0xDF6AA13, - 0xDF9BA4C, - 0xDFCC85D, - 0xDFFD446, - 0xE02DE06, - 0xE05E59D, - 0xE08EB0A, - 0xE0BEE4E, - 0xE0EEF67, - 0xE11EE55, - 0xE14EB17, - 0xE17E5AE, - 0xE1ADE18, - 0xE1DD455, - 0xE20C865, - 0xE23BA47, - 0xE26A9FB, - 0xE299781, - 0xE2C82D7, - 0xE2F6BFE, - 0xE3252F4, - 0xE3537BB, - 0xE381A50, - 0xE3AFAB4, - 0xE3DD8E6, - 0xE40B4E6, - 0xE438EB3, - 0xE46664D, - 0xE493BB4, - 0xE4C0EE7, - 0xE4EDFE5, - 0xE51AEAE, - 0xE547B42, - 0xE5745A0, - 0xE5A0DC9, - 0xE5CD3BA, - 0xE5F9775, - 0xE6258F8, - 0xE651843, - 0xE67D556, - 0xE6A9030, - 0xE6D48D1, - 0xE6FFF39, - 0xE72B366, - 0xE75655A, - 0xE781512, - 0xE7AC28F, - 0xE7D6DD1, - 0xE8016D6, - 0xE82BD9F, - 0xE85622C, - 0xE88047B, - 0xE8AA48C, - 0xE8D425F, - 0xE8FDDF4, - 0xE92774A, - 0xE950E60, - 0xE97A337, - 0xE9A35CE, - 0xE9CC624, - 0xE9F5439, - 0xEA1E00E, - 0xEA469A0, - 0xEA6F0F0, - 0xEA975FE, - 0xEABF8CA, - 0xEAE7952, - 0xEB0F796, - 0xEB37396, - 0xEB5ED52, - 0xEB864C9, - 0xEBAD9FC, - 0xEBD4CE8, - 0xEBFBD8F, - 0xEC22BEF, - 0xEC49809, - 0xEC701DC, - 0xEC96967, - 0xECBCEAB, - 0xECE31A6, - 0xED09259, - 0xED2F0C3, - 0xED54CE4, - 0xED7A6BC, - 0xED9FE49, - 0xEDC538C, - 0xEDEA685, - 0xEE0F732, - 0xEE34594, - 0xEE591AA, - 0xEE7DB74, - 0xEEA22F2, - 0xEEC6823, - 0xEEEAB06, - 0xEF0EB9D, - 0xEF329E5, - 0xEF565DF, - 0xEF79F8B, - 0xEF9D6E7, - 0xEFC0BF5, - 0xEFE3EB3, - 0xF006F21, - 0xF029D3F, - 0xF04C90C, - 0xF06F288, - 0xF0919B3, - 0xF0B3E8D, - 0xF0D6114, - 0xF0F8149, - 0xF119F2C, - 0xF13BABC, - 0xF15D3F9, - 0xF17EAE2, - 0xF19FF77, - 0xF1C11B8, - 0xF1E21A4, - 0xF202F3C, - 0xF223A7F, - 0xF24436C, - 0xF264A03, - 0xF284E44, - 0xF2A502F, - 0xF2C4FC3, - 0xF2E4D01, - 0xF3047E6, - 0xF324075, - 0xF3436AB, - 0xF362A89, - 0xF381C0F, - 0xF3A0B3B, - 0xF3BF80F, - 0xF3DE289, - 0xF3FCAAA, - 0xF41B070, - 0xF4393DC, - 0xF4574EE, - 0xF4753A4, - 0xF493000, - 0xF4B0A00, - 0xF4CE1A4, - 0xF4EB6EC, - 0xF5089D8, - 0xF525A67, - 0xF54289A, - 0xF55F46F, - 0xF57BDE7, - 0xF598501, - 0xF5B49BD, - 0xF5D0C1B, - 0xF5ECC1A, - 0xF6089BB, - 0xF6244FD, - 0xF63FDDF, - 0xF65B461, - 0xF676884, - 0xF691A47, - 0xF6AC9A9, - 0xF6C76AA, - 0xF6E214B, - 0xF6FC98B, - 0xF716F69, - 0xF7312E5, - 0xF74B400, - 0xF7652B8, - 0xF77EF0E, - 0xF798901, - 0xF7B2092, - 0xF7CB5BF, - 0xF7E4888, - 0xF7FD8EF, - 0xF8166F1, - 0xF82F28F, - 0xF847BC9, - 0xF86029E, - 0xF87870E, - 0xF890919, - 0xF8A88BF, - 0xF8C05FF, - 0xF8D80DA, - 0xF8EF94E, - 0xF906F5D, - 0xF91E305, - 0xF935446, - 0xF94C320, - 0xF962F93, - 0xF97999F, - 0xF990144, - 0xF9A6680, - 0xF9BC955, - 0xF9D29C1, - 0xF9E87C5, - 0xF9FE360, - 0xFA13C93, - 0xFA2935C, - 0xFA3E7BC, - 0xFA539B3, - 0xFA68940, - 0xFA7D663, - 0xFA9211D, - 0xFAA696C, - 0xFABAF50, - 0xFACF2CA, - 0xFAE33D9, - 0xFAF727D, - 0xFB0AEB5, - 0xFB1E883, - 0xFB31FE4, - 0xFB454DA, - 0xFB58764, - 0xFB6B782, - 0xFB7E533, - 0xFB91078, - 0xFBA3950, - 0xFBB5FBB, - 0xFBC83B9, - 0xFBDA54A, - 0xFBEC46E, - 0xFBFE124, - 0xFC0FB6C, - 0xFC21346, - 0xFC328B2, - 0xFC43BB0, - 0xFC54C3F, - 0xFC65A60, - 0xFC76612, - 0xFC86F55, - 0xFC97629, - 0xFCA7A8D, - 0xFCB7C83, - 0xFCC7C08, - 0xFCD791F, - 0xFCE73C5, - 0xFCF6BFB, - 0xFD061C1, - 0xFD15517, - 0xFD245FC, - 0xFD33471, - 0xFD42074, - 0xFD50A07, - 0xFD5F129, - 0xFD6D5DA, - 0xFD7B81A, - 0xFD897E8, - 0xFD97544, - 0xFDA502F, - 0xFDB28A8, - 0xFDBFEAF, - 0xFDCD244, - 0xFDDA366, - 0xFDE7217, - 0xFDF3E54, - 0xFE00820, - 0xFE0CF78, - 0xFE1945E, - 0xFE256D0, - 0xFE316D0, - 0xFE3D45C, - 0xFE48F75, - 0xFE5481B, - 0xFE5FE4D, - 0xFE6B20C, - 0xFE76356, - 0xFE8122D, - 0xFE8BE90, - 0xFE9687F, - 0xFEA0FFA, - 0xFEAB500, - 0xFEB5792, - 0xFEBF7AF, - 0xFEC9558, - 0xFED308D, - 0xFEDC94C, - 0xFEE5F97, - 0xFEEF36D, - 0xFEF84CE, - 0xFF013B9, - 0xFF0A030, - 0xFF12A31, - 0xFF1B1BD, - 0xFF236D3, - 0xFF2B974, - 0xFF3399F, - 0xFF3B754, - 0xFF43294, - 0xFF4AB5E, - 0xFF521B2, - 0xFF59590, - 0xFF606F8, - 0xFF675EA, - 0xFF6E266, - 0xFF74C6B, - 0xFF7B3FA, - 0xFF81913, - 0xFF87BB5, - 0xFF8DBE1, - 0xFF93996, - 0xFF994D5, - 0xFF9ED9D, - 0xFFA43EE, - 0xFFA97C9, - 0xFFAE92D, - 0xFFB3819, - 0xFFB848F, - 0xFFBCE8E, - 0xFFC1616, - 0xFFC5B27, - 0xFFC9DC1, - 0xFFCDDE3, - 0xFFD1B8F, - 0xFFD56C3, - 0xFFD8F80, - 0xFFDC5C6, - 0xFFDF994, - 0xFFE2AEB, - 0xFFE59CB, - 0xFFE8633, - 0xFFEB024, - 0xFFED79E, - 0xFFEFCA0, - 0xFFF1F2A, - 0xFFF3F3D, - 0xFFF5CD9, - 0xFFF77FC, - 0xFFF90A9, - 0xFFFA6DD, - 0xFFFBA9B, - 0xFFFCBE0, - 0xFFFDAAE, - 0xFFFE704, - 0xFFFF0E3, - 0xFFFF84A, - 0xFFFFD39, - 0xFFFFFB1 -}; - -real_t sine_long_960[] = { - 0x359DD, - 0xA0D97, - 0x10C14F, - 0x177504, - 0x1E28B5, - 0x24DC61, - 0x2B9006, - 0x3243A4, - 0x38F738, - 0x3FAAC3, - 0x465E43, - 0x4D11B6, - 0x53C51C, - 0x5A7873, - 0x612BBA, - 0x67DEF0, - 0x6E9214, - 0x754525, - 0x7BF821, - 0x82AB07, - 0x895DD6, - 0x90108E, - 0x96C32B, - 0x9D75AF, - 0xA42817, - 0xAADA62, - 0xB18C8F, - 0xB83E9D, - 0xBEF08A, - 0xC5A256, - 0xCC5400, - 0xD30585, - 0xD9B6E6, - 0xE06820, - 0xE71933, - 0xEDCA1D, - 0xF47ADE, - 0xFB2B74, - 0x101DBDD, - 0x1088C1A, - 0x10F3C28, - 0x115EC06, - 0x11C9BB4, - 0x1234B30, - 0x129FA78, - 0x130A98D, - 0x137586C, - 0x13E0714, - 0x144B584, - 0x14B63BC, - 0x15211B9, - 0x158BF7B, - 0x15F6D01, - 0x1661A49, - 0x16CC752, - 0x173741B, - 0x17A20A3, - 0x180CCE8, - 0x18778EA, - 0x18E24A7, - 0x194D01F, - 0x19B7B4F, - 0x1A22638, - 0x1A8D0D6, - 0x1AF7B2B, - 0x1B62533, - 0x1BCCEEF, - 0x1C3785D, - 0x1CA217B, - 0x1D0CA49, - 0x1D772C6, - 0x1DE1AF0, - 0x1E4C2C6, - 0x1EB6A47, - 0x1F21171, - 0x1F8B844, - 0x1FF5EBF, - 0x20604E0, - 0x20CAAA6, - 0x2135010, - 0x219F51D, - 0x22099CB, - 0x2273E1A, - 0x22DE208, - 0x2348595, - 0x23B28BE, - 0x241CB83, - 0x2486DE3, - 0x24F0FDC, - 0x255B16D, - 0x25C5295, - 0x262F354, - 0x26993A7, - 0x270338E, - 0x276D307, - 0x27D7212, - 0x28410AD, - 0x28AAED7, - 0x2914C8E, - 0x297E9D3, - 0x29E86A3, - 0x2A522FD, - 0x2ABBEE0, - 0x2B25A4C, - 0x2B8F53E, - 0x2BF8FB6, - 0x2C629B3, - 0x2CCC332, - 0x2D35C35, - 0x2D9F4B8, - 0x2E08CBB, - 0x2E7243D, - 0x2EDBB3D, - 0x2F451B9, - 0x2FAE7B0, - 0x3017D21, - 0x308120C, - 0x30EA66E, - 0x3153A47, - 0x31BCD96, - 0x3226058, - 0x328F28E, - 0x32F8437, - 0x3361550, - 0x33CA5D8, - 0x34335D0, - 0x349C535, - 0x3505406, - 0x356E242, - 0x35D6FE8, - 0x363FCF7, - 0x36A896E, - 0x371154C, - 0x377A08F, - 0x37E2B36, - 0x384B540, - 0x38B3EAC, - 0x391C779, - 0x3984FA6, - 0x39ED731, - 0x3A55E19, - 0x3ABE45E, - 0x3B269FE, - 0x3B8EEF8, - 0x3BF734A, - 0x3C5F6F4, - 0x3CC79F5, - 0x3D2FC4B, - 0x3D97DF6, - 0x3DFFEF3, - 0x3E67F43, - 0x3ECFEE3, - 0x3F37DD3, - 0x3F9FC11, - 0x400799D, - 0x406F675, - 0x40D7298, - 0x413EE05, - 0x41A68BB, - 0x420E2B8, - 0x4275BFD, - 0x42DD486, - 0x4344C54, - 0x43AC365, - 0x44139B8, - 0x447AF4C, - 0x44E2420, - 0x4549832, - 0x45B0B82, - 0x4617E0E, - 0x467EFD5, - 0x46E60D7, - 0x474D111, - 0x47B4084, - 0x481AF2D, - 0x4881D0B, - 0x48E8A1E, - 0x494F664, - 0x49B61DD, - 0x4A1CC86, - 0x4A83660, - 0x4AE9F68, - 0x4B5079E, - 0x4BB6F01, - 0x4C1D58F, - 0x4C83B47, - 0x4CEA029, - 0x4D50432, - 0x4DB6763, - 0x4E1C9B9, - 0x4E82B34, - 0x4EE8BD3, - 0x4F4EB94, - 0x4FB4A77, - 0x501A87A, - 0x508059C, - 0x50E61DB, - 0x514BD38, - 0x51B17B1, - 0x5217144, - 0x527C9F1, - 0x52E21B6, - 0x5347892, - 0x53ACE85, - 0x541238D, - 0x54777A9, - 0x54DCAD7, - 0x5541D18, - 0x55A6E69, - 0x560BECA, - 0x5670E39, - 0x56D5CB5, - 0x573AA3E, - 0x579F6D1, - 0x580426F, - 0x5868D16, - 0x58CD6C4, - 0x5931F79, - 0x5996734, - 0x59FADF3, - 0x5A5F3B6, - 0x5AC387B, - 0x5B27C41, - 0x5B8BF07, - 0x5BF00CC, - 0x5C54190, - 0x5CB814F, - 0x5D1C00B, - 0x5D7FDC1, - 0x5DE3A71, - 0x5E47619, - 0x5EAB0B9, - 0x5F0EA4E, - 0x5F722D9, - 0x5FD5A58, - 0x60390CA, - 0x609C62E, - 0x60FFA82, - 0x6162DC7, - 0x61C5FF9, - 0x622911A, - 0x628C126, - 0x62EF01F, - 0x6351E01, - 0x63B4ACC, - 0x6417680, - 0x647A11B, - 0x64DCA9B, - 0x653F301, - 0x65A1A4A, - 0x6604076, - 0x6666583, - 0x66C8971, - 0x672AC3F, - 0x678CDEA, - 0x67EEE73, - 0x6850DD9, - 0x68B2C19, - 0x6914934, - 0x6976527, - 0x69D7FF3, - 0x6A39995, - 0x6A9B20D, - 0x6AFC95A, - 0x6B5DF7B, - 0x6BBF46E, - 0x6C20832, - 0x6C81AC7, - 0x6CE2C2C, - 0x6D43C5F, - 0x6DA4B5F, - 0x6E0592B, - 0x6E665C2, - 0x6EC7123, - 0x6F27B4E, - 0x6F88440, - 0x6FE8BF9, - 0x7049279, - 0x70A97BC, - 0x7109BC4, - 0x7169E8E, - 0x71CA01A, - 0x722A066, - 0x7289F72, - 0x72E9D3D, - 0x73499C4, - 0x73A9508, - 0x7408F08, - 0x74687C1, - 0x74C7F34, - 0x752755F, - 0x7586A41, - 0x75E5DDA, - 0x7645027, - 0x76A4128, - 0x77030DC, - 0x7761F42, - 0x77C0C59, - 0x781F81F, - 0x787E295, - 0x78DCBB8, - 0x793B388, - 0x7999A03, - 0x79F7F29, - 0x7A562F9, - 0x7AB4571, - 0x7B12691, - 0x7B70658, - 0x7BCE4C3, - 0x7C2C1D3, - 0x7C89D87, - 0x7CE77DD, - 0x7D450D4, - 0x7DA286C, - 0x7DFFEA3, - 0x7E5D378, - 0x7EBA6EB, - 0x7F178F9, - 0x7F749A3, - 0x7FD18E7, - 0x802E6C5, - 0x808B33A, - 0x80E7E47, - 0x81447E9, - 0x81A1021, - 0x81FD6ED, - 0x8259C4C, - 0x82B603D, - 0x83122BF, - 0x836E3D1, - 0x83CA372, - 0x84261A1, - 0x8481E5D, - 0x84DD9A5, - 0x8539378, - 0x8594BD5, - 0x85F02BC, - 0x864B82A, - 0x86A6C1F, - 0x8701E9A, - 0x875CF9A, - 0x87B7F1E, - 0x8812D25, - 0x886D9AE, - 0x88C84B8, - 0x8922E42, - 0x897D64B, - 0x89D7CD2, - 0x8A321D6, - 0x8A8C556, - 0x8AE6752, - 0x8B407C7, - 0x8B9A6B5, - 0x8BF441B, - 0x8C4DFF9, - 0x8CA7A4C, - 0x8D01315, - 0x8D5AA52, - 0x8DB4002, - 0x8E0D424, - 0x8E666B8, - 0x8EBF7BB, - 0x8F1872E, - 0x8F71510, - 0x8FCA15E, - 0x9022C19, - 0x907B53F, - 0x90D3CD0, - 0x912C2CA, - 0x918472C, - 0x91DC9F6, - 0x9234B27, - 0x928CABD, - 0x92E48B7, - 0x933C516, - 0x9393FD6, - 0x93EB8F9, - 0x944307C, - 0x949A65F, - 0x94F1AA1, - 0x9548D41, - 0x959FE3E, - 0x95F6D96, - 0x964DB4A, - 0x96A4758, - 0x96FB1BE, - 0x9751A7D, - 0x97A8193, - 0x97FE700, - 0x9854AC1, - 0x98AACD7, - 0x9900D41, - 0x9956BFD, - 0x99AC90A, - 0x9A02468, - 0x9A57E15, - 0x9AAD612, - 0x9B02C5C, - 0x9B580F3, - 0x9BAD3D6, - 0x9C02503, - 0x9C5747B, - 0x9CAC23C, - 0x9D00E45, - 0x9D55895, - 0x9DAA12C, - 0x9DFE808, - 0x9E52D28, - 0x9EA708C, - 0x9EFB233, - 0x9F4F21B, - 0x9FA3044, - 0x9FF6CAD, - 0xA04A755, - 0xA09E03B, - 0xA0F175E, - 0xA144CBD, - 0xA198057, - 0xA1EB22C, - 0xA23E23A, - 0xA291080, - 0xA2E3CFF, - 0xA3367B4, - 0xA38909E, - 0xA3DB7BE, - 0xA42DD12, - 0xA480098, - 0xA4D2251, - 0xA52423C, - 0xA576056, - 0xA5C7CA0, - 0xA619719, - 0xA66AFBF, - 0xA6BC693, - 0xA70DB92, - 0xA75EEBC, - 0xA7B0010, - 0xA800F8E, - 0xA851D34, - 0xA8A2901, - 0xA8F32F5, - 0xA943B0E, - 0xA99414D, - 0xA9E45AF, - 0xAA34835, - 0xAA848DC, - 0xAAD47A5, - 0xAB2448E, - 0xAB73F97, - 0xABC38BF, - 0xAC13004, - 0xAC62566, - 0xACB18E5, - 0xAD00A7E, - 0xAD4FA32, - 0xAD9E7FF, - 0xADED3E5, - 0xAE3BDE3, - 0xAE8A5F7, - 0xAED8C22, - 0xAF27061, - 0xAF752B5, - 0xAFC331D, - 0xB011196, - 0xB05EE22, - 0xB0AC8BE, - 0xB0FA16B, - 0xB147827, - 0xB194CF1, - 0xB1E1FC8, - 0xB22F0AC, - 0xB27BF9C, - 0xB2C8C97, - 0xB31579B, - 0xB3620AA, - 0xB3AE7C0, - 0xB3FACDE, - 0xB447003, - 0xB49312E, - 0xB4DF05D, - 0xB52AD91, - 0xB5768C9, - 0xB5C2203, - 0xB60D93E, - 0xB658E7B, - 0xB6A41B8, - 0xB6EF2F4, - 0xB73A22E, - 0xB784F66, - 0xB7CFA9B, - 0xB81A3CC, - 0xB864AF8, - 0xB8AF01E, - 0xB8F933E, - 0xB943456, - 0xB98D367, - 0xB9D706E, - 0xBA20B6C, - 0xBA6A45F, - 0xBAB3B47, - 0xBAFD023, - 0xBB462F2, - 0xBB8F3B3, - 0xBBD8266, - 0xBC20F09, - 0xBC6999C, - 0xBCB221E, - 0xBCFA88F, - 0xBD42CED, - 0xBD8AF37, - 0xBDD2F6E, - 0xBE1AD8F, - 0xBE6299B, - 0xBEAA390, - 0xBEF1B6E, - 0xBF39135, - 0xBF804E2, - 0xBFC7675, - 0xC00E5EF, - 0xC05534D, - 0xC09BE8F, - 0xC0E27B4, - 0xC128EBC, - 0xC16F3A6, - 0xC1B5670, - 0xC1FB71B, - 0xC2415A5, - 0xC28720E, - 0xC2CCC55, - 0xC312479, - 0xC357A79, - 0xC39CE55, - 0xC3E200C, - 0xC426F9C, - 0xC46BD06, - 0xC4B0849, - 0xC4F5164, - 0xC539855, - 0xC57DD1D, - 0xC5C1FBB, - 0xC60602D, - 0xC649E73, - 0xC68DA8D, - 0xC6D1479, - 0xC714C37, - 0xC7581C7, - 0xC79B526, - 0xC7DE656, - 0xC821554, - 0xC864220, - 0xC8A6CBA, - 0xC8E9520, - 0xC92BB53, - 0xC96DF50, - 0xC9B0119, - 0xC9F20AB, - 0xCA33E06, - 0xCA75929, - 0xCAB7214, - 0xCAF88C6, - 0xCB39D3E, - 0xCB7AF7C, - 0xCBBBF7E, - 0xCBFCD44, - 0xCC3D8CE, - 0xCC7E21B, - 0xCCBE929, - 0xCCFEDF8, - 0xCD3F088, - 0xCD7F0D8, - 0xCDBEEE7, - 0xCDFEAB4, - 0xCE3E43F, - 0xCE7DB87, - 0xCEBD08B, - 0xCEFC34B, - 0xCF3B3C6, - 0xCF7A1FB, - 0xCFB8DEA, - 0xCFF7791, - 0xD035EF1, - 0xD074408, - 0xD0B26D6, - 0xD0F075A, - 0xD12E593, - 0xD16C181, - 0xD1A9B24, - 0xD1E7279, - 0xD224782, - 0xD261A3C, - 0xD29EAA8, - 0xD2DB8C5, - 0xD318491, - 0xD354E0D, - 0xD391538, - 0xD3CDA11, - 0xD409C97, - 0xD445CCA, - 0xD481AA8, - 0xD4BD633, - 0xD4F8F68, - 0xD534647, - 0xD56FAD0, - 0xD5AAD01, - 0xD5E5CDB, - 0xD620A5C, - 0xD65B584, - 0xD695E53, - 0xD6D04C6, - 0xD70A8DF, - 0xD744A9C, - 0xD77E9FD, - 0xD7B8701, - 0xD7F21A7, - 0xD82B9EF, - 0xD864FD8, - 0xD89E362, - 0xD8D748B, - 0xD910354, - 0xD948FBB, - 0xD9819C1, - 0xD9BA163, - 0xD9F26A3, - 0xDA2A97F, - 0xDA629F6, - 0xDA9A808, - 0xDAD23B4, - 0xDB09CFA, - 0xDB413DA, - 0xDB78851, - 0xDBAFA61, - 0xDBE6A07, - 0xDC1D745, - 0xDC54218, - 0xDC8AA81, - 0xDCC107F, - 0xDCF7411, - 0xDD2D537, - 0xDD633F0, - 0xDD9903B, - 0xDDCEA18, - 0xDE04187, - 0xDE39686, - 0xDE6E916, - 0xDEA3934, - 0xDED86E2, - 0xDF0D21F, - 0xDF41AE9, - 0xDF76140, - 0xDFAA524, - 0xDFDE694, - 0xE012590, - 0xE046217, - 0xE079C28, - 0xE0AD3C2, - 0xE0E08E6, - 0xE113B93, - 0xE146BC8, - 0xE179984, - 0xE1AC4C8, - 0xE1DED92, - 0xE2113E2, - 0xE2437B7, - 0xE275911, - 0xE2A77EF, - 0xE2D9451, - 0xE30AE36, - 0xE33C59E, - 0xE36DA87, - 0xE39ECF3, - 0xE3CFCDF, - 0xE400A4B, - 0xE431538, - 0xE461DA4, - 0xE49238F, - 0xE4C26F8, - 0xE4F27DF, - 0xE522643, - 0xE552224, - 0xE581B82, - 0xE5B125A, - 0xE5E06AE, - 0xE60F87D, - 0xE63E7C6, - 0xE66D488, - 0xE69BEC4, - 0xE6CA678, - 0xE6F8BA4, - 0xE726E48, - 0xE754E63, - 0xE782BF5, - 0xE7B06FC, - 0xE7DDF79, - 0xE80B56C, - 0xE8388D2, - 0xE8659AD, - 0xE8927FC, - 0xE8BF3BD, - 0xE8EBCF1, - 0xE918397, - 0xE9447AF, - 0xE970938, - 0xE99C832, - 0xE9C849C, - 0xE9F3E75, - 0xEA1F5BE, - 0xEA4AA75, - 0xEA75C9B, - 0xEAA0C2E, - 0xEACB92F, - 0xEAF639D, - 0xEB20B77, - 0xEB4B0BD, - 0xEB7536E, - 0xEB9F38B, - 0xEBC9111, - 0xEBF2C02, - 0xEC1C45D, - 0xEC45A21, - 0xEC6ED4D, - 0xEC97DE2, - 0xECC0BDE, - 0xECE9742, - 0xED1200D, - 0xED3A63E, - 0xED629D5, - 0xED8AAD2, - 0xEDB2934, - 0xEDDA4FB, - 0xEE01E25, - 0xEE294B4, - 0xEE508A6, - 0xEE779FB, - 0xEE9E8B3, - 0xEEC54CD, - 0xEEEBE48, - 0xEF12525, - 0xEF38962, - 0xEF5EB00, - 0xEF849FE, - 0xEFAA65C, - 0xEFD0018, - 0xEFF5734, - 0xF01ABAE, - 0xF03FD85, - 0xF064CBB, - 0xF08994D, - 0xF0AE33C, - 0xF0D2A88, - 0xF0F6F2F, - 0xF11B132, - 0xF13F090, - 0xF162D49, - 0xF18675C, - 0xF1A9EC9, - 0xF1CD390, - 0xF1F05AF, - 0xF213528, - 0xF2361F9, - 0xF258C22, - 0xF27B3A3, - 0xF29D87B, - 0xF2BFAAA, - 0xF2E1A2F, - 0xF30370B, - 0xF32513C, - 0xF3468C3, - 0xF367D9E, - 0xF388FCF, - 0xF3A9F54, - 0xF3CAC2C, - 0xF3EB658, - 0xF40BDD8, - 0xF42C2AA, - 0xF44C4CF, - 0xF46C446, - 0xF48C10F, - 0xF4ABB2A, - 0xF4CB295, - 0xF4EA751, - 0xF50995E, - 0xF5288BB, - 0xF547567, - 0xF565F63, - 0xF5846AE, - 0xF5A2B48, - 0xF5C0D30, - 0xF5DEC67, - 0xF5FC8EB, - 0xF61A2BC, - 0xF6379DB, - 0xF654E46, - 0xF671FFE, - 0xF68EF02, - 0xF6ABB52, - 0xF6C84ED, - 0xF6E4BD3, - 0xF701005, - 0xF71D181, - 0xF739047, - 0xF754C57, - 0xF7705B1, - 0xF78BC54, - 0xF7A7040, - 0xF7C2175, - 0xF7DCFF3, - 0xF7F7BB8, - 0xF8124C6, - 0xF82CB1B, - 0xF846EB7, - 0xF860F9A, - 0xF87ADC4, - 0xF894935, - 0xF8AE1EB, - 0xF8C77E8, - 0xF8E0B2A, - 0xF8F9BB1, - 0xF91297E, - 0xF92B48F, - 0xF943CE4, - 0xF95C27E, - 0xF97455C, - 0xF98C57E, - 0xF9A42E3, - 0xF9BBD8B, - 0xF9D3576, - 0xF9EAAA3, - 0xFA01D14, - 0xFA18CC6, - 0xFA2F9BA, - 0xFA463F0, - 0xFA5CB67, - 0xFA7301F, - 0xFA89218, - 0xFA9F152, - 0xFAB4DCC, - 0xFACA787, - 0xFADFE81, - 0xFAF52BB, - 0xFB0A435, - 0xFB1F2EE, - 0xFB33EE6, - 0xFB4881C, - 0xFB5CE91, - 0xFB71245, - 0xFB85337, - 0xFB99166, - 0xFBACCD3, - 0xFBC057E, - 0xFBD3B66, - 0xFBE6E8B, - 0xFBF9EEC, - 0xFC0CC8B, - 0xFC1F766, - 0xFC31F7D, - 0xFC444CF, - 0xFC5675E, - 0xFC68729, - 0xFC7A42E, - 0xFC8BE6F, - 0xFC9D5EB, - 0xFCAEAA2, - 0xFCBFC94, - 0xFCD0BBF, - 0xFCE1826, - 0xFCF21C6, - 0xFD028A0, - 0xFD12CB4, - 0xFD22E01, - 0xFD32C88, - 0xFD42848, - 0xFD52141, - 0xFD61772, - 0xFD70ADD, - 0xFD7FB80, - 0xFD8E95B, - 0xFD9D46E, - 0xFDABCBA, - 0xFDBA23D, - 0xFDC84F8, - 0xFDD64EB, - 0xFDE4214, - 0xFDF1C76, - 0xFDFF40E, - 0xFE0C8DD, - 0xFE19AE3, - 0xFE26A20, - 0xFE33693, - 0xFE4003C, - 0xFE4C71C, - 0xFE58B32, - 0xFE64C7E, - 0xFE70AFF, - 0xFE7C6B7, - 0xFE87FA4, - 0xFE935C6, - 0xFE9E91E, - 0xFEA99AA, - 0xFEB476C, - 0xFEBF263, - 0xFEC9A8F, - 0xFED3FEF, - 0xFEDE284, - 0xFEE824E, - 0xFEF1F4C, - 0xFEFB97E, - 0xFF050E4, - 0xFF0E57F, - 0xFF1774D, - 0xFF2064F, - 0xFF29286, - 0xFF31BEF, - 0xFF3A28D, - 0xFF4265D, - 0xFF4A761, - 0xFF52599, - 0xFF5A104, - 0xFF619A2, - 0xFF68F72, - 0xFF70276, - 0xFF772AD, - 0xFF7E017, - 0xFF84AB3, - 0xFF8B282, - 0xFF91784, - 0xFF979B8, - 0xFF9D91E, - 0xFFA35B7, - 0xFFA8F83, - 0xFFAE680, - 0xFFB3AB0, - 0xFFB8C12, - 0xFFBDAA6, - 0xFFC266C, - 0xFFC6F64, - 0xFFCB58E, - 0xFFCF8EA, - 0xFFD3978, - 0xFFD7738, - 0xFFDB229, - 0xFFDEA4C, - 0xFFE1FA1, - 0xFFE5227, - 0xFFE81DF, - 0xFFEAEC9, - 0xFFED8E4, - 0xFFF0030, - 0xFFF24AF, - 0xFFF465E, - 0xFFF653F, - 0xFFF8152, - 0xFFF9A96, - 0xFFFB10B, - 0xFFFC4B2, - 0xFFFD58A, - 0xFFFE393, - 0xFFFEECE, - 0xFFFF73A, - 0xFFFFCD7, - 0xFFFFFA6 + COEF_CONST(0.0008181230), + COEF_CONST(0.0024543669), + COEF_CONST(0.0040906041), + COEF_CONST(0.0057268305), + COEF_CONST(0.0073630415), + COEF_CONST(0.0089992327), + COEF_CONST(0.0106353999), + COEF_CONST(0.0122715386), + COEF_CONST(0.0139076445), + COEF_CONST(0.0155437131), + COEF_CONST(0.0171797401), + COEF_CONST(0.0188157211), + COEF_CONST(0.0204516518), + COEF_CONST(0.0220875276), + COEF_CONST(0.0237233444), + COEF_CONST(0.0253590976), + COEF_CONST(0.0269947829), + COEF_CONST(0.0286303960), + COEF_CONST(0.0302659324), + COEF_CONST(0.0319013878), + COEF_CONST(0.0335367578), + COEF_CONST(0.0351720379), + COEF_CONST(0.0368072240), + COEF_CONST(0.0384423114), + COEF_CONST(0.0400772960), + COEF_CONST(0.0417121732), + COEF_CONST(0.0433469388), + COEF_CONST(0.0449815883), + COEF_CONST(0.0466161174), + COEF_CONST(0.0482505217), + COEF_CONST(0.0498847968), + COEF_CONST(0.0515189384), + COEF_CONST(0.0531529420), + COEF_CONST(0.0547868033), + COEF_CONST(0.0564205179), + COEF_CONST(0.0580540815), + COEF_CONST(0.0596874897), + COEF_CONST(0.0613207380), + COEF_CONST(0.0629538222), + COEF_CONST(0.0645867378), + COEF_CONST(0.0662194805), + COEF_CONST(0.0678520459), + COEF_CONST(0.0694844297), + COEF_CONST(0.0711166274), + COEF_CONST(0.0727486347), + COEF_CONST(0.0743804473), + COEF_CONST(0.0760120607), + COEF_CONST(0.0776434706), + COEF_CONST(0.0792746727), + COEF_CONST(0.0809056625), + COEF_CONST(0.0825364356), + COEF_CONST(0.0841669879), + COEF_CONST(0.0857973147), + COEF_CONST(0.0874274119), + COEF_CONST(0.0890572750), + COEF_CONST(0.0906868996), + COEF_CONST(0.0923162815), + COEF_CONST(0.0939454162), + COEF_CONST(0.0955742994), + COEF_CONST(0.0972029267), + COEF_CONST(0.0988312938), + COEF_CONST(0.1004593962), + COEF_CONST(0.1020872297), + COEF_CONST(0.1037147899), + COEF_CONST(0.1053420724), + COEF_CONST(0.1069690729), + COEF_CONST(0.1085957870), + COEF_CONST(0.1102222103), + COEF_CONST(0.1118483386), + COEF_CONST(0.1134741674), + COEF_CONST(0.1150996924), + COEF_CONST(0.1167249092), + COEF_CONST(0.1183498135), + COEF_CONST(0.1199744010), + COEF_CONST(0.1215986673), + COEF_CONST(0.1232226080), + COEF_CONST(0.1248462188), + COEF_CONST(0.1264694953), + COEF_CONST(0.1280924333), + COEF_CONST(0.1297150283), + COEF_CONST(0.1313372760), + COEF_CONST(0.1329591721), + COEF_CONST(0.1345807122), + COEF_CONST(0.1362018920), + COEF_CONST(0.1378227072), + COEF_CONST(0.1394431534), + COEF_CONST(0.1410632262), + COEF_CONST(0.1426829214), + COEF_CONST(0.1443022345), + COEF_CONST(0.1459211613), + COEF_CONST(0.1475396975), + COEF_CONST(0.1491578386), + COEF_CONST(0.1507755804), + COEF_CONST(0.1523929185), + COEF_CONST(0.1540098486), + COEF_CONST(0.1556263664), + COEF_CONST(0.1572424676), + COEF_CONST(0.1588581477), + COEF_CONST(0.1604734026), + COEF_CONST(0.1620882278), + COEF_CONST(0.1637026190), + COEF_CONST(0.1653165720), + COEF_CONST(0.1669300823), + COEF_CONST(0.1685431457), + COEF_CONST(0.1701557579), + COEF_CONST(0.1717679146), + COEF_CONST(0.1733796113), + COEF_CONST(0.1749908439), + COEF_CONST(0.1766016080), + COEF_CONST(0.1782118992), + COEF_CONST(0.1798217134), + COEF_CONST(0.1814310460), + COEF_CONST(0.1830398930), + COEF_CONST(0.1846482499), + COEF_CONST(0.1862561124), + COEF_CONST(0.1878634763), + COEF_CONST(0.1894703372), + COEF_CONST(0.1910766908), + COEF_CONST(0.1926825329), + COEF_CONST(0.1942878591), + COEF_CONST(0.1958926651), + COEF_CONST(0.1974969467), + COEF_CONST(0.1991006995), + COEF_CONST(0.2007039192), + COEF_CONST(0.2023066016), + COEF_CONST(0.2039087424), + COEF_CONST(0.2055103372), + COEF_CONST(0.2071113819), + COEF_CONST(0.2087118720), + COEF_CONST(0.2103118034), + COEF_CONST(0.2119111716), + COEF_CONST(0.2135099726), + COEF_CONST(0.2151082019), + COEF_CONST(0.2167058553), + COEF_CONST(0.2183029285), + COEF_CONST(0.2198994172), + COEF_CONST(0.2214953172), + COEF_CONST(0.2230906242), + COEF_CONST(0.2246853339), + COEF_CONST(0.2262794421), + COEF_CONST(0.2278729444), + COEF_CONST(0.2294658367), + COEF_CONST(0.2310581146), + COEF_CONST(0.2326497739), + COEF_CONST(0.2342408103), + COEF_CONST(0.2358312196), + COEF_CONST(0.2374209975), + COEF_CONST(0.2390101398), + COEF_CONST(0.2405986421), + COEF_CONST(0.2421865003), + COEF_CONST(0.2437737101), + COEF_CONST(0.2453602672), + COEF_CONST(0.2469461675), + COEF_CONST(0.2485314066), + COEF_CONST(0.2501159802), + COEF_CONST(0.2516998843), + COEF_CONST(0.2532831145), + COEF_CONST(0.2548656665), + COEF_CONST(0.2564475362), + COEF_CONST(0.2580287194), + COEF_CONST(0.2596092117), + COEF_CONST(0.2611890089), + COEF_CONST(0.2627681069), + COEF_CONST(0.2643465014), + COEF_CONST(0.2659241881), + COEF_CONST(0.2675011628), + COEF_CONST(0.2690774214), + COEF_CONST(0.2706529596), + COEF_CONST(0.2722277732), + COEF_CONST(0.2738018579), + COEF_CONST(0.2753752096), + COEF_CONST(0.2769478240), + COEF_CONST(0.2785196969), + COEF_CONST(0.2800908242), + COEF_CONST(0.2816612016), + COEF_CONST(0.2832308248), + COEF_CONST(0.2847996898), + COEF_CONST(0.2863677923), + COEF_CONST(0.2879351281), + COEF_CONST(0.2895016930), + COEF_CONST(0.2910674829), + COEF_CONST(0.2926324934), + COEF_CONST(0.2941967205), + COEF_CONST(0.2957601599), + COEF_CONST(0.2973228075), + COEF_CONST(0.2988846591), + COEF_CONST(0.3004457105), + COEF_CONST(0.3020059575), + COEF_CONST(0.3035653959), + COEF_CONST(0.3051240216), + COEF_CONST(0.3066818303), + COEF_CONST(0.3082388180), + COEF_CONST(0.3097949805), + COEF_CONST(0.3113503135), + COEF_CONST(0.3129048130), + COEF_CONST(0.3144584747), + COEF_CONST(0.3160112945), + COEF_CONST(0.3175632683), + COEF_CONST(0.3191143918), + COEF_CONST(0.3206646610), + COEF_CONST(0.3222140717), + COEF_CONST(0.3237626197), + COEF_CONST(0.3253103009), + COEF_CONST(0.3268571111), + COEF_CONST(0.3284030463), + COEF_CONST(0.3299481022), + COEF_CONST(0.3314922747), + COEF_CONST(0.3330355597), + COEF_CONST(0.3345779531), + COEF_CONST(0.3361194508), + COEF_CONST(0.3376600485), + COEF_CONST(0.3391997422), + COEF_CONST(0.3407385278), + COEF_CONST(0.3422764011), + COEF_CONST(0.3438133581), + COEF_CONST(0.3453493945), + COEF_CONST(0.3468845064), + COEF_CONST(0.3484186895), + COEF_CONST(0.3499519398), + COEF_CONST(0.3514842532), + COEF_CONST(0.3530156256), + COEF_CONST(0.3545460528), + COEF_CONST(0.3560755308), + COEF_CONST(0.3576040555), + COEF_CONST(0.3591316228), + COEF_CONST(0.3606582285), + COEF_CONST(0.3621838687), + COEF_CONST(0.3637085392), + COEF_CONST(0.3652322359), + COEF_CONST(0.3667549548), + COEF_CONST(0.3682766918), + COEF_CONST(0.3697974428), + COEF_CONST(0.3713172038), + COEF_CONST(0.3728359706), + COEF_CONST(0.3743537392), + COEF_CONST(0.3758705056), + COEF_CONST(0.3773862656), + COEF_CONST(0.3789010153), + COEF_CONST(0.3804147505), + COEF_CONST(0.3819274673), + COEF_CONST(0.3834391615), + COEF_CONST(0.3849498291), + COEF_CONST(0.3864594661), + COEF_CONST(0.3879680685), + COEF_CONST(0.3894756321), + COEF_CONST(0.3909821530), + COEF_CONST(0.3924876271), + COEF_CONST(0.3939920504), + COEF_CONST(0.3954954189), + COEF_CONST(0.3969977285), + COEF_CONST(0.3984989752), + COEF_CONST(0.3999991550), + COEF_CONST(0.4014982640), + COEF_CONST(0.4029962979), + COEF_CONST(0.4044932530), + COEF_CONST(0.4059891250), + COEF_CONST(0.4074839102), + COEF_CONST(0.4089776043), + COEF_CONST(0.4104702036), + COEF_CONST(0.4119617038), + COEF_CONST(0.4134521011), + COEF_CONST(0.4149413915), + COEF_CONST(0.4164295710), + COEF_CONST(0.4179166355), + COEF_CONST(0.4194025812), + COEF_CONST(0.4208874040), + COEF_CONST(0.4223710999), + COEF_CONST(0.4238536651), + COEF_CONST(0.4253350954), + COEF_CONST(0.4268153870), + COEF_CONST(0.4282945359), + COEF_CONST(0.4297725381), + COEF_CONST(0.4312493897), + COEF_CONST(0.4327250867), + COEF_CONST(0.4341996252), + COEF_CONST(0.4356730012), + COEF_CONST(0.4371452107), + COEF_CONST(0.4386162499), + COEF_CONST(0.4400861148), + COEF_CONST(0.4415548014), + COEF_CONST(0.4430223059), + COEF_CONST(0.4444886242), + COEF_CONST(0.4459537525), + COEF_CONST(0.4474176869), + COEF_CONST(0.4488804234), + COEF_CONST(0.4503419581), + COEF_CONST(0.4518022871), + COEF_CONST(0.4532614065), + COEF_CONST(0.4547193124), + COEF_CONST(0.4561760009), + COEF_CONST(0.4576314680), + COEF_CONST(0.4590857100), + COEF_CONST(0.4605387228), + COEF_CONST(0.4619905026), + COEF_CONST(0.4634410455), + COEF_CONST(0.4648903477), + COEF_CONST(0.4663384052), + COEF_CONST(0.4677852142), + COEF_CONST(0.4692307707), + COEF_CONST(0.4706750710), + COEF_CONST(0.4721181112), + COEF_CONST(0.4735598874), + COEF_CONST(0.4750003957), + COEF_CONST(0.4764396322), + COEF_CONST(0.4778775932), + COEF_CONST(0.4793142748), + COEF_CONST(0.4807496731), + COEF_CONST(0.4821837843), + COEF_CONST(0.4836166046), + COEF_CONST(0.4850481301), + COEF_CONST(0.4864783569), + COEF_CONST(0.4879072813), + COEF_CONST(0.4893348994), + COEF_CONST(0.4907612075), + COEF_CONST(0.4921862016), + COEF_CONST(0.4936098779), + COEF_CONST(0.4950322328), + COEF_CONST(0.4964532623), + COEF_CONST(0.4978729626), + COEF_CONST(0.4992913300), + COEF_CONST(0.5007083606), + COEF_CONST(0.5021240507), + COEF_CONST(0.5035383964), + COEF_CONST(0.5049513940), + COEF_CONST(0.5063630397), + COEF_CONST(0.5077733298), + COEF_CONST(0.5091822603), + COEF_CONST(0.5105898276), + COEF_CONST(0.5119960280), + COEF_CONST(0.5134008575), + COEF_CONST(0.5148043125), + COEF_CONST(0.5162063893), + COEF_CONST(0.5176070840), + COEF_CONST(0.5190063929), + COEF_CONST(0.5204043123), + COEF_CONST(0.5218008384), + COEF_CONST(0.5231959674), + COEF_CONST(0.5245896958), + COEF_CONST(0.5259820196), + COEF_CONST(0.5273729352), + COEF_CONST(0.5287624389), + COEF_CONST(0.5301505270), + COEF_CONST(0.5315371956), + COEF_CONST(0.5329224412), + COEF_CONST(0.5343062600), + COEF_CONST(0.5356886483), + COEF_CONST(0.5370696023), + COEF_CONST(0.5384491185), + COEF_CONST(0.5398271931), + COEF_CONST(0.5412038224), + COEF_CONST(0.5425790028), + COEF_CONST(0.5439527305), + COEF_CONST(0.5453250019), + COEF_CONST(0.5466958133), + COEF_CONST(0.5480651610), + COEF_CONST(0.5494330413), + COEF_CONST(0.5507994507), + COEF_CONST(0.5521643854), + COEF_CONST(0.5535278418), + COEF_CONST(0.5548898163), + COEF_CONST(0.5562503051), + COEF_CONST(0.5576093047), + COEF_CONST(0.5589668114), + COEF_CONST(0.5603228216), + COEF_CONST(0.5616773317), + COEF_CONST(0.5630303379), + COEF_CONST(0.5643818368), + COEF_CONST(0.5657318246), + COEF_CONST(0.5670802978), + COEF_CONST(0.5684272527), + COEF_CONST(0.5697726858), + COEF_CONST(0.5711165935), + COEF_CONST(0.5724589721), + COEF_CONST(0.5737998180), + COEF_CONST(0.5751391277), + COEF_CONST(0.5764768976), + COEF_CONST(0.5778131241), + COEF_CONST(0.5791478036), + COEF_CONST(0.5804809326), + COEF_CONST(0.5818125074), + COEF_CONST(0.5831425246), + COEF_CONST(0.5844709805), + COEF_CONST(0.5857978716), + COEF_CONST(0.5871231943), + COEF_CONST(0.5884469451), + COEF_CONST(0.5897691205), + COEF_CONST(0.5910897169), + COEF_CONST(0.5924087308), + COEF_CONST(0.5937261586), + COEF_CONST(0.5950419968), + COEF_CONST(0.5963562420), + COEF_CONST(0.5976688905), + COEF_CONST(0.5989799388), + COEF_CONST(0.6002893835), + COEF_CONST(0.6015972211), + COEF_CONST(0.6029034480), + COEF_CONST(0.6042080607), + COEF_CONST(0.6055110558), + COEF_CONST(0.6068124298), + COEF_CONST(0.6081121791), + COEF_CONST(0.6094103003), + COEF_CONST(0.6107067900), + COEF_CONST(0.6120016446), + COEF_CONST(0.6132948607), + COEF_CONST(0.6145864349), + COEF_CONST(0.6158763636), + COEF_CONST(0.6171646434), + COEF_CONST(0.6184512709), + COEF_CONST(0.6197362426), + COEF_CONST(0.6210195550), + COEF_CONST(0.6223012049), + COEF_CONST(0.6235811886), + COEF_CONST(0.6248595028), + COEF_CONST(0.6261361441), + COEF_CONST(0.6274111090), + COEF_CONST(0.6286843942), + COEF_CONST(0.6299559962), + COEF_CONST(0.6312259115), + COEF_CONST(0.6324941370), + COEF_CONST(0.6337606690), + COEF_CONST(0.6350255043), + COEF_CONST(0.6362886394), + COEF_CONST(0.6375500710), + COEF_CONST(0.6388097956), + COEF_CONST(0.6400678100), + COEF_CONST(0.6413241107), + COEF_CONST(0.6425786945), + COEF_CONST(0.6438315578), + COEF_CONST(0.6450826974), + COEF_CONST(0.6463321099), + COEF_CONST(0.6475797920), + COEF_CONST(0.6488257403), + COEF_CONST(0.6500699516), + COEF_CONST(0.6513124223), + COEF_CONST(0.6525531494), + COEF_CONST(0.6537921293), + COEF_CONST(0.6550293589), + COEF_CONST(0.6562648347), + COEF_CONST(0.6574985536), + COEF_CONST(0.6587305121), + COEF_CONST(0.6599607069), + COEF_CONST(0.6611891349), + COEF_CONST(0.6624157927), + COEF_CONST(0.6636406770), + COEF_CONST(0.6648637845), + COEF_CONST(0.6660851120), + COEF_CONST(0.6673046561), + COEF_CONST(0.6685224137), + COEF_CONST(0.6697383815), + COEF_CONST(0.6709525561), + COEF_CONST(0.6721649344), + COEF_CONST(0.6733755132), + COEF_CONST(0.6745842891), + COEF_CONST(0.6757912589), + COEF_CONST(0.6769964195), + COEF_CONST(0.6781997675), + COEF_CONST(0.6794012997), + COEF_CONST(0.6806010131), + COEF_CONST(0.6817989042), + COEF_CONST(0.6829949700), + COEF_CONST(0.6841892071), + COEF_CONST(0.6853816125), + COEF_CONST(0.6865721829), + COEF_CONST(0.6877609152), + COEF_CONST(0.6889478061), + COEF_CONST(0.6901328525), + COEF_CONST(0.6913160512), + COEF_CONST(0.6924973990), + COEF_CONST(0.6936768929), + COEF_CONST(0.6948545295), + COEF_CONST(0.6960303058), + COEF_CONST(0.6972042186), + COEF_CONST(0.6983762648), + COEF_CONST(0.6995464412), + COEF_CONST(0.7007147448), + COEF_CONST(0.7018811723), + COEF_CONST(0.7030457206), + COEF_CONST(0.7042083867), + COEF_CONST(0.7053691674), + COEF_CONST(0.7065280597), + COEF_CONST(0.7076850603), + COEF_CONST(0.7088401663), + COEF_CONST(0.7099933745), + COEF_CONST(0.7111446818), + COEF_CONST(0.7122940851), + COEF_CONST(0.7134415815), + COEF_CONST(0.7145871677), + COEF_CONST(0.7157308408), + COEF_CONST(0.7168725976), + COEF_CONST(0.7180124352), + COEF_CONST(0.7191503504), + COEF_CONST(0.7202863403), + COEF_CONST(0.7214204017), + COEF_CONST(0.7225525317), + COEF_CONST(0.7236827271), + COEF_CONST(0.7248109851), + COEF_CONST(0.7259373025), + COEF_CONST(0.7270616764), + COEF_CONST(0.7281841037), + COEF_CONST(0.7293045814), + COEF_CONST(0.7304231066), + COEF_CONST(0.7315396762), + COEF_CONST(0.7326542872), + COEF_CONST(0.7337669368), + COEF_CONST(0.7348776218), + COEF_CONST(0.7359863393), + COEF_CONST(0.7370930863), + COEF_CONST(0.7381978600), + COEF_CONST(0.7393006572), + COEF_CONST(0.7404014752), + COEF_CONST(0.7415003108), + COEF_CONST(0.7425971612), + COEF_CONST(0.7436920235), + COEF_CONST(0.7447848947), + COEF_CONST(0.7458757719), + COEF_CONST(0.7469646521), + COEF_CONST(0.7480515325), + COEF_CONST(0.7491364101), + COEF_CONST(0.7502192821), + COEF_CONST(0.7513001455), + COEF_CONST(0.7523789975), + COEF_CONST(0.7534558351), + COEF_CONST(0.7545306554), + COEF_CONST(0.7556034557), + COEF_CONST(0.7566742330), + COEF_CONST(0.7577429844), + COEF_CONST(0.7588097072), + COEF_CONST(0.7598743984), + COEF_CONST(0.7609370551), + COEF_CONST(0.7619976746), + COEF_CONST(0.7630562540), + COEF_CONST(0.7641127905), + COEF_CONST(0.7651672812), + COEF_CONST(0.7662197234), + COEF_CONST(0.7672701141), + COEF_CONST(0.7683184506), + COEF_CONST(0.7693647301), + COEF_CONST(0.7704089498), + COEF_CONST(0.7714511069), + COEF_CONST(0.7724911985), + COEF_CONST(0.7735292220), + COEF_CONST(0.7745651745), + COEF_CONST(0.7755990532), + COEF_CONST(0.7766308555), + COEF_CONST(0.7776605784), + COEF_CONST(0.7786882194), + COEF_CONST(0.7797137755), + COEF_CONST(0.7807372441), + COEF_CONST(0.7817586225), + COEF_CONST(0.7827779079), + COEF_CONST(0.7837950975), + COEF_CONST(0.7848101886), + COEF_CONST(0.7858231786), + COEF_CONST(0.7868340647), + COEF_CONST(0.7878428442), + COEF_CONST(0.7888495145), + COEF_CONST(0.7898540727), + COEF_CONST(0.7908565162), + COEF_CONST(0.7918568424), + COEF_CONST(0.7928550486), + COEF_CONST(0.7938511320), + COEF_CONST(0.7948450901), + COEF_CONST(0.7958369201), + COEF_CONST(0.7968266194), + COEF_CONST(0.7978141854), + COEF_CONST(0.7987996154), + COEF_CONST(0.7997829068), + COEF_CONST(0.8007640569), + COEF_CONST(0.8017430631), + COEF_CONST(0.8027199228), + COEF_CONST(0.8036946334), + COEF_CONST(0.8046671923), + COEF_CONST(0.8056375968), + COEF_CONST(0.8066058444), + COEF_CONST(0.8075719325), + COEF_CONST(0.8085358584), + COEF_CONST(0.8094976197), + COEF_CONST(0.8104572137), + COEF_CONST(0.8114146378), + COEF_CONST(0.8123698896), + COEF_CONST(0.8133229663), + COEF_CONST(0.8142738656), + COEF_CONST(0.8152225848), + COEF_CONST(0.8161691215), + COEF_CONST(0.8171134730), + COEF_CONST(0.8180556368), + COEF_CONST(0.8189956104), + COEF_CONST(0.8199333914), + COEF_CONST(0.8208689772), + COEF_CONST(0.8218023652), + COEF_CONST(0.8227335530), + COEF_CONST(0.8236625381), + COEF_CONST(0.8245893180), + COEF_CONST(0.8255138903), + COEF_CONST(0.8264362524), + COEF_CONST(0.8273564019), + COEF_CONST(0.8282743363), + COEF_CONST(0.8291900531), + COEF_CONST(0.8301035500), + COEF_CONST(0.8310148244), + COEF_CONST(0.8319238740), + COEF_CONST(0.8328306962), + COEF_CONST(0.8337352887), + COEF_CONST(0.8346376491), + COEF_CONST(0.8355377749), + COEF_CONST(0.8364356636), + COEF_CONST(0.8373313130), + COEF_CONST(0.8382247206), + COEF_CONST(0.8391158841), + COEF_CONST(0.8400048009), + COEF_CONST(0.8408914688), + COEF_CONST(0.8417758854), + COEF_CONST(0.8426580483), + COEF_CONST(0.8435379552), + COEF_CONST(0.8444156036), + COEF_CONST(0.8452909913), + COEF_CONST(0.8461641159), + COEF_CONST(0.8470349751), + COEF_CONST(0.8479035665), + COEF_CONST(0.8487698878), + COEF_CONST(0.8496339367), + COEF_CONST(0.8504957108), + COEF_CONST(0.8513552080), + COEF_CONST(0.8522124258), + COEF_CONST(0.8530673619), + COEF_CONST(0.8539200142), + COEF_CONST(0.8547703802), + COEF_CONST(0.8556184578), + COEF_CONST(0.8564642446), + COEF_CONST(0.8573077384), + COEF_CONST(0.8581489370), + COEF_CONST(0.8589878380), + COEF_CONST(0.8598244392), + COEF_CONST(0.8606587385), + COEF_CONST(0.8614907335), + COEF_CONST(0.8623204220), + COEF_CONST(0.8631478018), + COEF_CONST(0.8639728707), + COEF_CONST(0.8647956265), + COEF_CONST(0.8656160670), + COEF_CONST(0.8664341900), + COEF_CONST(0.8672499933), + COEF_CONST(0.8680634747), + COEF_CONST(0.8688746320), + COEF_CONST(0.8696834631), + COEF_CONST(0.8704899657), + COEF_CONST(0.8712941378), + COEF_CONST(0.8720959772), + COEF_CONST(0.8728954818), + COEF_CONST(0.8736926493), + COEF_CONST(0.8744874777), + COEF_CONST(0.8752799648), + COEF_CONST(0.8760701085), + COEF_CONST(0.8768579067), + COEF_CONST(0.8776433574), + COEF_CONST(0.8784264583), + COEF_CONST(0.8792072074), + COEF_CONST(0.8799856025), + COEF_CONST(0.8807616417), + COEF_CONST(0.8815353229), + COEF_CONST(0.8823066439), + COEF_CONST(0.8830756027), + COEF_CONST(0.8838421972), + COEF_CONST(0.8846064254), + COEF_CONST(0.8853682853), + COEF_CONST(0.8861277748), + COEF_CONST(0.8868848918), + COEF_CONST(0.8876396344), + COEF_CONST(0.8883920005), + COEF_CONST(0.8891419881), + COEF_CONST(0.8898895952), + COEF_CONST(0.8906348198), + COEF_CONST(0.8913776599), + COEF_CONST(0.8921181136), + COEF_CONST(0.8928561787), + COEF_CONST(0.8935918534), + COEF_CONST(0.8943251357), + COEF_CONST(0.8950560237), + COEF_CONST(0.8957845152), + COEF_CONST(0.8965106085), + COEF_CONST(0.8972343016), + COEF_CONST(0.8979555925), + COEF_CONST(0.8986744793), + COEF_CONST(0.8993909601), + COEF_CONST(0.9001050330), + COEF_CONST(0.9008166959), + COEF_CONST(0.9015259472), + COEF_CONST(0.9022327848), + COEF_CONST(0.9029372068), + COEF_CONST(0.9036392114), + COEF_CONST(0.9043387967), + COEF_CONST(0.9050359608), + COEF_CONST(0.9057307018), + COEF_CONST(0.9064230179), + COEF_CONST(0.9071129073), + COEF_CONST(0.9078003680), + COEF_CONST(0.9084853983), + COEF_CONST(0.9091679963), + COEF_CONST(0.9098481602), + COEF_CONST(0.9105258881), + COEF_CONST(0.9112011783), + COEF_CONST(0.9118740290), + COEF_CONST(0.9125444382), + COEF_CONST(0.9132124044), + COEF_CONST(0.9138779255), + COEF_CONST(0.9145410000), + COEF_CONST(0.9152016259), + COEF_CONST(0.9158598016), + COEF_CONST(0.9165155252), + COEF_CONST(0.9171687951), + COEF_CONST(0.9178196094), + COEF_CONST(0.9184679665), + COEF_CONST(0.9191138645), + COEF_CONST(0.9197573017), + COEF_CONST(0.9203982766), + COEF_CONST(0.9210367872), + COEF_CONST(0.9216728319), + COEF_CONST(0.9223064091), + COEF_CONST(0.9229375169), + COEF_CONST(0.9235661538), + COEF_CONST(0.9241923180), + COEF_CONST(0.9248160078), + COEF_CONST(0.9254372217), + COEF_CONST(0.9260559578), + COEF_CONST(0.9266722147), + COEF_CONST(0.9272859906), + COEF_CONST(0.9278972838), + COEF_CONST(0.9285060928), + COEF_CONST(0.9291124159), + COEF_CONST(0.9297162514), + COEF_CONST(0.9303175979), + COEF_CONST(0.9309164536), + COEF_CONST(0.9315128169), + COEF_CONST(0.9321066864), + COEF_CONST(0.9326980603), + COEF_CONST(0.9332869370), + COEF_CONST(0.9338733151), + COEF_CONST(0.9344571929), + COEF_CONST(0.9350385689), + COEF_CONST(0.9356174416), + COEF_CONST(0.9361938093), + COEF_CONST(0.9367676705), + COEF_CONST(0.9373390237), + COEF_CONST(0.9379078674), + COEF_CONST(0.9384742000), + COEF_CONST(0.9390380200), + COEF_CONST(0.9395993260), + COEF_CONST(0.9401581163), + COEF_CONST(0.9407143896), + COEF_CONST(0.9412681443), + COEF_CONST(0.9418193789), + COEF_CONST(0.9423680920), + COEF_CONST(0.9429142821), + COEF_CONST(0.9434579477), + COEF_CONST(0.9439990874), + COEF_CONST(0.9445376998), + COEF_CONST(0.9450737833), + COEF_CONST(0.9456073366), + COEF_CONST(0.9461383582), + COEF_CONST(0.9466668467), + COEF_CONST(0.9471928007), + COEF_CONST(0.9477162188), + COEF_CONST(0.9482370995), + COEF_CONST(0.9487554416), + COEF_CONST(0.9492712435), + COEF_CONST(0.9497845040), + COEF_CONST(0.9502952216), + COEF_CONST(0.9508033949), + COEF_CONST(0.9513090227), + COEF_CONST(0.9518121035), + COEF_CONST(0.9523126361), + COEF_CONST(0.9528106190), + COEF_CONST(0.9533060510), + COEF_CONST(0.9537989307), + COEF_CONST(0.9542892567), + COEF_CONST(0.9547770279), + COEF_CONST(0.9552622428), + COEF_CONST(0.9557449002), + COEF_CONST(0.9562249988), + COEF_CONST(0.9567025372), + COEF_CONST(0.9571775143), + COEF_CONST(0.9576499288), + COEF_CONST(0.9581197793), + COEF_CONST(0.9585870647), + COEF_CONST(0.9590517836), + COEF_CONST(0.9595139348), + COEF_CONST(0.9599735172), + COEF_CONST(0.9604305294), + COEF_CONST(0.9608849703), + COEF_CONST(0.9613368385), + COEF_CONST(0.9617861330), + COEF_CONST(0.9622328525), + COEF_CONST(0.9626769958), + COEF_CONST(0.9631185617), + COEF_CONST(0.9635575491), + COEF_CONST(0.9639939567), + COEF_CONST(0.9644277835), + COEF_CONST(0.9648590281), + COEF_CONST(0.9652876896), + COEF_CONST(0.9657137667), + COEF_CONST(0.9661372582), + COEF_CONST(0.9665581632), + COEF_CONST(0.9669764804), + COEF_CONST(0.9673922086), + COEF_CONST(0.9678053469), + COEF_CONST(0.9682158941), + COEF_CONST(0.9686238491), + COEF_CONST(0.9690292108), + COEF_CONST(0.9694319780), + COEF_CONST(0.9698321499), + COEF_CONST(0.9702297252), + COEF_CONST(0.9706247029), + COEF_CONST(0.9710170819), + COEF_CONST(0.9714068613), + COEF_CONST(0.9717940399), + COEF_CONST(0.9721786167), + COEF_CONST(0.9725605907), + COEF_CONST(0.9729399608), + COEF_CONST(0.9733167261), + COEF_CONST(0.9736908855), + COEF_CONST(0.9740624381), + COEF_CONST(0.9744313828), + COEF_CONST(0.9747977187), + COEF_CONST(0.9751614448), + COEF_CONST(0.9755225600), + COEF_CONST(0.9758810635), + COEF_CONST(0.9762369542), + COEF_CONST(0.9765902313), + COEF_CONST(0.9769408937), + COEF_CONST(0.9772889406), + COEF_CONST(0.9776343710), + COEF_CONST(0.9779771840), + COEF_CONST(0.9783173786), + COEF_CONST(0.9786549539), + COEF_CONST(0.9789899092), + COEF_CONST(0.9793222433), + COEF_CONST(0.9796519555), + COEF_CONST(0.9799790449), + COEF_CONST(0.9803035106), + COEF_CONST(0.9806253518), + COEF_CONST(0.9809445675), + COEF_CONST(0.9812611569), + COEF_CONST(0.9815751192), + COEF_CONST(0.9818864535), + COEF_CONST(0.9821951590), + COEF_CONST(0.9825012349), + COEF_CONST(0.9828046803), + COEF_CONST(0.9831054945), + COEF_CONST(0.9834036766), + COEF_CONST(0.9836992258), + COEF_CONST(0.9839921414), + COEF_CONST(0.9842824225), + COEF_CONST(0.9845700684), + COEF_CONST(0.9848550783), + COEF_CONST(0.9851374515), + COEF_CONST(0.9854171871), + COEF_CONST(0.9856942845), + COEF_CONST(0.9859687429), + COEF_CONST(0.9862405616), + COEF_CONST(0.9865097398), + COEF_CONST(0.9867762768), + COEF_CONST(0.9870401719), + COEF_CONST(0.9873014244), + COEF_CONST(0.9875600336), + COEF_CONST(0.9878159988), + COEF_CONST(0.9880693193), + COEF_CONST(0.9883199945), + COEF_CONST(0.9885680237), + COEF_CONST(0.9888134061), + COEF_CONST(0.9890561412), + COEF_CONST(0.9892962283), + COEF_CONST(0.9895336667), + COEF_CONST(0.9897684559), + COEF_CONST(0.9900005952), + COEF_CONST(0.9902300839), + COEF_CONST(0.9904569215), + COEF_CONST(0.9906811073), + COEF_CONST(0.9909026408), + COEF_CONST(0.9911215213), + COEF_CONST(0.9913377484), + COEF_CONST(0.9915513213), + COEF_CONST(0.9917622395), + COEF_CONST(0.9919705024), + COEF_CONST(0.9921761096), + COEF_CONST(0.9923790604), + COEF_CONST(0.9925793543), + COEF_CONST(0.9927769908), + COEF_CONST(0.9929719693), + COEF_CONST(0.9931642894), + COEF_CONST(0.9933539504), + COEF_CONST(0.9935409519), + COEF_CONST(0.9937252935), + COEF_CONST(0.9939069745), + COEF_CONST(0.9940859945), + COEF_CONST(0.9942623531), + COEF_CONST(0.9944360497), + COEF_CONST(0.9946070839), + COEF_CONST(0.9947754553), + COEF_CONST(0.9949411633), + COEF_CONST(0.9951042076), + COEF_CONST(0.9952645877), + COEF_CONST(0.9954223032), + COEF_CONST(0.9955773536), + COEF_CONST(0.9957297385), + COEF_CONST(0.9958794576), + COEF_CONST(0.9960265105), + COEF_CONST(0.9961708966), + COEF_CONST(0.9963126157), + COEF_CONST(0.9964516674), + COEF_CONST(0.9965880513), + COEF_CONST(0.9967217670), + COEF_CONST(0.9968528142), + COEF_CONST(0.9969811925), + COEF_CONST(0.9971069016), + COEF_CONST(0.9972299412), + COEF_CONST(0.9973503108), + COEF_CONST(0.9974680103), + COEF_CONST(0.9975830392), + COEF_CONST(0.9976953973), + COEF_CONST(0.9978050843), + COEF_CONST(0.9979120998), + COEF_CONST(0.9980164436), + COEF_CONST(0.9981181155), + COEF_CONST(0.9982171151), + COEF_CONST(0.9983134421), + COEF_CONST(0.9984070964), + COEF_CONST(0.9984980776), + COEF_CONST(0.9985863855), + COEF_CONST(0.9986720200), + COEF_CONST(0.9987549807), + COEF_CONST(0.9988352674), + COEF_CONST(0.9989128799), + COEF_CONST(0.9989878181), + COEF_CONST(0.9990600816), + COEF_CONST(0.9991296704), + COEF_CONST(0.9991965842), + COEF_CONST(0.9992608228), + COEF_CONST(0.9993223862), + COEF_CONST(0.9993812740), + COEF_CONST(0.9994374862), + COEF_CONST(0.9994910226), + COEF_CONST(0.9995418831), + COEF_CONST(0.9995900674), + COEF_CONST(0.9996355756), + COEF_CONST(0.9996784075), + COEF_CONST(0.9997185629), + COEF_CONST(0.9997560418), + COEF_CONST(0.9997908440), + COEF_CONST(0.9998229695), + COEF_CONST(0.9998524181), + COEF_CONST(0.9998791899), + COEF_CONST(0.9999032846), + COEF_CONST(0.9999247024), + COEF_CONST(0.9999434430), + COEF_CONST(0.9999595065), + COEF_CONST(0.9999728928), + COEF_CONST(0.9999836018), + COEF_CONST(0.9999916336), + COEF_CONST(0.9999969881), + COEF_CONST(0.9999996654) }; real_t sine_short_128[] = { - 0x1921F1, - 0x4B64DB, - 0x7DA4DD, - 0xAFE006, - 0xE21468, - 0x1144013, - 0x1466118, - 0x1787587, - 0x1AA7B73, - 0x1DC70ED, - 0x20E5409, - 0x24022DB, - 0x271DB77, - 0x2A37BF1, - 0x2D50261, - 0x3066CDE, - 0x337B97F, - 0x368E65F, - 0x399F198, - 0x3CAD945, - 0x3FB9B85, - 0x42C3675, - 0x45CA837, - 0x48CEEED, - 0x4BD08B8, - 0x4ECF3C0, - 0x51CAE2B, - 0x54C3622, - 0x57B89D0, - 0x5AAA761, - 0x5D98D06, - 0x60838EE, - 0x636A94E, - 0x664DC5B, - 0x692D04C, - 0x6C0835E, - 0x6EDF3CB, - 0x71B1FD5, - 0x74805BD, - 0x774A3C8, - 0x7A0F83E, - 0x7CD0168, - 0x7F8BD96, - 0x8242B16, - 0x84F483D, - 0x87A1361, - 0x8A48ADB, - 0x8CEAD08, - 0x8F87849, - 0x921EB01, - 0x94B0397, - 0x973C075, - 0x99C200A, - 0x9C420C6, - 0x9EBC120, - 0xA12FF8F, - 0xA39DA91, - 0xA6050A6, - 0xA866053, - 0xAAC0820, - 0xAD14699, - 0xAF61A4E, - 0xB1A81D5, - 0xB3E7BC6, - 0xB6206BE, - 0xB85215D, - 0xBA7CA4B, - 0xBCA002F, - 0xBEBC1BA, - 0xC0D0D9E, - 0xC2DE291, - 0xC4E3F51, - 0xC6E229D, - 0xC8D8B3C, - 0xCAC77F6, - 0xCCAE79B, - 0xCE8D8FF, - 0xD064AF9, - 0xD233C68, - 0xD3FAC2D, - 0xD5B9930, - 0xD77025E, - 0xD91E6A7, - 0xDAC4503, - 0xDC61C6D, - 0xDDF6BE6, - 0xDF83274, - 0xE106F23, - 0xE282104, - 0xE3F472C, - 0xE55E0B8, - 0xE6BECC8, - 0xE816A82, - 0xE965913, - 0xEAAB7AC, - 0xEBE8584, - 0xED1C1D8, - 0xEE46BE8, - 0xEF682FF, - 0xF080668, - 0xF18F577, - 0xF294F85, - 0xF3913F0, - 0xF48421D, - 0xF56D977, - 0xF64D96C, - 0xF724173, - 0xF7F1108, - 0xF8B47AC, - 0xF96E4E6, - 0xFA1E845, - 0xFAC515A, - 0xFB61FC0, - 0xFBF5316, - 0xFC7EB01, - 0xFCFE72C, - 0xFD74748, - 0xFDE0B0D, - 0xFE43237, - 0xFE9BC8B, - 0xFEEA9D0, - 0xFF2F9D8, - 0xFF6AC77, - 0xFF9C188, - 0xFFC38ED, - 0xFFE128F, - 0xFFF4E5A, - 0xFFFEC42 + COEF_CONST(0.0061358848), + COEF_CONST(0.0184067304), + COEF_CONST(0.0306748040), + COEF_CONST(0.0429382581), + COEF_CONST(0.0551952459), + COEF_CONST(0.0674439214), + COEF_CONST(0.0796824402), + COEF_CONST(0.0919089590), + COEF_CONST(0.1041216368), + COEF_CONST(0.1163186341), + COEF_CONST(0.1284981143), + COEF_CONST(0.1406582432), + COEF_CONST(0.1527971895), + COEF_CONST(0.1649131250), + COEF_CONST(0.1770042253), + COEF_CONST(0.1890686693), + COEF_CONST(0.2011046404), + COEF_CONST(0.2131103258), + COEF_CONST(0.2250839175), + COEF_CONST(0.2370236125), + COEF_CONST(0.2489276125), + COEF_CONST(0.2607941250), + COEF_CONST(0.2726213628), + COEF_CONST(0.2844075449), + COEF_CONST(0.2961508962), + COEF_CONST(0.3078496483), + COEF_CONST(0.3195020394), + COEF_CONST(0.3311063146), + COEF_CONST(0.3426607265), + COEF_CONST(0.3541635348), + COEF_CONST(0.3656130075), + COEF_CONST(0.3770074202), + COEF_CONST(0.3883450569), + COEF_CONST(0.3996242103), + COEF_CONST(0.4108431818), + COEF_CONST(0.4220002818), + COEF_CONST(0.4330938301), + COEF_CONST(0.4441221560), + COEF_CONST(0.4550835988), + COEF_CONST(0.4659765077), + COEF_CONST(0.4767992422), + COEF_CONST(0.4875501725), + COEF_CONST(0.4982276796), + COEF_CONST(0.5088301553), + COEF_CONST(0.5193560032), + COEF_CONST(0.5298036379), + COEF_CONST(0.5401714861), + COEF_CONST(0.5504579865), + COEF_CONST(0.5606615899), + COEF_CONST(0.5707807598), + COEF_CONST(0.5808139721), + COEF_CONST(0.5907597160), + COEF_CONST(0.6006164937), + COEF_CONST(0.6103828207), + COEF_CONST(0.6200572264), + COEF_CONST(0.6296382536), + COEF_CONST(0.6391244597), + COEF_CONST(0.6485144160), + COEF_CONST(0.6578067083), + COEF_CONST(0.6669999374), + COEF_CONST(0.6760927188), + COEF_CONST(0.6850836831), + COEF_CONST(0.6939714763), + COEF_CONST(0.7027547599), + COEF_CONST(0.7114322112), + COEF_CONST(0.7200025235), + COEF_CONST(0.7284644060), + COEF_CONST(0.7368165845), + COEF_CONST(0.7450578010), + COEF_CONST(0.7531868147), + COEF_CONST(0.7612024011), + COEF_CONST(0.7691033533), + COEF_CONST(0.7768884813), + COEF_CONST(0.7845566127), + COEF_CONST(0.7921065928), + COEF_CONST(0.7995372846), + COEF_CONST(0.8068475690), + COEF_CONST(0.8140363451), + COEF_CONST(0.8211025303), + COEF_CONST(0.8280450605), + COEF_CONST(0.8348628901), + COEF_CONST(0.8415549925), + COEF_CONST(0.8481203597), + COEF_CONST(0.8545580032), + COEF_CONST(0.8608669533), + COEF_CONST(0.8670462601), + COEF_CONST(0.8730949928), + COEF_CONST(0.8790122407), + COEF_CONST(0.8847971125), + COEF_CONST(0.8904487372), + COEF_CONST(0.8959662635), + COEF_CONST(0.9013488606), + COEF_CONST(0.9065957178), + COEF_CONST(0.9117060451), + COEF_CONST(0.9166790728), + COEF_CONST(0.9215140520), + COEF_CONST(0.9262102546), + COEF_CONST(0.9307669733), + COEF_CONST(0.9351835219), + COEF_CONST(0.9394592352), + COEF_CONST(0.9435934695), + COEF_CONST(0.9475856021), + COEF_CONST(0.9514350317), + COEF_CONST(0.9551411788), + COEF_CONST(0.9587034850), + COEF_CONST(0.9621214141), + COEF_CONST(0.9653944512), + COEF_CONST(0.9685221034), + COEF_CONST(0.9715038998), + COEF_CONST(0.9743393912), + COEF_CONST(0.9770281507), + COEF_CONST(0.9795697733), + COEF_CONST(0.9819638764), + COEF_CONST(0.9842100992), + COEF_CONST(0.9863081037), + COEF_CONST(0.9882575738), + COEF_CONST(0.9900582159), + COEF_CONST(0.9917097588), + COEF_CONST(0.9932119539), + COEF_CONST(0.9945645750), + COEF_CONST(0.9957674182), + COEF_CONST(0.9968203026), + COEF_CONST(0.9977230695), + COEF_CONST(0.9984755829), + COEF_CONST(0.9990777296), + COEF_CONST(0.9995294188), + COEF_CONST(0.9998305826), + COEF_CONST(0.9999811755) }; real_t sine_short_120[] = { - 0x1ACEDD, - 0x506B6B, - 0x860472, - 0xBB9798, - 0xF12283, - 0x126A2DB, - 0x15C1646, - 0x1917A6C, - 0x1C6CCF6, - 0x1FC0B8D, - 0x23133DB, - 0x266438B, - 0x29B3849, - 0x2D00FC3, - 0x304C7A8, - 0x3395DA6, - 0x36DCF70, - 0x3A21AB9, - 0x3D63D36, - 0x40A349D, - 0x43DFEA6, - 0x471990D, - 0x4A5018D, - 0x4D835E6, - 0x50B33D8, - 0x53DF927, - 0x5708398, - 0x5A2D0F4, - 0x5D4DF07, - 0x606AB9E, - 0x638348A, - 0x669779E, - 0x69A72B2, - 0x6CB23A0, - 0x6FB8844, - 0x72B9E80, - 0x75B6437, - 0x78AD751, - 0x7B9F5B9, - 0x7E8BD5E, - 0x8172C33, - 0x845402D, - 0x872F749, - 0x8A04F85, - 0x8CD46E2, - 0x8F9DB69, - 0x9260B25, - 0x951D425, - 0x97D347F, - 0x9A82A4A, - 0x9D2B3A4, - 0x9FCCEB1, - 0xA267996, - 0xA4FB280, - 0xA7877A1, - 0xAA0C72E, - 0xAC89F62, - 0xAEFFE7F, - 0xB16E2CA, - 0xB3D4A8E, - 0xB63341D, - 0xB889DCC, - 0xBAD85F7, - 0xBD1EB00, - 0xBF5CB4E, - 0xC19254F, - 0xC3BF775, - 0xC5E4039, - 0xC7FFE1B, - 0xCA12F9F, - 0xCC1D351, - 0xCE1E7C2, - 0xD016B8A, - 0xD205D47, - 0xD3EBB9E, - 0xD5C8539, - 0xD79B8CB, - 0xD96550A, - 0xDB258B7, - 0xDCDC296, - 0xDE89173, - 0xE02C422, - 0xE1C597C, - 0xE355062, - 0xE4DA7BC, - 0xE655E78, - 0xE7C738C, - 0xE92E5F5, - 0xEA8B4B7, - 0xEBDDEDD, - 0xED26379, - 0xEE641A4, - 0xEF97881, - 0xF0C0736, - 0xF1DECF4, - 0xF2F28F2, - 0xF3FBA6E, - 0xF4FA0AE, - 0xF5EDAFF, - 0xF6D68B7, - 0xF7B4932, - 0xF887BD4, - 0xF950009, - 0xFA0D544, - 0xFABFB02, - 0xFB670C3, - 0xFC03614, - 0xFC94A86, - 0xFD1ADB3, - 0xFD95F3E, - 0xFE05ECF, - 0xFE6AC18, - 0xFEC46D2, - 0xFF12EC0, - 0xFF563A8, - 0xFF8E55C, - 0xFFBB3B6, - 0xFFDCE94, - 0xFFF35E0, - 0xFFFE98A + COEF_CONST(0.0065449381), + COEF_CONST(0.0196336930), + COEF_CONST(0.0327190837), + COEF_CONST(0.0457988682), + COEF_CONST(0.0588708053), + COEF_CONST(0.0719326552), + COEF_CONST(0.0849821797), + COEF_CONST(0.0980171430), + COEF_CONST(0.1110353116), + COEF_CONST(0.1240344549), + COEF_CONST(0.1370123455), + COEF_CONST(0.1499667597), + COEF_CONST(0.1628954779), + COEF_CONST(0.1757962848), + COEF_CONST(0.1886669699), + COEF_CONST(0.2015053279), + COEF_CONST(0.2143091589), + COEF_CONST(0.2270762692), + COEF_CONST(0.2398044712), + COEF_CONST(0.2524915839), + COEF_CONST(0.2651354334), + COEF_CONST(0.2777338534), + COEF_CONST(0.2902846851), + COEF_CONST(0.3027857780), + COEF_CONST(0.3152349901), + COEF_CONST(0.3276301883), + COEF_CONST(0.3399692488), + COEF_CONST(0.3522500573), + COEF_CONST(0.3644705095), + COEF_CONST(0.3766285116), + COEF_CONST(0.3887219804), + COEF_CONST(0.4007488436), + COEF_CONST(0.4127070406), + COEF_CONST(0.4245945223), + COEF_CONST(0.4364092520), + COEF_CONST(0.4481492051), + COEF_CONST(0.4598123703), + COEF_CONST(0.4713967489), + COEF_CONST(0.4829003561), + COEF_CONST(0.4943212208), + COEF_CONST(0.5056573861), + COEF_CONST(0.5169069096), + COEF_CONST(0.5280678638), + COEF_CONST(0.5391383363), + COEF_CONST(0.5501164301), + COEF_CONST(0.5610002644), + COEF_CONST(0.5717879741), + COEF_CONST(0.5824777109), + COEF_CONST(0.5930676432), + COEF_CONST(0.6035559563), + COEF_CONST(0.6139408533), + COEF_CONST(0.6242205546), + COEF_CONST(0.6343932989), + COEF_CONST(0.6444573433), + COEF_CONST(0.6544109631), + COEF_CONST(0.6642524530), + COEF_CONST(0.6739801267), + COEF_CONST(0.6835923173), + COEF_CONST(0.6930873779), + COEF_CONST(0.7024636815), + COEF_CONST(0.7117196216), + COEF_CONST(0.7208536122), + COEF_CONST(0.7298640883), + COEF_CONST(0.7387495058), + COEF_CONST(0.7475083425), + COEF_CONST(0.7561390974), + COEF_CONST(0.7646402918), + COEF_CONST(0.7730104690), + COEF_CONST(0.7812481948), + COEF_CONST(0.7893520577), + COEF_CONST(0.7973206693), + COEF_CONST(0.8051526640), + COEF_CONST(0.8128467000), + COEF_CONST(0.8204014588), + COEF_CONST(0.8278156461), + COEF_CONST(0.8350879914), + COEF_CONST(0.8422172487), + COEF_CONST(0.8492021964), + COEF_CONST(0.8560416377), + COEF_CONST(0.8627344006), + COEF_CONST(0.8692793384), + COEF_CONST(0.8756753297), + COEF_CONST(0.8819212785), + COEF_CONST(0.8880161146), + COEF_CONST(0.8939587938), + COEF_CONST(0.8997482976), + COEF_CONST(0.9053836343), + COEF_CONST(0.9108638381), + COEF_CONST(0.9161879700), + COEF_CONST(0.9213551179), + COEF_CONST(0.9263643963), + COEF_CONST(0.9312149469), + COEF_CONST(0.9359059386), + COEF_CONST(0.9404365677), + COEF_CONST(0.9448060577), + COEF_CONST(0.9490136602), + COEF_CONST(0.9530586539), + COEF_CONST(0.9569403460), + COEF_CONST(0.9606580713), + COEF_CONST(0.9642111928), + COEF_CONST(0.9675991016), + COEF_CONST(0.9708212173), + COEF_CONST(0.9738769878), + COEF_CONST(0.9767658894), + COEF_CONST(0.9794874272), + COEF_CONST(0.9820411349), + COEF_CONST(0.9844265749), + COEF_CONST(0.9866433385), + COEF_CONST(0.9886910458), + COEF_CONST(0.9905693459), + COEF_CONST(0.9922779171), + COEF_CONST(0.9938164666), + COEF_CONST(0.9951847307), + COEF_CONST(0.9963824750), + COEF_CONST(0.9974094943), + COEF_CONST(0.9982656127), + COEF_CONST(0.9989506833), + COEF_CONST(0.9994645889), + COEF_CONST(0.9998072413), + COEF_CONST(0.9999785819) }; #ifdef LD_DEC real_t sine_mid_512[] = { - 0x6487E, - 0x12D978, - 0x1F6A66, - 0x2BFB40, - 0x388BFF, - 0x451C9C, - 0x51AD0E, - 0x5E3D4D, - 0x6ACD52, - 0x775D16, - 0x83EC90, - 0x907BB8, - 0x9D0A87, - 0xA998F6, - 0xB626FC, - 0xC2B491, - 0xCF41AF, - 0xDBCE4C, - 0xE85A62, - 0xF4E5E9, - 0x10170D8, - 0x10DFB29, - 0x11A84D3, - 0x1270DCF, - 0x1339615, - 0x1401D9D, - 0x14CA460, - 0x1592A55, - 0x165AF76, - 0x17233BA, - 0x17EB71A, - 0x18B398D, - 0x197BB0D, - 0x1A43B91, - 0x1B0BB12, - 0x1BD3988, - 0x1C9B6EC, - 0x1D63335, - 0x1E2AE5C, - 0x1EF2859, - 0x1FBA125, - 0x20818B8, - 0x2148F0A, - 0x2210413, - 0x22D77CC, - 0x239EA2E, - 0x2465B30, - 0x252CACA, - 0x25F38F6, - 0x26BA5AB, - 0x27810E2, - 0x2847A93, - 0x290E2B6, - 0x29D4945, - 0x2A9AE36, - 0x2B61183, - 0x2C27324, - 0x2CED311, - 0x2DB3142, - 0x2E78DB1, - 0x2F3E855, - 0x3004126, - 0x30C981E, - 0x318ED34, - 0x3254061, - 0x331919E, - 0x33DE0E2, - 0x34A2E26, - 0x3567963, - 0x362C290, - 0x36F09A7, - 0x37B4EA0, - 0x3879173, - 0x393D218, - 0x3A01089, - 0x3AC4CBD, - 0x3B886AD, - 0x3C4BE51, - 0x3D0F3A3, - 0x3DD269A, - 0x3E9572E, - 0x3F58559, - 0x401B113, - 0x40DDA54, - 0x41A0115, - 0x426254E, - 0x43246F8, - 0x43E660B, - 0x44A8280, - 0x4569C50, - 0x462B372, - 0x46EC7E0, - 0x47AD992, - 0x486E881, - 0x492F4A5, - 0x49EFDF6, - 0x4AB046D, - 0x4B70804, - 0x4C308B2, - 0x4CF0670, - 0x4DB0136, - 0x4E6F8FE, - 0x4F2EDC0, - 0x4FEDF74, - 0x50ACE13, - 0x516B996, - 0x522A1F6, - 0x52E872B, - 0x53A692D, - 0x54647F6, - 0x552237D, - 0x55DFBBD, - 0x569D0AD, - 0x575A246, - 0x5817081, - 0x58D3B57, - 0x59902C0, - 0x5A4C6B5, - 0x5B0872F, - 0x5BC4426, - 0x5C7FD93, - 0x5D3B370, - 0x5DF65B5, - 0x5EB145A, - 0x5F6BF58, - 0x60266A9, - 0x60E0A45, - 0x619AA25, - 0x6254641, - 0x630DE93, - 0x63C7313, - 0x64803BB, - 0x6539083, - 0x65F1963, - 0x66A9E56, - 0x6761F53, - 0x6819C54, - 0x68D1551, - 0x6988A44, - 0x6A3FB25, - 0x6AF67EE, - 0x6BAD097, - 0x6C63519, - 0x6D1956E, - 0x6DCF18E, - 0x6E84972, - 0x6F39D13, - 0x6FEEC6B, - 0x70A3771, - 0x7157E20, - 0x720C071, - 0x72BFE5C, - 0x73737DA, - 0x7426CE5, - 0x74D9D75, - 0x758C985, - 0x763F10C, - 0x76F1404, - 0x77A3266, - 0x7854C2B, - 0x790614D, - 0x79B71C4, - 0x7A67D8A, - 0x7B18498, - 0x7BC86E7, - 0x7C78470, - 0x7D27D2D, - 0x7DD7116, - 0x7E86026, - 0x7F34A55, - 0x7FE2F9C, - 0x8090FF5, - 0x813EB5A, - 0x81EC1C2, - 0x8299329, - 0x8345F86, - 0x83F26D4, - 0x849E90C, - 0x854A626, - 0x85F5E1E, - 0x86A10EB, - 0x874BE87, - 0x87F66EC, - 0x88A0A13, - 0x894A7F5, - 0x89F408D, - 0x8A9D3D3, - 0x8B461C1, - 0x8BEEA51, - 0x8C96D7B, - 0x8D3EB3A, - 0x8DE6386, - 0x8E8D65B, - 0x8F343B0, - 0x8FDAB80, - 0x9080DC4, - 0x9126A76, - 0x91CC190, - 0x927130A, - 0x9315EDF, - 0x93BA509, - 0x945E580, - 0x950203F, - 0x95A5540, - 0x964847B, - 0x96EADEB, - 0x978D18A, - 0x982EF51, - 0x98D073A, - 0x997193F, - 0x9A12559, - 0x9AB2B83, - 0x9B52BB6, - 0x9BF25EC, - 0x9C91A1F, - 0x9D30849, - 0x9DCF063, - 0x9E6D267, - 0x9F0AE51, - 0x9FA8418, - 0xA0453B8, - 0xA0E1D29, - 0xA17E067, - 0xA219D6B, - 0xA2B5430, - 0xA3504AE, - 0xA3EAEE1, - 0xA4852C1, - 0xA51F04A, - 0xA5B8776, - 0xA65183E, - 0xA6EA29C, - 0xA78268B, - 0xA81A404, - 0xA8B1B03, - 0xA948B80, - 0xA9DF577, - 0xAA758E1, - 0xAB0B5B9, - 0xABA0BF9, - 0xAC35B9B, - 0xACCA499, - 0xAD5E6EE, - 0xADF2293, - 0xAE85784, - 0xAF185BB, - 0xAFAAD31, - 0xB03CDE2, - 0xB0CE7C7, - 0xB15FADB, - 0xB1F0719, - 0xB280C7A, - 0xB310AFA, - 0xB3A0292, - 0xB42F33E, - 0xB4BDCF7, - 0xB54BFB8, - 0xB5D9B7C, - 0xB66703D, - 0xB6F3DF6, - 0xB7804A2, - 0xB80C43A, - 0xB897CBA, - 0xB922E1C, - 0xB9AD85A, - 0xBA37B70, - 0xBAC1759, - 0xBB4AC0E, - 0xBBD398A, - 0xBC5BFC9, - 0xBCE3EC4, - 0xBD6B678, - 0xBDF26DE, - 0xBE78FF1, - 0xBEFF1AC, - 0xBF84C0B, - 0xC009F07, - 0xC08EA9C, - 0xC112EC4, - 0xC196B7B, - 0xC21A0BB, - 0xC29CE7F, - 0xC31F4C3, - 0xC3A1380, - 0xC422AB3, - 0xC4A3A57, - 0xC524265, - 0xC5A42DA, - 0xC623BB0, - 0xC6A2CE3, - 0xC72166D, - 0xC79F84A, - 0xC81D274, - 0xC89A4E8, - 0xC916FA0, - 0xC993297, - 0xCA0EDC8, - 0xCA8A130, - 0xCB04CC8, - 0xCB7F08D, - 0xCBF8C79, - 0xCC72088, - 0xCCEACB5, - 0xCD630FC, - 0xCDDAD58, - 0xCE521C4, - 0xCEC8E3C, - 0xCF3F2BB, - 0xCFB4F3C, - 0xD02A3BB, - 0xD09F034, - 0xD1134A2, - 0xD187101, - 0xD1FA54B, - 0xD26D17D, - 0xD2DF593, - 0xD351187, - 0xD3C2555, - 0xD4330FA, - 0xD4A3470, - 0xD512FB3, - 0xD5822C0, - 0xD5F0D91, - 0xD65F023, - 0xD6CCA71, - 0xD739C77, - 0xD7A6631, - 0xD81279A, - 0xD87E0AF, - 0xD8E916B, - 0xD9539CB, - 0xD9BD9C9, - 0xDA27163, - 0xDA90093, - 0xDAF8757, - 0xDB605A9, - 0xDBC7B86, - 0xDC2E8E9, - 0xDC94DD0, - 0xDCFAA36, - 0xDD5FE17, - 0xDDC496E, - 0xDE28C39, - 0xDE8C674, - 0xDEEF81A, - 0xDF52127, - 0xDFB4199, - 0xE01596B, - 0xE076899, - 0xE0D6F20, - 0xE136CFB, - 0xE196228, - 0xE1F4EA3, - 0xE253267, - 0xE2B0D72, - 0xE30DFBF, - 0xE36A94B, - 0xE3C6A13, - 0xE422213, - 0xE47D147, - 0xE4D77AC, - 0xE53153F, - 0xE58A9FB, - 0xE5E35DE, - 0xE63B8E4, - 0xE69330A, - 0xE6EA44C, - 0xE740CA7, - 0xE796C18, - 0xE7EC29B, - 0xE84102D, - 0xE8954CB, - 0xE8E9071, - 0xE93C31D, - 0xE98ECCA, - 0xE9E0D77, - 0xEA3251F, - 0xEA833C0, - 0xEAD3956, - 0xEB235DF, - 0xEB72956, - 0xEBC13BB, - 0xEC0F508, - 0xEC5CD3B, - 0xECA9C52, - 0xECF6249, - 0xED41F1D, - 0xED8D2CC, - 0xEDD7D52, - 0xEE21EAC, - 0xEE6B6D9, - 0xEEB45D4, - 0xEEFCB9B, - 0xEF4482C, - 0xEF8BB83, - 0xEFD259E, - 0xF01867A, - 0xF05DE14, - 0xF0A2C6A, - 0xF0E7179, - 0xF12AD3E, - 0xF16DFB8, - 0xF1B08E2, - 0xF1F28BB, - 0xF233F40, - 0xF274C6F, - 0xF2B5044, - 0xF2F4ABF, - 0xF333BDB, - 0xF372397, - 0xF3B01F0, - 0xF3ED6E5, - 0xF42A271, - 0xF466494, - 0xF4A1D4B, - 0xF4DCC94, - 0xF51726B, - 0xF550ED0, - 0xF58A1C0, - 0xF5C2B38, - 0xF5FAB37, - 0xF6321BA, - 0xF668EBF, - 0xF69F244, - 0xF6D4C47, - 0xF709CC6, - 0xF73E3BF, - 0xF77212F, - 0xF7A5516, - 0xF7D7F70, - 0xF80A03C, - 0xF83B778, - 0xF86C522, - 0xF89C939, - 0xF8CC3B9, - 0xF8FB4A2, - 0xF929BF2, - 0xF9579A7, - 0xF984DBE, - 0xF9B1837, - 0xF9DD910, - 0xFA09047, - 0xFA33DDA, - 0xFA5E1C7, - 0xFA87C0D, - 0xFAB0CAB, - 0xFAD939F, - 0xFB010E6, - 0xFB28481, - 0xFB4EE6D, - 0xFB74EA8, - 0xFB9A532, - 0xFBBF208, - 0xFBE352A, - 0xFC06E95, - 0xFC29E4A, - 0xFC4C445, - 0xFC6E087, - 0xFC8F30D, - 0xFCAFBD6, - 0xFCCFAE1, - 0xFCEF02E, - 0xFD0DBBA, - 0xFD2BD84, - 0xFD4958C, - 0xFD663D0, - 0xFD8284F, - 0xFD9E308, - 0xFDB93FA, - 0xFDD3B23, - 0xFDED884, - 0xFE06C1A, - 0xFE1F5E5, - 0xFE375E5, - 0xFE4EC17, - 0xFE6587B, - 0xFE7BB10, - 0xFE913D6, - 0xFEA62CB, - 0xFEBA7EF, - 0xFECE341, - 0xFEE14C0, - 0xFEF3C6C, - 0xFF05A43, - 0xFF16E45, - 0xFF27872, - 0xFF378C8, - 0xFF46F48, - 0xFF55BF0, - 0xFF63EC0, - 0xFF717B7, - 0xFF7E6D5, - 0xFF8AC1A, - 0xFF96785, - 0xFFA1915, - 0xFFAC0CA, - 0xFFB5EA3, - 0xFFBF2A1, - 0xFFC7CC3, - 0xFFCFD08, - 0xFFD7371, - 0xFFDDFFC, - 0xFFE42AA, - 0xFFE9B7B, - 0xFFEEA6E, - 0xFFF2F83, - 0xFFF6AB9, - 0xFFF9C12, - 0xFFFC38C, - 0xFFFE128, - 0xFFFF4E5, - 0xFFFFEC4 + COEF_CONST(0.0015339802), + COEF_CONST(0.0046019262), + COEF_CONST(0.0076698290), + COEF_CONST(0.0107376595), + COEF_CONST(0.0138053889), + COEF_CONST(0.0168729884), + COEF_CONST(0.0199404291), + COEF_CONST(0.0230076821), + COEF_CONST(0.0260747186), + COEF_CONST(0.0291415096), + COEF_CONST(0.0322080263), + COEF_CONST(0.0352742399), + COEF_CONST(0.0383401214), + COEF_CONST(0.0414056421), + COEF_CONST(0.0444707731), + COEF_CONST(0.0475354855), + COEF_CONST(0.0505997504), + COEF_CONST(0.0536635391), + COEF_CONST(0.0567268227), + COEF_CONST(0.0597895724), + COEF_CONST(0.0628517593), + COEF_CONST(0.0659133546), + COEF_CONST(0.0689743295), + COEF_CONST(0.0720346552), + COEF_CONST(0.0750943029), + COEF_CONST(0.0781532438), + COEF_CONST(0.0812114491), + COEF_CONST(0.0842688899), + COEF_CONST(0.0873255376), + COEF_CONST(0.0903813634), + COEF_CONST(0.0934363384), + COEF_CONST(0.0964904340), + COEF_CONST(0.0995436214), + COEF_CONST(0.1025958719), + COEF_CONST(0.1056471566), + COEF_CONST(0.1086974470), + COEF_CONST(0.1117467143), + COEF_CONST(0.1147949298), + COEF_CONST(0.1178420648), + COEF_CONST(0.1208880906), + COEF_CONST(0.1239329785), + COEF_CONST(0.1269767000), + COEF_CONST(0.1300192263), + COEF_CONST(0.1330605288), + COEF_CONST(0.1361005789), + COEF_CONST(0.1391393480), + COEF_CONST(0.1421768074), + COEF_CONST(0.1452129287), + COEF_CONST(0.1482476831), + COEF_CONST(0.1512810421), + COEF_CONST(0.1543129773), + COEF_CONST(0.1573434600), + COEF_CONST(0.1603724617), + COEF_CONST(0.1633999539), + COEF_CONST(0.1664259081), + COEF_CONST(0.1694502959), + COEF_CONST(0.1724730887), + COEF_CONST(0.1754942582), + COEF_CONST(0.1785137759), + COEF_CONST(0.1815316133), + COEF_CONST(0.1845477420), + COEF_CONST(0.1875621337), + COEF_CONST(0.1905747601), + COEF_CONST(0.1935855926), + COEF_CONST(0.1965946031), + COEF_CONST(0.1996017631), + COEF_CONST(0.2026070444), + COEF_CONST(0.2056104187), + COEF_CONST(0.2086118577), + COEF_CONST(0.2116113332), + COEF_CONST(0.2146088169), + COEF_CONST(0.2176042806), + COEF_CONST(0.2205976961), + COEF_CONST(0.2235890353), + COEF_CONST(0.2265782700), + COEF_CONST(0.2295653721), + COEF_CONST(0.2325503134), + COEF_CONST(0.2355330658), + COEF_CONST(0.2385136014), + COEF_CONST(0.2414918919), + COEF_CONST(0.2444679094), + COEF_CONST(0.2474416259), + COEF_CONST(0.2504130134), + COEF_CONST(0.2533820439), + COEF_CONST(0.2563486895), + COEF_CONST(0.2593129222), + COEF_CONST(0.2622747142), + COEF_CONST(0.2652340375), + COEF_CONST(0.2681908643), + COEF_CONST(0.2711451669), + COEF_CONST(0.2740969173), + COEF_CONST(0.2770460878), + COEF_CONST(0.2799926507), + COEF_CONST(0.2829365781), + COEF_CONST(0.2858778425), + COEF_CONST(0.2888164160), + COEF_CONST(0.2917522711), + COEF_CONST(0.2946853801), + COEF_CONST(0.2976157155), + COEF_CONST(0.3005432495), + COEF_CONST(0.3034679547), + COEF_CONST(0.3063898036), + COEF_CONST(0.3093087686), + COEF_CONST(0.3122248223), + COEF_CONST(0.3151379372), + COEF_CONST(0.3180480859), + COEF_CONST(0.3209552410), + COEF_CONST(0.3238593752), + COEF_CONST(0.3267604611), + COEF_CONST(0.3296584714), + COEF_CONST(0.3325533788), + COEF_CONST(0.3354451561), + COEF_CONST(0.3383337760), + COEF_CONST(0.3412192114), + COEF_CONST(0.3441014352), + COEF_CONST(0.3469804201), + COEF_CONST(0.3498561391), + COEF_CONST(0.3527285651), + COEF_CONST(0.3555976712), + COEF_CONST(0.3584634302), + COEF_CONST(0.3613258152), + COEF_CONST(0.3641847992), + COEF_CONST(0.3670403554), + COEF_CONST(0.3698924569), + COEF_CONST(0.3727410769), + COEF_CONST(0.3755861884), + COEF_CONST(0.3784277648), + COEF_CONST(0.3812657793), + COEF_CONST(0.3841002051), + COEF_CONST(0.3869310157), + COEF_CONST(0.3897581843), + COEF_CONST(0.3925816844), + COEF_CONST(0.3954014893), + COEF_CONST(0.3982175726), + COEF_CONST(0.4010299077), + COEF_CONST(0.4038384682), + COEF_CONST(0.4066432275), + COEF_CONST(0.4094441594), + COEF_CONST(0.4122412374), + COEF_CONST(0.4150344353), + COEF_CONST(0.4178237267), + COEF_CONST(0.4206090854), + COEF_CONST(0.4233904852), + COEF_CONST(0.4261678998), + COEF_CONST(0.4289413032), + COEF_CONST(0.4317106692), + COEF_CONST(0.4344759718), + COEF_CONST(0.4372371850), + COEF_CONST(0.4399942827), + COEF_CONST(0.4427472390), + COEF_CONST(0.4454960280), + COEF_CONST(0.4482406238), + COEF_CONST(0.4509810007), + COEF_CONST(0.4537171327), + COEF_CONST(0.4564489941), + COEF_CONST(0.4591765593), + COEF_CONST(0.4618998026), + COEF_CONST(0.4646186982), + COEF_CONST(0.4673332207), + COEF_CONST(0.4700433445), + COEF_CONST(0.4727490440), + COEF_CONST(0.4754502939), + COEF_CONST(0.4781470686), + COEF_CONST(0.4808393428), + COEF_CONST(0.4835270912), + COEF_CONST(0.4862102885), + COEF_CONST(0.4888889093), + COEF_CONST(0.4915629286), + COEF_CONST(0.4942323210), + COEF_CONST(0.4968970616), + COEF_CONST(0.4995571252), + COEF_CONST(0.5022124867), + COEF_CONST(0.5048631212), + COEF_CONST(0.5075090038), + COEF_CONST(0.5101501095), + COEF_CONST(0.5127864135), + COEF_CONST(0.5154178909), + COEF_CONST(0.5180445171), + COEF_CONST(0.5206662672), + COEF_CONST(0.5232831165), + COEF_CONST(0.5258950406), + COEF_CONST(0.5285020147), + COEF_CONST(0.5311040144), + COEF_CONST(0.5337010151), + COEF_CONST(0.5362929924), + COEF_CONST(0.5388799219), + COEF_CONST(0.5414617792), + COEF_CONST(0.5440385402), + COEF_CONST(0.5466101804), + COEF_CONST(0.5491766757), + COEF_CONST(0.5517380020), + COEF_CONST(0.5542941351), + COEF_CONST(0.5568450509), + COEF_CONST(0.5593907256), + COEF_CONST(0.5619311350), + COEF_CONST(0.5644662553), + COEF_CONST(0.5669960626), + COEF_CONST(0.5695205332), + COEF_CONST(0.5720396432), + COEF_CONST(0.5745533690), + COEF_CONST(0.5770616868), + COEF_CONST(0.5795645732), + COEF_CONST(0.5820620044), + COEF_CONST(0.5845539570), + COEF_CONST(0.5870404077), + COEF_CONST(0.5895213328), + COEF_CONST(0.5919967092), + COEF_CONST(0.5944665134), + COEF_CONST(0.5969307223), + COEF_CONST(0.5993893127), + COEF_CONST(0.6018422614), + COEF_CONST(0.6042895453), + COEF_CONST(0.6067311415), + COEF_CONST(0.6091670268), + COEF_CONST(0.6115971784), + COEF_CONST(0.6140215735), + COEF_CONST(0.6164401891), + COEF_CONST(0.6188530025), + COEF_CONST(0.6212599911), + COEF_CONST(0.6236611322), + COEF_CONST(0.6260564031), + COEF_CONST(0.6284457813), + COEF_CONST(0.6308292444), + COEF_CONST(0.6332067698), + COEF_CONST(0.6355783353), + COEF_CONST(0.6379439184), + COEF_CONST(0.6403034970), + COEF_CONST(0.6426570488), + COEF_CONST(0.6450045517), + COEF_CONST(0.6473459836), + COEF_CONST(0.6496813224), + COEF_CONST(0.6520105461), + COEF_CONST(0.6543336328), + COEF_CONST(0.6566505608), + COEF_CONST(0.6589613080), + COEF_CONST(0.6612658529), + COEF_CONST(0.6635641737), + COEF_CONST(0.6658562488), + COEF_CONST(0.6681420566), + COEF_CONST(0.6704215756), + COEF_CONST(0.6726947843), + COEF_CONST(0.6749616613), + COEF_CONST(0.6772221854), + COEF_CONST(0.6794763352), + COEF_CONST(0.6817240894), + COEF_CONST(0.6839654271), + COEF_CONST(0.6862003270), + COEF_CONST(0.6884287681), + COEF_CONST(0.6906507295), + COEF_CONST(0.6928661902), + COEF_CONST(0.6950751294), + COEF_CONST(0.6972775262), + COEF_CONST(0.6994733600), + COEF_CONST(0.7016626102), + COEF_CONST(0.7038452560), + COEF_CONST(0.7060212769), + COEF_CONST(0.7081906525), + COEF_CONST(0.7103533623), + COEF_CONST(0.7125093860), + COEF_CONST(0.7146587034), + COEF_CONST(0.7168012940), + COEF_CONST(0.7189371379), + COEF_CONST(0.7210662148), + COEF_CONST(0.7231885048), + COEF_CONST(0.7253039879), + COEF_CONST(0.7274126442), + COEF_CONST(0.7295144537), + COEF_CONST(0.7316093968), + COEF_CONST(0.7336974537), + COEF_CONST(0.7357786047), + COEF_CONST(0.7378528304), + COEF_CONST(0.7399201111), + COEF_CONST(0.7419804273), + COEF_CONST(0.7440337598), + COEF_CONST(0.7460800891), + COEF_CONST(0.7481193961), + COEF_CONST(0.7501516614), + COEF_CONST(0.7521768661), + COEF_CONST(0.7541949909), + COEF_CONST(0.7562060170), + COEF_CONST(0.7582099254), + COEF_CONST(0.7602066973), + COEF_CONST(0.7621963137), + COEF_CONST(0.7641787561), + COEF_CONST(0.7661540058), + COEF_CONST(0.7681220441), + COEF_CONST(0.7700828526), + COEF_CONST(0.7720364128), + COEF_CONST(0.7739827062), + COEF_CONST(0.7759217146), + COEF_CONST(0.7778534198), + COEF_CONST(0.7797778035), + COEF_CONST(0.7816948476), + COEF_CONST(0.7836045342), + COEF_CONST(0.7855068451), + COEF_CONST(0.7874017626), + COEF_CONST(0.7892892687), + COEF_CONST(0.7911693458), + COEF_CONST(0.7930419760), + COEF_CONST(0.7949071418), + COEF_CONST(0.7967648257), + COEF_CONST(0.7986150101), + COEF_CONST(0.8004576777), + COEF_CONST(0.8022928110), + COEF_CONST(0.8041203929), + COEF_CONST(0.8059404060), + COEF_CONST(0.8077528334), + COEF_CONST(0.8095576578), + COEF_CONST(0.8113548624), + COEF_CONST(0.8131444302), + COEF_CONST(0.8149263444), + COEF_CONST(0.8167005882), + COEF_CONST(0.8184671449), + COEF_CONST(0.8202259979), + COEF_CONST(0.8219771306), + COEF_CONST(0.8237205265), + COEF_CONST(0.8254561693), + COEF_CONST(0.8271840425), + COEF_CONST(0.8289041300), + COEF_CONST(0.8306164155), + COEF_CONST(0.8323208829), + COEF_CONST(0.8340175162), + COEF_CONST(0.8357062995), + COEF_CONST(0.8373872167), + COEF_CONST(0.8390602521), + COEF_CONST(0.8407253900), + COEF_CONST(0.8423826147), + COEF_CONST(0.8440319105), + COEF_CONST(0.8456732620), + COEF_CONST(0.8473066536), + COEF_CONST(0.8489320701), + COEF_CONST(0.8505494961), + COEF_CONST(0.8521589165), + COEF_CONST(0.8537603160), + COEF_CONST(0.8553536795), + COEF_CONST(0.8569389922), + COEF_CONST(0.8585162390), + COEF_CONST(0.8600854051), + COEF_CONST(0.8616464758), + COEF_CONST(0.8631994363), + COEF_CONST(0.8647442721), + COEF_CONST(0.8662809686), + COEF_CONST(0.8678095113), + COEF_CONST(0.8693298858), + COEF_CONST(0.8708420779), + COEF_CONST(0.8723460733), + COEF_CONST(0.8738418578), + COEF_CONST(0.8753294174), + COEF_CONST(0.8768087381), + COEF_CONST(0.8782798059), + COEF_CONST(0.8797426070), + COEF_CONST(0.8811971277), + COEF_CONST(0.8826433541), + COEF_CONST(0.8840812728), + COEF_CONST(0.8855108702), + COEF_CONST(0.8869321328), + COEF_CONST(0.8883450473), + COEF_CONST(0.8897496003), + COEF_CONST(0.8911457787), + COEF_CONST(0.8925335692), + COEF_CONST(0.8939129589), + COEF_CONST(0.8952839348), + COEF_CONST(0.8966464839), + COEF_CONST(0.8980005934), + COEF_CONST(0.8993462506), + COEF_CONST(0.9006834428), + COEF_CONST(0.9020121574), + COEF_CONST(0.9033323820), + COEF_CONST(0.9046441040), + COEF_CONST(0.9059473112), + COEF_CONST(0.9072419912), + COEF_CONST(0.9085281320), + COEF_CONST(0.9098057213), + COEF_CONST(0.9110747472), + COEF_CONST(0.9123351977), + COEF_CONST(0.9135870610), + COEF_CONST(0.9148303252), + COEF_CONST(0.9160649787), + COEF_CONST(0.9172910099), + COEF_CONST(0.9185084071), + COEF_CONST(0.9197171590), + COEF_CONST(0.9209172542), + COEF_CONST(0.9221086814), + COEF_CONST(0.9232914293), + COEF_CONST(0.9244654868), + COEF_CONST(0.9256308430), + COEF_CONST(0.9267874867), + COEF_CONST(0.9279354072), + COEF_CONST(0.9290745935), + COEF_CONST(0.9302050351), + COEF_CONST(0.9313267212), + COEF_CONST(0.9324396413), + COEF_CONST(0.9335437850), + COEF_CONST(0.9346391418), + COEF_CONST(0.9357257014), + COEF_CONST(0.9368034535), + COEF_CONST(0.9378723882), + COEF_CONST(0.9389324952), + COEF_CONST(0.9399837646), + COEF_CONST(0.9410261866), + COEF_CONST(0.9420597512), + COEF_CONST(0.9430844489), + COEF_CONST(0.9441002698), + COEF_CONST(0.9451072045), + COEF_CONST(0.9461052436), + COEF_CONST(0.9470943775), + COEF_CONST(0.9480745970), + COEF_CONST(0.9490458928), + COEF_CONST(0.9500082559), + COEF_CONST(0.9509616771), + COEF_CONST(0.9519061475), + COEF_CONST(0.9528416583), + COEF_CONST(0.9537682005), + COEF_CONST(0.9546857654), + COEF_CONST(0.9555943446), + COEF_CONST(0.9564939293), + COEF_CONST(0.9573845111), + COEF_CONST(0.9582660816), + COEF_CONST(0.9591386326), + COEF_CONST(0.9600021558), + COEF_CONST(0.9608566431), + COEF_CONST(0.9617020864), + COEF_CONST(0.9625384778), + COEF_CONST(0.9633658095), + COEF_CONST(0.9641840736), + COEF_CONST(0.9649932624), + COEF_CONST(0.9657933683), + COEF_CONST(0.9665843838), + COEF_CONST(0.9673663015), + COEF_CONST(0.9681391139), + COEF_CONST(0.9689028139), + COEF_CONST(0.9696573941), + COEF_CONST(0.9704028476), + COEF_CONST(0.9711391673), + COEF_CONST(0.9718663462), + COEF_CONST(0.9725843776), + COEF_CONST(0.9732932546), + COEF_CONST(0.9739929706), + COEF_CONST(0.9746835191), + COEF_CONST(0.9753648934), + COEF_CONST(0.9760370872), + COEF_CONST(0.9767000942), + COEF_CONST(0.9773539081), + COEF_CONST(0.9779985228), + COEF_CONST(0.9786339322), + COEF_CONST(0.9792601304), + COEF_CONST(0.9798771113), + COEF_CONST(0.9804848693), + COEF_CONST(0.9810833986), + COEF_CONST(0.9816726935), + COEF_CONST(0.9822527486), + COEF_CONST(0.9828235583), + COEF_CONST(0.9833851173), + COEF_CONST(0.9839374204), + COEF_CONST(0.9844804622), + COEF_CONST(0.9850142377), + COEF_CONST(0.9855387419), + COEF_CONST(0.9860539698), + COEF_CONST(0.9865599167), + COEF_CONST(0.9870565776), + COEF_CONST(0.9875439480), + COEF_CONST(0.9880220232), + COEF_CONST(0.9884907988), + COEF_CONST(0.9889502704), + COEF_CONST(0.9894004335), + COEF_CONST(0.9898412841), + COEF_CONST(0.9902728179), + COEF_CONST(0.9906950309), + COEF_CONST(0.9911079190), + COEF_CONST(0.9915114785), + COEF_CONST(0.9919057055), + COEF_CONST(0.9922905963), + COEF_CONST(0.9926661473), + COEF_CONST(0.9930323550), + COEF_CONST(0.9933892158), + COEF_CONST(0.9937367265), + COEF_CONST(0.9940748837), + COEF_CONST(0.9944036844), + COEF_CONST(0.9947231253), + COEF_CONST(0.9950332035), + COEF_CONST(0.9953339161), + COEF_CONST(0.9956252602), + COEF_CONST(0.9959072331), + COEF_CONST(0.9961798322), + COEF_CONST(0.9964430548), + COEF_CONST(0.9966968986), + COEF_CONST(0.9969413610), + COEF_CONST(0.9971764399), + COEF_CONST(0.9974021329), + COEF_CONST(0.9976184380), + COEF_CONST(0.9978253532), + COEF_CONST(0.9980228764), + COEF_CONST(0.9982110059), + COEF_CONST(0.9983897398), + COEF_CONST(0.9985590765), + COEF_CONST(0.9987190144), + COEF_CONST(0.9988695519), + COEF_CONST(0.9990106877), + COEF_CONST(0.9991424205), + COEF_CONST(0.9992647489), + COEF_CONST(0.9993776719), + COEF_CONST(0.9994811883), + COEF_CONST(0.9995752973), + COEF_CONST(0.9996599979), + COEF_CONST(0.9997352893), + COEF_CONST(0.9998011707), + COEF_CONST(0.9998576417), + COEF_CONST(0.9999047017), + COEF_CONST(0.9999423501), + COEF_CONST(0.9999705868), + COEF_CONST(0.9999894113), + COEF_CONST(0.9999988235) }; real_t sine_mid_480[] = { - 0x6B3BA, - 0x141B2A, - 0x21828C, - 0x2EE9D6, - 0x3C50FF, - 0x49B7FE, - 0x571EC9, - 0x648558, - 0x71EB9F, - 0x7F5197, - 0x8CB735, - 0x9A1C71, - 0xA78140, - 0xB4E59A, - 0xC24975, - 0xCFACC7, - 0xDD0F88, - 0xEA71AD, - 0xF7D32E, - 0x1053401, - 0x112941D, - 0x11FF378, - 0x12D5209, - 0x13AAFC7, - 0x1480CA7, - 0x15568A2, - 0x162C3AD, - 0x1701DBE, - 0x17D76CE, - 0x18ACED1, - 0x19825C0, - 0x1A57B90, - 0x1B2D039, - 0x1C023B0, - 0x1CD75EC, - 0x1DAC6E5, - 0x1E81691, - 0x1F564E6, - 0x202B1DB, - 0x20FFD67, - 0x21D4780, - 0x22A901E, - 0x237D736, - 0x2451CBF, - 0x25260B1, - 0x25FA302, - 0x26CE3A8, - 0x27A229B, - 0x2875FD0, - 0x2949B3F, - 0x2A1D4DF, - 0x2AF0CA5, - 0x2BC4289, - 0x2C97682, - 0x2D6A886, - 0x2E3D88C, - 0x2F1068B, - 0x2FE3279, - 0x30B5C4E, - 0x3188400, - 0x325A985, - 0x332CCD5, - 0x33FEDE6, - 0x34D0CB0, - 0x35A2928, - 0x3674346, - 0x3745B01, - 0x381704E, - 0x38E8326, - 0x39B937F, - 0x3A8A150, - 0x3B5AC90, - 0x3C2B534, - 0x3CFBB36, - 0x3DCBE8A, - 0x3E9BF29, - 0x3F6BD08, - 0x403B81F, - 0x410B065, - 0x41DA5D1, - 0x42A9859, - 0x43787F4, - 0x444749A, - 0x4515E41, - 0x45E44E1, - 0x46B286F, - 0x47808E4, - 0x484E635, - 0x491C05B, - 0x49E974C, - 0x4AB6AFE, - 0x4B83B6A, - 0x4C50886, - 0x4D1D249, - 0x4DE98AA, - 0x4EB5B9F, - 0x4F81B22, - 0x504D727, - 0x5118FA6, - 0x51E4497, - 0x52AF5F0, - 0x537A3A9, - 0x5444DB8, - 0x550F415, - 0x55D96B7, - 0x56A3595, - 0x576D0A6, - 0x58367E1, - 0x58FFB3E, - 0x59C8AB3, - 0x5A91638, - 0x5B59DC4, - 0x5C2214E, - 0x5CEA0CE, - 0x5DB1C3A, - 0x5E7938A, - 0x5F406B5, - 0x60075B3, - 0x60CE07A, - 0x6194702, - 0x625A943, - 0x6320732, - 0x63E60C9, - 0x64AB5FE, - 0x65706C9, - 0x6635320, - 0x66F9AFC, - 0x67BDE53, - 0x6881D1E, - 0x6945752, - 0x6A08CE9, - 0x6ACBDD9, - 0x6B8EA1A, - 0x6C511A3, - 0x6D1346B, - 0x6DD526B, - 0x6E96B9A, - 0x6F57FEE, - 0x7018F60, - 0x70D99E8, - 0x7199F7C, - 0x725A014, - 0x7319BA9, - 0x73D9231, - 0x74983A4, - 0x7556FFA, - 0x761572A, - 0x76D392C, - 0x77915F7, - 0x784ED84, - 0x790BFCA, - 0x79C8CC1, - 0x7A85460, - 0x7B416A0, - 0x7BFD377, - 0x7CB8ADE, - 0x7D73CCC, - 0x7E2E93A, - 0x7EE901F, - 0x7FA3172, - 0x805CD2C, - 0x8116345, - 0x81CF3B4, - 0x8287E72, - 0x8340376, - 0x83F82B8, - 0x84AFC30, - 0x8566FD6, - 0x861DDA2, - 0x86D458C, - 0x878A78B, - 0x8840399, - 0x88F59AD, - 0x89AA9BF, - 0x8A5F3C7, - 0x8B137BD, - 0x8BC7599, - 0x8C7AD54, - 0x8D2DEE5, - 0x8DE0A45, - 0x8E92F6C, - 0x8F44E51, - 0x8FF66EE, - 0x90A793A, - 0x915852E, - 0x9208AC2, - 0x92B89ED, - 0x93682AA, - 0x94174EF, - 0x94C60B4, - 0x95745F4, - 0x96224A5, - 0x96CFCC0, - 0x977CE3D, - 0x9829916, - 0x98D5D42, - 0x9981AB9, - 0x9A2D175, - 0x9AD816D, - 0x9B82A9B, - 0x9C2CCF6, - 0x9CD6878, - 0x9D7FD18, - 0x9E28AD0, - 0x9ED1197, - 0x9F79168, - 0xA020A39, - 0xA0C7C05, - 0xA16E6C2, - 0xA214A6C, - 0xA2BA6F9, - 0xA35FC62, - 0xA404AA1, - 0xA4A91AF, - 0xA54D183, - 0xA5F0A17, - 0xA693B63, - 0xA736561, - 0xA7D880A, - 0xA87A355, - 0xA91B73D, - 0xA9BC3BA, - 0xAA5C8C4, - 0xAAFC656, - 0xAB9BC67, - 0xAC3AAF2, - 0xACD91EE, - 0xAD77156, - 0xAE14921, - 0xAEB194A, - 0xAF4E1C9, - 0xAFEA297, - 0xB085BAE, - 0xB120D07, - 0xB1BB69B, - 0xB255863, - 0xB2EF258, - 0xB388474, - 0xB420EB0, - 0xB4B9105, - 0xB550B6D, - 0xB5E7DE0, - 0xB67E859, - 0xB714AD1, - 0xB7AA541, - 0xB83F7A2, - 0xB8D41EF, - 0xB968420, - 0xB9FBE2E, - 0xBA8F015, - 0xBB219CC, - 0xBBB3B4E, - 0xBC45495, - 0xBCD6599, - 0xBD66E54, - 0xBDF6EC1, - 0xBE866D9, - 0xBF15695, - 0xBFA3DEF, - 0xC031CE1, - 0xC0BF365, - 0xC14C175, - 0xC1D870A, - 0xC26441E, - 0xC2EF8AB, - 0xC37A4AC, - 0xC404819, - 0xC48E2ED, - 0xC517522, - 0xC59FEB1, - 0xC627F96, - 0xC6AF7C9, - 0xC736745, - 0xC7BCE04, - 0xC842C00, - 0xC8C8134, - 0xC94CD98, - 0xC9D1128, - 0xCA54BDE, - 0xCAD7DB4, - 0xCB5A6A4, - 0xCBDC6A9, - 0xCC5DDBC, - 0xCCDEBD8, - 0xCD5F0F8, - 0xCDDED16, - 0xCE5E02C, - 0xCEDCA34, - 0xCF5AB29, - 0xCFD8306, - 0xD0551C5, - 0xD0D1761, - 0xD14D3D4, - 0xD1C8718, - 0xD243129, - 0xD2BD200, - 0xD336999, - 0xD3AF7EE, - 0xD427CFB, - 0xD49F8B8, - 0xD516B22, - 0xD58D434, - 0xD6033E7, - 0xD678A37, - 0xD6ED71E, - 0xD761A98, - 0xD7D54A0, - 0xD848530, - 0xD8BAC43, - 0xD92C9D4, - 0xD99DDDE, - 0xDA0E85D, - 0xDA7E94C, - 0xDAEE0A4, - 0xDB5CE62, - 0xDBCB281, - 0xDC38CFC, - 0xDCA5DCE, - 0xDD124F2, - 0xDD7E263, - 0xDDE961E, - 0xDE5401C, - 0xDEBE05A, - 0xDF276D2, - 0xDF90381, - 0xDFF8661, - 0xE05FF6E, - 0xE0C6EA3, - 0xE12D3FD, - 0xE192F75, - 0xE1F8109, - 0xE25C8B3, - 0xE2C066F, - 0xE323A39, - 0xE38640D, - 0xE3E83E5, - 0xE4499BE, - 0xE4AA594, - 0xE50A762, - 0xE569F23, - 0xE5C8CD5, - 0xE627072, - 0xE6849F7, - 0xE6E195F, - 0xE73DEA7, - 0xE7999CA, - 0xE7F4AC4, - 0xE84F191, - 0xE8A8E2E, - 0xE902096, - 0xE95A8C6, - 0xE9B26B9, - 0xEA09A6C, - 0xEA603DA, - 0xEAB6301, - 0xEB0B7DC, - 0xEB60268, - 0xEBB42A1, - 0xEC07883, - 0xEC5A40A, - 0xECAC533, - 0xECFDBFB, - 0xED4E85D, - 0xED9EA56, - 0xEDEE1E3, - 0xEE3CF01, - 0xEE8B1AB, - 0xEED89DE, - 0xEF25797, - 0xEF71AD3, - 0xEFBD38E, - 0xF0081C5, - 0xF052574, - 0xF09BE99, - 0xF0E4D30, - 0xF12D136, - 0xF174AA7, - 0xF1BB981, - 0xF201DC1, - 0xF247763, - 0xF28C664, - 0xF2D0AC2, - 0xF314479, - 0xF357386, - 0xF3997E7, - 0xF3DB198, - 0xF41C097, - 0xF45C4E1, - 0xF49BE72, - 0xF4DAD49, - 0xF519162, - 0xF556ABB, - 0xF593951, - 0xF5CFD22, - 0xF60B62A, - 0xF646467, - 0xF6807D6, - 0xF6BA076, - 0xF6F2E43, - 0xF72B13A, - 0xF76295B, - 0xF7996A1, - 0xF7CF90B, - 0xF805096, - 0xF839D40, - 0xF86DF06, - 0xF8A15E7, - 0xF8D41E0, - 0xF9062EF, - 0xF937911, - 0xF968445, - 0xF998488, - 0xF9C79D8, - 0xF9F6433, - 0xFA24398, - 0xFA51803, - 0xFA7E174, - 0xFAA9FE7, - 0xFAD535C, - 0xFAFFBD0, - 0xFB29942, - 0xFB52BAF, - 0xFB7B316, - 0xFBA2F75, - 0xFBCA0CA, - 0xFBF0714, - 0xFC16251, - 0xFC3B27F, - 0xFC5F79C, - 0xFC831A7, - 0xFCA609F, - 0xFCC8482, - 0xFCE9D4E, - 0xFD0AB03, - 0xFD2AD9D, - 0xFD4A51D, - 0xFD69180, - 0xFD872C6, - 0xFDA48ED, - 0xFDC13F4, - 0xFDDD3D9, - 0xFDF889B, - 0xFE13239, - 0xFE2D0B3, - 0xFE46406, - 0xFE5EC31, - 0xFE76934, - 0xFE8DB0E, - 0xFEA41BD, - 0xFEB9D41, - 0xFECED99, - 0xFEE32C3, - 0xFEF6CBE, - 0xFF09B8B, - 0xFF1BF28, - 0xFF2D794, - 0xFF3E4CE, - 0xFF4E6D7, - 0xFF5DDAC, - 0xFF6C94E, - 0xFF7A9BC, - 0xFF87EF4, - 0xFF948F7, - 0xFFA07C4, - 0xFFABB5B, - 0xFFB63BB, - 0xFFC00E3, - 0xFFC92D3, - 0xFFD198B, - 0xFFD950A, - 0xFFE0550, - 0xFFE6A5D, - 0xFFEC430, - 0xFFF12C9, - 0xFFF5629, - 0xFFF8E4E, - 0xFFFBB38, - 0xFFFDCE8, - 0xFFFF35D, - 0xFFFFE98 + COEF_CONST(0.0016362455), + COEF_CONST(0.0049087189), + COEF_CONST(0.0081811398), + COEF_CONST(0.0114534731), + COEF_CONST(0.0147256837), + COEF_CONST(0.0179977366), + COEF_CONST(0.0212695968), + COEF_CONST(0.0245412292), + COEF_CONST(0.0278125988), + COEF_CONST(0.0310836705), + COEF_CONST(0.0343544094), + COEF_CONST(0.0376247803), + COEF_CONST(0.0408947483), + COEF_CONST(0.0441642784), + COEF_CONST(0.0474333354), + COEF_CONST(0.0507018846), + COEF_CONST(0.0539698907), + COEF_CONST(0.0572373189), + COEF_CONST(0.0605041341), + COEF_CONST(0.0637703013), + COEF_CONST(0.0670357857), + COEF_CONST(0.0703005521), + COEF_CONST(0.0735645656), + COEF_CONST(0.0768277914), + COEF_CONST(0.0800901944), + COEF_CONST(0.0833517396), + COEF_CONST(0.0866123923), + COEF_CONST(0.0898721174), + COEF_CONST(0.0931308800), + COEF_CONST(0.0963886453), + COEF_CONST(0.0996453784), + COEF_CONST(0.1029010443), + COEF_CONST(0.1061556082), + COEF_CONST(0.1094090353), + COEF_CONST(0.1126612907), + COEF_CONST(0.1159123396), + COEF_CONST(0.1191621472), + COEF_CONST(0.1224106786), + COEF_CONST(0.1256578991), + COEF_CONST(0.1289037739), + COEF_CONST(0.1321482683), + COEF_CONST(0.1353913474), + COEF_CONST(0.1386329767), + COEF_CONST(0.1418731213), + COEF_CONST(0.1451117465), + COEF_CONST(0.1483488177), + COEF_CONST(0.1515843002), + COEF_CONST(0.1548181594), + COEF_CONST(0.1580503605), + COEF_CONST(0.1612808691), + COEF_CONST(0.1645096505), + COEF_CONST(0.1677366702), + COEF_CONST(0.1709618935), + COEF_CONST(0.1741852859), + COEF_CONST(0.1774068130), + COEF_CONST(0.1806264402), + COEF_CONST(0.1838441330), + COEF_CONST(0.1870598570), + COEF_CONST(0.1902735777), + COEF_CONST(0.1934852607), + COEF_CONST(0.1966948717), + COEF_CONST(0.1999023762), + COEF_CONST(0.2031077400), + COEF_CONST(0.2063109286), + COEF_CONST(0.2095119078), + COEF_CONST(0.2127106433), + COEF_CONST(0.2159071008), + COEF_CONST(0.2191012462), + COEF_CONST(0.2222930451), + COEF_CONST(0.2254824635), + COEF_CONST(0.2286694671), + COEF_CONST(0.2318540218), + COEF_CONST(0.2350360936), + COEF_CONST(0.2382156484), + COEF_CONST(0.2413926520), + COEF_CONST(0.2445670705), + COEF_CONST(0.2477388699), + COEF_CONST(0.2509080162), + COEF_CONST(0.2540744755), + COEF_CONST(0.2572382139), + COEF_CONST(0.2603991974), + COEF_CONST(0.2635573923), + COEF_CONST(0.2667127647), + COEF_CONST(0.2698652808), + COEF_CONST(0.2730149069), + COEF_CONST(0.2761616092), + COEF_CONST(0.2793053540), + COEF_CONST(0.2824461077), + COEF_CONST(0.2855838367), + COEF_CONST(0.2887185072), + COEF_CONST(0.2918500858), + COEF_CONST(0.2949785389), + COEF_CONST(0.2981038331), + COEF_CONST(0.3012259348), + COEF_CONST(0.3043448106), + COEF_CONST(0.3074604271), + COEF_CONST(0.3105727510), + COEF_CONST(0.3136817488), + COEF_CONST(0.3167873874), + COEF_CONST(0.3198896335), + COEF_CONST(0.3229884538), + COEF_CONST(0.3260838151), + COEF_CONST(0.3291756844), + COEF_CONST(0.3322640284), + COEF_CONST(0.3353488142), + COEF_CONST(0.3384300086), + COEF_CONST(0.3415075788), + COEF_CONST(0.3445814916), + COEF_CONST(0.3476517143), + COEF_CONST(0.3507182139), + COEF_CONST(0.3537809576), + COEF_CONST(0.3568399126), + COEF_CONST(0.3598950461), + COEF_CONST(0.3629463254), + COEF_CONST(0.3659937179), + COEF_CONST(0.3690371908), + COEF_CONST(0.3720767117), + COEF_CONST(0.3751122479), + COEF_CONST(0.3781437670), + COEF_CONST(0.3811712365), + COEF_CONST(0.3841946239), + COEF_CONST(0.3872138969), + COEF_CONST(0.3902290232), + COEF_CONST(0.3932399704), + COEF_CONST(0.3962467063), + COEF_CONST(0.3992491987), + COEF_CONST(0.4022474156), + COEF_CONST(0.4052413246), + COEF_CONST(0.4082308939), + COEF_CONST(0.4112160913), + COEF_CONST(0.4141968849), + COEF_CONST(0.4171732429), + COEF_CONST(0.4201451332), + COEF_CONST(0.4231125241), + COEF_CONST(0.4260753838), + COEF_CONST(0.4290336806), + COEF_CONST(0.4319873828), + COEF_CONST(0.4349364587), + COEF_CONST(0.4378808768), + COEF_CONST(0.4408206056), + COEF_CONST(0.4437556136), + COEF_CONST(0.4466858692), + COEF_CONST(0.4496113412), + COEF_CONST(0.4525319983), + COEF_CONST(0.4554478091), + COEF_CONST(0.4583587424), + COEF_CONST(0.4612647671), + COEF_CONST(0.4641658519), + COEF_CONST(0.4670619660), + COEF_CONST(0.4699530782), + COEF_CONST(0.4728391575), + COEF_CONST(0.4757201731), + COEF_CONST(0.4785960942), + COEF_CONST(0.4814668899), + COEF_CONST(0.4843325294), + COEF_CONST(0.4871929822), + COEF_CONST(0.4900482174), + COEF_CONST(0.4928982047), + COEF_CONST(0.4957429134), + COEF_CONST(0.4985823131), + COEF_CONST(0.5014163734), + COEF_CONST(0.5042450640), + COEF_CONST(0.5070683544), + COEF_CONST(0.5098862146), + COEF_CONST(0.5126986143), + COEF_CONST(0.5155055234), + COEF_CONST(0.5183069119), + COEF_CONST(0.5211027497), + COEF_CONST(0.5238930069), + COEF_CONST(0.5266776537), + COEF_CONST(0.5294566601), + COEF_CONST(0.5322299965), + COEF_CONST(0.5349976332), + COEF_CONST(0.5377595404), + COEF_CONST(0.5405156887), + COEF_CONST(0.5432660485), + COEF_CONST(0.5460105903), + COEF_CONST(0.5487492848), + COEF_CONST(0.5514821026), + COEF_CONST(0.5542090145), + COEF_CONST(0.5569299913), + COEF_CONST(0.5596450038), + COEF_CONST(0.5623540230), + COEF_CONST(0.5650570198), + COEF_CONST(0.5677539653), + COEF_CONST(0.5704448306), + COEF_CONST(0.5731295868), + COEF_CONST(0.5758082054), + COEF_CONST(0.5784806575), + COEF_CONST(0.5811469145), + COEF_CONST(0.5838069479), + COEF_CONST(0.5864607292), + COEF_CONST(0.5891082300), + COEF_CONST(0.5917494219), + COEF_CONST(0.5943842766), + COEF_CONST(0.5970127660), + COEF_CONST(0.5996348618), + COEF_CONST(0.6022505361), + COEF_CONST(0.6048597607), + COEF_CONST(0.6074625077), + COEF_CONST(0.6100587493), + COEF_CONST(0.6126484577), + COEF_CONST(0.6152316051), + COEF_CONST(0.6178081639), + COEF_CONST(0.6203781064), + COEF_CONST(0.6229414052), + COEF_CONST(0.6254980328), + COEF_CONST(0.6280479618), + COEF_CONST(0.6305911649), + COEF_CONST(0.6331276149), + COEF_CONST(0.6356572846), + COEF_CONST(0.6381801469), + COEF_CONST(0.6406961748), + COEF_CONST(0.6432053414), + COEF_CONST(0.6457076197), + COEF_CONST(0.6482029831), + COEF_CONST(0.6506914047), + COEF_CONST(0.6531728580), + COEF_CONST(0.6556473162), + COEF_CONST(0.6581147531), + COEF_CONST(0.6605751420), + COEF_CONST(0.6630284567), + COEF_CONST(0.6654746709), + COEF_CONST(0.6679137584), + COEF_CONST(0.6703456931), + COEF_CONST(0.6727704490), + COEF_CONST(0.6751880000), + COEF_CONST(0.6775983202), + COEF_CONST(0.6800013840), + COEF_CONST(0.6823971654), + COEF_CONST(0.6847856390), + COEF_CONST(0.6871667790), + COEF_CONST(0.6895405601), + COEF_CONST(0.6919069567), + COEF_CONST(0.6942659435), + COEF_CONST(0.6966174953), + COEF_CONST(0.6989615869), + COEF_CONST(0.7012981932), + COEF_CONST(0.7036272892), + COEF_CONST(0.7059488498), + COEF_CONST(0.7082628503), + COEF_CONST(0.7105692659), + COEF_CONST(0.7128680719), + COEF_CONST(0.7151592436), + COEF_CONST(0.7174427565), + COEF_CONST(0.7197185862), + COEF_CONST(0.7219867083), + COEF_CONST(0.7242470985), + COEF_CONST(0.7264997326), + COEF_CONST(0.7287445864), + COEF_CONST(0.7309816360), + COEF_CONST(0.7332108574), + COEF_CONST(0.7354322266), + COEF_CONST(0.7376457200), + COEF_CONST(0.7398513138), + COEF_CONST(0.7420489844), + COEF_CONST(0.7442387082), + COEF_CONST(0.7464204618), + COEF_CONST(0.7485942218), + COEF_CONST(0.7507599651), + COEF_CONST(0.7529176682), + COEF_CONST(0.7550673083), + COEF_CONST(0.7572088621), + COEF_CONST(0.7593423069), + COEF_CONST(0.7614676197), + COEF_CONST(0.7635847778), + COEF_CONST(0.7656937585), + COEF_CONST(0.7677945393), + COEF_CONST(0.7698870976), + COEF_CONST(0.7719714111), + COEF_CONST(0.7740474573), + COEF_CONST(0.7761152141), + COEF_CONST(0.7781746593), + COEF_CONST(0.7802257710), + COEF_CONST(0.7822685270), + COEF_CONST(0.7843029055), + COEF_CONST(0.7863288848), + COEF_CONST(0.7883464432), + COEF_CONST(0.7903555590), + COEF_CONST(0.7923562107), + COEF_CONST(0.7943483769), + COEF_CONST(0.7963320363), + COEF_CONST(0.7983071676), + COEF_CONST(0.8002737497), + COEF_CONST(0.8022317615), + COEF_CONST(0.8041811820), + COEF_CONST(0.8061219904), + COEF_CONST(0.8080541659), + COEF_CONST(0.8099776877), + COEF_CONST(0.8118925354), + COEF_CONST(0.8137986883), + COEF_CONST(0.8156961261), + COEF_CONST(0.8175848285), + COEF_CONST(0.8194647752), + COEF_CONST(0.8213359460), + COEF_CONST(0.8231983211), + COEF_CONST(0.8250518803), + COEF_CONST(0.8268966039), + COEF_CONST(0.8287324721), + COEF_CONST(0.8305594652), + COEF_CONST(0.8323775637), + COEF_CONST(0.8341867481), + COEF_CONST(0.8359869990), + COEF_CONST(0.8377782972), + COEF_CONST(0.8395606235), + COEF_CONST(0.8413339587), + COEF_CONST(0.8430982839), + COEF_CONST(0.8448535802), + COEF_CONST(0.8465998288), + COEF_CONST(0.8483370110), + COEF_CONST(0.8500651082), + COEF_CONST(0.8517841019), + COEF_CONST(0.8534939737), + COEF_CONST(0.8551947052), + COEF_CONST(0.8568862783), + COEF_CONST(0.8585686748), + COEF_CONST(0.8602418767), + COEF_CONST(0.8619058662), + COEF_CONST(0.8635606253), + COEF_CONST(0.8652061363), + COEF_CONST(0.8668423818), + COEF_CONST(0.8684693440), + COEF_CONST(0.8700870056), + COEF_CONST(0.8716953493), + COEF_CONST(0.8732943578), + COEF_CONST(0.8748840140), + COEF_CONST(0.8764643010), + COEF_CONST(0.8780352017), + COEF_CONST(0.8795966993), + COEF_CONST(0.8811487772), + COEF_CONST(0.8826914187), + COEF_CONST(0.8842246072), + COEF_CONST(0.8857483265), + COEF_CONST(0.8872625600), + COEF_CONST(0.8887672917), + COEF_CONST(0.8902625055), + COEF_CONST(0.8917481852), + COEF_CONST(0.8932243150), + COEF_CONST(0.8946908791), + COEF_CONST(0.8961478618), + COEF_CONST(0.8975952475), + COEF_CONST(0.8990330206), + COEF_CONST(0.9004611658), + COEF_CONST(0.9018796678), + COEF_CONST(0.9032885114), + COEF_CONST(0.9046876815), + COEF_CONST(0.9060771631), + COEF_CONST(0.9074569413), + COEF_CONST(0.9088270015), + COEF_CONST(0.9101873288), + COEF_CONST(0.9115379087), + COEF_CONST(0.9128787268), + COEF_CONST(0.9142097687), + COEF_CONST(0.9155310202), + COEF_CONST(0.9168424670), + COEF_CONST(0.9181440952), + COEF_CONST(0.9194358908), + COEF_CONST(0.9207178400), + COEF_CONST(0.9219899290), + COEF_CONST(0.9232521443), + COEF_CONST(0.9245044723), + COEF_CONST(0.9257468996), + COEF_CONST(0.9269794128), + COEF_CONST(0.9282019989), + COEF_CONST(0.9294146447), + COEF_CONST(0.9306173372), + COEF_CONST(0.9318100635), + COEF_CONST(0.9329928109), + COEF_CONST(0.9341655667), + COEF_CONST(0.9353283183), + COEF_CONST(0.9364810533), + COEF_CONST(0.9376237593), + COEF_CONST(0.9387564242), + COEF_CONST(0.9398790357), + COEF_CONST(0.9409915818), + COEF_CONST(0.9420940507), + COEF_CONST(0.9431864306), + COEF_CONST(0.9442687096), + COEF_CONST(0.9453408763), + COEF_CONST(0.9464029192), + COEF_CONST(0.9474548268), + COEF_CONST(0.9484965880), + COEF_CONST(0.9495281915), + COEF_CONST(0.9505496264), + COEF_CONST(0.9515608816), + COEF_CONST(0.9525619463), + COEF_CONST(0.9535528099), + COEF_CONST(0.9545334617), + COEF_CONST(0.9555038913), + COEF_CONST(0.9564640881), + COEF_CONST(0.9574140420), + COEF_CONST(0.9583537427), + COEF_CONST(0.9592831803), + COEF_CONST(0.9602023446), + COEF_CONST(0.9611112260), + COEF_CONST(0.9620098147), + COEF_CONST(0.9628981010), + COEF_CONST(0.9637760755), + COEF_CONST(0.9646437286), + COEF_CONST(0.9655010512), + COEF_CONST(0.9663480341), + COEF_CONST(0.9671846682), + COEF_CONST(0.9680109445), + COEF_CONST(0.9688268541), + COEF_CONST(0.9696323885), + COEF_CONST(0.9704275388), + COEF_CONST(0.9712122966), + COEF_CONST(0.9719866535), + COEF_CONST(0.9727506013), + COEF_CONST(0.9735041316), + COEF_CONST(0.9742472365), + COEF_CONST(0.9749799080), + COEF_CONST(0.9757021383), + COEF_CONST(0.9764139195), + COEF_CONST(0.9771152442), + COEF_CONST(0.9778061047), + COEF_CONST(0.9784864937), + COEF_CONST(0.9791564039), + COEF_CONST(0.9798158282), + COEF_CONST(0.9804647593), + COEF_CONST(0.9811031905), + COEF_CONST(0.9817311149), + COEF_CONST(0.9823485257), + COEF_CONST(0.9829554164), + COEF_CONST(0.9835517804), + COEF_CONST(0.9841376113), + COEF_CONST(0.9847129029), + COEF_CONST(0.9852776490), + COEF_CONST(0.9858318436), + COEF_CONST(0.9863754808), + COEF_CONST(0.9869085546), + COEF_CONST(0.9874310595), + COEF_CONST(0.9879429897), + COEF_CONST(0.9884443399), + COEF_CONST(0.9889351046), + COEF_CONST(0.9894152786), + COEF_CONST(0.9898848568), + COEF_CONST(0.9903438341), + COEF_CONST(0.9907922056), + COEF_CONST(0.9912299666), + COEF_CONST(0.9916571122), + COEF_CONST(0.9920736380), + COEF_CONST(0.9924795395), + COEF_CONST(0.9928748124), + COEF_CONST(0.9932594523), + COEF_CONST(0.9936334552), + COEF_CONST(0.9939968171), + COEF_CONST(0.9943495342), + COEF_CONST(0.9946916025), + COEF_CONST(0.9950230184), + COEF_CONST(0.9953437785), + COEF_CONST(0.9956538793), + COEF_CONST(0.9959533173), + COEF_CONST(0.9962420896), + COEF_CONST(0.9965201929), + COEF_CONST(0.9967876242), + COEF_CONST(0.9970443807), + COEF_CONST(0.9972904597), + COEF_CONST(0.9975258586), + COEF_CONST(0.9977505747), + COEF_CONST(0.9979646057), + COEF_CONST(0.9981679493), + COEF_CONST(0.9983606034), + COEF_CONST(0.9985425657), + COEF_CONST(0.9987138346), + COEF_CONST(0.9988744079), + COEF_CONST(0.9990242842), + COEF_CONST(0.9991634617), + COEF_CONST(0.9992919389), + COEF_CONST(0.9994097146), + COEF_CONST(0.9995167873), + COEF_CONST(0.9996131561), + COEF_CONST(0.9996988198), + COEF_CONST(0.9997737775), + COEF_CONST(0.9998380284), + COEF_CONST(0.9998915719), + COEF_CONST(0.9999344073), + COEF_CONST(0.9999665343), + COEF_CONST(0.9999879524), + COEF_CONST(0.9999986614) }; real_t ld_mid_512[] = { - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x1921F1, - 0x4B64DB, - 0x7DA4DD, - 0xAFE006, - 0xE21468, - 0x1144013, - 0x1466118, - 0x1787587, - 0x1AA7B73, - 0x1DC70ED, - 0x20E5409, - 0x24022DB, - 0x271DB77, - 0x2A37BF1, - 0x2D50261, - 0x3066CDE, - 0x337B97F, - 0x368E65F, - 0x399F198, - 0x3CAD945, - 0x3FB9B85, - 0x42C3675, - 0x45CA837, - 0x48CEEED, - 0x4BD08B8, - 0x4ECF3C0, - 0x51CAE2B, - 0x54C3622, - 0x57B89D0, - 0x5AAA761, - 0x5D98D06, - 0x60838EE, - 0x636A94E, - 0x664DC5B, - 0x692D04C, - 0x6C0835E, - 0x6EDF3CB, - 0x71B1FD5, - 0x74805BD, - 0x774A3C8, - 0x7A0F83E, - 0x7CD0168, - 0x7F8BD96, - 0x8242B16, - 0x84F483D, - 0x87A1361, - 0x8A48ADB, - 0x8CEAD08, - 0x8F87849, - 0x921EB01, - 0x94B0397, - 0x973C075, - 0x99C200A, - 0x9C420C6, - 0x9EBC120, - 0xA12FF8F, - 0xA39DA91, - 0xA6050A6, - 0xA866053, - 0xAAC0820, - 0xAD14699, - 0xAF61A4E, - 0xB1A81D5, - 0xB3E7BC6, - 0xB6206BE, - 0xB85215D, - 0xBA7CA4B, - 0xBCA002F, - 0xBEBC1BA, - 0xC0D0D9E, - 0xC2DE291, - 0xC4E3F51, - 0xC6E229D, - 0xC8D8B3C, - 0xCAC77F6, - 0xCCAE79B, - 0xCE8D8FF, - 0xD064AF9, - 0xD233C68, - 0xD3FAC2D, - 0xD5B9930, - 0xD77025E, - 0xD91E6A7, - 0xDAC4503, - 0xDC61C6D, - 0xDDF6BE6, - 0xDF83274, - 0xE106F23, - 0xE282104, - 0xE3F472C, - 0xE55E0B8, - 0xE6BECC8, - 0xE816A82, - 0xE965913, - 0xEAAB7AC, - 0xEBE8584, - 0xED1C1D8, - 0xEE46BE8, - 0xEF682FF, - 0xF080668, - 0xF18F577, - 0xF294F85, - 0xF3913F0, - 0xF48421D, - 0xF56D977, - 0xF64D96C, - 0xF724173, - 0xF7F1108, - 0xF8B47AC, - 0xF96E4E6, - 0xFA1E845, - 0xFAC515A, - 0xFB61FC0, - 0xFBF5316, - 0xFC7EB01, - 0xFCFE72C, - 0xFD74748, - 0xFDE0B0D, - 0xFE43237, - 0xFE9BC8B, - 0xFEEA9D0, - 0xFF2F9D8, - 0xFF6AC77, - 0xFF9C188, - 0xFFC38ED, - 0xFFE128F, - 0xFFF4E5A, - 0xFFFEC42, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000 + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0061358848), + COEF_CONST(0.0184067304), + COEF_CONST(0.0306748040), + COEF_CONST(0.0429382581), + COEF_CONST(0.0551952459), + COEF_CONST(0.0674439214), + COEF_CONST(0.0796824402), + COEF_CONST(0.0919089590), + COEF_CONST(0.1041216368), + COEF_CONST(0.1163186341), + COEF_CONST(0.1284981143), + COEF_CONST(0.1406582432), + COEF_CONST(0.1527971895), + COEF_CONST(0.1649131250), + COEF_CONST(0.1770042253), + COEF_CONST(0.1890686693), + COEF_CONST(0.2011046404), + COEF_CONST(0.2131103258), + COEF_CONST(0.2250839175), + COEF_CONST(0.2370236125), + COEF_CONST(0.2489276125), + COEF_CONST(0.2607941250), + COEF_CONST(0.2726213628), + COEF_CONST(0.2844075449), + COEF_CONST(0.2961508962), + COEF_CONST(0.3078496483), + COEF_CONST(0.3195020394), + COEF_CONST(0.3311063146), + COEF_CONST(0.3426607265), + COEF_CONST(0.3541635348), + COEF_CONST(0.3656130075), + COEF_CONST(0.3770074202), + COEF_CONST(0.3883450569), + COEF_CONST(0.3996242103), + COEF_CONST(0.4108431818), + COEF_CONST(0.4220002818), + COEF_CONST(0.4330938301), + COEF_CONST(0.4441221560), + COEF_CONST(0.4550835988), + COEF_CONST(0.4659765077), + COEF_CONST(0.4767992422), + COEF_CONST(0.4875501725), + COEF_CONST(0.4982276796), + COEF_CONST(0.5088301553), + COEF_CONST(0.5193560032), + COEF_CONST(0.5298036379), + COEF_CONST(0.5401714861), + COEF_CONST(0.5504579865), + COEF_CONST(0.5606615899), + COEF_CONST(0.5707807598), + COEF_CONST(0.5808139721), + COEF_CONST(0.5907597160), + COEF_CONST(0.6006164937), + COEF_CONST(0.6103828207), + COEF_CONST(0.6200572264), + COEF_CONST(0.6296382536), + COEF_CONST(0.6391244597), + COEF_CONST(0.6485144160), + COEF_CONST(0.6578067083), + COEF_CONST(0.6669999374), + COEF_CONST(0.6760927188), + COEF_CONST(0.6850836831), + COEF_CONST(0.6939714763), + COEF_CONST(0.7027547599), + COEF_CONST(0.7114322112), + COEF_CONST(0.7200025235), + COEF_CONST(0.7284644060), + COEF_CONST(0.7368165845), + COEF_CONST(0.7450578010), + COEF_CONST(0.7531868147), + COEF_CONST(0.7612024011), + COEF_CONST(0.7691033533), + COEF_CONST(0.7768884813), + COEF_CONST(0.7845566127), + COEF_CONST(0.7921065928), + COEF_CONST(0.7995372846), + COEF_CONST(0.8068475690), + COEF_CONST(0.8140363451), + COEF_CONST(0.8211025303), + COEF_CONST(0.8280450605), + COEF_CONST(0.8348628901), + COEF_CONST(0.8415549925), + COEF_CONST(0.8481203597), + COEF_CONST(0.8545580032), + COEF_CONST(0.8608669533), + COEF_CONST(0.8670462601), + COEF_CONST(0.8730949928), + COEF_CONST(0.8790122407), + COEF_CONST(0.8847971125), + COEF_CONST(0.8904487372), + COEF_CONST(0.8959662635), + COEF_CONST(0.9013488606), + COEF_CONST(0.9065957178), + COEF_CONST(0.9117060451), + COEF_CONST(0.9166790728), + COEF_CONST(0.9215140520), + COEF_CONST(0.9262102546), + COEF_CONST(0.9307669733), + COEF_CONST(0.9351835219), + COEF_CONST(0.9394592352), + COEF_CONST(0.9435934695), + COEF_CONST(0.9475856021), + COEF_CONST(0.9514350317), + COEF_CONST(0.9551411788), + COEF_CONST(0.9587034850), + COEF_CONST(0.9621214141), + COEF_CONST(0.9653944512), + COEF_CONST(0.9685221034), + COEF_CONST(0.9715038998), + COEF_CONST(0.9743393912), + COEF_CONST(0.9770281507), + COEF_CONST(0.9795697733), + COEF_CONST(0.9819638764), + COEF_CONST(0.9842100992), + COEF_CONST(0.9863081037), + COEF_CONST(0.9882575738), + COEF_CONST(0.9900582159), + COEF_CONST(0.9917097588), + COEF_CONST(0.9932119539), + COEF_CONST(0.9945645750), + COEF_CONST(0.9957674182), + COEF_CONST(0.9968203026), + COEF_CONST(0.9977230695), + COEF_CONST(0.9984755829), + COEF_CONST(0.9990777296), + COEF_CONST(0.9995294188), + COEF_CONST(0.9998305826), + COEF_CONST(0.9999811755), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000) }; real_t ld_mid_480[] = { - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x1ACEDD, - 0x506B6B, - 0x860472, - 0xBB9798, - 0xF12283, - 0x126A2DB, - 0x15C1646, - 0x1917A6C, - 0x1C6CCF6, - 0x1FC0B8D, - 0x23133DB, - 0x266438B, - 0x29B3849, - 0x2D00FC3, - 0x304C7A8, - 0x3395DA6, - 0x36DCF70, - 0x3A21AB9, - 0x3D63D36, - 0x40A349D, - 0x43DFEA6, - 0x471990D, - 0x4A5018D, - 0x4D835E6, - 0x50B33D8, - 0x53DF927, - 0x5708398, - 0x5A2D0F4, - 0x5D4DF07, - 0x606AB9E, - 0x638348A, - 0x669779E, - 0x69A72B2, - 0x6CB23A0, - 0x6FB8844, - 0x72B9E80, - 0x75B6437, - 0x78AD751, - 0x7B9F5B9, - 0x7E8BD5E, - 0x8172C33, - 0x845402D, - 0x872F749, - 0x8A04F85, - 0x8CD46E2, - 0x8F9DB69, - 0x9260B25, - 0x951D425, - 0x97D347F, - 0x9A82A4A, - 0x9D2B3A4, - 0x9FCCEB1, - 0xA267996, - 0xA4FB280, - 0xA7877A1, - 0xAA0C72E, - 0xAC89F62, - 0xAEFFE7F, - 0xB16E2CA, - 0xB3D4A8E, - 0xB63341D, - 0xB889DCC, - 0xBAD85F7, - 0xBD1EB00, - 0xBF5CB4E, - 0xC19254F, - 0xC3BF775, - 0xC5E4039, - 0xC7FFE1B, - 0xCA12F9F, - 0xCC1D351, - 0xCE1E7C2, - 0xD016B8A, - 0xD205D47, - 0xD3EBB9E, - 0xD5C8539, - 0xD79B8CB, - 0xD96550A, - 0xDB258B7, - 0xDCDC296, - 0xDE89173, - 0xE02C422, - 0xE1C597C, - 0xE355062, - 0xE4DA7BC, - 0xE655E78, - 0xE7C738C, - 0xE92E5F5, - 0xEA8B4B7, - 0xEBDDEDD, - 0xED26379, - 0xEE641A4, - 0xEF97881, - 0xF0C0736, - 0xF1DECF4, - 0xF2F28F2, - 0xF3FBA6E, - 0xF4FA0AE, - 0xF5EDAFF, - 0xF6D68B7, - 0xF7B4932, - 0xF887BD4, - 0xF950009, - 0xFA0D544, - 0xFABFB02, - 0xFB670C3, - 0xFC03614, - 0xFC94A86, - 0xFD1ADB3, - 0xFD95F3E, - 0xFE05ECF, - 0xFE6AC18, - 0xFEC46D2, - 0xFF12EC0, - 0xFF563A8, - 0xFF8E55C, - 0xFFBB3B6, - 0xFFDCE94, - 0xFFF35E0, - 0xFFFE98A, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000, - 0x10000000 + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0000000000), + COEF_CONST(0.0065449381), + COEF_CONST(0.0196336930), + COEF_CONST(0.0327190837), + COEF_CONST(0.0457988682), + COEF_CONST(0.0588708053), + COEF_CONST(0.0719326552), + COEF_CONST(0.0849821797), + COEF_CONST(0.0980171430), + COEF_CONST(0.1110353116), + COEF_CONST(0.1240344549), + COEF_CONST(0.1370123455), + COEF_CONST(0.1499667597), + COEF_CONST(0.1628954779), + COEF_CONST(0.1757962848), + COEF_CONST(0.1886669699), + COEF_CONST(0.2015053279), + COEF_CONST(0.2143091589), + COEF_CONST(0.2270762692), + COEF_CONST(0.2398044712), + COEF_CONST(0.2524915839), + COEF_CONST(0.2651354334), + COEF_CONST(0.2777338534), + COEF_CONST(0.2902846851), + COEF_CONST(0.3027857780), + COEF_CONST(0.3152349901), + COEF_CONST(0.3276301883), + COEF_CONST(0.3399692488), + COEF_CONST(0.3522500573), + COEF_CONST(0.3644705095), + COEF_CONST(0.3766285116), + COEF_CONST(0.3887219804), + COEF_CONST(0.4007488436), + COEF_CONST(0.4127070406), + COEF_CONST(0.4245945223), + COEF_CONST(0.4364092520), + COEF_CONST(0.4481492051), + COEF_CONST(0.4598123703), + COEF_CONST(0.4713967489), + COEF_CONST(0.4829003561), + COEF_CONST(0.4943212208), + COEF_CONST(0.5056573861), + COEF_CONST(0.5169069096), + COEF_CONST(0.5280678638), + COEF_CONST(0.5391383363), + COEF_CONST(0.5501164301), + COEF_CONST(0.5610002644), + COEF_CONST(0.5717879741), + COEF_CONST(0.5824777109), + COEF_CONST(0.5930676432), + COEF_CONST(0.6035559563), + COEF_CONST(0.6139408533), + COEF_CONST(0.6242205546), + COEF_CONST(0.6343932989), + COEF_CONST(0.6444573433), + COEF_CONST(0.6544109631), + COEF_CONST(0.6642524530), + COEF_CONST(0.6739801267), + COEF_CONST(0.6835923173), + COEF_CONST(0.6930873779), + COEF_CONST(0.7024636815), + COEF_CONST(0.7117196216), + COEF_CONST(0.7208536122), + COEF_CONST(0.7298640883), + COEF_CONST(0.7387495058), + COEF_CONST(0.7475083425), + COEF_CONST(0.7561390974), + COEF_CONST(0.7646402918), + COEF_CONST(0.7730104690), + COEF_CONST(0.7812481948), + COEF_CONST(0.7893520577), + COEF_CONST(0.7973206693), + COEF_CONST(0.8051526640), + COEF_CONST(0.8128467000), + COEF_CONST(0.8204014588), + COEF_CONST(0.8278156461), + COEF_CONST(0.8350879914), + COEF_CONST(0.8422172487), + COEF_CONST(0.8492021964), + COEF_CONST(0.8560416377), + COEF_CONST(0.8627344006), + COEF_CONST(0.8692793384), + COEF_CONST(0.8756753297), + COEF_CONST(0.8819212785), + COEF_CONST(0.8880161146), + COEF_CONST(0.8939587938), + COEF_CONST(0.8997482976), + COEF_CONST(0.9053836343), + COEF_CONST(0.9108638381), + COEF_CONST(0.9161879700), + COEF_CONST(0.9213551179), + COEF_CONST(0.9263643963), + COEF_CONST(0.9312149469), + COEF_CONST(0.9359059386), + COEF_CONST(0.9404365677), + COEF_CONST(0.9448060577), + COEF_CONST(0.9490136602), + COEF_CONST(0.9530586539), + COEF_CONST(0.9569403460), + COEF_CONST(0.9606580713), + COEF_CONST(0.9642111928), + COEF_CONST(0.9675991016), + COEF_CONST(0.9708212173), + COEF_CONST(0.9738769878), + COEF_CONST(0.9767658894), + COEF_CONST(0.9794874272), + COEF_CONST(0.9820411349), + COEF_CONST(0.9844265749), + COEF_CONST(0.9866433385), + COEF_CONST(0.9886910458), + COEF_CONST(0.9905693459), + COEF_CONST(0.9922779171), + COEF_CONST(0.9938164666), + COEF_CONST(0.9951847307), + COEF_CONST(0.9963824750), + COEF_CONST(0.9974094943), + COEF_CONST(0.9982656127), + COEF_CONST(0.9989506833), + COEF_CONST(0.9994645889), + COEF_CONST(0.9998072413), + COEF_CONST(0.9999785819), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000), + COEF_CONST(1.0000000000) }; #endif -#endif - #ifdef __cplusplus } #endif diff --git a/libfaad2/specrec.c b/libfaad2/specrec.c index 8f3b8e6d9f..177050bc9b 100644 --- a/libfaad2/specrec.c +++ b/libfaad2/specrec.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: specrec.c,v 1.23 2003/07/29 08:20:13 menno Exp $ +** $Id: specrec.c,v 1.27 2003/09/30 12:43:05 menno Exp $ **/ /* @@ -413,59 +413,43 @@ uint8_t window_grouping_info(faacDecHandle hDecoder, ic_stream *ics) void quant_to_spec(ic_stream *ics, real_t *spec_data, uint16_t frame_len) { uint8_t g, sfb, win; - uint16_t width, bin; - real_t *start_inptr, *start_win_ptr, *win_ptr; + uint16_t width, bin, k, gindex; real_t tmp_spec[1024]; - real_t *tmp_spec_ptr, *spec_ptr; - tmp_spec_ptr = tmp_spec; - memset(tmp_spec_ptr, 0, frame_len*sizeof(real_t)); + memset(tmp_spec, 0, frame_len*sizeof(real_t)); - spec_ptr = spec_data; - tmp_spec_ptr = tmp_spec; - start_win_ptr = tmp_spec_ptr; + k = 0; + gindex = 0; for (g = 0; g < ics->num_window_groups; g++) { uint16_t j = 0; - uint16_t win_inc = 0; - - start_inptr = spec_ptr; - - win_inc = ics->swb_offset[ics->num_swb]; + uint16_t gincrease = 0; + uint16_t win_inc = ics->swb_offset[ics->num_swb]; for (sfb = 0; sfb < ics->num_swb; sfb++) { width = ics->swb_offset[sfb+1] - ics->swb_offset[sfb]; - win_ptr = start_win_ptr; - for (win = 0; win < ics->window_group_length[g]; win++) { - tmp_spec_ptr = win_ptr + j; - for (bin = 0; bin < width; bin += 4) { - tmp_spec_ptr[0] = spec_ptr[0]; - tmp_spec_ptr[1] = spec_ptr[1]; - tmp_spec_ptr[2] = spec_ptr[2]; - tmp_spec_ptr[3] = spec_ptr[3]; - tmp_spec_ptr += 4; - spec_ptr += 4; + tmp_spec[gindex+(win*win_inc)+j+bin+0] = spec_data[k+0]; + tmp_spec[gindex+(win*win_inc)+j+bin+1] = spec_data[k+1]; + tmp_spec[gindex+(win*win_inc)+j+bin+2] = spec_data[k+2]; + tmp_spec[gindex+(win*win_inc)+j+bin+3] = spec_data[k+3]; + gincrease += 4; + k += 4; } - - win_ptr += win_inc; } j += width; } - start_win_ptr += (spec_ptr - start_inptr); + gindex += gincrease; } - spec_ptr = spec_data; - tmp_spec_ptr = tmp_spec; - - memcpy(spec_ptr, tmp_spec_ptr, frame_len*sizeof(real_t)); + memcpy(spec_data, tmp_spec, frame_len*sizeof(real_t)); } #ifndef FIXED_POINT @@ -483,6 +467,7 @@ void build_tables(real_t *pow2_table) static INLINE real_t iquant(int16_t q, real_t *tab) { +#ifdef FIXED_POINT int16_t sgn = 1; if (q == 0) return 0; @@ -494,26 +479,38 @@ static INLINE real_t iquant(int16_t q, real_t *tab) } if (q >= IQ_TABLE_SIZE) - return sgn * tab[q>>3] * 16; + return 0; /* sgn * tab[q>>3] * 16; */ return sgn * tab[q]; +#else + int16_t sgn = 1; + + if (q == 0) return 0; + + if (q < 0) + { + q = -q; + sgn = -1; + } + + if (q < IQ_TABLE_SIZE) + return sgn * tab[q]; + + return sgn * pow(q, 4./3.); +#endif } void inverse_quantization(real_t *x_invquant, int16_t *x_quant, uint16_t frame_len) { int16_t i; - int16_t *in_ptr = x_quant; - real_t *out_ptr = x_invquant; real_t *tab = iq_table; - for(i = frame_len/4-1; i >= 0; --i) + for(i = 0; i < frame_len; i+=4) { - out_ptr[0] = iquant(in_ptr[0], tab); - out_ptr[1] = iquant(in_ptr[1], tab); - out_ptr[2] = iquant(in_ptr[2], tab); - out_ptr[3] = iquant(in_ptr[3], tab); - out_ptr += 4; - in_ptr += 4; + x_invquant[i] = iquant(x_quant[i], tab); + x_invquant[i+1] = iquant(x_quant[i+1], tab); + x_invquant[i+2] = iquant(x_quant[i+2], tab); + x_invquant[i+3] = iquant(x_quant[i+3], tab); } } @@ -538,17 +535,11 @@ static real_t pow2_table[] = }; #endif -#ifdef FIXED_POINT void apply_scalefactors(faacDecHandle hDecoder, ic_stream *ics, real_t *x_invquant, uint16_t frame_len) -#else -void apply_scalefactors(ic_stream *ics, real_t *x_invquant, real_t *pow2_table, - uint16_t frame_len) -#endif { uint8_t g, sfb; uint16_t top; - real_t *fp; #ifndef FIXED_POINT real_t scale; #else @@ -557,26 +548,29 @@ void apply_scalefactors(ic_stream *ics, real_t *x_invquant, real_t *pow2_table, uint8_t groups = 0; uint16_t nshort = frame_len/8; + static real_t max_fp = 0; + static real_t max_exp = 0; + static real_t max_frac = 0; + for (g = 0; g < ics->num_window_groups; g++) { uint16_t k = 0; - /* using this 128*groups doesn't hurt long blocks, because + /* using this nshort*groups doesn't hurt long blocks, because long blocks only have 1 group, so that means 'groups' is always 0 for long blocks */ - fp = x_invquant + (groups*nshort); - for (sfb = 0; sfb < ics->max_sfb; sfb++) { top = ics->sect_sfb_offset[g][sfb+1]; #ifndef FIXED_POINT - scale = get_scale_factor_gain(ics->scale_factors[g][sfb], pow2_table); + scale = get_scale_factor_gain(ics->scale_factors[g][sfb], hDecoder->pow2_table); #else exp = (ics->scale_factors[g][sfb] - 100) / 4; frac = (ics->scale_factors[g][sfb] - 100) % 4; + /* IMDCT pre-scaling */ if (hDecoder->object_type == LD) { exp -= 6 /*9*/; @@ -592,33 +586,32 @@ void apply_scalefactors(ic_stream *ics, real_t *x_invquant, real_t *pow2_table, for ( ; k < top; k += 4) { #ifndef FIXED_POINT - fp[0] = fp[0] * scale; - fp[1] = fp[1] * scale; - fp[2] = fp[2] * scale; - fp[3] = fp[3] * scale; + x_invquant[k+(groups*nshort)] = x_invquant[k+(groups*nshort)] * scale; + x_invquant[k+(groups*nshort)+1] = x_invquant[k+(groups*nshort)+1] * scale; + x_invquant[k+(groups*nshort)+2] = x_invquant[k+(groups*nshort)+2] * scale; + x_invquant[k+(groups*nshort)+3] = x_invquant[k+(groups*nshort)+3] * scale; #else if (exp < 0) { - fp[0] >>= -exp; - fp[1] >>= -exp; - fp[2] >>= -exp; - fp[3] >>= -exp; + x_invquant[k+(groups*nshort)] >>= -exp; + x_invquant[k+(groups*nshort)+1] >>= -exp; + x_invquant[k+(groups*nshort)+2] >>= -exp; + x_invquant[k+(groups*nshort)+3] >>= -exp; } else { - fp[0] <<= exp; - fp[1] <<= exp; - fp[2] <<= exp; - fp[3] <<= exp; + x_invquant[k+(groups*nshort)] <<= exp; + x_invquant[k+(groups*nshort)+1] <<= exp; + x_invquant[k+(groups*nshort)+2] <<= exp; + x_invquant[k+(groups*nshort)+3] <<= exp; } if (frac) { - fp[0] = MUL_R_C(fp[0],pow2_table[frac + 3]); - fp[1] = MUL_R_C(fp[1],pow2_table[frac + 3]); - fp[2] = MUL_R_C(fp[2],pow2_table[frac + 3]); - fp[3] = MUL_R_C(fp[3],pow2_table[frac + 3]); + x_invquant[k+(groups*nshort)] = MUL_R_C(x_invquant[k+(groups*nshort)],pow2_table[frac + 3]); + x_invquant[k+(groups*nshort)+1] = MUL_R_C(x_invquant[k+(groups*nshort)+1],pow2_table[frac + 3]); + x_invquant[k+(groups*nshort)+2] = MUL_R_C(x_invquant[k+(groups*nshort)+2],pow2_table[frac + 3]); + x_invquant[k+(groups*nshort)+3] = MUL_R_C(x_invquant[k+(groups*nshort)+3],pow2_table[frac + 3]); } #endif - fp += 4; } } groups += ics->window_group_length[g]; diff --git a/libfaad2/specrec.h b/libfaad2/specrec.h index 999aa517da..306084e776 100644 --- a/libfaad2/specrec.h +++ b/libfaad2/specrec.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: specrec.h,v 1.13 2003/07/29 08:20:14 menno Exp $ +** $Id: specrec.h,v 1.15 2003/09/24 08:05:45 menno Exp $ **/ #ifndef __SPECREC_H__ @@ -37,13 +37,10 @@ extern "C" { uint8_t window_grouping_info(faacDecHandle hDecoder, ic_stream *ics); void quant_to_spec(ic_stream *ics, real_t *spec_data, uint16_t frame_len); void inverse_quantization(real_t *x_invquant, int16_t *x_quant, uint16_t frame_len); -#ifdef FIXED_POINT void apply_scalefactors(faacDecHandle hDecoder, ic_stream *ics, real_t *x_invquant, uint16_t frame_len); -#else +#ifndef FIXED_POINT void build_tables(real_t *pow2_table); -void apply_scalefactors(ic_stream *ics, real_t *x_invquant, real_t *pow2_table, - uint16_t frame_len); #endif #ifdef __cplusplus diff --git a/libfaad2/ssr.c b/libfaad2/ssr.c index 95d79c896b..04be8c4514 100644 --- a/libfaad2/ssr.c +++ b/libfaad2/ssr.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: ssr.c,v 1.4 2003/07/29 08:20:14 menno Exp $ +** $Id: ssr.c,v 1.5 2003/09/09 18:09:52 menno Exp $ **/ #include "common.h" diff --git a/libfaad2/ssr.h b/libfaad2/ssr.h index 28004b4cda..8863434bbf 100644 --- a/libfaad2/ssr.h +++ b/libfaad2/ssr.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: ssr.h,v 1.4 2003/07/29 08:20:14 menno Exp $ +** $Id: ssr.h,v 1.5 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SSR_H__ diff --git a/libfaad2/ssr_fb.c b/libfaad2/ssr_fb.c index 8d5a691a88..d21c1a9892 100644 --- a/libfaad2/ssr_fb.c +++ b/libfaad2/ssr_fb.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: ssr_fb.c,v 1.2 2003/07/29 08:20:14 menno Exp $ +** $Id: ssr_fb.c,v 1.3 2003/09/09 18:09:52 menno Exp $ **/ #include "common.h" diff --git a/libfaad2/ssr_fb.h b/libfaad2/ssr_fb.h index 8c7f2c77e2..852849ffb6 100644 --- a/libfaad2/ssr_fb.h +++ b/libfaad2/ssr_fb.h @@ -1,6 +1,6 @@ /* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** FAAD - Freeware Advanced Audio Decoder +** Copyright (C) 2002 M. Bakker ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by @@ -16,13 +16,7 @@ ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ** -** 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: ssr_fb.h,v 1.2 2003/07/29 08:20:14 menno Exp $ +** $Id: ssr_fb.h,v 1.3 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SSR_FB_H__ diff --git a/libfaad2/ssr_ipqf.c b/libfaad2/ssr_ipqf.c index b8f0a332f9..6163334181 100644 --- a/libfaad2/ssr_ipqf.c +++ b/libfaad2/ssr_ipqf.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: ssr_ipqf.c,v 1.3 2003/07/29 08:20:14 menno Exp $ +** $Id: ssr_ipqf.c,v 1.4 2003/09/09 18:09:52 menno Exp $ **/ #include "common.h" diff --git a/libfaad2/ssr_ipqf.h b/libfaad2/ssr_ipqf.h index 1fff7d267e..2ed7f34e23 100644 --- a/libfaad2/ssr_ipqf.h +++ b/libfaad2/ssr_ipqf.h @@ -1,6 +1,6 @@ /* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** FAAD - Freeware Advanced Audio Decoder +** Copyright (C) 2002 M. Bakker ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by @@ -16,13 +16,7 @@ ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ** -** 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: ssr_ipqf.h,v 1.3 2003/07/29 08:20:14 menno Exp $ +** $Id: ssr_ipqf.h,v 1.4 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SSR_IPQF_H__ diff --git a/libfaad2/ssr_win.h b/libfaad2/ssr_win.h index 8963a941db..2a1343c98a 100644 --- a/libfaad2/ssr_win.h +++ b/libfaad2/ssr_win.h @@ -1,6 +1,6 @@ /* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003 M. Bakker, Ahead Software AG, http://www.nero.com +** FAAD - Freeware Advanced Audio Decoder +** Copyright (C) 2002 M. Bakker ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by @@ -16,13 +16,7 @@ ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ** -** 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: ssr_win.h,v 1.2 2003/07/29 08:20:14 menno Exp $ +** $Id: ssr_win.h,v 1.3 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __SSR_WIN_H__ diff --git a/libfaad2/structs.h b/libfaad2/structs.h index d2ef219195..2f96fbd963 100644 --- a/libfaad2/structs.h +++ b/libfaad2/structs.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: structs.h,v 1.10 2003/07/29 08:20:14 menno Exp $ +** $Id: structs.h,v 1.16 2003/09/23 08:12:29 menno Exp $ **/ #ifndef __STRUCTS_H__ @@ -160,6 +160,9 @@ typedef struct uint16_t adts_buffer_fullness; uint8_t no_raw_data_blocks_in_frame; uint16_t crc_check; + + /* control param */ + uint8_t old_format; } adts_header; typedef struct @@ -318,6 +321,7 @@ typedef struct mp4AudioSpecificConfig uint8_t epConfig; int8_t sbr_present_flag; + int8_t forceUpSampling; } mp4AudioSpecificConfig; typedef struct faacDecConfiguration @@ -326,6 +330,7 @@ typedef struct faacDecConfiguration uint32_t defSampleRate; uint8_t outputFormat; uint8_t downMatrix; + uint8_t useOldADTSFormat; } faacDecConfiguration, *faacDecConfigurationPtr; typedef struct faacDecFrameInfo @@ -336,6 +341,15 @@ typedef struct faacDecFrameInfo uint8_t error; uint32_t samplerate; + /* SBR: 0: off, 1: on; normal, 2: on; downsampled */ + uint8_t sbr; + + /* MPEG-4 ObjectType */ + uint8_t object_type; + + /* AAC header type; MP4 will be signalled as RAW also */ + uint8_t header_type; + /* multichannel configuration */ uint8_t num_front_channels; uint8_t num_side_channels; @@ -357,7 +371,6 @@ typedef struct uint8_t aacSpectralDataResilienceFlag; #endif uint16_t frameLength; - uint16_t samplesLeft; uint8_t postSeekResetFlag; uint32_t frame; @@ -382,12 +395,16 @@ typedef struct #ifdef SBR_DEC int8_t sbr_present_flag; + int8_t forceUpSampling; real_t *time_out2[MAX_CHANNELS]; uint8_t sbr_used[32]; sbr_info *sbr[32]; +#ifdef DRM + int8_t lcstereo_flag; +#endif #endif #ifdef SSR_DEC diff --git a/libfaad2/syntax.c b/libfaad2/syntax.c index 33c3a2ba66..4929e9b0a2 100644 --- a/libfaad2/syntax.c +++ b/libfaad2/syntax.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: syntax.c,v 1.51 2003/07/29 08:20:14 menno Exp $ +** $Id: syntax.c,v 1.56 2003/09/30 12:43:05 menno Exp $ **/ /* @@ -262,8 +262,7 @@ uint8_t program_config_element(program_config *pce, bitfile *ld) element *decode_sce_lfe(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, bitfile *ld, - int16_t **spec_data, real_t **spec_coef, - uint8_t id_syn_ele) + real_t **spec_coef, uint8_t id_syn_ele) { element *ele; uint8_t channels = hDecoder->fr_channels; @@ -279,7 +278,6 @@ element *decode_sce_lfe(faacDecHandle hDecoder, return NULL; } - spec_data[channels] = (int16_t*)malloc(hDecoder->frameLength*sizeof(int16_t)); spec_coef[channels] = (real_t*)malloc(hDecoder->frameLength*sizeof(real_t)); ele = (element*)malloc(sizeof(element)); @@ -289,7 +287,7 @@ element *decode_sce_lfe(faacDecHandle hDecoder, ele->paired_channel = -1; hInfo->error = single_lfe_channel_element(hDecoder, ele, - ld, spec_data[channels]); + ld, spec_coef[channels]); if (hDecoder->pce_set) hDecoder->internal_channel[hDecoder->pce.sce_channel[ele->element_instance_tag]] = channels; @@ -309,8 +307,7 @@ element *decode_sce_lfe(faacDecHandle hDecoder, element *decode_cpe(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, bitfile *ld, - int16_t **spec_data, real_t **spec_coef, - uint8_t id_syn_ele) + real_t **spec_coef, uint8_t id_syn_ele) { element *ele; uint8_t channels = hDecoder->fr_channels; @@ -326,8 +323,6 @@ element *decode_cpe(faacDecHandle hDecoder, return NULL; } - spec_data[channels] = (int16_t*)malloc(hDecoder->frameLength*sizeof(int16_t)); - spec_data[channels+1] = (int16_t*)malloc(hDecoder->frameLength*sizeof(int16_t)); spec_coef[channels] = (real_t*)malloc(hDecoder->frameLength*sizeof(real_t)); spec_coef[channels+1] = (real_t*)malloc(hDecoder->frameLength*sizeof(real_t)); @@ -338,7 +333,7 @@ element *decode_cpe(faacDecHandle hDecoder, ele->paired_channel = channels+1; hInfo->error = channel_pair_element(hDecoder, ele, - ld, spec_data[channels], spec_data[channels+1]); + ld, spec_coef[channels], spec_coef[channels+1]); if (hDecoder->pce_set) { @@ -360,8 +355,7 @@ element *decode_cpe(faacDecHandle hDecoder, element **raw_data_block(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, bitfile *ld, element **elements, - int16_t **spec_data, real_t **spec_coef, - program_config *pce, drc_info *drc) + real_t **spec_coef, program_config *pce, drc_info *drc) { uint8_t id_syn_ele; uint8_t ch_ele = 0; @@ -384,7 +378,7 @@ element **raw_data_block(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, if (hDecoder->first_syn_ele == 25) hDecoder->first_syn_ele = id_syn_ele; hDecoder->last_syn_ele = id_syn_ele; elements[ch_ele++] = decode_sce_lfe(hDecoder, - hInfo, ld, spec_data, spec_coef, id_syn_ele); + hInfo, ld, spec_coef, id_syn_ele); if (hInfo->error > 0) return elements; break; @@ -392,14 +386,14 @@ element **raw_data_block(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, if (hDecoder->first_syn_ele == 25) hDecoder->first_syn_ele = id_syn_ele; hDecoder->last_syn_ele = id_syn_ele; elements[ch_ele++] = decode_cpe(hDecoder, - hInfo, ld, spec_data, spec_coef, id_syn_ele); + hInfo, ld, spec_coef, id_syn_ele); if (hInfo->error > 0) return elements; break; case ID_LFE: hDecoder->has_lfe++; elements[ch_ele++] = decode_sce_lfe(hDecoder, - hInfo, ld, spec_data, spec_coef, id_syn_ele); + hInfo, ld, spec_coef, id_syn_ele); if (hInfo->error > 0) return elements; break; @@ -428,7 +422,7 @@ element **raw_data_block(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, if (hDecoder->sbr_used[ch_ele-1]) { hDecoder->sbr_present_flag = 1; - hDecoder->sbr[ch_ele-1]->sample_rate = sample_rates[hDecoder->sf_index]; + hDecoder->sbr[ch_ele-1]->sample_rate = get_sample_rate(hDecoder->sf_index); hDecoder->sbr[ch_ele-1]->sample_rate *= 2; } #endif @@ -442,67 +436,67 @@ element **raw_data_block(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, { case 1: elements[ch_ele++] = decode_sce_lfe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_SCE); + hInfo, ld, spec_coef, ID_SCE); if (hInfo->error > 0) return elements; break; case 2: elements[ch_ele++] = decode_cpe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_CPE); + hInfo, ld, spec_coef, ID_CPE); if (hInfo->error > 0) return elements; break; case 3: elements[ch_ele++] = decode_sce_lfe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_SCE); + hInfo, ld, spec_coef, ID_SCE); elements[ch_ele++] = decode_cpe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_CPE); + hInfo, ld, spec_coef, ID_CPE); if (hInfo->error > 0) return elements; break; case 4: elements[ch_ele++] = decode_sce_lfe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_SCE); + hInfo, ld, spec_coef, ID_SCE); elements[ch_ele++] = decode_cpe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_CPE); + hInfo, ld, spec_coef, ID_CPE); elements[ch_ele++] = decode_sce_lfe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_SCE); + hInfo, ld, spec_coef, ID_SCE); if (hInfo->error > 0) return elements; break; case 5: elements[ch_ele++] = decode_sce_lfe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_SCE); + hInfo, ld, spec_coef, ID_SCE); elements[ch_ele++] = decode_cpe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_CPE); + hInfo, ld, spec_coef, ID_CPE); elements[ch_ele++] = decode_cpe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_CPE); + hInfo, ld, spec_coef, ID_CPE); if (hInfo->error > 0) return elements; break; case 6: elements[ch_ele++] = decode_sce_lfe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_SCE); + hInfo, ld, spec_coef, ID_SCE); elements[ch_ele++] = decode_cpe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_CPE); + hInfo, ld, spec_coef, ID_CPE); elements[ch_ele++] = decode_cpe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_CPE); + hInfo, ld, spec_coef, ID_CPE); elements[ch_ele++] = decode_sce_lfe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_LFE); + hInfo, ld, spec_coef, ID_LFE); if (hInfo->error > 0) return elements; break; case 7: elements[ch_ele++] = decode_sce_lfe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_SCE); + hInfo, ld, spec_coef, ID_SCE); elements[ch_ele++] = decode_cpe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_CPE); + hInfo, ld, spec_coef, ID_CPE); elements[ch_ele++] = decode_cpe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_CPE); + hInfo, ld, spec_coef, ID_CPE); elements[ch_ele++] = decode_cpe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_CPE); + hInfo, ld, spec_coef, ID_CPE); elements[ch_ele++] = decode_sce_lfe(hDecoder, - hInfo, ld, spec_data, spec_coef, ID_LFE); + hInfo, ld, spec_coef, ID_LFE); if (hInfo->error > 0) return elements; break; @@ -521,47 +515,25 @@ element **raw_data_block(faacDecHandle hDecoder, faacDecFrameInfo *hInfo, #endif /* new in corrigendum 14496-3:2002 */ - faad_byte_align(ld); - - return elements; -} - #ifdef DRM -static uint8_t faad_check_CRC(bitfile *ld) -{ - uint16_t len = faad_get_processed_bits(ld) - 8; - uint8_t CRC; - uint16_t r=255; /* Initialize to all ones */ - - /* CRC polynome used x^8 + x^4 + x^3 + x^2 +1 */ -#define GPOLY 0435 - - faad_rewindbits(ld); - - CRC = ~faad_getbits(ld, 8 - DEBUGVAR(1,999,"faad_check_CRC(): CRC")); /* CRC is stored inverted */ - - for (; len>0; len--) - { - r = ( (r << 1) ^ (( ( faad_get1bit(ld - DEBUGVAR(1,998,"")) & 1) ^ ((r >> 7) & 1)) * GPOLY )) & 0xFF; - } - if (r != CRC) + if (hDecoder->object_type != DRM_ER_LC) +#endif { - return 8; - } else { - return 0; + faad_byte_align(ld); } + + return elements; } -#endif /* Table 4.4.4 and */ /* Table 4.4.9 */ static uint8_t single_lfe_channel_element(faacDecHandle hDecoder, element *sce, bitfile *ld, - int16_t *spec_data) + real_t *spec_coef) { + uint8_t retval = 0; ic_stream *ics = &(sce->ics1); + int16_t spec_data[1024]; #ifdef DRM uint8_t result; @@ -578,7 +550,7 @@ static uint8_t single_lfe_channel_element(faacDecHandle hDecoder, if (ics->tns_data_present) tns_data(ics, &(ics->tns), ld); - if ((result = faad_check_CRC( ld )) > 0) + if ((result = faad_check_CRC( ld, faad_get_processed_bits(ld) - 8 )) > 0) return result; /* error resilient spectral data decoding */ @@ -596,21 +568,40 @@ static uint8_t single_lfe_channel_element(faacDecHandle hDecoder, return 2; /* pulse coding not allowed for short blocks */ } } - return 0; } else #endif + { + retval = individual_channel_stream(hDecoder, sce, ld, ics, 0, spec_data); + if (retval > 0) + return retval; + } + + + /* noiseless coding is done, spectral reconstruction is done now */ + + /* inverse quantization */ + inverse_quantization(spec_coef, spec_data, hDecoder->frameLength); + + /* apply scalefactors */ + apply_scalefactors(hDecoder, ics, spec_coef, hDecoder->frameLength); + + /* deinterleave short block grouping */ + if (ics->window_sequence == EIGHT_SHORT_SEQUENCE) + quant_to_spec(ics, spec_coef, hDecoder->frameLength); - return individual_channel_stream(hDecoder, sce, ld, ics, 0, spec_data); + return 0; } /* Table 4.4.5 */ static uint8_t channel_pair_element(faacDecHandle hDecoder, element *cpe, - bitfile *ld, int16_t *spec_data1, - int16_t *spec_data2) + bitfile *ld, + real_t *spec_coef1, real_t *spec_coef2) { uint8_t result; ic_stream *ics1 = &(cpe->ics1); ic_stream *ics2 = &(cpe->ics2); + int16_t spec_data1[1024]; + int16_t spec_data2[1024]; #ifdef DRM if (hDecoder->object_type != DRM_ER_LC) @@ -689,10 +680,9 @@ static uint8_t channel_pair_element(faacDecHandle hDecoder, element *cpe, if (ics1->tns_data_present) tns_data(ics2, &(ics2->tns), ld); - if ((result = faad_check_CRC( ld )) > 0) - { + if ((result = faad_check_CRC( ld, faad_get_processed_bits(ld) - 8 )) > 0) return result; - } + /* error resilient spectral data decoding */ if ((result = reordered_spectral_data(hDecoder, ics1, ld, spec_data1)) > 0) return result; @@ -719,10 +709,25 @@ static uint8_t channel_pair_element(faacDecHandle hDecoder, element *cpe, return 2; /* pulse coding not allowed for short blocks */ } } - return 0; - } else + } #endif + /* noiseless coding is done, spectral reconstruction is done now */ + + /* inverse quantization */ + inverse_quantization(spec_coef1, spec_data1, hDecoder->frameLength); + inverse_quantization(spec_coef2, spec_data2, hDecoder->frameLength); + + /* apply scalefactors */ + apply_scalefactors(hDecoder, ics1, spec_coef1, hDecoder->frameLength); + apply_scalefactors(hDecoder, ics2, spec_coef2, hDecoder->frameLength); + + /* deinterleave short block grouping */ + if (ics1->window_sequence == EIGHT_SHORT_SEQUENCE) + quant_to_spec(ics1, spec_coef1, hDecoder->frameLength); + if (ics2->window_sequence == EIGHT_SHORT_SEQUENCE) + quant_to_spec(ics2, spec_coef2, hDecoder->frameLength); + return 0; } @@ -975,29 +980,6 @@ static uint16_t data_stream_element(faacDecHandle hDecoder, bitfile *ld) { uint8_t data = faad_getbits(ld, LEN_BYTE DEBUGVAR(1,64,"data_stream_element(): data_stream_byte")); - - if (count == 6 && data == 'N') - { - data = faad_getbits(ld, LEN_BYTE - DEBUGVAR(1,64,"data_stream_element(): data_stream_byte")); - i++; - if (data == 'D') - { - uint16_t samplesLeft; - uint8_t data2 = faad_getbits(ld, LEN_BYTE - DEBUGVAR(1,64,"data_stream_element(): data_stream_byte")); - data = faad_getbits(ld, LEN_BYTE - DEBUGVAR(1,64,"data_stream_element(): data_stream_byte")); - samplesLeft = faad_getbits(ld, LEN_BYTE - DEBUGVAR(1,64,"data_stream_element(): data_stream_byte")); - samplesLeft += (faad_getbits(ld, LEN_BYTE - DEBUGVAR(1,64,"data_stream_element(): data_stream_byte")) << 8); - i += 4; - - if (data == 'L' && data2 == 'F') - hDecoder->samplesLeft = samplesLeft; - } - } } return count; @@ -1035,12 +1017,15 @@ static uint8_t fill_element(faacDecHandle hDecoder, bitfile *ld, drc_info *drc hDecoder->sbr_used[sbr_ele] = 1; if (!hDecoder->sbr[sbr_ele]) - hDecoder->sbr[sbr_ele] = sbrDecodeInit(); + { + hDecoder->sbr[sbr_ele] = sbrDecodeInit(hDecoder->frameLength +#ifdef DRM + , 0 +#endif + ); + } - /* read in all the SBR data for processing later on - this is needed because the SBR bitstream reader needs to know - what element type comes _after_ the (this) SBR FIL element - */ + /* read in all the SBR data for processing later on */ hDecoder->sbr[sbr_ele]->data = (uint8_t*)faad_getbitbuffer(ld, count*8); hDecoder->sbr[sbr_ele]->data_size = count; } else { @@ -1642,13 +1627,10 @@ static uint8_t spectral_data(faacDecHandle hDecoder, ic_stream *ics, bitfile *ld { sp = spectral_data + p; - if (sect_cb < FIRST_PAIR_HCB) - { - if ((result = huffman_spectral_data(sect_cb, ld, sp)) > 0) - return result; - } else { if ((result = huffman_spectral_data(sect_cb, ld, sp)) > 0) return result; + if (sect_cb >= FIRST_PAIR_HCB) + { if ((result = huffman_spectral_data(sect_cb, ld, sp+2)) > 0) return result; } @@ -1923,13 +1905,16 @@ static uint8_t adts_fixed_header(adts_header *adts, bitfile *ld) DEBUGVAR(1,126,"adts_fixed_header(): original")); adts->home = faad_get1bit(ld DEBUGVAR(1,127,"adts_fixed_header(): home")); -/* Removed in corrigendum 14496-3:2002 + + if (adts->old_format == 1) + { + /* Removed in corrigendum 14496-3:2002 */ if (adts->id == 0) { adts->emphasis = (uint8_t)faad_getbits(ld, 2 DEBUGVAR(1,128,"adts_fixed_header(): emphasis")); } -*/ + } return 0; } diff --git a/libfaad2/syntax.h b/libfaad2/syntax.h index b5361d6962..8d8f2ae78c 100644 --- a/libfaad2/syntax.h +++ b/libfaad2/syntax.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: syntax.h,v 1.32 2003/07/29 08:20:14 menno Exp $ +** $Id: syntax.h,v 1.37 2003/09/24 19:55:34 menno Exp $ **/ #ifndef __SYNTAX_H__ @@ -36,15 +36,34 @@ extern "C" { #include "drc.h" #include "bits.h" -#define MAIN 0 -#define LC 1 -#define SSR 2 -#define LTP 3 +#define MAIN 1 +#define LC 2 +#define SSR 3 +#define LTP 4 +#define HE_AAC 5 #define LD 23 #define ER_LC 17 #define ER_LTP 19 #define DRM_ER_LC 27 /* special object type for DRM */ +/* header types */ +#define RAW 0 +#define ADIF 1 +#define ADTS 2 + +/* SBR signalling */ +#define NO_SBR 0 +#define SBR_UPSAMPLED 1 +#define SBR_DOWNSAMPLED 2 +#define NO_SBR_UPSAMPLED 3 + +/* DRM channel definitions */ +#define DRMCH_MONO 1 +#define DRMCH_STEREO 2 +#define DRMCH_SBR_MONO 3 +#define DRMCH_SBR_LC_STEREO 4 +#define DRMCH_SBR_STEREO 5 + /* First object type that has ER */ #define ER_OBJECT_START 17 @@ -85,12 +104,6 @@ extern "C" { #define INTENSITY_HCB2 14 #define INTENSITY_HCB 15 -static uint32_t sample_rates[] = -{ - 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, - 12000, 11025, 8000 -}; - int8_t GASpecificConfig(bitfile *ld, mp4AudioSpecificConfig *mp4ASC, program_config *pce); @@ -101,10 +114,10 @@ void get_adif_header(adif_header *adif, bitfile *ld); /* static functions */ static uint8_t single_lfe_channel_element(faacDecHandle hDecoder, element *sce, bitfile *ld, - int16_t *spec_data); + real_t *spec_coef); static uint8_t channel_pair_element(faacDecHandle hDecoder, element *cpe, - bitfile *ld, int16_t *spec_data1, - int16_t *spec_data2); + bitfile *ld, + real_t *spec_coef1, real_t *spec_coef2); static uint8_t coupling_channel_element(faacDecHandle hDecoder, bitfile *ld); static uint16_t data_stream_element(faacDecHandle hDecoder, bitfile *ld); static uint8_t program_config_element(program_config *pce, bitfile *ld); diff --git a/libfaad2/tns.c b/libfaad2/tns.c index 294cec4b6e..ef32ab4cfa 100644 --- a/libfaad2/tns.c +++ b/libfaad2/tns.c @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: tns.c,v 1.21 2003/07/29 08:20:14 menno Exp $ +** $Id: tns.c,v 1.22 2003/09/09 18:09:52 menno Exp $ **/ #include "common.h" @@ -31,69 +31,38 @@ #include "syntax.h" #include "tns.h" -#ifdef FIXED_POINT -static real_t tns_coef_0_3[] = -{ - 0x0, 0x6F13013, 0xC8261BA, 0xF994E02, - 0xF03E3A3A, 0xF224C28C, 0xF5B72457, 0xFA8715E3, - 0xF90ECFED, 0xF37D9E46, 0xF066B1FE, 0xF066B1FE, - 0xF03E3A3A, 0xF224C28C, 0xF5B72457, 0xFA8715E3 -}; -static real_t tns_coef_0_4[] = -{ - 0x0, 0x3539B35, 0x681FE48, 0x9679182, - 0xBE3EBD4, 0xDDB3D74, 0xF378709, 0xFE98FCA, - 0xF011790B, 0xF09C5CB7, 0xF1AD6942, 0xF33B524A, - 0xF5388AEB, 0xF793BBDF, 0xFA385AA9, 0xFD0F5CAB -}; -static real_t tns_coef_1_3[] = -{ - 0x0, 0x6F13013, 0xF5B72457, 0xFA8715E3, - 0xF994E02, 0xC8261BA, 0xF5B72457, 0xFA8715E3, - 0xF90ECFED, 0xF37D9E46, 0xF5B72457, 0xFA8715E3, - 0xF37D9E46, 0xF90ECFED, 0xF5B72457, 0xFA8715E3 -}; -static real_t tns_coef_1_4[] = -{ - 0x0, 0x3539B35, 0x681FE48, 0x9679182, - 0xF5388AEB, 0xF793BBDF, 0xFA385AA9, 0xFD0F5CAB, - 0xFE98FCA, 0xF378709, 0xDDB3D74, 0xBE3EBD4, - 0xF5388AEB, 0xF793BBDF, 0xFA385AA9, 0xFD0F5CAB -}; -#else #ifdef _MSC_VER #pragma warning(disable:4305) #pragma warning(disable:4244) #endif static real_t tns_coef_0_3[] = { - 0.0, 0.4338837391, 0.7818314825, 0.9749279122, - -0.9848077530, -0.8660254038, -0.6427876097, -0.3420201433, - -0.4338837391, -0.7818314825, -0.9749279122, -0.9749279122, - -0.9848077530, -0.8660254038, -0.6427876097, -0.3420201433 + COEF_CONST(0.0), COEF_CONST(0.4338837391), COEF_CONST(0.7818314825), COEF_CONST(0.9749279122), + COEF_CONST(-0.9848077530), COEF_CONST(-0.8660254038), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433), + COEF_CONST(-0.4338837391), COEF_CONST(-0.7818314825), COEF_CONST(-0.9749279122), COEF_CONST(-0.9749279122), + COEF_CONST(-0.9848077530), COEF_CONST(-0.8660254038), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433) }; static real_t tns_coef_0_4[] = { - 0.0, 0.2079116908, 0.4067366431, 0.5877852523, - 0.7431448255, 0.8660254038, 0.9510565163, 0.9945218954, - -0.9957341763, -0.9618256432, -0.8951632914, -0.7980172273, - -0.6736956436, -0.5264321629, -0.3612416662, -0.1837495178 + COEF_CONST(0.0), COEF_CONST(0.2079116908), COEF_CONST(0.4067366431), COEF_CONST(0.5877852523), + COEF_CONST(0.7431448255), COEF_CONST(0.8660254038), COEF_CONST(0.9510565163), COEF_CONST(0.9945218954), + COEF_CONST(-0.9957341763), COEF_CONST(-0.9618256432), COEF_CONST(-0.8951632914), COEF_CONST(-0.7980172273), + COEF_CONST(-0.6736956436), COEF_CONST(-0.5264321629), COEF_CONST(-0.3612416662), COEF_CONST(-0.1837495178) }; static real_t tns_coef_1_3[] = { - 0.0, 0.4338837391, -0.6427876097, -0.3420201433, - 0.9749279122, 0.7818314825, -0.6427876097, -0.3420201433, - -0.4338837391, -0.7818314825, -0.6427876097, -0.3420201433, - -0.7818314825, -0.4338837391, -0.6427876097, -0.3420201433 + COEF_CONST(0.0), COEF_CONST(0.4338837391), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433), + COEF_CONST(0.9749279122), COEF_CONST(0.7818314825), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433), + COEF_CONST(-0.4338837391), COEF_CONST(-0.7818314825), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433), + COEF_CONST(-0.7818314825), COEF_CONST(-0.4338837391), COEF_CONST(-0.6427876097), COEF_CONST(-0.3420201433) }; static real_t tns_coef_1_4[] = { - 0.0, 0.2079116908, 0.4067366431, 0.5877852523, - -0.6736956436, -0.5264321629, -0.3612416662, -0.1837495178, - 0.9945218954, 0.9510565163, 0.8660254038, 0.7431448255, - -0.6736956436, -0.5264321629, -0.3612416662, -0.1837495178 + COEF_CONST(0.0), COEF_CONST(0.2079116908), COEF_CONST(0.4067366431), COEF_CONST(0.5877852523), + COEF_CONST(-0.6736956436), COEF_CONST(-0.5264321629), COEF_CONST(-0.3612416662), COEF_CONST(-0.1837495178), + COEF_CONST(0.9945218954), COEF_CONST(0.9510565163), COEF_CONST(0.8660254038), COEF_CONST(0.7431448255), + COEF_CONST(-0.6736956436), COEF_CONST(-0.5264321629), COEF_CONST(-0.3612416662), COEF_CONST(-0.1837495178) }; -#endif /* TNS decoding for one channel and frame */ diff --git a/libfaad2/tns.h b/libfaad2/tns.h index 75a93ddbc4..ba471af582 100644 --- a/libfaad2/tns.h +++ b/libfaad2/tns.h @@ -22,7 +22,7 @@ ** Commercial non-GPL licensing of this software is possible. ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. ** -** $Id: tns.h,v 1.8 2003/07/29 08:20:14 menno Exp $ +** $Id: tns.h,v 1.9 2003/09/09 18:09:52 menno Exp $ **/ #ifndef __TNS_H__ -- cgit v1.2.3