changeset 10989:3185f64f6350

synced with current cvs
author alex
date Fri, 03 Oct 2003 22:23:26 +0000
parents c2bff70784d5
children af64f3d797dd
files libfaad2/Makefile libfaad2/bits.c libfaad2/bits.h libfaad2/cfft.c libfaad2/cfft_tab.h libfaad2/common.c libfaad2/common.h libfaad2/decoder.c libfaad2/decoder.h libfaad2/dither.c libfaad2/dither.h libfaad2/drc.c libfaad2/faad.h libfaad2/filtbank.c libfaad2/filtbank.h libfaad2/fixed.h libfaad2/hcr.c libfaad2/huffman.c libfaad2/huffman.h libfaad2/iq_table.h libfaad2/is.c libfaad2/is.h libfaad2/kbd_win.h libfaad2/lt_predict.c libfaad2/lt_predict.h libfaad2/mdct.c libfaad2/mdct.h libfaad2/mp4.c libfaad2/mp4.h libfaad2/ms.c libfaad2/ms.h libfaad2/output.c libfaad2/output.h libfaad2/pns.c libfaad2/pns.h libfaad2/pulse.c libfaad2/pulse.h libfaad2/rvlc.c libfaad2/rvlc.h libfaad2/sbr_dct.c libfaad2/sbr_dct.h libfaad2/sbr_dec.c libfaad2/sbr_dec.h libfaad2/sbr_e_nf.c libfaad2/sbr_e_nf.h libfaad2/sbr_fbt.c libfaad2/sbr_fbt.h libfaad2/sbr_hfadj.c libfaad2/sbr_hfadj.h libfaad2/sbr_hfgen.c libfaad2/sbr_hfgen.h libfaad2/sbr_huff.c libfaad2/sbr_huff.h libfaad2/sbr_noise.h libfaad2/sbr_qmf.c libfaad2/sbr_qmf.h libfaad2/sbr_qmf_c.h libfaad2/sbr_syntax.c libfaad2/sbr_syntax.h libfaad2/sbr_tf_grid.c libfaad2/sbr_tf_grid.h libfaad2/sine_win.h libfaad2/specrec.c libfaad2/specrec.h libfaad2/ssr.c libfaad2/ssr.h libfaad2/ssr_fb.c libfaad2/ssr_fb.h libfaad2/ssr_ipqf.c libfaad2/ssr_ipqf.h libfaad2/ssr_win.h libfaad2/structs.h libfaad2/syntax.c libfaad2/syntax.h libfaad2/tns.c libfaad2/tns.h
diffstat 76 files changed, 19006 insertions(+), 20055 deletions(-) [+]
line wrap: on
line diff
--- a/libfaad2/Makefile	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/Makefile	Fri Oct 03 22:23:26 2003 +0000
@@ -3,7 +3,7 @@
 
 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) 
--- a/libfaad2/bits.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/bits.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 {
     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 @@
         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 @@
     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)
 {
--- a/libfaad2/bits.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/bits.h	Fri Oct 03 22:23:26 2003 +0000
@@ -79,6 +79,7 @@
                        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 @@
     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 @@
     {
         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 @@
 {
     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 @@
     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
 }
--- a/libfaad2/cfft.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/cfft.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
             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 @@
             {
                 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 @@
                    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(t1) = RE(cc[ac]) - RE(cc[ac+2]);
+            IM(t2) = IM(cc[ac])   + IM(cc[ac+2]);
+            IM(t1) = IM(cc[ac]) - IM(cc[ac+2]);
             RE(t3) = RE(cc[ac+1]) + RE(cc[ac+3]);
-            IM(t3) = IM(cc[ac+1]) + IM(cc[ac+3]);
-            RE(t1) = RE(cc[ac]) - RE(cc[ac+2]);
-            IM(t1) = IM(cc[ac]) - IM(cc[ac+2]);
+            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]);
-            IM(t4) = RE(cc[ac+1]) - RE(cc[ac+3]);
 
             RE(ch[ah]) = RE(t2) + RE(t3);
-            IM(ch[ah]) = IM(t2) + IM(t3);
-            RE(ch[ah+l1]) = RE(t1) + RE(t4)*isign;
-            IM(ch[ah+l1]) = IM(t1) + IM(t4)*isign;
             RE(ch[ah+2*l1]) = RE(t2) - RE(t3);
+
+            IM(ch[ah])      = 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;
+                complex_t c2, c3, c4, t1, t2, t3, t4;
 
-                RE(t2) = RE(cc[ac]) + RE(cc[ac+2*ido]);
-                IM(t2) = IM(cc[ac]) + IM(cc[ac+2*ido]);
-                RE(t3) = RE(cc[ac+ido]) + RE(cc[ac+3*ido]);
-                IM(t3) = IM(cc[ac+ido]) + IM(cc[ac+3*ido]);
-                RE(t1) = RE(cc[ac]) - RE(cc[ac+2*ido]);
-                IM(t1) = IM(cc[ac]) - IM(cc[ac+2*ido]);
-                RE(t4) = IM(cc[ac+3*ido]) - IM(cc[ac+ido]);
-                IM(t4) = RE(cc[ac+ido]) - RE(cc[ac+3*ido]);
-
-                RE(ch[ah]) = RE(t2) + RE(t3);
-                IM(ch[ah]) = IM(t2) + IM(t3);
+                RE(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;
-                RE(c3) = RE(t2) - RE(t3);
-                IM(c3) = IM(t2) - IM(t3);
-                RE(c4) = RE(t1) - RE(t4)*isign;
                 IM(c4) = IM(t1) - IM(t4)*isign;
 
-                RE(ch[ah+l1*ido]) = MUL_R_C(RE(c2),RE(wa1[i])) - MUL_R_C(IM(c2),IM(wa1[i]))*isign;
-                IM(ch[ah+l1*ido]) = MUL_R_C(IM(c2),RE(wa1[i])) + MUL_R_C(RE(c2),IM(wa1[i]))*isign;
-                RE(ch[ah+2*l1*ido]) = MUL_R_C(RE(c3),RE(wa2[i])) - MUL_R_C(IM(c3),IM(wa2[i]))*isign;
-                IM(ch[ah+2*l1*ido]) = MUL_R_C(IM(c3),RE(wa2[i])) + MUL_R_C(RE(c3),IM(wa2[i]))*isign;
-                RE(ch[ah+3*l1*ido]) = MUL_R_C(RE(c4),RE(wa3[i])) - MUL_R_C(IM(c4),IM(wa3[i]))*isign;
-                IM(ch[ah+3*l1*ido]) = MUL_R_C(IM(c4),RE(wa3[i])) + MUL_R_C(RE(c4),IM(wa3[i]))*isign;
+                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);
+
+                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 @@
 
         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);
@@ -373,17 +390,6 @@
 
             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:
             ix2 = iw + ido;
             ix3 = ix2 + ido;
@@ -474,7 +480,7 @@
     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 @@
                 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 @@
 #endif
 
     if (cfft) free(cfft);
-}
\ No newline at end of file
+}
--- a/libfaad2/cfft_tab.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/cfft_tab.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 
 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
--- a/libfaad2/common.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/common.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
     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)
 {
--- a/libfaad2/common.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/common.h	Fri Oct 03 22:23:26 2003 +0000
@@ -242,8 +242,8 @@
   #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 @@
   #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 @@
 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
--- a/libfaad2/decoder.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/decoder.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 
 #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 @@
 
 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 @@
     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 @@
             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 @@
         } 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 @@
     }
     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 @@
 
 #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 rc;
     mp4AudioSpecificConfig mp4ASC;
 
-    hDecoder->adif_header_present = 0;
-    hDecoder->adts_header_present = 0;
-
     if((hDecoder == NULL)
         || (pBuffer == NULL)
         || (SizeOfDecoderSpecificInfo < 2)
@@ -276,6 +314,9 @@
         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 @@
     }
     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 @@
 
 #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 @@
     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 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 @@
     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;
+    real_t **lt_pred_stat;
 #endif
-#ifndef FIXED_POINT
-#if POW_TABLE_SIZE
-    real_t *pow2_table     =  hDecoder->pow2_table;
-#else
-    real_t *pow2_table     =  NULL;
-#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 @@
 
     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 @@
 
     /* 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 @@
 
 
     /* 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 @@
     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 @@
     /* 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 @@
     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 @@
 
     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 @@
 
         /* 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 @@
     }
 
 #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 @@
                 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 @@
     }
 #endif
 
-    /* gapless playback */
-    if (hDecoder->samplesLeft != 0)
-    {
-        hInfo->samples = hDecoder->samplesLeft*channels;
-    }
-    hDecoder->samplesLeft = 0;
-
     hDecoder->postSeekResetFlag = 0;
 
     hDecoder->frame++;
@@ -1045,32 +1174,6 @@
 #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 @@
     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 @@
     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++)
--- a/libfaad2/decoder.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/decoder.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 
 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 @@
 
 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)
--- a/libfaad2/dither.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/dither.c	Fri Oct 03 22:23:26 2003 +0000
@@ -108,7 +108,7 @@
 
 
 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 @@
 	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
--- a/libfaad2/dither.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/dither.h	Fri Oct 03 22:23:26 2003 +0000
@@ -36,7 +36,7 @@
 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
 
--- a/libfaad2/drc.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/drc.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 #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 */
--- a/libfaad2/faad.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/faad.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 #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 @@
 #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 @@
 #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 @@
     unsigned char epConfig;
 
     char sbr_present_flag;
+    char forceUpSampling;
 } mp4AudioSpecificConfig;
 
 typedef struct faacDecConfiguration
@@ -126,6 +141,7 @@
     unsigned long defSampleRate;
     unsigned char outputFormat;
     unsigned char downMatrix;
+    unsigned char useOldADTSFormat;
 } faacDecConfiguration, *faacDecConfigurationPtr;
 
 typedef struct faacDecFrameInfo
@@ -136,6 +152,15 @@
     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 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,
--- a/libfaad2/filtbank.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/filtbank.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
     {
     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++)
--- a/libfaad2/filtbank.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/filtbank.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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);
--- a/libfaad2/fixed.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/fixed.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 
 #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)
 
--- a/libfaad2/hcr.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/hcr.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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<<i);
-                sp[k] = (int16_t)((neg) ? -j : j);
-            }
-        }
-    }    
-    return ld->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 @@
         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 @@
         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 @@
                                                 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;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libfaad2/huffman.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 <stdlib.h>
+#ifdef ANALYSIS
+#include <stdio.h>
+#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<<i);
+    if (neg)
+        j = -j;
+
+    return j;
+}
+
+static uint8_t huffman_2step_quad(uint8_t cb, bitfile *ld, int16_t *sp)
+{
+    uint32_t cw;
+    uint16_t offset = 0;
+    uint8_t extra_bits;
+
+    cw = faad_showbits(ld, hcbN[cb]);
+    offset = hcb_table[cb][cw].offset;
+    extra_bits = hcb_table[cb][cw].extra_bits;
+
+    if (extra_bits)
+    {
+        /* we know for sure it's more than hcbN[cb] bits long */
+        faad_flushbits(ld, hcbN[cb]);
+        offset += (uint16_t)faad_showbits(ld, extra_bits);
+        faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits - hcbN[cb]);
+    } else {
+        faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits);
+    }
+
+    if (offset > hcb_2_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<<i);
+                sp[k] = (int16_t)((neg) ? -j : j);
+            }
+        }
+    }    
+    return ld->len;
+}
+
+#endif
+
--- a/libfaad2/huffman.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/huffman.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 <stdlib.h>
-#ifdef ANALYSIS
-#include <stdio.h>
-#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<<i);
-    if (neg)
-        j = -j;
-
-    return j;
-}
-
-static uint8_t huffman_2step_quad(uint8_t cb, bitfile *ld, int16_t *sp)
-{
-    uint32_t cw;
-    uint16_t offset = 0;
-    uint8_t extra_bits;
-
-    cw = faad_showbits(ld, hcbN[cb]);
-    offset = hcb_table[cb][cw].offset;
-    extra_bits = hcb_table[cb][cw].extra_bits;
-
-    if (extra_bits)
-    {
-        /* we know for sure it's more than hcbN[cb] bits long */
-        faad_flushbits(ld, hcbN[cb]);
-        offset += (uint16_t)faad_showbits(ld, extra_bits);
-        faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits - hcbN[cb]);
-    } else {
-        faad_flushbits(ld, hcb_2_quad_table[cb][offset].bits);
-    }
-
-    if (offset > hcb_2_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;
+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);
 
-    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:
+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
 }
--- a/libfaad2/iq_table.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/iq_table.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 #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 @@
 
 #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
--- a/libfaad2/is.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/is.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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"
--- a/libfaad2/is.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/is.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/kbd_win.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/kbd_win.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 
 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
--- a/libfaad2/lt_predict.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/lt_predict.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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"
 
--- a/libfaad2/lt_predict.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/lt_predict.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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
--- a/libfaad2/mdct.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/mdct.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 
 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 @@
     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 @@
     /* 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 @@
     /* 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 @@
         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 */
--- a/libfaad2/mdct.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/mdct.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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);
--- a/libfaad2/mp4.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/mp4.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
     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 @@
             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 @@
 
 
 #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 @@
                         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);
--- a/libfaad2/mp4.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/mp4.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/ms.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/ms.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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"
--- a/libfaad2/ms.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/ms.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/output.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/output.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
         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 @@
         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 @@
         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 @@
         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 @@
         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 @@
         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 @@
         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);
--- a/libfaad2/output.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/output.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/pns.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/pns.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
     if (root < value)
         ++root;
 
-    root <<= (COEF_BITS/2);
+    root <<= (REAL_BITS/2);
 
     return root;
 }
@@ -79,13 +80,14 @@
    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 @@
         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 @@
 
     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 @@
 
 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 @@
     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 @@
 
                     /* 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 @@
 
                             /* 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);
                         }
                     }
                 }
--- a/libfaad2/pns.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/pns.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 #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)
 {
--- a/libfaad2/pulse.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/pulse.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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"
--- a/libfaad2/pulse.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/pulse.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/rvlc.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/rvlc.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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
--- a/libfaad2/rvlc.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/rvlc.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/sbr_dct.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_dct.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
     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
--- a/libfaad2/sbr_dct.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_dct.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 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
--- a/libfaad2/sbr_dec.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_dec.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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->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 @@
         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 @@
     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 @@
                 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 @@
         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 @@
 #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 @@
             {
                 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 @@
                 }
             }
         } else {
-            for (l = 0; l < 32; l++)
+            for (l = 0; l < sbr->numTimeSlotsRate; l++)
             {
                 uint8_t xover_band;
 
@@ -295,48 +318,63 @@
                 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
             }
         }
--- a/libfaad2/sbr_dec.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_dec.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 #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 @@
     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 @@
     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
--- a/libfaad2/sbr_e_nf.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_e_nf.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 {
     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 @@
             }
         }
     }
-
-#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 @@
             }
         }
     }
-
-#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 @@
     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 @@
                 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 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 @@
         {
             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));
-
+            /* +6: * 64 ; +1: * 2 */
+            l_temp = (real_t)pow(2, sbr->E[0][k][l]*amp0 + 7);
             /* 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;
+            r_temp = (real_t)pow(2, sbr->E[1][k][l]*amp1 - 12);
 
-            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);
-            /* UN_MAP removed: (x / 4096) same as (x >> 12) */
-            r_temp = pow(2, sbr->E[1][k][l]*amp1 - 12);
-#endif
-
-
-#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<<REAL_BITS), sbr->E_orig[1][k][l] /(float)(1<<REAL_BITS));
-            //printf("%f\t%f\n", sbr->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 @@
             } 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]);
             }
         }
--- a/libfaad2/sbr_e_nf.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_e_nf.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 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
--- a/libfaad2/sbr_fbt.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_fbt.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
         { -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 @@
     } 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 @@
                 return startMin + offset[4][bs_start_freq];
             }
         }
+#endif
     } else {
         return startMin + offset[6][bs_start_freq];
     }
@@ -95,8 +105,8 @@
 
 /* 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 @@
     } 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 @@
         } 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 @@
             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 @@
             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 @@
 
    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 @@
     }
 
     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 @@
 #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 @@
     }
 
     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 @@
         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 @@
 }
 
 /* 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 @@
     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 @@
             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 @@
     {
         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);
     }
-    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 @@
     }
     printf("\n");
 #endif
+
+    return 0;
 }
 
 /* TODO: blegh, ugly */
@@ -427,13 +489,20 @@
  */
 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 @@
     {
         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 @@
             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])
--- a/libfaad2/sbr_fbt.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_fbt.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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);
 
 
--- a/libfaad2/sbr_hfadj.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_hfadj.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 
     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 @@
                 } 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,27 +209,19 @@
             {
                 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
             }
         }
     } else {
@@ -263,284 +242,33 @@
 
                     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
                 }
             }
         }
     }
 }
 
-#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;
+#define EPS (1e-12)
 
-    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)<<REAL_BITS) / acc2;
-                switch (sbr->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<<REAL_BITS), acc1, acc2);
-
-            for (m = sbr->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<<COEF_BITS));
-
-                /* Q_M: integer */
-                Q_M = MUL_R_C(sbr->E_orig[ch][table_map_res_to_m[m]][l], div2);
-
-                //printf("%d\n", Q_M /* / (float)(1<<REAL_BITS)*/);
-
-                if (adj->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))<<REAL_BITS) / (tmp);
-
-                    /* G: fixed point */
-                    G = (((int64_t)sbr->E_orig[ch][table_map_res_to_m[m]][l])<<REAL_BITS) / (1 + sbr->E_curr[ch][m][l]);
-                    G = MUL(G, d);
-
-                    //printf("%f\n", G/(float)(1<<REAL_BITS));
-
-                } else {
-
-                    real_t div;
-
-                    /* div: fixed point COEF */
-                    real_t tmp = COEF_CONST(1.0) + (adj->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<<COEF_BITS));
-
-                    /* S_M: integer */
-                    S_M[m] = MUL_R_C(sbr->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]))<<REAL_BITS)/(tmp);
-                        G = MUL_R_C(tmp2, div2);
-                    }
-
-                    //printf("%f\n", G/(float)(1<<REAL_BITS));
-                }
-
-                /* limit the additional noise energy level */
-                /* and apply the limiter */
-
-                /* G_lim: fixed point */
-                /* Q_M_lim: integer */
-                if (G_max > 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))<<REAL_BITS)/(den + EPS);
-            G_boost = min(G_boost, REAL_CONST(2.51188643) /* 1.584893192 ^ 2 */);
-
-            for (m = sbr->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 @@
             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 @@
                 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 @@
                 } 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 @@
                     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 @@
         }
     }
 }
-#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 @@
             if ((E_total_est + EPS) == 0)
                 G_target = 0;
             else
-#ifdef FIXED_POINT
-                G_target = (((int64_t)(E_total))<<REAL_BITS)/(E_total_est + EPS);
-#else
                 G_target = E_total / (E_total_est + EPS);
-#endif
             acc = 0;
 
             for (m = sbr->f_group[l][(k<<1)]; m < sbr->f_group[l][(k<<1) + 1]; m++)
@@ -775,11 +473,8 @@
             if (acc + EPS == 0)
                 acc = 0;
             else
-#ifdef FIXED_POINT
-                acc = (((int64_t)(E_total))<<REAL_BITS)/(acc + EPS);
-#else
                 acc = E_total / (acc + EPS);
-#endif
+
             for(m = sbr->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 @@
             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 @@
 
                 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<<COEF_BITS));
-#endif
-
                 /* the smoothed gain values are applied to Xsbr */
                 /* V is defined, not calculated */
-#ifdef FIXED_POINT
-                QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx]) = MUL(G_filt, QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->kx]))
-                    + MUL_R_C((Q_filt<<REAL_BITS), RE(V[fIndexNoise]));
-#else
-                QMF_RE(Xsbr[((i + tHFAdj)<<6) + m+sbr->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 @@
                 {
                     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)));
                     }
 
--- a/libfaad2/sbr_hfadj.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_hfadj.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/sbr_hfgen.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_hfgen.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
                    ,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 @@
             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 @@
                 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 @@
 
 #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);
+    uint8_t offset;
+    real_t r01, i01, r11;
+    const real_t rel = 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++)
+#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)
-    {
-        pow2 <<= 1;
-        exp++;
-    }
-
-    /* give some more space */
-//    if (exp > 3)
-//        exp -= 3;
-#endif
-
     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]);
+    r11 = QMF_RE(buffer[(offset-2)*32 + bd]) * QMF_RE(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));
+        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;
+    }
+
+    ac->det = MUL(RE(ac->r11), RE(ac->r22)) - MUL_R_C(MUL(RE(ac->r12), RE(ac->r12)), rel);
+}
 #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]);
+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
-#else
-        RE(ac->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]);
+    {
+        offset = sbr->tHFAdj;
+    }
+
+    memset(ac, 0, sizeof(acorr_coef));
+
+    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]);
 
-        IM(ac->r01) += QMF_IM(buffer[j*32 + bd]) * QMF_RE(buffer[jminus1*32 + bd]) -
+    for (j = offset; j < len + offset; j++)
+    {
+        jminus1 = j - 1;
+        jminus2 = j - 2;
+
+        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]);
+        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
-}
-
-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 @@
     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 @@
             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 @@
     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 @@
             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--;
     }
--- a/libfaad2/sbr_hfgen.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_hfgen.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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
--- a/libfaad2/sbr_huff.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_huff.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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;
+typedef const int8_t (*sbr_huff_tab)[2];
 
-    while (index >= 0)
-    {
-        bit = (uint8_t)faad_getbits(ld, 1);
-        index = t_huff[index][bit];
-    }
-
-    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 @@
     {  -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 @@
     {  -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 @@
     { -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 @@
     {  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 @@
     { -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 @@
     { -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 @@
     {  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 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 @@
     { -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 @@
     { -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
--- a/libfaad2/sbr_huff.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_huff.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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
 }
--- a/libfaad2/sbr_noise.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_noise.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/sbr_qmf.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_qmf.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 <string.h>
 #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 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 @@
     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 @@
         /* 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 @@
 
         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 @@
 
         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 @@
             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 @@
 {
     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,108 +174,36 @@
 {
     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 *outptr = output;
-
-    /* qmf subsample l */
-    for (l = 0; l < 32; l++)
-    {
-        /* shift buffer */
-        for (n = 640 - 1; n >= 64; n--)
-        {
-            qmfs->v[n] = qmfs->v[n - 64];
-        }
-
-        /* calculate 64 samples */
-        memset(x, 0, 2*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);
-
-        for (n = 0; n < 64; n++)
-        {
-            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;
-        }
-
-        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];
-            }
-        }
-
-        /* window */
-        for (n = 0; n < 320; n++)
-        {
-            w[n] *= qmf_c_2[n];
-        }
-
-        /* calculate 32 output samples */
-        for (k = 0; k < 32; k++)
-        {
-            real_t sample = 0.0;
-
-            for (n = 0; n < 10; n++)
-            {
-                sample += w[32 * n + k];
-            }
-
-            *outptr++ = sample;
-        }
-    }
-}
-#endif
-
-void sbr_qmf_synthesis_64(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++)
-    {
-        /* shift buffer */
-        memmove(qmfs->v + 128, qmfs->v, (1280-128)*sizeof(real_t));
+    for (l = 0; l < sbr->numTimeSlotsRate; l++)
+        {
+        real_t *v0, *v1;
+
+        /* 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));
+
+        v0 = qmfs->v[qmfs->v_index];
+        v1 = qmfs->v[(qmfs->v_index + 1) & 0x1];
+        qmfs->v_index = (qmfs->v_index + 1) & 0x1;
 
         /* calculate 128 samples */
-#ifdef SBR_LOW_POWER
         for (k = 0; k < 64; k++)
         {
 #ifdef FIXED_POINT
@@ -316,48 +215,92 @@
 
         DCT2_64_unscaled(x, x);
 
-        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
-        for (k = 0; k < 64; k++)
+        for (n = 0; n < 32; n++)
         {
-            x1[k] = QMF_RE(X[(l<<6) + k])/64.;
-            x2[k] = QMF_IM(X[(l<<6) + k])/64.;
+            v0[n+32] = x[n];
+            v1[n] = x[n+32];
         }
-
-        DCT4_64(x1, x1);
-        DST4_64(x2, x2);
-
-        for (n = 0; n < 64; n++)
-        {
-            qmfs->v[n] = x2[n] - x1[n];
-            qmfs->v[127-n] = x2[n] + x1[n];
-        }
-#endif
+        v0[0] = v1[0];
+        for (n = 1; n < 32; n++)
+            {
+            v0[32 - n] =  v0[n + 32];
+            v1[n + 32] = -v1[32 - n];
+            }
+        v1[32] = 0;
 
         /* 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]);
         }
     }
 }
+#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;
+    real_t x1[64], x2[64];
+    real_t *outptr = output;
+
+
+    /* qmf subsample l */
+    for (l = 0; l < sbr->numTimeSlotsRate; l++)
+    {
+        real_t *v0, *v1;
+
+        /* 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));
+
+        v0 = qmfs->v[qmfs->v_index];
+        v1 = qmfs->v[(qmfs->v_index + 1) & 0x1];
+        qmfs->v_index = (qmfs->v_index + 1) & 0x1;
+
+        /* calculate 128 samples */
+        for (k = 0; k < 64; k++)
+        {
+            x1[k] = QMF_RE(X[(l<<6) + k])/64.;
+            x2[63 - k] = QMF_IM(X[(l<<6) + k])/64.;
+        }
+
+        DCT4_64(x1, x1);
+        DCT4_64(x2, x2);
+
+        for (n = 0; n < 64; n+=2)
+        {
+            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];
+        }
+
+        /* 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
 
 #endif
--- a/libfaad2/sbr_qmf.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_qmf.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 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
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libfaad2/sbr_qmf_c.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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
--- a/libfaad2/sbr_syntax.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_syntax.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 /* 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 @@
         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 @@
 
     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 @@
             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 @@
 
     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 @@
         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 @@
             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 @@
             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 @@
 }
 
 /* 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 @@
 
     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);
+#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
     sbr_envelope(ld, sbr, 0);
     sbr_noise(ld, sbr, 0);
 
     envelope_noise_dequantisation(sbr, 0);
 
-#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 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
-
     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 @@
                 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 @@
         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 @@
         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 @@
         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 @@
         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 @@
                 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 @@
             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 @@
         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 @@
         }
 
         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 @@
         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 @@
 {
     uint8_t n;
 
-    for (n = 0; n < sbr->N_Q; n++)
-    {
-        sbr->bs_invf_mode[ch][n] = 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))
+#ifdef DRM
+    if (sbr->Is_DRM_SBR)
     {
-        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))
+        /* Only one inv_mode in DRM */
+        uint8_t invf_mode;
+        invf_mode = faad_getbits(ld, 2
+            DEBUGVAR(1,271,"invf_mode(): bs_invf_mode"));
+        for (n = 0; n < sbr->N_Q; n++)
+            sbr->bs_invf_mode[ch][n] = invf_mode;
+    } else
+#endif
             {
-                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++)
+        for (n = 0; n < sbr->N_Q; n++)
             {
-                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);
-            }
+            sbr->bs_invf_mode[ch][n] = faad_getbits(ld, 2
+                DEBUGVAR(1,271,"invf_mode(): bs_invf_mode"));
         }
     }
-
-#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
-#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++)
-            {
-                sbr->Q[ch][band][noise] = (sbr_huff_dec(ld, t_huff) << delta);
-            }
-        }
-    }
-
-    extract_noise_floor_data(sbr, ch);
 }
 
 /* table 12 */
--- a/libfaad2/sbr_syntax.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_syntax.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 
 #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 @@
 #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
--- a/libfaad2/sbr_tf_grid.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_tf_grid.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
         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 @@
 
             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 @@
             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 @@
             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 @@
 
             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 @@
     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:
--- a/libfaad2/sbr_tf_grid.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sbr_tf_grid.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 #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);
--- a/libfaad2/sine_win.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/sine_win.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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,8505 +39,4252 @@
 
 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
+    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[] =
 {
-    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
+    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[] =
 {
-    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
+    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[] =
 {
-    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
+    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[] =
 {
-    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
+    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[] =
 {
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.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
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.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[] =
 {
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.0000000000,
-    0.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
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.0000000000),
+    COEF_CONST(0.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)
 };
-
-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
-};
-
-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
-};
-
-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
-};
-
-#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
-};
-
-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
-};
-
-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
-};
-
-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
-};
-#endif
-
 #endif
 
 #ifdef __cplusplus
--- a/libfaad2/specrec.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/specrec.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 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;
+
+    memset(tmp_spec, 0, frame_len*sizeof(real_t));
 
-    tmp_spec_ptr = tmp_spec;
-    memset(tmp_spec_ptr, 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 @@
 
 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 @@
     }
 
     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 @@
 };
 #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 @@
     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 @@
             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];
--- a/libfaad2/specrec.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/specrec.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 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
--- a/libfaad2/ssr.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/ssr.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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"
--- a/libfaad2/ssr.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/ssr.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/ssr_fb.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/ssr_fb.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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"
--- a/libfaad2/ssr_fb.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/ssr_fb.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/ssr_ipqf.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/ssr_ipqf.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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"
--- a/libfaad2/ssr_ipqf.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/ssr_ipqf.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/ssr_win.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/ssr_win.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__
--- a/libfaad2/structs.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/structs.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
     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 @@
     uint8_t epConfig;
 
     int8_t sbr_present_flag;
+    int8_t forceUpSampling;
 } mp4AudioSpecificConfig;
 
 typedef struct faacDecConfiguration
@@ -326,6 +330,7 @@
     uint32_t defSampleRate;
     uint8_t outputFormat;
     uint8_t downMatrix;
+    uint8_t useOldADTSFormat;
 } faacDecConfiguration, *faacDecConfigurationPtr;
 
 typedef struct faacDecFrameInfo
@@ -336,6 +341,15 @@
     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 @@
     uint8_t aacSpectralDataResilienceFlag;
 #endif
     uint16_t frameLength;
-    uint16_t samplesLeft;
     uint8_t postSeekResetFlag;
 
     uint32_t frame;
@@ -382,12 +395,16 @@
 
 #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
--- a/libfaad2/syntax.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/syntax.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 
 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 @@
         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 @@
     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_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 @@
         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 @@
     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 **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 @@
                 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 @@
                 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 @@
                 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 @@
         {
         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 @@
 #endif
 
     /* new in corrigendum 14496-3:2002 */
-    faad_byte_align(ld);
+#ifdef DRM
+    if (hDecoder->object_type != DRM_ER_LC)
+#endif
+    {
+        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)
-    {
-        return 8;
-    } else {
-        return 0;
-    }
-}
-#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 @@
         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 @@
                 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;
+    }
 
-    return individual_channel_stream(hDecoder, sce, ld, ics, 0, spec_data);
+
+    /* 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 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 @@
         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 @@
                 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 @@
     {
         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 @@
             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 @@
                 {
                     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 @@
         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;
 }
--- a/libfaad2/syntax.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/syntax.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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 @@
 #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 @@
 #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 @@
 /* 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);
--- a/libfaad2/tns.c	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/tns.c	Fri Oct 03 22:23:26 2003 +0000
@@ -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 */
--- a/libfaad2/tns.h	Fri Oct 03 18:13:45 2003 +0000
+++ b/libfaad2/tns.h	Fri Oct 03 22:23:26 2003 +0000
@@ -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__