wip: MDCT, SNS in fixed point
diff --git a/src/common.h b/src/common.h
index 3184913..a0fec8d 100644
--- a/src/common.h
+++ b/src/common.h
@@ -24,7 +24,6 @@
 #define __LC3_COMMON_H
 
 #include <lc3.h>
-#include "fastmath.h"
 
 #include <stdalign.h>
 #include <limits.h>
@@ -139,9 +138,12 @@
  * Complex floating point number
  */
 
+// TODO
+#include "fastmath.h"
+
 struct lc3_complex
 {
-    float re, im;
+    lc3_intfloat_t re, im;
 };
 
 
diff --git a/src/fastmath.h b/src/fastmath.h
index 4210f2e..d67445f 100644
--- a/src/fastmath.h
+++ b/src/fastmath.h
@@ -26,34 +26,40 @@
 #include <stdint.h>
 #include <math.h>
 
+#include "fixmath.h"
+
 
 /**
  * Fast 2^n approximation
  * x               Operand, range -8 to 8
- * return          2^x approximation (max relative error ~ 7e-6)
+ * return          2^x approximation (9.23)
  */
-static inline float fast_exp2f(float x)
+static inline lc3_intfloat_t fast_exp2f(lc3_intfloat_t x)
 {
-    float y;
+    lc3_intfloat_t y;
 
     /* --- Polynomial approx in range -0.5 to 0.5 --- */
 
-    static const float c[] = { 1.27191277e-09, 1.47415221e-07,
-        1.35510312e-05, 9.38375815e-04, 4.33216946e-02 };
+    static const lc3_intfloat_t c[] = {
+        LC3_INTFLOAT_C(1.27191277e-09, 59),
+        LC3_INTFLOAT_C(1.47415221e-07, 52),
+        LC3_INTFLOAT_C(1.35510312e-05, 45),
+        LC3_INTFLOAT_C(9.38375815e-04, 38),
+        LC3_INTFLOAT_C(4.33216946e-02, 31) };
 
-    y = (    c[0]) * x;
-    y = (y + c[1]) * x;
-    y = (y + c[2]) * x;
-    y = (y + c[3]) * x;
-    y = (y + c[4]) * x;
-    y = (y + 1.f);
+    y = lc3_shr( lc3_mul(x,     c[0]), 31 );
+    y = lc3_shr( lc3_mul(x, y + c[1]), 31 );
+    y = lc3_shr( lc3_mul(x, y + c[2]), 31 );
+    y = lc3_shr( lc3_mul(x, y + c[3]), 31 );
+    y = lc3_shr( lc3_mul(x, y + c[4]), 31 );
+    y = LC3_INTFLOAT_C(1.f, 24) + y;
 
     /* --- Raise to the power of 16  --- */
 
-    y = y*y;
-    y = y*y;
-    y = y*y;
-    y = y*y;
+    y = lc3_shr( lc3_mul(y, y), 24 );
+    y = lc3_shr( lc3_mul(y, y), 24 );
+    y = lc3_shr( lc3_mul(y, y), 24 );
+    y = lc3_shr( lc3_mul(y, y), 25 );
 
     return y;
 }
diff --git a/src/fixmath.h b/src/fixmath.h
new file mode 100644
index 0000000..725725a
--- /dev/null
+++ b/src/fixmath.h
@@ -0,0 +1,81 @@
+/******************************************************************************
+ *
+ *  Copyright 2022 Google LLC
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at:
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ ******************************************************************************/
+
+/**
+ * LC3 - Mathematics in fixed point
+ */
+
+#ifndef __LC3_FIXMATH_H
+#define __LC3_FIXMATH_H
+
+#include <stdint.h>
+
+#undef  CONFIG_FIXED_POINT // TODO
+
+
+/**
+ * Type definition, integer or floating point
+ * TODO
+ */
+
+#ifdef CONFIG_FIXED_POINT
+
+typedef int32_t lc3_intfloat_t;
+
+#define LC3_INTFLOAT_C(x, q) \
+  (int32_t)LC3_CLIP( (x) * (INT64_C(1) << (q)), -0x1p31, 0x1p31-1 )
+
+#else /* CONFIG_FIXED_POINT */
+
+typedef float lc3_intfloat_t;
+
+#define LC3_INTFLOAT_C(x, q) (x)
+
+#endif /* CONFIG_FIXED_POINT */
+
+
+/**
+ * Arithmetic operations
+ *   mul    Multiplicaton of 2 x 32 bits values, results on 64 bits
+ *   shr    Arithmetic rounded right shift
+ */
+
+#ifdef CONFIG_FIXED_POINT
+
+static inline int64_t lc3_mul(int32_t a, int32_t b) {
+    return (int64_t)a * b;
+}
+
+static inline int32_t lc3_shr(int64_t x, int q) {
+    return (x + (INT64_C(1) << (q-1))) >> q;
+}
+
+static inline int32_t lc3_rsqrt(int32_t x, int q) {
+    return (int32_t)(ldexpf(1.f / sqrtf(x), q) + 0.5f);
+}
+
+#else /* CONFIG_FIXED_POINT */
+
+#define lc3_mul(a, b)    ( (a) * (b) )
+#define lc3_shr(x, q)    ( (x) )
+#define lc3_rsqrt(x, q)  ( 1.f / sqrtf(x) )
+
+#endif /* CONFIG_FIXED_POINT */
+
+
+#endif /* __LC3_FIXMATH_H */
diff --git a/src/lc3.c b/src/lc3.c
index 439d4b5..6c6a837 100644
--- a/src/lc3.c
+++ b/src/lc3.c
@@ -271,7 +271,21 @@
 
     float e[LC3_NUM_BANDS];
 
+#ifdef CONFIG_FIXED_POINT
+{
+    int nd = LC3_ND(dt, sr);
+    int32_t __xs[ns], __xf[ns], __xd[nd];
+    for (int i = 0; i < ns; i++) __xs[i] = ldexpf(xs[i], 8);
+    for (int i = 0; i < nd; i++) __xd[i] = ldexpf(xd[i], 8);
+
+    lc3_mdct_forward(dt, sr_pcm, sr, __xs, __xd, __xf);
+
+    for (int i = 0; i < nd; i++) xd[i] = ldexpf(__xd[i], -8);
+    for (int i = 0; i < ns; i++) xf[i] = ldexpf(__xf[i], -8);
+}
+#else
     lc3_mdct_forward(dt, sr_pcm, sr, xs, xd, xf);
+#endif
 
     bool nn_flag = lc3_energy_compute(dt, sr, xf, e);
     if (nn_flag)
@@ -583,16 +597,49 @@
 
         lc3_tns_synthesize(dt, bw, &side->tns, xf);
 
+#ifdef CONFIG_FIXED_POINT
+{
+        int nd = LC3_ND(dt, sr);
+        int32_t __xf[ns], __xg[ns], __xs[ns],  __xd[nd];
+
+        for (int i = 0; i < ns; i++) __xf[i] = ldexpf(xf[i], 8);
+        for (int i = 0; i < ns; i++) __xg[i] = ldexpf(xg[i], 8);
+        for (int i = 0; i < nd; i++) __xd[i] = ldexpf(xd[i], 8);
+
+        lc3_sns_synthesize(dt, sr, &side->sns, __xf, __xg);
+
+        lc3_mdct_inverse(dt, sr_pcm, sr, __xg, __xd, __xs);
+
+        for (int i = 0; i < nd; i++) xd[i] = ldexpf(__xd[i], -8);
+        for (int i = 0; i < ns; i++) xs[i] = ldexpf(__xs[i], -8);
+        for (int i = 0; i < ns; i++) xg[i] = ldexpf(__xg[i], -8);
+}
+#else
         lc3_sns_synthesize(dt, sr, &side->sns, xf, xg);
 
         lc3_mdct_inverse(dt, sr_pcm, sr, xg, xd, xs);
+#endif
 
     } else {
         lc3_plc_synthesize(dt, sr, &decoder->plc, xg, xf);
 
-        memset(xf + ne, 0, (ns - ne) * sizeof(float));
+        memset(xf + ne, 0, (ns - ne) * sizeof(lc3_intfloat_t));
 
+#ifdef CONFIG_FIXED_POINT
+{
+        int nd = LC3_ND(dt, sr);
+        lc3_intfloat_t __xf[ns], __xs[ns], __xd[nd];
+        for (int i = 0; i < ns; i++) __xf[i] = ldexpf(xf[i], 8);
+        for (int i = 0; i < nd; i++) __xd[i] = ldexpf(xd[i], 8);
+
+        lc3_mdct_inverse(dt, sr_pcm, sr, __xf, __xd, __xs);
+
+        for (int i = 0; i < nd; i++) xd[i] = ldexpf(__xd[i], -8);
+        for (int i = 0; i < ns; i++) xs[i] = ldexpf(__xs[i], -8);
+}
+#else
         lc3_mdct_inverse(dt, sr_pcm, sr, xf, xd, xs);
+#endif
     }
 
     lc3_ltpf_synthesize(dt, sr_pcm, nbytes, &decoder->ltpf,
diff --git a/src/mdct.c b/src/mdct.c
index 10f0956..3f8aad6 100644
--- a/src/mdct.c
+++ b/src/mdct.c
@@ -35,11 +35,13 @@
 LC3_HOT static inline void fft_5(
     const struct lc3_complex *x, struct lc3_complex *y, int n)
 {
-    static const float cos1 =  0.3090169944;  /* cos(-2Pi 1/5) */
-    static const float cos2 = -0.8090169944;  /* cos(-2Pi 2/5) */
+    /* cos( -2Pi n/5 ), sin( -2Pi n/5 ) for n = {1, 2} */
 
-    static const float sin1 = -0.9510565163;  /* sin(-2Pi 1/5) */
-    static const float sin2 = -0.5877852523;  /* sin(-2Pi 2/5) */
+    static const lc3_intfloat_t cos1 = LC3_INTFLOAT_C( 0.3090169944, 31);
+    static const lc3_intfloat_t cos2 = LC3_INTFLOAT_C(-0.8090169944, 31);
+
+    static const lc3_intfloat_t sin1 = LC3_INTFLOAT_C(-0.9510565163, 31);
+    static const lc3_intfloat_t sin2 = LC3_INTFLOAT_C(-0.5877852523, 31);
 
     for (int i = 0; i < n; i++, x++, y+= 5) {
 
@@ -57,29 +59,37 @@
 
         y[0].im = x[0].im + s14.im + s23.im;
 
-        y[1].re = x[0].re + s14.re * cos1 - d14.im * sin1
-                          + s23.re * cos2 - d23.im * sin2;
+        y[1].re = x[0].re + lc3_shr(
+          lc3_mul(s14.re, cos1) - lc3_mul(d14.im, sin1) +
+          lc3_mul(s23.re, cos2) - lc3_mul(d23.im, sin2), 31);
 
-        y[1].im = x[0].im + s14.im * cos1 + d14.re * sin1
-                          + s23.im * cos2 + d23.re * sin2;
+        y[1].im = x[0].im + lc3_shr(
+          lc3_mul(s14.im, cos1) + lc3_mul(d14.re, sin1) +
+          lc3_mul(s23.im, cos2) + lc3_mul(d23.re, sin2), 31);
 
-        y[2].re = x[0].re + s14.re * cos2 - d14.im * sin2
-                          + s23.re * cos1 + d23.im * sin1;
+        y[2].re = x[0].re + lc3_shr(
+          lc3_mul(s14.re, cos2) - lc3_mul(d14.im, sin2) +
+          lc3_mul(s23.re, cos1) + lc3_mul(d23.im, sin1), 31);
 
-        y[2].im = x[0].im + s14.im * cos2 + d14.re * sin2
-                          + s23.im * cos1 - d23.re * sin1;
+        y[2].im = x[0].im + lc3_shr(
+          lc3_mul(s14.im, cos2) + lc3_mul(d14.re, sin2) +
+          lc3_mul(s23.im, cos1) - lc3_mul(d23.re, sin1), 31);
 
-        y[3].re = x[0].re + s14.re * cos2 + d14.im * sin2
-                          + s23.re * cos1 - d23.im * sin1;
+        y[3].re = x[0].re + lc3_shr(
+          lc3_mul(s14.re, cos2) + lc3_mul(d14.im, sin2) +
+          lc3_mul(s23.re, cos1) - lc3_mul(d23.im, sin1), 31);
 
-        y[3].im = x[0].im + s14.im * cos2 - d14.re * sin2
-                          + s23.im * cos1 + d23.re * sin1;
+        y[3].im = x[0].im + lc3_shr(
+          lc3_mul(s14.im, cos2) - lc3_mul(d14.re, sin2) +
+          lc3_mul(s23.im, cos1) + lc3_mul(d23.re, sin1), 31);
 
-        y[4].re = x[0].re + s14.re * cos1 + d14.im * sin1
-                          + s23.re * cos2 + d23.im * sin2;
+        y[4].re = x[0].re + lc3_shr(
+          lc3_mul(s14.re, cos1) + lc3_mul(d14.im, sin1) +
+          lc3_mul(s23.re, cos2) + lc3_mul(d23.im, sin2), 31);
 
-        y[4].im = x[0].im + s14.im * cos1 - d14.re * sin1
-                          + s23.im * cos2 - d23.re * sin2;
+        y[4].im = x[0].im + lc3_shr(
+          lc3_mul(s14.im, cos1) - lc3_mul(d14.re, sin1) +
+          lc3_mul(s23.im, cos2) - lc3_mul(d23.re, sin2), 31);
     }
 }
 #endif /* fft_5 */
@@ -105,23 +115,29 @@
     for (int i = 0; i < n; i++, y0 += 3*n3, y1 += 3*n3, y2 += 3*n3)
         for (int j = 0; j < n3; j++, x0++, x1++, x2++) {
 
-            y0[j].re = x0->re + x1->re * w0[j][0].re - x1->im * w0[j][0].im
-                              + x2->re * w0[j][1].re - x2->im * w0[j][1].im;
+            y0[j].re = x0->re + lc3_shr(
+              lc3_mul(x1->re, w0[j][0].re) - lc3_mul(x1->im, w0[j][0].im) +
+              lc3_mul(x2->re, w0[j][1].re) - lc3_mul(x2->im, w0[j][1].im), 31);
 
-            y0[j].im = x0->im + x1->im * w0[j][0].re + x1->re * w0[j][0].im
-                              + x2->im * w0[j][1].re + x2->re * w0[j][1].im;
+            y0[j].im = x0->im + lc3_shr(
+              lc3_mul(x1->im, w0[j][0].re) + lc3_mul(x1->re, w0[j][0].im) +
+              lc3_mul(x2->im, w0[j][1].re) + lc3_mul(x2->re, w0[j][1].im), 31);
 
-            y1[j].re = x0->re + x1->re * w1[j][0].re - x1->im * w1[j][0].im
-                              + x2->re * w1[j][1].re - x2->im * w1[j][1].im;
+            y1[j].re = x0->re + lc3_shr(
+              lc3_mul(x1->re, w1[j][0].re) - lc3_mul(x1->im, w1[j][0].im) +
+              lc3_mul(x2->re, w1[j][1].re) - lc3_mul(x2->im, w1[j][1].im), 31);
 
-            y1[j].im = x0->im + x1->im * w1[j][0].re + x1->re * w1[j][0].im
-                              + x2->im * w1[j][1].re + x2->re * w1[j][1].im;
+            y1[j].im = x0->im + lc3_shr(
+              lc3_mul(x1->im, w1[j][0].re) + lc3_mul(x1->re, w1[j][0].im) +
+              lc3_mul(x2->im, w1[j][1].re) + lc3_mul(x2->re, w1[j][1].im), 31);
 
-            y2[j].re = x0->re + x1->re * w2[j][0].re - x1->im * w2[j][0].im
-                              + x2->re * w2[j][1].re - x2->im * w2[j][1].im;
+            y2[j].re = x0->re + lc3_shr(
+              lc3_mul(x1->re, w2[j][0].re) - lc3_mul(x1->im, w2[j][0].im) +
+              lc3_mul(x2->re, w2[j][1].re) - lc3_mul(x2->im, w2[j][1].im), 31);
 
-            y2[j].im = x0->im + x1->im * w2[j][0].re + x1->re * w2[j][0].im
-                              + x2->im * w2[j][1].re + x2->re * w2[j][1].im;
+            y2[j].im = x0->im + lc3_shr(
+              lc3_mul(x1->im, w2[j][0].re) + lc3_mul(x1->re, w2[j][0].im) +
+              lc3_mul(x2->im, w2[j][1].re) + lc3_mul(x2->re, w2[j][1].im), 31);
         }
 }
 #endif /* fft_bf3 */
@@ -147,11 +163,15 @@
 
         for (int j = 0; j < n2; j++, x0++, x1++) {
 
-            y0[j].re = x0->re + x1->re * w[j].re - x1->im * w[j].im;
-            y0[j].im = x0->im + x1->im * w[j].re + x1->re * w[j].im;
+            y0[j].re = x0->re + lc3_shr(
+              lc3_mul(x1->re, w[j].re) - lc3_mul(x1->im, w[j].im), 31);
+            y0[j].im = x0->im + lc3_shr(
+              lc3_mul(x1->im, w[j].re) + lc3_mul(x1->re, w[j].im), 31);
 
-            y1[j].re = x0->re - x1->re * w[j].re + x1->im * w[j].im;
-            y1[j].im = x0->im - x1->im * w[j].re - x1->re * w[j].im;
+            y1[j].re = x0->re - lc3_shr(
+              lc3_mul(x1->re, w[j].re) - lc3_mul(x1->im, w[j].im), 31);
+            y1[j].im = x0->im - lc3_shr(
+              lc3_mul(x1->im, w[j].re) + lc3_mul(x1->re, w[j].im), 31);
         }
     }
 }
@@ -205,58 +225,68 @@
  * y, d            Output windowed samples, and delayed ones
  */
 LC3_HOT static void mdct_window(enum lc3_dt dt, enum lc3_srate sr,
-    const float *x, float *d, float *y)
+    const lc3_intfloat_t *x, lc3_intfloat_t *d, lc3_intfloat_t *y)
 {
     int ns = LC3_NS(dt, sr), nd = LC3_ND(dt, sr);
 
-    const float *w0 = lc3_mdct_win[dt][sr], *w1 = w0 + ns;
-    const float *w2 = w1, *w3 = w2 + nd;
+    const lc3_intfloat_t *w0 = lc3_mdct_win[dt][sr], *w1 = w0 + ns;
+    const lc3_intfloat_t *w2 = w1, *w3 = w2 + nd;
 
-    const float *x0 = x + ns-nd, *x1 = x0;
-    float *y0 = y + ns/2, *y1 = y0;
-    float *d0 = d, *d1 = d + nd;
+    const lc3_intfloat_t *x0 = x + ns-nd, *x1 = x0;
+    lc3_intfloat_t *y0 = y + ns/2, *y1 = y0;
+    lc3_intfloat_t *d0 = d, *d1 = d + nd;
 
     while (x1 > x) {
-        *(--y0) = *d0 * *(w0++) - *(--x1) * *(--w1);
-        *(y1++) = (*(d0++) = *(x0++)) * *(w2++);
+        *(--y0) = lc3_shr( lc3_mul(*(d0  ), *(w0++)) -
+                           lc3_mul(*(--x1), *(--w1)), 30 );
 
-        *(--y0) = *d0 * *(w0++) - *(--x1) * *(--w1);
-        *(y1++) = (*(d0++) = *(x0++)) * *(w2++);
+        *(y1++) = lc3_shr( lc3_mul(*(d0++) = *(x0++), *(w2++)), 30 );
+
+        *(--y0) = lc3_shr( lc3_mul(*(d0  ), *(w0++)) -
+                           lc3_mul(*(--x1), *(--w1)), 30 );
+
+        *(y1++) = lc3_shr( lc3_mul(*(d0++) = *(x0++), *(w2++)), 30 );
     }
 
     for (x1 += ns; x0 < x1; ) {
-        *(--y0) = *d0 * *(w0++) - *(--d1) * *(--w1);
-        *(y1++) = (*(d0++) = *(x0++)) * *(w2++) + (*d1 = *(--x1)) * *(--w3);
+        *(--y0) = lc3_shr( lc3_mul(*(d0  ), *(w0++)) -
+                           lc3_mul(*(--d1), *(--w1)), 30 );
 
-        *(--y0) = *d0 * *(w0++) - *(--d1) * *(--w1);
-        *(y1++) = (*(d0++) = *(x0++)) * *(w2++) + (*d1 = *(--x1)) * *(--w3);
+        *(y1++) = lc3_shr( lc3_mul(*(d0++) = *(x0++), *(w2++)) +
+                           lc3_mul(*(d1  ) = *(--x1), *(--w3)), 30 );
+
+        *(--y0) = lc3_shr( lc3_mul(*(d0  ), *(w0++)) -
+                           lc3_mul(*(--d1), *(--w1)), 30 );
+
+        *(y1++) = lc3_shr( lc3_mul(*(d0++) = *(x0++), *(w2++)) +
+                           lc3_mul(*(d1  ) = *(--x1), *(--w3)), 30 );
     }
 }
 
 /**
- * Pre-rotate MDCT coefficients of N/2 points, before FFT N/4 points FFT
+ * Pre-rotate and scale MDCT of N/2 points, before N/4 points FFT
  * def             Size and twiddles factors
  * x, y            Input and output coefficients
  *
  * `x` and y` can be the same buffer
  */
 LC3_HOT static void mdct_pre_fft(const struct lc3_mdct_rot_def *def,
-    const float *x, struct lc3_complex *y)
+    const lc3_intfloat_t *x, struct lc3_complex *y)
 {
     int n4 = def->n4;
 
-    const float *x0 = x, *x1 = x0 + 2*n4;
+    const lc3_intfloat_t *x0 = x, *x1 = x0 + 2*n4;
     const struct lc3_complex *w0 = def->w, *w1 = w0 + n4;
     struct lc3_complex *y0 = y, *y1 = y0 + n4;
 
     while (x0 < x1) {
         struct lc3_complex u, uw = *(w0++);
-        u.re = - *(--x1) * uw.re + *x0 * uw.im;
-        u.im =   *(x0++) * uw.re + *x1 * uw.im;
+        u.re = lc3_shr( - lc3_mul(*(--x1), uw.re) + lc3_mul(*x0, uw.im), 31 );
+        u.im = lc3_shr(   lc3_mul(*(x0++), uw.re) + lc3_mul(*x1, uw.im), 31 );
 
         struct lc3_complex v, vw = *(--w1);
-        v.re = - *(--x1) * vw.im + *x0 * vw.re;
-        v.im = - *(x0++) * vw.im - *x1 * vw.re;
+        v.re = lc3_shr( - lc3_mul(*(--x1), vw.im) + lc3_mul(*x0, vw.re), 31 );
+        v.im = lc3_shr( - lc3_mul(*(x0++), vw.im) - lc3_mul(*x1, vw.re), 31 );
 
         *(y0++) = u;
         *(--y1) = v;
@@ -264,30 +294,30 @@
 }
 
 /**
- * Post-rotate FFT N/4 points coefficients, resulting MDCT N points
+ * Post-rotate and scale FFT N/4 points, resulting MDCT N points
  * def             Size and twiddles factors
  * x, y            Input and output coefficients
- * scale           Scale on output coefficients
  *
  * `x` and y` can be the same buffer
  */
 LC3_HOT static void mdct_post_fft(const struct lc3_mdct_rot_def *def,
-    const struct lc3_complex *x, float *y, float scale)
+    const struct lc3_complex *x, lc3_intfloat_t *y)
 {
     int n4 = def->n4, n8 = n4 >> 1;
 
     const struct lc3_complex *w0 = def->w + n8, *w1 = w0 - 1;
     const struct lc3_complex *x0 = x + n8, *x1 = x0 - 1;
 
-    float *y0 = y + n4, *y1 = y0;
+    lc3_intfloat_t *y0 = y + n4, *y1 = y0;
 
     for ( ; y1 > y; x0++, x1--, w0++, w1--) {
+        lc3_intfloat_t u0, u1, v0, v1;
 
-        float u0 = (x0->im * w0->im + x0->re * w0->re) * scale;
-        float u1 = (x1->re * w1->im - x1->im * w1->re) * scale;
+        u0 = lc3_shr( lc3_mul(x0->im, w0->im) + lc3_mul(x0->re, w0->re), 31 );
+        u1 = lc3_shr( lc3_mul(x1->re, w1->im) - lc3_mul(x1->im, w1->re), 31 );
 
-        float v0 = (x0->re * w0->im - x0->im * w0->re) * scale;
-        float v1 = (x1->im * w1->im + x1->re * w1->re) * scale;
+        v0 = lc3_shr( lc3_mul(x0->re, w0->im) - lc3_mul(x0->im, w0->re), 31 );
+        v1 = lc3_shr( lc3_mul(x1->im, w1->im) + lc3_mul(x1->re, w1->re), 31 );
 
         *(y0++) = u0;  *(y0++) = u1;
         *(--y1) = v0;  *(--y1) = v1;
@@ -295,7 +325,7 @@
 }
 
 /**
- * Pre-rotate IMDCT coefficients of N points, before FFT N/4 points FFT
+ * Pre-rotate and scale IMDCT of N points, before FFT N/4 points FFT
  * def             Size and twiddles factors
  * x, y            Input and output coefficients
  *
@@ -304,57 +334,56 @@
  * to operate on FFT instead of IFFT
  */
 LC3_HOT static void imdct_pre_fft(const struct lc3_mdct_rot_def *def,
-    const float *x, struct lc3_complex *y)
+    const lc3_intfloat_t *x, struct lc3_complex *y)
 {
     int n4 = def->n4;
 
-    const float *x0 = x, *x1 = x0 + 2*n4;
+    const lc3_intfloat_t *x0 = x, *x1 = x0 + 2*n4;
 
     const struct lc3_complex *w0 = def->w, *w1 = w0 + n4;
     struct lc3_complex *y0 = y, *y1 = y0 + n4;
 
     while (x0 < x1) {
-        float u0 = *(x0++), u1 = *(--x1);
-        float v0 = *(x0++), v1 = *(--x1);
+        lc3_intfloat_t u0 = *(x0++), u1 = *(--x1);
+        lc3_intfloat_t v0 = *(x0++), v1 = *(--x1);
         struct lc3_complex uw = *(w0++), vw = *(--w1);
 
-        (y0  )->re = - u0 * uw.re - u1 * uw.im;
-        (y0++)->im = - u1 * uw.re + u0 * uw.im;
+        (y0  )->re = lc3_shr( - lc3_mul(u0, uw.re) - lc3_mul(u1, uw.im), 31 );
+        (y0++)->im = lc3_shr( - lc3_mul(u1, uw.re) + lc3_mul(u0, uw.im), 31 );
 
-        (--y1)->re = - v1 * vw.re - v0 * vw.im;
-        (  y1)->im = - v0 * vw.re + v1 * vw.im;
+        (--y1)->re = lc3_shr( - lc3_mul(v1, vw.re) - lc3_mul(v0, vw.im), 31 );
+        (  y1)->im = lc3_shr( - lc3_mul(v0, vw.re) + lc3_mul(v1, vw.im), 31 );
     }
 }
 
 /**
- * Post-rotate FFT N/4 points coefficients, resulting IMDCT N points
+ * Post-rotate and scale FFT N/4 points, resulting IMDCT N points
  * def             Size and twiddles factors
  * x, y            Input and output coefficients
- * scale           Scale on output coefficients
  *
  * `x` and y` can be the same buffer
  * The real and imaginary parts of `x` are swapped,
  * to operate on FFT instead of IFFT
  */
 LC3_HOT static void imdct_post_fft(const struct lc3_mdct_rot_def *def,
-    const struct lc3_complex *x, float *y, float scale)
+    const struct lc3_complex *x, lc3_intfloat_t *y)
 {
     int n4 = def->n4;
 
     const struct lc3_complex *w0 = def->w, *w1 = w0 + n4;
     const struct lc3_complex *x0 = x, *x1 = x0 + n4;
 
-    float *y0 = y, *y1 = y0 + 2*n4;
+    lc3_intfloat_t *y0 = y, *y1 = y0 + 2*n4;
 
     while (x0 < x1) {
         struct lc3_complex uz = *(x0++), vz = *(--x1);
         struct lc3_complex uw = *(w0++), vw = *(--w1);
 
-        *(y0++) = (uz.re * uw.im - uz.im * uw.re) * scale;
-        *(--y1) = (uz.re * uw.re + uz.im * uw.im) * scale;
+        *(y0++) = lc3_shr( lc3_mul(uz.re, uw.im) - lc3_mul(uz.im, uw.re), 31 );
+        *(--y1) = lc3_shr( lc3_mul(uz.re, uw.re) + lc3_mul(uz.im, uw.im), 31 );
 
-        *(--y1) = (vz.re * vw.im - vz.im * vw.re) * scale;
-        *(y0++) = (vz.re * vw.re + vz.im * vw.im) * scale;
+        *(--y1) = lc3_shr( lc3_mul(vz.re, vw.im) - lc3_mul(vz.im, vw.re), 31 );
+        *(y0++) = lc3_shr( lc3_mul(vz.re, vw.re) + lc3_mul(vz.im, vw.im), 31 );
     }
 }
 
@@ -365,7 +394,7 @@
  * y, d            Output samples and delayed ones
  */
 LC3_HOT static void imdct_window(enum lc3_dt dt, enum lc3_srate sr,
-    const float *x, float *d, float *y)
+    const lc3_intfloat_t *x, lc3_intfloat_t *d, lc3_intfloat_t *y)
 {
     /* The full MDCT coefficients is given by symmetry :
      *   T[   0 ..  n/4-1] = -half[n/4-1 .. 0    ]
@@ -374,46 +403,47 @@
      *   T[3n/4 ..    n-1] =  half[n/2-1 .. n/4  ]  */
 
     int n4 = LC3_NS(dt, sr) >> 1, nd = LC3_ND(dt, sr);
-    const float *w2 = lc3_mdct_win[dt][sr], *w0 = w2 + 3*n4, *w1 = w0;
+    const lc3_intfloat_t *w2 = lc3_mdct_win[dt][sr], *w0 = w2 + 3*n4, *w1 = w0;
 
-    const float *x0 = d + nd-n4, *x1 = x0;
-    float *y0 = y + nd-n4, *y1 = y0, *y2 = d + nd, *y3 = d;
+    const lc3_intfloat_t *x0 = d + nd-n4, *x1 = x0;
+    lc3_intfloat_t *y0 = y + nd-n4, *y1 = y0, *y2 = d + nd, *y3 = d;
 
     while (y0 > y) {
-        *(--y0) = *(--x0) - *(x  ) * *(w1++);
-        *(y1++) = *(x1++) + *(x++) * *(--w0);
+        *(--y0) = *(--x0) - lc3_shr( lc3_mul(*(x  ), *(w1++)), 30 );
+        *(y1++) = *(x1++) + lc3_shr( lc3_mul(*(x++), *(--w0)), 30 );
 
-        *(--y0) = *(--x0) - *(x  ) * *(w1++);
-        *(y1++) = *(x1++) + *(x++) * *(--w0);
+        *(--y0) = *(--x0) - lc3_shr( lc3_mul(*(x  ), *(w1++)), 30 );
+        *(y1++) = *(x1++) + lc3_shr( lc3_mul(*(x++), *(--w0)), 30 );
     }
 
     while (y1 < y + nd) {
-        *(y1++) = *(x1++) + *(x++) * *(--w0);
-        *(y1++) = *(x1++) + *(x++) * *(--w0);
+        *(y1++) = *(x1++) + lc3_shr( lc3_mul(*(x++), *(--w0)), 30 );
+        *(y1++) = *(x1++) + lc3_shr( lc3_mul(*(x++), *(--w0)), 30 );
     }
 
     while (y1 < y + 2*n4) {
-        *(y1++) = *(x  ) * *(--w0);
-        *(--y2) = *(x++) * *(w2++);
+        *(y1++) = lc3_shr( lc3_mul(*(x  ), *(--w0)), 30 );
+        *(--y2) = lc3_shr( lc3_mul(*(x++), *(w2++)), 30 );
 
-        *(y1++) = *(x  ) * *(--w0);
-        *(--y2) = *(x++) * *(w2++);
+        *(y1++) = lc3_shr( lc3_mul(*(x  ), *(--w0)), 30 );
+        *(--y2) = lc3_shr( lc3_mul(*(x++), *(w2++)), 30 );
     }
 
     while (y2 > y3) {
-        *(y3++) = *(x  ) * *(--w0);
-        *(--y2) = *(x++) * *(w2++);
+        *(y3++) = lc3_shr( lc3_mul(*(x  ), *(--w0)), 30 );
+        *(--y2) = lc3_shr( lc3_mul(*(x++), *(w2++)), 30 );
 
-        *(y3++) = *(x  ) * *(--w0);
-        *(--y2) = *(x++) * *(w2++);
+        *(y3++) = lc3_shr( lc3_mul(*(x  ), *(--w0)), 30 );
+        *(--y2) = lc3_shr( lc3_mul(*(x++), *(w2++)), 30 );
     }
 }
 
 /**
  * Forward MDCT transformation
  */
-void lc3_mdct_forward(enum lc3_dt dt, enum lc3_srate sr,
-    enum lc3_srate sr_dst, const float *x, float *d, float *y)
+void lc3_mdct_forward(
+    enum lc3_dt dt, enum lc3_srate sr, enum lc3_srate sr_dst,
+    const lc3_intfloat_t *x, lc3_intfloat_t *d, lc3_intfloat_t *y)
 {
     const struct lc3_mdct_rot_def *rot = lc3_mdct_rot[dt][sr];
     int nf = LC3_NS(dt, sr_dst);
@@ -421,20 +451,23 @@
 
     struct lc3_complex buffer[ns/2];
     struct lc3_complex *z = (struct lc3_complex *)y;
-    union { float *f; struct lc3_complex *z; } u = { .z = buffer };
+    union { lc3_intfloat_t *s; struct lc3_complex *z; } u = { .z = buffer };
 
-    mdct_window(dt, sr, x, d, u.f);
+    mdct_window(dt, sr, x, d, u.s);
 
-    mdct_pre_fft(rot, u.f, u.z);
+    mdct_pre_fft(rot, u.s, u.z);
     u.z = fft(u.z, ns/2, u.z, z);
-    mdct_post_fft(rot, u.z, y, sqrtf( (2.f*nf) / (ns*ns) ));
+    mdct_post_fft(rot, u.z, y);
+
+if (ns != nf) abort(); // TODO: Rescale
 }
 
 /**
  * Inverse MDCT transformation
  */
 void lc3_mdct_inverse(enum lc3_dt dt, enum lc3_srate sr,
-    enum lc3_srate sr_src, const float *x, float *d, float *y)
+    enum lc3_srate sr_src, const lc3_intfloat_t *x,
+    lc3_intfloat_t *d, lc3_intfloat_t *y)
 {
     const struct lc3_mdct_rot_def *rot = lc3_mdct_rot[dt][sr];
     int nf = LC3_NS(dt, sr_src);
@@ -442,11 +475,13 @@
 
     struct lc3_complex buffer[ns/2];
     struct lc3_complex *z = (struct lc3_complex *)y;
-    union { float *f; struct lc3_complex *z; } u = { .z = buffer };
+    union { lc3_intfloat_t *s; struct lc3_complex *z; } u = { .z = buffer };
 
     imdct_pre_fft(rot, x, z);
     z = fft(z, ns/2, z, u.z);
-    imdct_post_fft(rot, z, u.f, sqrtf(2.f / nf));
+    imdct_post_fft(rot, z, u.s);
 
-    imdct_window(dt, sr, u.f, d, y);
+    imdct_window(dt, sr, u.s, d, y);
+
+if (ns != nf) abort(); // TODO: Rescale
 }
diff --git a/src/mdct.h b/src/mdct.h
index 03ae801..4241d1f 100644
--- a/src/mdct.h
+++ b/src/mdct.h
@@ -38,8 +38,9 @@
  *
  * `x` and `y` can be the same buffer
  */
-void lc3_mdct_forward(enum lc3_dt dt, enum lc3_srate sr,
-    enum lc3_srate sr_dst, const float *x, float *d, float *y);
+void lc3_mdct_forward(
+    enum lc3_dt dt, enum lc3_srate sr, enum lc3_srate sr_dst,
+    const lc3_intfloat_t *x, lc3_intfloat_t *d, lc3_intfloat_t *y);
 
 /**
  * Inverse MDCT transformation
@@ -50,8 +51,9 @@
  *
  * `x` and `y` can be the same buffer
  */
-void lc3_mdct_inverse(enum lc3_dt dt, enum lc3_srate sr,
-    enum lc3_srate sr_src, const float *x, float *d, float *y);
+void lc3_mdct_inverse(
+    enum lc3_dt dt, enum lc3_srate sr, enum lc3_srate sr_src,
+    const lc3_intfloat_t *x, lc3_intfloat_t *d, lc3_intfloat_t *y);
 
 
 #endif /* __LC3_MDCT_H */
diff --git a/src/sns.c b/src/sns.c
index 56a893c..a664aa0 100644
--- a/src/sns.c
+++ b/src/sns.c
@@ -34,85 +34,91 @@
  */
 static const float dct16_m[16][16] = {
 
-    {  2.50000000e-01,  3.51850934e-01,  3.46759961e-01,  3.38329500e-01,
-       3.26640741e-01,  3.11806253e-01,  2.93968901e-01,  2.73300467e-01,
-       2.50000000e-01,  2.24291897e-01,  1.96423740e-01,  1.66663915e-01,
-       1.35299025e-01,  1.02631132e-01,  6.89748448e-02,  3.46542923e-02 },
+#define __C4(a, b, c, d) \
+  LC3_INTFLOAT_C(a, 31), LC3_INTFLOAT_C(b, 31), \
+  LC3_INTFLOAT_C(c, 31), LC3_INTFLOAT_C(d, 31)
 
-    {  2.50000000e-01,  3.38329500e-01,  2.93968901e-01,  2.24291897e-01,
-       1.35299025e-01,  3.46542923e-02, -6.89748448e-02, -1.66663915e-01,
-      -2.50000000e-01, -3.11806253e-01, -3.46759961e-01, -3.51850934e-01,
-      -3.26640741e-01, -2.73300467e-01, -1.96423740e-01, -1.02631132e-01 },
+  { __C4( 2.50000000e-01,  3.51850934e-01,  3.46759961e-01,  3.38329500e-01),
+    __C4( 3.26640741e-01,  3.11806253e-01,  2.93968901e-01,  2.73300467e-01),
+    __C4( 2.50000000e-01,  2.24291897e-01,  1.96423740e-01,  1.66663915e-01),
+    __C4( 1.35299025e-01,  1.02631132e-01,  6.89748448e-02,  3.46542923e-02) },
 
-     { 2.50000000e-01,  3.11806253e-01,  1.96423740e-01,  3.46542923e-02,
-      -1.35299025e-01, -2.73300467e-01, -3.46759961e-01, -3.38329500e-01,
-      -2.50000000e-01, -1.02631132e-01,  6.89748448e-02,  2.24291897e-01,
-       3.26640741e-01,  3.51850934e-01,  2.93968901e-01,  1.66663915e-01 },
+  { __C4( 2.50000000e-01,  3.38329500e-01,  2.93968901e-01,  2.24291897e-01),
+    __C4( 1.35299025e-01,  3.46542923e-02, -6.89748448e-02, -1.66663915e-01),
+    __C4(-2.50000000e-01, -3.11806253e-01, -3.46759961e-01, -3.51850934e-01),
+    __C4(-3.26640741e-01, -2.73300467e-01, -1.96423740e-01, -1.02631132e-01) },
 
-     { 2.50000000e-01,  2.73300467e-01,  6.89748448e-02, -1.66663915e-01,
-      -3.26640741e-01, -3.38329500e-01, -1.96423740e-01,  3.46542923e-02,
-       2.50000000e-01,  3.51850934e-01,  2.93968901e-01,  1.02631132e-01,
-      -1.35299025e-01, -3.11806253e-01, -3.46759961e-01, -2.24291897e-01 },
+  { __C4( 2.50000000e-01,  3.11806253e-01,  1.96423740e-01,  3.46542923e-02),
+    __C4(-1.35299025e-01, -2.73300467e-01, -3.46759961e-01, -3.38329500e-01),
+    __C4(-2.50000000e-01, -1.02631132e-01,  6.89748448e-02,  2.24291897e-01),
+    __C4( 3.26640741e-01,  3.51850934e-01,  2.93968901e-01,  1.66663915e-01) },
 
-    {  2.50000000e-01,  2.24291897e-01, -6.89748448e-02, -3.11806253e-01,
-      -3.26640741e-01, -1.02631132e-01,  1.96423740e-01,  3.51850934e-01,
-       2.50000000e-01, -3.46542923e-02, -2.93968901e-01, -3.38329500e-01,
-      -1.35299025e-01,  1.66663915e-01,  3.46759961e-01,  2.73300467e-01 },
+  { __C4( 2.50000000e-01,  2.73300467e-01,  6.89748448e-02, -1.66663915e-01),
+    __C4(-3.26640741e-01, -3.38329500e-01, -1.96423740e-01,  3.46542923e-02),
+    __C4( 2.50000000e-01,  3.51850934e-01,  2.93968901e-01,  1.02631132e-01),
+    __C4(-1.35299025e-01, -3.11806253e-01, -3.46759961e-01, -2.24291897e-01) },
 
-    {  2.50000000e-01,  1.66663915e-01, -1.96423740e-01, -3.51850934e-01,
-      -1.35299025e-01,  2.24291897e-01,  3.46759961e-01,  1.02631132e-01,
-      -2.50000000e-01, -3.38329500e-01, -6.89748448e-02,  2.73300467e-01,
-       3.26640741e-01,  3.46542923e-02, -2.93968901e-01, -3.11806253e-01 },
+  { __C4( 2.50000000e-01,  2.24291897e-01, -6.89748448e-02, -3.11806253e-01),
+    __C4(-3.26640741e-01, -1.02631132e-01,  1.96423740e-01,  3.51850934e-01),
+    __C4( 2.50000000e-01, -3.46542923e-02, -2.93968901e-01, -3.38329500e-01),
+    __C4(-1.35299025e-01,  1.66663915e-01,  3.46759961e-01,  2.73300467e-01) },
 
-    {  2.50000000e-01,  1.02631132e-01, -2.93968901e-01, -2.73300467e-01,
-       1.35299025e-01,  3.51850934e-01,  6.89748448e-02, -3.11806253e-01,
-      -2.50000000e-01,  1.66663915e-01,  3.46759961e-01,  3.46542923e-02,
-      -3.26640741e-01, -2.24291897e-01,  1.96423740e-01,  3.38329500e-01 },
+  { __C4( 2.50000000e-01,  1.66663915e-01, -1.96423740e-01, -3.51850934e-01),
+    __C4(-1.35299025e-01,  2.24291897e-01,  3.46759961e-01,  1.02631132e-01),
+    __C4(-2.50000000e-01, -3.38329500e-01, -6.89748448e-02,  2.73300467e-01),
+    __C4( 3.26640741e-01,  3.46542923e-02, -2.93968901e-01, -3.11806253e-01) },
 
-    {  2.50000000e-01,  3.46542923e-02, -3.46759961e-01, -1.02631132e-01,
-       3.26640741e-01,  1.66663915e-01, -2.93968901e-01, -2.24291897e-01,
-       2.50000000e-01,  2.73300467e-01, -1.96423740e-01, -3.11806253e-01,
-       1.35299025e-01,  3.38329500e-01, -6.89748448e-02, -3.51850934e-01 },
+  { __C4( 2.50000000e-01,  1.02631132e-01, -2.93968901e-01, -2.73300467e-01),
+    __C4( 1.35299025e-01,  3.51850934e-01,  6.89748448e-02, -3.11806253e-01),
+    __C4(-2.50000000e-01,  1.66663915e-01,  3.46759961e-01,  3.46542923e-02),
+    __C4(-3.26640741e-01, -2.24291897e-01,  1.96423740e-01,  3.38329500e-01) },
 
-    {  2.50000000e-01, -3.46542923e-02, -3.46759961e-01,  1.02631132e-01,
-       3.26640741e-01, -1.66663915e-01, -2.93968901e-01,  2.24291897e-01,
-       2.50000000e-01, -2.73300467e-01, -1.96423740e-01,  3.11806253e-01,
-       1.35299025e-01, -3.38329500e-01, -6.89748448e-02,  3.51850934e-01 },
+  { __C4( 2.50000000e-01,  3.46542923e-02, -3.46759961e-01, -1.02631132e-01),
+    __C4( 3.26640741e-01,  1.66663915e-01, -2.93968901e-01, -2.24291897e-01),
+    __C4( 2.50000000e-01,  2.73300467e-01, -1.96423740e-01, -3.11806253e-01),
+    __C4( 1.35299025e-01,  3.38329500e-01, -6.89748448e-02, -3.51850934e-01) },
 
-    {  2.50000000e-01, -1.02631132e-01, -2.93968901e-01,  2.73300467e-01,
-       1.35299025e-01, -3.51850934e-01,  6.89748448e-02,  3.11806253e-01,
-      -2.50000000e-01, -1.66663915e-01,  3.46759961e-01, -3.46542923e-02,
-      -3.26640741e-01,  2.24291897e-01,  1.96423740e-01, -3.38329500e-01 },
+  { __C4( 2.50000000e-01, -3.46542923e-02, -3.46759961e-01,  1.02631132e-01),
+    __C4( 3.26640741e-01, -1.66663915e-01, -2.93968901e-01,  2.24291897e-01),
+    __C4( 2.50000000e-01, -2.73300467e-01, -1.96423740e-01,  3.11806253e-01),
+    __C4( 1.35299025e-01, -3.38329500e-01, -6.89748448e-02,  3.51850934e-01) },
 
-    {  2.50000000e-01, -1.66663915e-01, -1.96423740e-01,  3.51850934e-01,
-      -1.35299025e-01, -2.24291897e-01,  3.46759961e-01, -1.02631132e-01,
-      -2.50000000e-01,  3.38329500e-01, -6.89748448e-02, -2.73300467e-01,
-       3.26640741e-01, -3.46542923e-02, -2.93968901e-01,  3.11806253e-01 },
+  { __C4( 2.50000000e-01, -1.02631132e-01, -2.93968901e-01,  2.73300467e-01),
+    __C4( 1.35299025e-01, -3.51850934e-01,  6.89748448e-02,  3.11806253e-01),
+    __C4(-2.50000000e-01, -1.66663915e-01,  3.46759961e-01, -3.46542923e-02),
+    __C4(-3.26640741e-01,  2.24291897e-01,  1.96423740e-01, -3.38329500e-01) },
 
-    {  2.50000000e-01, -2.24291897e-01, -6.89748448e-02,  3.11806253e-01,
-      -3.26640741e-01,  1.02631132e-01,  1.96423740e-01, -3.51850934e-01,
-       2.50000000e-01,  3.46542923e-02, -2.93968901e-01,  3.38329500e-01,
-      -1.35299025e-01, -1.66663915e-01,  3.46759961e-01, -2.73300467e-01 },
+  { __C4( 2.50000000e-01, -1.66663915e-01, -1.96423740e-01,  3.51850934e-01),
+    __C4(-1.35299025e-01, -2.24291897e-01,  3.46759961e-01, -1.02631132e-01),
+    __C4(-2.50000000e-01,  3.38329500e-01, -6.89748448e-02, -2.73300467e-01),
+    __C4( 3.26640741e-01, -3.46542923e-02, -2.93968901e-01,  3.11806253e-01) },
 
-    {  2.50000000e-01, -2.73300467e-01,  6.89748448e-02,  1.66663915e-01,
-      -3.26640741e-01,  3.38329500e-01, -1.96423740e-01, -3.46542923e-02,
-       2.50000000e-01, -3.51850934e-01,  2.93968901e-01, -1.02631132e-01,
-      -1.35299025e-01,  3.11806253e-01, -3.46759961e-01,  2.24291897e-01 },
+  { __C4( 2.50000000e-01, -2.24291897e-01, -6.89748448e-02,  3.11806253e-01),
+    __C4(-3.26640741e-01,  1.02631132e-01,  1.96423740e-01, -3.51850934e-01),
+    __C4( 2.50000000e-01,  3.46542923e-02, -2.93968901e-01,  3.38329500e-01),
+    __C4(-1.35299025e-01, -1.66663915e-01,  3.46759961e-01, -2.73300467e-01) },
 
-    {  2.50000000e-01, -3.11806253e-01,  1.96423740e-01, -3.46542923e-02,
-      -1.35299025e-01,  2.73300467e-01, -3.46759961e-01,  3.38329500e-01,
-      -2.50000000e-01,  1.02631132e-01,  6.89748448e-02, -2.24291897e-01,
-       3.26640741e-01, -3.51850934e-01,  2.93968901e-01, -1.66663915e-01 },
+  { __C4( 2.50000000e-01, -2.73300467e-01,  6.89748448e-02,  1.66663915e-01),
+    __C4(-3.26640741e-01,  3.38329500e-01, -1.96423740e-01, -3.46542923e-02),
+    __C4( 2.50000000e-01, -3.51850934e-01,  2.93968901e-01, -1.02631132e-01),
+    __C4(-1.35299025e-01,  3.11806253e-01, -3.46759961e-01,  2.24291897e-01) },
 
-    {  2.50000000e-01, -3.38329500e-01,  2.93968901e-01, -2.24291897e-01,
-       1.35299025e-01, -3.46542923e-02, -6.89748448e-02,  1.66663915e-01,
-      -2.50000000e-01,  3.11806253e-01, -3.46759961e-01,  3.51850934e-01,
-      -3.26640741e-01,  2.73300467e-01, -1.96423740e-01,  1.02631132e-01 },
+  { __C4( 2.50000000e-01, -3.11806253e-01,  1.96423740e-01, -3.46542923e-02),
+    __C4(-1.35299025e-01,  2.73300467e-01, -3.46759961e-01,  3.38329500e-01),
+    __C4(-2.50000000e-01,  1.02631132e-01,  6.89748448e-02, -2.24291897e-01),
+    __C4( 3.26640741e-01, -3.51850934e-01,  2.93968901e-01, -1.66663915e-01) },
 
-    {  2.50000000e-01, -3.51850934e-01,  3.46759961e-01, -3.38329500e-01,
-       3.26640741e-01, -3.11806253e-01,  2.93968901e-01, -2.73300467e-01,
-       2.50000000e-01, -2.24291897e-01,  1.96423740e-01, -1.66663915e-01,
-       1.35299025e-01, -1.02631132e-01,  6.89748448e-02, -3.46542923e-02 },
+  { __C4( 2.50000000e-01, -3.38329500e-01,  2.93968901e-01, -2.24291897e-01),
+    __C4( 1.35299025e-01, -3.46542923e-02, -6.89748448e-02,  1.66663915e-01),
+    __C4(-2.50000000e-01,  3.11806253e-01, -3.46759961e-01,  3.51850934e-01),
+    __C4(-3.26640741e-01,  2.73300467e-01, -1.96423740e-01,  1.02631132e-01) },
+
+  { __C4( 2.50000000e-01, -3.51850934e-01,  3.46759961e-01, -3.38329500e-01),
+    __C4( 3.26640741e-01, -3.11806253e-01,  2.93968901e-01, -2.73300467e-01),
+    __C4( 2.50000000e-01, -2.24291897e-01,  1.96423740e-01, -1.66663915e-01),
+    __C4( 1.35299025e-01, -1.02631132e-01,  6.89748448e-02, -3.46542923e-02) },
+
+#undef __C4
 
 };
 
@@ -124,18 +130,31 @@
 {
     for (int i = 0, j; i < 16; i++)
         for (y[i] = 0, j = 0; j < 16; j++)
+#ifdef CONFIG_FIXED_POINT
+y[i] += x[j] * ldexpf(dct16_m[j][i], -31);
+#else
             y[i] += x[j] * dct16_m[j][i];
+#endif
 }
 
 /**
  * Inverse DCT-16 transformation
  * x, y            Input and output 16 values
  */
-LC3_HOT static void dct16_inverse(const float *x, float *y)
+LC3_HOT static void dct16_inverse(const lc3_intfloat_t *x, lc3_intfloat_t *y)
 {
+#ifdef CONFIG_FIXED_POINT
+    for (int i = 0, j; i < 16; i++) {
+        int64_t yi = 0;
+        for (j = 0; j < 16; j++)
+            yi += x[j] * dct16_m[i][j];
+        y[i] = lc3_shr(yi, 31);
+    }
+#else
     for (int i = 0, j; i < 16; i++)
         for (y[i] = 0, j = 0; j < 16; j++)
             y[i] += x[j] * dct16_m[i][j];
+#endif
 }
 
 
@@ -351,13 +370,18 @@
     *lfcb_idx = *hfcb_idx = 0;
 
     for (int icb = 0; icb < 32; icb++) {
-        const float *lfcb = lc3_sns_lfcb[icb];
-        const float *hfcb = lc3_sns_hfcb[icb];
+        const lc3_intfloat_t *lfcb = lc3_sns_lfcb[icb];
+        const lc3_intfloat_t *hfcb = lc3_sns_hfcb[icb];
         float dlfcb = 0, dhfcb = 0;
 
         for (int i = 0; i < 8; i++) {
+#ifdef CONFIG_FIXED_POINT
+dlfcb += (scf[  i] - ldexpf(lfcb[i], -24)) * (scf[  i] - ldexpf(lfcb[i], -24));
+dhfcb += (scf[8+i] - ldexpf(hfcb[i], -24)) * (scf[8+i] - ldexpf(hfcb[i], -24));
+#else
             dlfcb += (scf[  i] - lfcb[i]) * (scf[  i] - lfcb[i]);
             dhfcb += (scf[8+i] - hfcb[i]) * (scf[8+i] - hfcb[i]);
+#endif
         }
 
         if (icb == 0 || dlfcb < dlfcb_max)
@@ -371,15 +395,15 @@
 /**
  * Unit energy normalize pulse configuration
  * c               Pulse configuration
- * cn              Normalized pulse configuration
+ * cn              Normalized pulse configuration (8.24)
  */
-LC3_HOT static void normalize(const int *c, float *cn)
+LC3_HOT static void normalize(const int *c, lc3_intfloat_t *cn)
 {
     int c2_sum = 0;
     for (int i = 0; i < 16; i++)
         c2_sum += c[i] * c[i];
 
-    float c_norm = 1.f / sqrtf(c2_sum);
+    lc3_intfloat_t c_norm = lc3_rsqrt(c2_sum, 24);
 
     for (int i = 0; i < 16; i++)
         cn[i] = c[i] * c_norm;
@@ -425,13 +449,18 @@
 {
     /* --- Residual --- */
 
-    const float *lfcb = lc3_sns_lfcb[lfcb_idx];
-    const float *hfcb = lc3_sns_hfcb[hfcb_idx];
+    const lc3_intfloat_t *lfcb = lc3_sns_lfcb[lfcb_idx];
+    const lc3_intfloat_t *hfcb = lc3_sns_hfcb[hfcb_idx];
     float r[16], x[16];
 
     for (int i = 0; i < 8; i++) {
+#ifdef CONFIG_FIXED_POINT
+r[  i] = scf[  i] - ldexpf(lfcb[i], -24);
+r[8+i] = scf[8+i] - ldexpf(hfcb[i], -24);
+#else
         r[  i] = scf[  i] - lfcb[i];
         r[8+i] = scf[8+i] - hfcb[i];
+#endif
     }
 
     dct16_forward(r, x);
@@ -500,8 +529,21 @@
         for (int i = 0; i < 4; i++)
             c[i][j] = x[j] < 0 ? -c[i][j] : c[i][j];
 
+
+#ifdef CONFIG_FIXED_POINT
+lc3_intfloat_t __cn[4][16];
+
+    for (int i = 0; i < 4; i++)
+        normalize(c[i], __cn[i]);
+
+for (int j = 0; j < 16; j++)
+for (int i = 0; i < 4; i++)
+cn[i][j] = ldexpf(__cn[i][j], -24);
+#else
     for (int i = 0; i < 4; i++)
         normalize(c[i], cn[i]);
+#endif
+
 
     /* --- Determe shape & gain index ---
      * Search the Mean Square Error, within (shape, gain) combinations */
@@ -515,7 +557,11 @@
         int cgain_idx = 0;
 
         for (int ig = 0; ig < cgains->count; ig++) {
+#ifdef CONFIG_FIXED_POINT
+float g = ldexpf(cgains->v[ig], -12);
+#else
             float g = cgains->v[ig];
+#endif
 
             float mse = 0;
             for (int i = 0; i < 16; i++)
@@ -542,19 +588,19 @@
  * scf             Return unquantized scale factors
  */
 LC3_HOT static void unquantize(int lfcb_idx, int hfcb_idx,
-    const float *c, int shape, int gain, float *scf)
+    const lc3_intfloat_t *c, int shape, int gain, lc3_intfloat_t *scf)
 {
-    const float *lfcb = lc3_sns_lfcb[lfcb_idx];
-    const float *hfcb = lc3_sns_hfcb[hfcb_idx];
-    float g = lc3_sns_vq_gains[shape].v[gain];
+    const lc3_intfloat_t *lfcb = lc3_sns_lfcb[lfcb_idx];
+    const lc3_intfloat_t *hfcb = lc3_sns_hfcb[hfcb_idx];
+    lc3_intfloat_t g = lc3_sns_vq_gains[shape].v[gain];
 
     dct16_inverse(c, scf);
 
     for (int i = 0; i < 8; i++)
-        scf[i] = lfcb[i] + g * scf[i];
+        scf[i] = lfcb[i] + lc3_shr(lc3_mul(g, scf[i]), 12);
 
     for (int i = 8; i < 16; i++)
-        scf[i] = hfcb[i-8] + g * scf[i];
+        scf[i] = hfcb[i-8] + lc3_shr(lc3_mul(g, scf[i]), 12);
 }
 
 /**
@@ -675,17 +721,27 @@
  *
  * `x` and `y` can be the same buffer
  */
-LC3_HOT static void spectral_shaping(enum lc3_dt dt, enum lc3_srate sr,
-    const float *scf_q, bool inv, const float *x, float *y)
+LC3_HOT static void spectral_shaping(
+    enum lc3_dt dt, enum lc3_srate sr, const lc3_intfloat_t *scf_q, bool inv,
+    const lc3_intfloat_t *x, lc3_intfloat_t *y)
 {
     /* --- Interpolate scale factors --- */
 
-    float scf[LC3_NUM_BANDS];
-    float s0, s1 = inv ? -scf_q[0] : scf_q[0];
+    lc3_intfloat_t scf[LC3_NUM_BANDS];
+    lc3_intfloat_t s0, s1 = inv ? -scf_q[0] : scf_q[0];
 
     scf[0] = scf[1] = s1;
     for (int i = 0; i < 15; i++) {
         s0 = s1, s1 = inv ? -scf_q[i+1] : scf_q[i+1];
+#ifdef CONFIG_FIXED_POINT
+        scf[4*i+2] = s0 + lc3_shr(1 * (s1 - s0), 3);
+        scf[4*i+3] = s0 + lc3_shr(3 * (s1 - s0), 3);
+        scf[4*i+4] = s0 + lc3_shr(5 * (s1 - s0), 3);
+        scf[4*i+5] = s0 + lc3_shr(7 * (s1 - s0), 3);
+    }
+    scf[62] = s1 + lc3_shr(1 * (s1 - s0), 3);
+    scf[63] = s1 + lc3_shr(3 * (s1 - s0), 3);
+#else
         scf[4*i+2] = s0 + 0.125f * (s1 - s0);
         scf[4*i+3] = s0 + 0.375f * (s1 - s0);
         scf[4*i+4] = s0 + 0.625f * (s1 - s0);
@@ -693,25 +749,30 @@
     }
     scf[62] = s1 + 0.125f * (s1 - s0);
     scf[63] = s1 + 0.375f * (s1 - s0);
+#endif
 
     int nb = LC3_MIN(lc3_band_lim[dt][sr][LC3_NUM_BANDS], LC3_NUM_BANDS);
     int n2 = LC3_NUM_BANDS - nb;
 
     for (int i2 = 0; i2 < n2; i2++)
+#ifdef CONFIG_FIXED_POINT
+        scf[i2] = lc3_shr(scf[2*i2] + scf[2*i2+1], 1);
+#else
         scf[i2] = 0.5f * (scf[2*i2] + scf[2*i2+1]);
+#endif
 
     if (n2 > 0)
-        memmove(scf + n2, scf + 2*n2, (nb - n2) * sizeof(float));
+        memmove(scf + n2, scf + 2*n2, (nb - n2) * sizeof(lc3_intfloat_t));
 
     /* --- Spectral shaping --- */
 
     const int *lim = lc3_band_lim[dt][sr];
 
     for (int i = 0, ib = 0; ib < nb; ib++) {
-        float g_sns = fast_exp2f(-scf[ib]);
+        lc3_intfloat_t g_sns = fast_exp2f(-scf[ib]);
 
         for ( ; i < lim[ib+1]; i++)
-            y[i] = x[i] * g_sns;
+            y[i] = lc3_shr(lc3_mul(x[i], g_sns), 23);
     }
 }
 
@@ -744,22 +805,44 @@
     quantize(scf, data->lfcb, data->hfcb,
         c, cn, &data->shape, &data->gain);
 
+#ifdef CONFIG_FIXED_POINT
+int32_t __scf[16], __cn[16];
+for (int i = 0; i < 16; i++) __cn[i] = ldexpf(cn[data->shape][i], 24);
+
+    unquantize(data->lfcb, data->hfcb,
+        __cn, data->shape, data->gain, __scf);
+
+for (int i = 0; i < 16; i++) scf[i] = ldexpf(__scf[i], -24);
+#else
     unquantize(data->lfcb, data->hfcb,
         cn[data->shape], data->shape, data->gain, scf);
+#endif
 
     enumerate(data->shape, c[data->shape],
         &data->idx_a, &data->ls_a, &data->idx_b, &data->ls_b);
 
+#ifdef CONFIG_FIXED_POINT
+int ne = LC3_NE(dt, sr);
+int32_t __x[ne], __y[ne];
+
+for (int i = 0; i < 16; i++) __scf[i] = ldexpf(scf[i], 24);
+for (int i = 0; i < ne; i++) __x[i] = ldexpf(x[i], 8);
+
+    spectral_shaping(dt, sr, __scf, false, __x, __y);
+
+for (int i = 0; i < ne; i++) y[i] = ldexpf(__y[i], -8);
+#else
     spectral_shaping(dt, sr, scf, false, x, y);
+#endif
 }
 
 /**
  * SNS synthesis
  */
 void lc3_sns_synthesize(enum lc3_dt dt, enum lc3_srate sr,
-    const lc3_sns_data_t *data, const float *x, float *y)
+    const lc3_sns_data_t *data, const lc3_intfloat_t *x, lc3_intfloat_t *y)
 {
-    float scf[16], cn[16];
+    lc3_intfloat_t scf[16], cn[16];
     int c[16];
 
     deenumerate(data->shape,
diff --git a/src/sns.h b/src/sns.h
index 432223c..1e3a494 100644
--- a/src/sns.h
+++ b/src/sns.h
@@ -97,7 +97,7 @@
  * `x` and `y` can be the same buffer
  */
 void lc3_sns_synthesize(enum lc3_dt dt, enum lc3_srate sr,
-    const lc3_sns_data_t *data, const float *x, float *y);
+    const lc3_sns_data_t *data, const lc3_intfloat_t *x, lc3_intfloat_t *y);
 
 
 #endif /* __LC3_SNS_H */
diff --git a/src/tables.c b/src/tables.c
index aef6fc1..3bda90b 100644
--- a/src/tables.c
+++ b/src/tables.c
@@ -27,79 +27,81 @@
  *     cos(-2Pi * 2i/N) + j sin(-2Pi * 2i/N) } , N=15, 45
  */
 
+#define __C(re, im)  { LC3_INTFLOAT_C(re, 31), LC3_INTFLOAT_C(im, 31) }
+
 static const struct lc3_fft_bf3_twiddles fft_twiddles_15 = {
     .n3 = 15/3, .t = (const struct lc3_complex [][2]){
-        { {  1.0000000e+0, -0.0000000e+0 }, {  1.0000000e+0, -0.0000000e+0 } },
-        { {  9.1354546e-1, -4.0673664e-1 }, {  6.6913061e-1, -7.4314483e-1 } },
-        { {  6.6913061e-1, -7.4314483e-1 }, { -1.0452846e-1, -9.9452190e-1 } },
-        { {  3.0901699e-1, -9.5105652e-1 }, { -8.0901699e-1, -5.8778525e-1 } },
-        { { -1.0452846e-1, -9.9452190e-1 }, { -9.7814760e-1,  2.0791169e-1 } },
-        { { -5.0000000e-1, -8.6602540e-1 }, { -5.0000000e-1,  8.6602540e-1 } },
-        { { -8.0901699e-1, -5.8778525e-1 }, {  3.0901699e-1,  9.5105652e-1 } },
-        { { -9.7814760e-1, -2.0791169e-1 }, {  9.1354546e-1,  4.0673664e-1 } },
-        { { -9.7814760e-1,  2.0791169e-1 }, {  9.1354546e-1, -4.0673664e-1 } },
-        { { -8.0901699e-1,  5.8778525e-1 }, {  3.0901699e-1, -9.5105652e-1 } },
-        { { -5.0000000e-1,  8.6602540e-1 }, { -5.0000000e-1, -8.6602540e-1 } },
-        { { -1.0452846e-1,  9.9452190e-1 }, { -9.7814760e-1, -2.0791169e-1 } },
-        { {  3.0901699e-1,  9.5105652e-1 }, { -8.0901699e-1,  5.8778525e-1 } },
-        { {  6.6913061e-1,  7.4314483e-1 }, { -1.0452846e-1,  9.9452190e-1 } },
-        { {  9.1354546e-1,  4.0673664e-1 }, {  6.6913061e-1,  7.4314483e-1 } },
-    }
+    { __C( 1.0000000e+0, -0.0000000e+0), __C( 1.0000000e+0, -0.0000000e+0) },
+    { __C( 9.1354546e-1, -4.0673664e-1), __C( 6.6913061e-1, -7.4314483e-1) },
+    { __C( 6.6913061e-1, -7.4314483e-1), __C(-1.0452846e-1, -9.9452190e-1) },
+    { __C( 3.0901699e-1, -9.5105652e-1), __C(-8.0901699e-1, -5.8778525e-1) },
+    { __C(-1.0452846e-1, -9.9452190e-1), __C(-9.7814760e-1,  2.0791169e-1) },
+    { __C(-5.0000000e-1, -8.6602540e-1), __C(-5.0000000e-1,  8.6602540e-1) },
+    { __C(-8.0901699e-1, -5.8778525e-1), __C( 3.0901699e-1,  9.5105652e-1) },
+    { __C(-9.7814760e-1, -2.0791169e-1), __C( 9.1354546e-1,  4.0673664e-1) },
+    { __C(-9.7814760e-1,  2.0791169e-1), __C( 9.1354546e-1, -4.0673664e-1) },
+    { __C(-8.0901699e-1,  5.8778525e-1), __C( 3.0901699e-1, -9.5105652e-1) },
+    { __C(-5.0000000e-1,  8.6602540e-1), __C(-5.0000000e-1, -8.6602540e-1) },
+    { __C(-1.0452846e-1,  9.9452190e-1), __C(-9.7814760e-1, -2.0791169e-1) },
+    { __C( 3.0901699e-1,  9.5105652e-1), __C(-8.0901699e-1,  5.8778525e-1) },
+    { __C( 6.6913061e-1,  7.4314483e-1), __C(-1.0452846e-1,  9.9452190e-1) },
+    { __C( 9.1354546e-1,  4.0673664e-1), __C( 6.6913061e-1,  7.4314483e-1) } }
 };
 
 static const struct lc3_fft_bf3_twiddles fft_twiddles_45 = {
     .n3 = 45/3, .t = (const struct lc3_complex [][2]){
-        { {  1.0000000e+0, -0.0000000e+0 }, {  1.0000000e+0, -0.0000000e+0 } },
-        { {  9.9026807e-1, -1.3917310e-1 }, {  9.6126170e-1, -2.7563736e-1 } },
-        { {  9.6126170e-1, -2.7563736e-1 }, {  8.4804810e-1, -5.2991926e-1 } },
-        { {  9.1354546e-1, -4.0673664e-1 }, {  6.6913061e-1, -7.4314483e-1 } },
-        { {  8.4804810e-1, -5.2991926e-1 }, {  4.3837115e-1, -8.9879405e-1 } },
-        { {  7.6604444e-1, -6.4278761e-1 }, {  1.7364818e-1, -9.8480775e-1 } },
-        { {  6.6913061e-1, -7.4314483e-1 }, { -1.0452846e-1, -9.9452190e-1 } },
-        { {  5.5919290e-1, -8.2903757e-1 }, { -3.7460659e-1, -9.2718385e-1 } },
-        { {  4.3837115e-1, -8.9879405e-1 }, { -6.1566148e-1, -7.8801075e-1 } },
-        { {  3.0901699e-1, -9.5105652e-1 }, { -8.0901699e-1, -5.8778525e-1 } },
-        { {  1.7364818e-1, -9.8480775e-1 }, { -9.3969262e-1, -3.4202014e-1 } },
-        { {  3.4899497e-2, -9.9939083e-1 }, { -9.9756405e-1, -6.9756474e-2 } },
-        { { -1.0452846e-1, -9.9452190e-1 }, { -9.7814760e-1,  2.0791169e-1 } },
-        { { -2.4192190e-1, -9.7029573e-1 }, { -8.8294759e-1,  4.6947156e-1 } },
-        { { -3.7460659e-1, -9.2718385e-1 }, { -7.1933980e-1,  6.9465837e-1 } },
-        { { -5.0000000e-1, -8.6602540e-1 }, { -5.0000000e-1,  8.6602540e-1 } },
-        { { -6.1566148e-1, -7.8801075e-1 }, { -2.4192190e-1,  9.7029573e-1 } },
-        { { -7.1933980e-1, -6.9465837e-1 }, {  3.4899497e-2,  9.9939083e-1 } },
-        { { -8.0901699e-1, -5.8778525e-1 }, {  3.0901699e-1,  9.5105652e-1 } },
-        { { -8.8294759e-1, -4.6947156e-1 }, {  5.5919290e-1,  8.2903757e-1 } },
-        { { -9.3969262e-1, -3.4202014e-1 }, {  7.6604444e-1,  6.4278761e-1 } },
-        { { -9.7814760e-1, -2.0791169e-1 }, {  9.1354546e-1,  4.0673664e-1 } },
-        { { -9.9756405e-1, -6.9756474e-2 }, {  9.9026807e-1,  1.3917310e-1 } },
-        { { -9.9756405e-1,  6.9756474e-2 }, {  9.9026807e-1, -1.3917310e-1 } },
-        { { -9.7814760e-1,  2.0791169e-1 }, {  9.1354546e-1, -4.0673664e-1 } },
-        { { -9.3969262e-1,  3.4202014e-1 }, {  7.6604444e-1, -6.4278761e-1 } },
-        { { -8.8294759e-1,  4.6947156e-1 }, {  5.5919290e-1, -8.2903757e-1 } },
-        { { -8.0901699e-1,  5.8778525e-1 }, {  3.0901699e-1, -9.5105652e-1 } },
-        { { -7.1933980e-1,  6.9465837e-1 }, {  3.4899497e-2, -9.9939083e-1 } },
-        { { -6.1566148e-1,  7.8801075e-1 }, { -2.4192190e-1, -9.7029573e-1 } },
-        { { -5.0000000e-1,  8.6602540e-1 }, { -5.0000000e-1, -8.6602540e-1 } },
-        { { -3.7460659e-1,  9.2718385e-1 }, { -7.1933980e-1, -6.9465837e-1 } },
-        { { -2.4192190e-1,  9.7029573e-1 }, { -8.8294759e-1, -4.6947156e-1 } },
-        { { -1.0452846e-1,  9.9452190e-1 }, { -9.7814760e-1, -2.0791169e-1 } },
-        { {  3.4899497e-2,  9.9939083e-1 }, { -9.9756405e-1,  6.9756474e-2 } },
-        { {  1.7364818e-1,  9.8480775e-1 }, { -9.3969262e-1,  3.4202014e-1 } },
-        { {  3.0901699e-1,  9.5105652e-1 }, { -8.0901699e-1,  5.8778525e-1 } },
-        { {  4.3837115e-1,  8.9879405e-1 }, { -6.1566148e-1,  7.8801075e-1 } },
-        { {  5.5919290e-1,  8.2903757e-1 }, { -3.7460659e-1,  9.2718385e-1 } },
-        { {  6.6913061e-1,  7.4314483e-1 }, { -1.0452846e-1,  9.9452190e-1 } },
-        { {  7.6604444e-1,  6.4278761e-1 }, {  1.7364818e-1,  9.8480775e-1 } },
-        { {  8.4804810e-1,  5.2991926e-1 }, {  4.3837115e-1,  8.9879405e-1 } },
-        { {  9.1354546e-1,  4.0673664e-1 }, {  6.6913061e-1,  7.4314483e-1 } },
-        { {  9.6126170e-1,  2.7563736e-1 }, {  8.4804810e-1,  5.2991926e-1 } },
-        { {  9.9026807e-1,  1.3917310e-1 }, {  9.6126170e-1,  2.7563736e-1 } },
-    }
+    { __C( 1.0000000e+0, -0.0000000e+0), __C( 1.0000000e+0, -0.0000000e+0) },
+    { __C( 9.9026807e-1, -1.3917310e-1), __C( 9.6126170e-1, -2.7563736e-1) },
+    { __C( 9.6126170e-1, -2.7563736e-1), __C( 8.4804810e-1, -5.2991926e-1) },
+    { __C( 9.1354546e-1, -4.0673664e-1), __C( 6.6913061e-1, -7.4314483e-1) },
+    { __C( 8.4804810e-1, -5.2991926e-1), __C( 4.3837115e-1, -8.9879405e-1) },
+    { __C( 7.6604444e-1, -6.4278761e-1), __C( 1.7364818e-1, -9.8480775e-1) },
+    { __C( 6.6913061e-1, -7.4314483e-1), __C(-1.0452846e-1, -9.9452190e-1) },
+    { __C( 5.5919290e-1, -8.2903757e-1), __C(-3.7460659e-1, -9.2718385e-1) },
+    { __C( 4.3837115e-1, -8.9879405e-1), __C(-6.1566148e-1, -7.8801075e-1) },
+    { __C( 3.0901699e-1, -9.5105652e-1), __C(-8.0901699e-1, -5.8778525e-1) },
+    { __C( 1.7364818e-1, -9.8480775e-1), __C(-9.3969262e-1, -3.4202014e-1) },
+    { __C( 3.4899497e-2, -9.9939083e-1), __C(-9.9756405e-1, -6.9756474e-2) },
+    { __C(-1.0452846e-1, -9.9452190e-1), __C(-9.7814760e-1,  2.0791169e-1) },
+    { __C(-2.4192190e-1, -9.7029573e-1), __C(-8.8294759e-1,  4.6947156e-1) },
+    { __C(-3.7460659e-1, -9.2718385e-1), __C(-7.1933980e-1,  6.9465837e-1) },
+    { __C(-5.0000000e-1, -8.6602540e-1), __C(-5.0000000e-1,  8.6602540e-1) },
+    { __C(-6.1566148e-1, -7.8801075e-1), __C(-2.4192190e-1,  9.7029573e-1) },
+    { __C(-7.1933980e-1, -6.9465837e-1), __C( 3.4899497e-2,  9.9939083e-1) },
+    { __C(-8.0901699e-1, -5.8778525e-1), __C( 3.0901699e-1,  9.5105652e-1) },
+    { __C(-8.8294759e-1, -4.6947156e-1), __C( 5.5919290e-1,  8.2903757e-1) },
+    { __C(-9.3969262e-1, -3.4202014e-1), __C( 7.6604444e-1,  6.4278761e-1) },
+    { __C(-9.7814760e-1, -2.0791169e-1), __C( 9.1354546e-1,  4.0673664e-1) },
+    { __C(-9.9756405e-1, -6.9756474e-2), __C( 9.9026807e-1,  1.3917310e-1) },
+    { __C(-9.9756405e-1,  6.9756474e-2), __C( 9.9026807e-1, -1.3917310e-1) },
+    { __C(-9.7814760e-1,  2.0791169e-1), __C( 9.1354546e-1, -4.0673664e-1) },
+    { __C(-9.3969262e-1,  3.4202014e-1), __C( 7.6604444e-1, -6.4278761e-1) },
+    { __C(-8.8294759e-1,  4.6947156e-1), __C( 5.5919290e-1, -8.2903757e-1) },
+    { __C(-8.0901699e-1,  5.8778525e-1), __C( 3.0901699e-1, -9.5105652e-1) },
+    { __C(-7.1933980e-1,  6.9465837e-1), __C( 3.4899497e-2, -9.9939083e-1) },
+    { __C(-6.1566148e-1,  7.8801075e-1), __C(-2.4192190e-1, -9.7029573e-1) },
+    { __C(-5.0000000e-1,  8.6602540e-1), __C(-5.0000000e-1, -8.6602540e-1) },
+    { __C(-3.7460659e-1,  9.2718385e-1), __C(-7.1933980e-1, -6.9465837e-1) },
+    { __C(-2.4192190e-1,  9.7029573e-1), __C(-8.8294759e-1, -4.6947156e-1) },
+    { __C(-1.0452846e-1,  9.9452190e-1), __C(-9.7814760e-1, -2.0791169e-1) },
+    { __C( 3.4899497e-2,  9.9939083e-1), __C(-9.9756405e-1,  6.9756474e-2) },
+    { __C( 1.7364818e-1,  9.8480775e-1), __C(-9.3969262e-1,  3.4202014e-1) },
+    { __C( 3.0901699e-1,  9.5105652e-1), __C(-8.0901699e-1,  5.8778525e-1) },
+    { __C( 4.3837115e-1,  8.9879405e-1), __C(-6.1566148e-1,  7.8801075e-1) },
+    { __C( 5.5919290e-1,  8.2903757e-1), __C(-3.7460659e-1,  9.2718385e-1) },
+    { __C( 6.6913061e-1,  7.4314483e-1), __C(-1.0452846e-1,  9.9452190e-1) },
+    { __C( 7.6604444e-1,  6.4278761e-1), __C( 1.7364818e-1,  9.8480775e-1) },
+    { __C( 8.4804810e-1,  5.2991926e-1), __C( 4.3837115e-1,  8.9879405e-1) },
+    { __C( 9.1354546e-1,  4.0673664e-1), __C( 6.6913061e-1,  7.4314483e-1) },
+    { __C( 9.6126170e-1,  2.7563736e-1), __C( 8.4804810e-1,  5.2991926e-1) },
+    { __C( 9.9026807e-1,  1.3917310e-1), __C( 9.6126170e-1,  2.7563736e-1) } }
 };
 
 const struct lc3_fft_bf3_twiddles *lc3_fft_twiddles_bf3[] =
     { &fft_twiddles_15, &fft_twiddles_45 };
 
+#undef __C
+
 
 /**
  * Twiddles FFT 2 points
@@ -108,318 +110,309 @@
  *   cos(-2Pi * i/N) + j sin(-2Pi * i/N) , N=10, 20, ...
  */
 
+#define __C(re, im)  { LC3_INTFLOAT_C(re, 31), LC3_INTFLOAT_C(im, 31) }
+
 static const struct lc3_fft_bf2_twiddles fft_twiddles_10 = {
     .n2 = 10/2, .t = (const struct lc3_complex []){
-        {  1.0000000e+00, -0.0000000e+00 }, {  8.0901699e-01, -5.8778525e-01 },
-        {  3.0901699e-01, -9.5105652e-01 }, { -3.0901699e-01, -9.5105652e-01 },
-        { -8.0901699e-01, -5.8778525e-01 },
-    }
+    __C( 1.0000000e+00, -0.0000000e+00), __C( 8.0901699e-01, -5.8778525e-01),
+    __C( 3.0901699e-01, -9.5105652e-01), __C(-3.0901699e-01, -9.5105652e-01),
+    __C(-8.0901699e-01, -5.8778525e-01) }
 };
 
 static const struct lc3_fft_bf2_twiddles fft_twiddles_20 = {
     .n2 = 20/2, .t = (const struct lc3_complex []){
-        {  1.0000000e+00, -0.0000000e+00 }, {  9.5105652e-01, -3.0901699e-01 },
-        {  8.0901699e-01, -5.8778525e-01 }, {  5.8778525e-01, -8.0901699e-01 },
-        {  3.0901699e-01, -9.5105652e-01 }, {  6.1232340e-17, -1.0000000e+00 },
-        { -3.0901699e-01, -9.5105652e-01 }, { -5.8778525e-01, -8.0901699e-01 },
-        { -8.0901699e-01, -5.8778525e-01 }, { -9.5105652e-01, -3.0901699e-01 },
-    }
+    __C( 1.0000000e+00, -0.0000000e+00), __C( 9.5105652e-01, -3.0901699e-01),
+    __C( 8.0901699e-01, -5.8778525e-01), __C( 5.8778525e-01, -8.0901699e-01),
+    __C( 3.0901699e-01, -9.5105652e-01), __C( 6.1232340e-17, -1.0000000e+00),
+    __C(-3.0901699e-01, -9.5105652e-01), __C(-5.8778525e-01, -8.0901699e-01),
+    __C(-8.0901699e-01, -5.8778525e-01), __C(-9.5105652e-01, -3.0901699e-01) }
 };
 
 static const struct lc3_fft_bf2_twiddles fft_twiddles_30 = {
     .n2 = 30/2, .t = (const struct lc3_complex []){
-        {  1.0000000e+00, -0.0000000e+00 }, {  9.7814760e-01, -2.0791169e-01 },
-        {  9.1354546e-01, -4.0673664e-01 }, {  8.0901699e-01, -5.8778525e-01 },
-        {  6.6913061e-01, -7.4314483e-01 }, {  5.0000000e-01, -8.6602540e-01 },
-        {  3.0901699e-01, -9.5105652e-01 }, {  1.0452846e-01, -9.9452190e-01 },
-        { -1.0452846e-01, -9.9452190e-01 }, { -3.0901699e-01, -9.5105652e-01 },
-        { -5.0000000e-01, -8.6602540e-01 }, { -6.6913061e-01, -7.4314483e-01 },
-        { -8.0901699e-01, -5.8778525e-01 }, { -9.1354546e-01, -4.0673664e-01 },
-        { -9.7814760e-01, -2.0791169e-01 },
-    }
+    __C( 1.0000000e+00, -0.0000000e+00), __C( 9.7814760e-01, -2.0791169e-01),
+    __C( 9.1354546e-01, -4.0673664e-01), __C( 8.0901699e-01, -5.8778525e-01),
+    __C( 6.6913061e-01, -7.4314483e-01), __C( 5.0000000e-01, -8.6602540e-01),
+    __C( 3.0901699e-01, -9.5105652e-01), __C( 1.0452846e-01, -9.9452190e-01),
+    __C(-1.0452846e-01, -9.9452190e-01), __C(-3.0901699e-01, -9.5105652e-01),
+    __C(-5.0000000e-01, -8.6602540e-01), __C(-6.6913061e-01, -7.4314483e-01),
+    __C(-8.0901699e-01, -5.8778525e-01), __C(-9.1354546e-01, -4.0673664e-01),
+    __C(-9.7814760e-01, -2.0791169e-01), }
 };
 
 static const struct lc3_fft_bf2_twiddles fft_twiddles_40 = {
     .n2 = 40/2, .t = (const struct lc3_complex []){
-        {  1.0000000e+00, -0.0000000e+00 }, {  9.8768834e-01, -1.5643447e-01 },
-        {  9.5105652e-01, -3.0901699e-01 }, {  8.9100652e-01, -4.5399050e-01 },
-        {  8.0901699e-01, -5.8778525e-01 }, {  7.0710678e-01, -7.0710678e-01 },
-        {  5.8778525e-01, -8.0901699e-01 }, {  4.5399050e-01, -8.9100652e-01 },
-        {  3.0901699e-01, -9.5105652e-01 }, {  1.5643447e-01, -9.8768834e-01 },
-        {  6.1232340e-17, -1.0000000e+00 }, { -1.5643447e-01, -9.8768834e-01 },
-        { -3.0901699e-01, -9.5105652e-01 }, { -4.5399050e-01, -8.9100652e-01 },
-        { -5.8778525e-01, -8.0901699e-01 }, { -7.0710678e-01, -7.0710678e-01 },
-        { -8.0901699e-01, -5.8778525e-01 }, { -8.9100652e-01, -4.5399050e-01 },
-        { -9.5105652e-01, -3.0901699e-01 }, { -9.8768834e-01, -1.5643447e-01 },
-    }
+    __C( 1.0000000e+00, -0.0000000e+00), __C( 9.8768834e-01, -1.5643447e-01),
+    __C( 9.5105652e-01, -3.0901699e-01), __C( 8.9100652e-01, -4.5399050e-01),
+    __C( 8.0901699e-01, -5.8778525e-01), __C( 7.0710678e-01, -7.0710678e-01),
+    __C( 5.8778525e-01, -8.0901699e-01), __C( 4.5399050e-01, -8.9100652e-01),
+    __C( 3.0901699e-01, -9.5105652e-01), __C( 1.5643447e-01, -9.8768834e-01),
+    __C( 6.1232340e-17, -1.0000000e+00), __C(-1.5643447e-01, -9.8768834e-01),
+    __C(-3.0901699e-01, -9.5105652e-01), __C(-4.5399050e-01, -8.9100652e-01),
+    __C(-5.8778525e-01, -8.0901699e-01), __C(-7.0710678e-01, -7.0710678e-01),
+    __C(-8.0901699e-01, -5.8778525e-01), __C(-8.9100652e-01, -4.5399050e-01),
+    __C(-9.5105652e-01, -3.0901699e-01), __C(-9.8768834e-01, -1.5643447e-01) }
 };
 
 static const struct lc3_fft_bf2_twiddles fft_twiddles_60 = {
     .n2 = 60/2, .t = (const struct lc3_complex []){
-        {  1.0000000e+00, -0.0000000e+00 }, {  9.9452190e-01, -1.0452846e-01 },
-        {  9.7814760e-01, -2.0791169e-01 }, {  9.5105652e-01, -3.0901699e-01 },
-        {  9.1354546e-01, -4.0673664e-01 }, {  8.6602540e-01, -5.0000000e-01 },
-        {  8.0901699e-01, -5.8778525e-01 }, {  7.4314483e-01, -6.6913061e-01 },
-        {  6.6913061e-01, -7.4314483e-01 }, {  5.8778525e-01, -8.0901699e-01 },
-        {  5.0000000e-01, -8.6602540e-01 }, {  4.0673664e-01, -9.1354546e-01 },
-        {  3.0901699e-01, -9.5105652e-01 }, {  2.0791169e-01, -9.7814760e-01 },
-        {  1.0452846e-01, -9.9452190e-01 }, {  2.8327694e-16, -1.0000000e+00 },
-        { -1.0452846e-01, -9.9452190e-01 }, { -2.0791169e-01, -9.7814760e-01 },
-        { -3.0901699e-01, -9.5105652e-01 }, { -4.0673664e-01, -9.1354546e-01 },
-        { -5.0000000e-01, -8.6602540e-01 }, { -5.8778525e-01, -8.0901699e-01 },
-        { -6.6913061e-01, -7.4314483e-01 }, { -7.4314483e-01, -6.6913061e-01 },
-        { -8.0901699e-01, -5.8778525e-01 }, { -8.6602540e-01, -5.0000000e-01 },
-        { -9.1354546e-01, -4.0673664e-01 }, { -9.5105652e-01, -3.0901699e-01 },
-        { -9.7814760e-01, -2.0791169e-01 }, { -9.9452190e-01, -1.0452846e-01 },
-    }
+    __C( 1.0000000e+00, -0.0000000e+00), __C( 9.9452190e-01, -1.0452846e-01),
+    __C( 9.7814760e-01, -2.0791169e-01), __C( 9.5105652e-01, -3.0901699e-01),
+    __C( 9.1354546e-01, -4.0673664e-01), __C( 8.6602540e-01, -5.0000000e-01),
+    __C( 8.0901699e-01, -5.8778525e-01), __C( 7.4314483e-01, -6.6913061e-01),
+    __C( 6.6913061e-01, -7.4314483e-01), __C( 5.8778525e-01, -8.0901699e-01),
+    __C( 5.0000000e-01, -8.6602540e-01), __C( 4.0673664e-01, -9.1354546e-01),
+    __C( 3.0901699e-01, -9.5105652e-01), __C( 2.0791169e-01, -9.7814760e-01),
+    __C( 1.0452846e-01, -9.9452190e-01), __C( 2.8327694e-16, -1.0000000e+00),
+    __C(-1.0452846e-01, -9.9452190e-01), __C(-2.0791169e-01, -9.7814760e-01),
+    __C(-3.0901699e-01, -9.5105652e-01), __C(-4.0673664e-01, -9.1354546e-01),
+    __C(-5.0000000e-01, -8.6602540e-01), __C(-5.8778525e-01, -8.0901699e-01),
+    __C(-6.6913061e-01, -7.4314483e-01), __C(-7.4314483e-01, -6.6913061e-01),
+    __C(-8.0901699e-01, -5.8778525e-01), __C(-8.6602540e-01, -5.0000000e-01),
+    __C(-9.1354546e-01, -4.0673664e-01), __C(-9.5105652e-01, -3.0901699e-01),
+    __C(-9.7814760e-01, -2.0791169e-01), __C(-9.9452190e-01, -1.0452846e-01) }
 };
 
 static const struct lc3_fft_bf2_twiddles fft_twiddles_80 = {
     .n2 = 80/2, .t = (const struct lc3_complex []){
-        {  1.0000000e+00, -0.0000000e+00 }, {  9.9691733e-01, -7.8459096e-02 },
-        {  9.8768834e-01, -1.5643447e-01 }, {  9.7236992e-01, -2.3344536e-01 },
-        {  9.5105652e-01, -3.0901699e-01 }, {  9.2387953e-01, -3.8268343e-01 },
-        {  8.9100652e-01, -4.5399050e-01 }, {  8.5264016e-01, -5.2249856e-01 },
-        {  8.0901699e-01, -5.8778525e-01 }, {  7.6040597e-01, -6.4944805e-01 },
-        {  7.0710678e-01, -7.0710678e-01 }, {  6.4944805e-01, -7.6040597e-01 },
-        {  5.8778525e-01, -8.0901699e-01 }, {  5.2249856e-01, -8.5264016e-01 },
-        {  4.5399050e-01, -8.9100652e-01 }, {  3.8268343e-01, -9.2387953e-01 },
-        {  3.0901699e-01, -9.5105652e-01 }, {  2.3344536e-01, -9.7236992e-01 },
-        {  1.5643447e-01, -9.8768834e-01 }, {  7.8459096e-02, -9.9691733e-01 },
-        {  6.1232340e-17, -1.0000000e+00 }, { -7.8459096e-02, -9.9691733e-01 },
-        { -1.5643447e-01, -9.8768834e-01 }, { -2.3344536e-01, -9.7236992e-01 },
-        { -3.0901699e-01, -9.5105652e-01 }, { -3.8268343e-01, -9.2387953e-01 },
-        { -4.5399050e-01, -8.9100652e-01 }, { -5.2249856e-01, -8.5264016e-01 },
-        { -5.8778525e-01, -8.0901699e-01 }, { -6.4944805e-01, -7.6040597e-01 },
-        { -7.0710678e-01, -7.0710678e-01 }, { -7.6040597e-01, -6.4944805e-01 },
-        { -8.0901699e-01, -5.8778525e-01 }, { -8.5264016e-01, -5.2249856e-01 },
-        { -8.9100652e-01, -4.5399050e-01 }, { -9.2387953e-01, -3.8268343e-01 },
-        { -9.5105652e-01, -3.0901699e-01 }, { -9.7236992e-01, -2.3344536e-01 },
-        { -9.8768834e-01, -1.5643447e-01 }, { -9.9691733e-01, -7.8459096e-02 },
-    }
+    __C( 1.0000000e+00, -0.0000000e+00), __C( 9.9691733e-01, -7.8459096e-02),
+    __C( 9.8768834e-01, -1.5643447e-01), __C( 9.7236992e-01, -2.3344536e-01),
+    __C( 9.5105652e-01, -3.0901699e-01), __C( 9.2387953e-01, -3.8268343e-01),
+    __C( 8.9100652e-01, -4.5399050e-01), __C( 8.5264016e-01, -5.2249856e-01),
+    __C( 8.0901699e-01, -5.8778525e-01), __C( 7.6040597e-01, -6.4944805e-01),
+    __C( 7.0710678e-01, -7.0710678e-01), __C( 6.4944805e-01, -7.6040597e-01),
+    __C( 5.8778525e-01, -8.0901699e-01), __C( 5.2249856e-01, -8.5264016e-01),
+    __C( 4.5399050e-01, -8.9100652e-01), __C( 3.8268343e-01, -9.2387953e-01),
+    __C( 3.0901699e-01, -9.5105652e-01), __C( 2.3344536e-01, -9.7236992e-01),
+    __C( 1.5643447e-01, -9.8768834e-01), __C( 7.8459096e-02, -9.9691733e-01),
+    __C( 6.1232340e-17, -1.0000000e+00), __C(-7.8459096e-02, -9.9691733e-01),
+    __C(-1.5643447e-01, -9.8768834e-01), __C(-2.3344536e-01, -9.7236992e-01),
+    __C(-3.0901699e-01, -9.5105652e-01), __C(-3.8268343e-01, -9.2387953e-01),
+    __C(-4.5399050e-01, -8.9100652e-01), __C(-5.2249856e-01, -8.5264016e-01),
+    __C(-5.8778525e-01, -8.0901699e-01), __C(-6.4944805e-01, -7.6040597e-01),
+    __C(-7.0710678e-01, -7.0710678e-01), __C(-7.6040597e-01, -6.4944805e-01),
+    __C(-8.0901699e-01, -5.8778525e-01), __C(-8.5264016e-01, -5.2249856e-01),
+    __C(-8.9100652e-01, -4.5399050e-01), __C(-9.2387953e-01, -3.8268343e-01),
+    __C(-9.5105652e-01, -3.0901699e-01), __C(-9.7236992e-01, -2.3344536e-01),
+    __C(-9.8768834e-01, -1.5643447e-01), __C(-9.9691733e-01, -7.8459096e-02) }
 };
 
 static const struct lc3_fft_bf2_twiddles fft_twiddles_90 = {
     .n2 = 90/2, .t = (const struct lc3_complex []){
-        {  1.0000000e+00, -0.0000000e+00 }, {  9.9756405e-01, -6.9756474e-02 },
-        {  9.9026807e-01, -1.3917310e-01 }, {  9.7814760e-01, -2.0791169e-01 },
-        {  9.6126170e-01, -2.7563736e-01 }, {  9.3969262e-01, -3.4202014e-01 },
-        {  9.1354546e-01, -4.0673664e-01 }, {  8.8294759e-01, -4.6947156e-01 },
-        {  8.4804810e-01, -5.2991926e-01 }, {  8.0901699e-01, -5.8778525e-01 },
-        {  7.6604444e-01, -6.4278761e-01 }, {  7.1933980e-01, -6.9465837e-01 },
-        {  6.6913061e-01, -7.4314483e-01 }, {  6.1566148e-01, -7.8801075e-01 },
-        {  5.5919290e-01, -8.2903757e-01 }, {  5.0000000e-01, -8.6602540e-01 },
-        {  4.3837115e-01, -8.9879405e-01 }, {  3.7460659e-01, -9.2718385e-01 },
-        {  3.0901699e-01, -9.5105652e-01 }, {  2.4192190e-01, -9.7029573e-01 },
-        {  1.7364818e-01, -9.8480775e-01 }, {  1.0452846e-01, -9.9452190e-01 },
-        {  3.4899497e-02, -9.9939083e-01 }, { -3.4899497e-02, -9.9939083e-01 },
-        { -1.0452846e-01, -9.9452190e-01 }, { -1.7364818e-01, -9.8480775e-01 },
-        { -2.4192190e-01, -9.7029573e-01 }, { -3.0901699e-01, -9.5105652e-01 },
-        { -3.7460659e-01, -9.2718385e-01 }, { -4.3837115e-01, -8.9879405e-01 },
-        { -5.0000000e-01, -8.6602540e-01 }, { -5.5919290e-01, -8.2903757e-01 },
-        { -6.1566148e-01, -7.8801075e-01 }, { -6.6913061e-01, -7.4314483e-01 },
-        { -7.1933980e-01, -6.9465837e-01 }, { -7.6604444e-01, -6.4278761e-01 },
-        { -8.0901699e-01, -5.8778525e-01 }, { -8.4804810e-01, -5.2991926e-01 },
-        { -8.8294759e-01, -4.6947156e-01 }, { -9.1354546e-01, -4.0673664e-01 },
-        { -9.3969262e-01, -3.4202014e-01 }, { -9.6126170e-01, -2.7563736e-01 },
-        { -9.7814760e-01, -2.0791169e-01 }, { -9.9026807e-01, -1.3917310e-01 },
-        { -9.9756405e-01, -6.9756474e-02 },
-    }
+    __C( 1.0000000e+00, -0.0000000e+00), __C( 9.9756405e-01, -6.9756474e-02),
+    __C( 9.9026807e-01, -1.3917310e-01), __C( 9.7814760e-01, -2.0791169e-01),
+    __C( 9.6126170e-01, -2.7563736e-01), __C( 9.3969262e-01, -3.4202014e-01),
+    __C( 9.1354546e-01, -4.0673664e-01), __C( 8.8294759e-01, -4.6947156e-01),
+    __C( 8.4804810e-01, -5.2991926e-01), __C( 8.0901699e-01, -5.8778525e-01),
+    __C( 7.6604444e-01, -6.4278761e-01), __C( 7.1933980e-01, -6.9465837e-01),
+    __C( 6.6913061e-01, -7.4314483e-01), __C( 6.1566148e-01, -7.8801075e-01),
+    __C( 5.5919290e-01, -8.2903757e-01), __C( 5.0000000e-01, -8.6602540e-01),
+    __C( 4.3837115e-01, -8.9879405e-01), __C( 3.7460659e-01, -9.2718385e-01),
+    __C( 3.0901699e-01, -9.5105652e-01), __C( 2.4192190e-01, -9.7029573e-01),
+    __C( 1.7364818e-01, -9.8480775e-01), __C( 1.0452846e-01, -9.9452190e-01),
+    __C( 3.4899497e-02, -9.9939083e-01), __C(-3.4899497e-02, -9.9939083e-01),
+    __C(-1.0452846e-01, -9.9452190e-01), __C(-1.7364818e-01, -9.8480775e-01),
+    __C(-2.4192190e-01, -9.7029573e-01), __C(-3.0901699e-01, -9.5105652e-01),
+    __C(-3.7460659e-01, -9.2718385e-01), __C(-4.3837115e-01, -8.9879405e-01),
+    __C(-5.0000000e-01, -8.6602540e-01), __C(-5.5919290e-01, -8.2903757e-01),
+    __C(-6.1566148e-01, -7.8801075e-01), __C(-6.6913061e-01, -7.4314483e-01),
+    __C(-7.1933980e-01, -6.9465837e-01), __C(-7.6604444e-01, -6.4278761e-01),
+    __C(-8.0901699e-01, -5.8778525e-01), __C(-8.4804810e-01, -5.2991926e-01),
+    __C(-8.8294759e-01, -4.6947156e-01), __C(-9.1354546e-01, -4.0673664e-01),
+    __C(-9.3969262e-01, -3.4202014e-01), __C(-9.6126170e-01, -2.7563736e-01),
+    __C(-9.7814760e-01, -2.0791169e-01), __C(-9.9026807e-01, -1.3917310e-01),
+    __C(-9.9756405e-01, -6.9756474e-02) }
 };
 
 static const struct lc3_fft_bf2_twiddles fft_twiddles_120 = {
     .n2 = 120/2, .t = (const struct lc3_complex []){
-        {  1.0000000e+00, -0.0000000e+00 }, {  9.9862953e-01, -5.2335956e-02 },
-        {  9.9452190e-01, -1.0452846e-01 }, {  9.8768834e-01, -1.5643447e-01 },
-        {  9.7814760e-01, -2.0791169e-01 }, {  9.6592583e-01, -2.5881905e-01 },
-        {  9.5105652e-01, -3.0901699e-01 }, {  9.3358043e-01, -3.5836795e-01 },
-        {  9.1354546e-01, -4.0673664e-01 }, {  8.9100652e-01, -4.5399050e-01 },
-        {  8.6602540e-01, -5.0000000e-01 }, {  8.3867057e-01, -5.4463904e-01 },
-        {  8.0901699e-01, -5.8778525e-01 }, {  7.7714596e-01, -6.2932039e-01 },
-        {  7.4314483e-01, -6.6913061e-01 }, {  7.0710678e-01, -7.0710678e-01 },
-        {  6.6913061e-01, -7.4314483e-01 }, {  6.2932039e-01, -7.7714596e-01 },
-        {  5.8778525e-01, -8.0901699e-01 }, {  5.4463904e-01, -8.3867057e-01 },
-        {  5.0000000e-01, -8.6602540e-01 }, {  4.5399050e-01, -8.9100652e-01 },
-        {  4.0673664e-01, -9.1354546e-01 }, {  3.5836795e-01, -9.3358043e-01 },
-        {  3.0901699e-01, -9.5105652e-01 }, {  2.5881905e-01, -9.6592583e-01 },
-        {  2.0791169e-01, -9.7814760e-01 }, {  1.5643447e-01, -9.8768834e-01 },
-        {  1.0452846e-01, -9.9452190e-01 }, {  5.2335956e-02, -9.9862953e-01 },
-        {  2.8327694e-16, -1.0000000e+00 }, { -5.2335956e-02, -9.9862953e-01 },
-        { -1.0452846e-01, -9.9452190e-01 }, { -1.5643447e-01, -9.8768834e-01 },
-        { -2.0791169e-01, -9.7814760e-01 }, { -2.5881905e-01, -9.6592583e-01 },
-        { -3.0901699e-01, -9.5105652e-01 }, { -3.5836795e-01, -9.3358043e-01 },
-        { -4.0673664e-01, -9.1354546e-01 }, { -4.5399050e-01, -8.9100652e-01 },
-        { -5.0000000e-01, -8.6602540e-01 }, { -5.4463904e-01, -8.3867057e-01 },
-        { -5.8778525e-01, -8.0901699e-01 }, { -6.2932039e-01, -7.7714596e-01 },
-        { -6.6913061e-01, -7.4314483e-01 }, { -7.0710678e-01, -7.0710678e-01 },
-        { -7.4314483e-01, -6.6913061e-01 }, { -7.7714596e-01, -6.2932039e-01 },
-        { -8.0901699e-01, -5.8778525e-01 }, { -8.3867057e-01, -5.4463904e-01 },
-        { -8.6602540e-01, -5.0000000e-01 }, { -8.9100652e-01, -4.5399050e-01 },
-        { -9.1354546e-01, -4.0673664e-01 }, { -9.3358043e-01, -3.5836795e-01 },
-        { -9.5105652e-01, -3.0901699e-01 }, { -9.6592583e-01, -2.5881905e-01 },
-        { -9.7814760e-01, -2.0791169e-01 }, { -9.8768834e-01, -1.5643447e-01 },
-        { -9.9452190e-01, -1.0452846e-01 }, { -9.9862953e-01, -5.2335956e-02 },
-    }
+    __C( 1.0000000e+00, -0.0000000e+00), __C( 9.9862953e-01, -5.2335956e-02),
+    __C( 9.9452190e-01, -1.0452846e-01), __C( 9.8768834e-01, -1.5643447e-01),
+    __C( 9.7814760e-01, -2.0791169e-01), __C( 9.6592583e-01, -2.5881905e-01),
+    __C( 9.5105652e-01, -3.0901699e-01), __C( 9.3358043e-01, -3.5836795e-01),
+    __C( 9.1354546e-01, -4.0673664e-01), __C( 8.9100652e-01, -4.5399050e-01),
+    __C( 8.6602540e-01, -5.0000000e-01), __C( 8.3867057e-01, -5.4463904e-01),
+    __C( 8.0901699e-01, -5.8778525e-01), __C( 7.7714596e-01, -6.2932039e-01),
+    __C( 7.4314483e-01, -6.6913061e-01), __C( 7.0710678e-01, -7.0710678e-01),
+    __C( 6.6913061e-01, -7.4314483e-01), __C( 6.2932039e-01, -7.7714596e-01),
+    __C( 5.8778525e-01, -8.0901699e-01), __C( 5.4463904e-01, -8.3867057e-01),
+    __C( 5.0000000e-01, -8.6602540e-01), __C( 4.5399050e-01, -8.9100652e-01),
+    __C( 4.0673664e-01, -9.1354546e-01), __C( 3.5836795e-01, -9.3358043e-01),
+    __C( 3.0901699e-01, -9.5105652e-01), __C( 2.5881905e-01, -9.6592583e-01),
+    __C( 2.0791169e-01, -9.7814760e-01), __C( 1.5643447e-01, -9.8768834e-01),
+    __C( 1.0452846e-01, -9.9452190e-01), __C( 5.2335956e-02, -9.9862953e-01),
+    __C( 2.8327694e-16, -1.0000000e+00), __C(-5.2335956e-02, -9.9862953e-01),
+    __C(-1.0452846e-01, -9.9452190e-01), __C(-1.5643447e-01, -9.8768834e-01),
+    __C(-2.0791169e-01, -9.7814760e-01), __C(-2.5881905e-01, -9.6592583e-01),
+    __C(-3.0901699e-01, -9.5105652e-01), __C(-3.5836795e-01, -9.3358043e-01),
+    __C(-4.0673664e-01, -9.1354546e-01), __C(-4.5399050e-01, -8.9100652e-01),
+    __C(-5.0000000e-01, -8.6602540e-01), __C(-5.4463904e-01, -8.3867057e-01),
+    __C(-5.8778525e-01, -8.0901699e-01), __C(-6.2932039e-01, -7.7714596e-01),
+    __C(-6.6913061e-01, -7.4314483e-01), __C(-7.0710678e-01, -7.0710678e-01),
+    __C(-7.4314483e-01, -6.6913061e-01), __C(-7.7714596e-01, -6.2932039e-01),
+    __C(-8.0901699e-01, -5.8778525e-01), __C(-8.3867057e-01, -5.4463904e-01),
+    __C(-8.6602540e-01, -5.0000000e-01), __C(-8.9100652e-01, -4.5399050e-01),
+    __C(-9.1354546e-01, -4.0673664e-01), __C(-9.3358043e-01, -3.5836795e-01),
+    __C(-9.5105652e-01, -3.0901699e-01), __C(-9.6592583e-01, -2.5881905e-01),
+    __C(-9.7814760e-01, -2.0791169e-01), __C(-9.8768834e-01, -1.5643447e-01),
+    __C(-9.9452190e-01, -1.0452846e-01), __C(-9.9862953e-01, -5.2335956e-02) }
 };
 
 static const struct lc3_fft_bf2_twiddles fft_twiddles_160 = {
     .n2 = 160/2, .t = (const struct lc3_complex []){
-        {  1.0000000e+00, -0.0000000e+00 }, {  9.9922904e-01, -3.9259816e-02 },
-        {  9.9691733e-01, -7.8459096e-02 }, {  9.9306846e-01, -1.1753740e-01 },
-        {  9.8768834e-01, -1.5643447e-01 }, {  9.8078528e-01, -1.9509032e-01 },
-        {  9.7236992e-01, -2.3344536e-01 }, {  9.6245524e-01, -2.7144045e-01 },
-        {  9.5105652e-01, -3.0901699e-01 }, {  9.3819134e-01, -3.4611706e-01 },
-        {  9.2387953e-01, -3.8268343e-01 }, {  9.0814317e-01, -4.1865974e-01 },
-        {  8.9100652e-01, -4.5399050e-01 }, {  8.7249601e-01, -4.8862124e-01 },
-        {  8.5264016e-01, -5.2249856e-01 }, {  8.3146961e-01, -5.5557023e-01 },
-        {  8.0901699e-01, -5.8778525e-01 }, {  7.8531693e-01, -6.1909395e-01 },
-        {  7.6040597e-01, -6.4944805e-01 }, {  7.3432251e-01, -6.7880075e-01 },
-        {  7.0710678e-01, -7.0710678e-01 }, {  6.7880075e-01, -7.3432251e-01 },
-        {  6.4944805e-01, -7.6040597e-01 }, {  6.1909395e-01, -7.8531693e-01 },
-        {  5.8778525e-01, -8.0901699e-01 }, {  5.5557023e-01, -8.3146961e-01 },
-        {  5.2249856e-01, -8.5264016e-01 }, {  4.8862124e-01, -8.7249601e-01 },
-        {  4.5399050e-01, -8.9100652e-01 }, {  4.1865974e-01, -9.0814317e-01 },
-        {  3.8268343e-01, -9.2387953e-01 }, {  3.4611706e-01, -9.3819134e-01 },
-        {  3.0901699e-01, -9.5105652e-01 }, {  2.7144045e-01, -9.6245524e-01 },
-        {  2.3344536e-01, -9.7236992e-01 }, {  1.9509032e-01, -9.8078528e-01 },
-        {  1.5643447e-01, -9.8768834e-01 }, {  1.1753740e-01, -9.9306846e-01 },
-        {  7.8459096e-02, -9.9691733e-01 }, {  3.9259816e-02, -9.9922904e-01 },
-        {  6.1232340e-17, -1.0000000e+00 }, { -3.9259816e-02, -9.9922904e-01 },
-        { -7.8459096e-02, -9.9691733e-01 }, { -1.1753740e-01, -9.9306846e-01 },
-        { -1.5643447e-01, -9.8768834e-01 }, { -1.9509032e-01, -9.8078528e-01 },
-        { -2.3344536e-01, -9.7236992e-01 }, { -2.7144045e-01, -9.6245524e-01 },
-        { -3.0901699e-01, -9.5105652e-01 }, { -3.4611706e-01, -9.3819134e-01 },
-        { -3.8268343e-01, -9.2387953e-01 }, { -4.1865974e-01, -9.0814317e-01 },
-        { -4.5399050e-01, -8.9100652e-01 }, { -4.8862124e-01, -8.7249601e-01 },
-        { -5.2249856e-01, -8.5264016e-01 }, { -5.5557023e-01, -8.3146961e-01 },
-        { -5.8778525e-01, -8.0901699e-01 }, { -6.1909395e-01, -7.8531693e-01 },
-        { -6.4944805e-01, -7.6040597e-01 }, { -6.7880075e-01, -7.3432251e-01 },
-        { -7.0710678e-01, -7.0710678e-01 }, { -7.3432251e-01, -6.7880075e-01 },
-        { -7.6040597e-01, -6.4944805e-01 }, { -7.8531693e-01, -6.1909395e-01 },
-        { -8.0901699e-01, -5.8778525e-01 }, { -8.3146961e-01, -5.5557023e-01 },
-        { -8.5264016e-01, -5.2249856e-01 }, { -8.7249601e-01, -4.8862124e-01 },
-        { -8.9100652e-01, -4.5399050e-01 }, { -9.0814317e-01, -4.1865974e-01 },
-        { -9.2387953e-01, -3.8268343e-01 }, { -9.3819134e-01, -3.4611706e-01 },
-        { -9.5105652e-01, -3.0901699e-01 }, { -9.6245524e-01, -2.7144045e-01 },
-        { -9.7236992e-01, -2.3344536e-01 }, { -9.8078528e-01, -1.9509032e-01 },
-        { -9.8768834e-01, -1.5643447e-01 }, { -9.9306846e-01, -1.1753740e-01 },
-        { -9.9691733e-01, -7.8459096e-02 }, { -9.9922904e-01, -3.9259816e-02 },
-    }
+    __C( 1.0000000e+00, -0.0000000e+00), __C( 9.9922904e-01, -3.9259816e-02),
+    __C( 9.9691733e-01, -7.8459096e-02), __C( 9.9306846e-01, -1.1753740e-01),
+    __C( 9.8768834e-01, -1.5643447e-01), __C( 9.8078528e-01, -1.9509032e-01),
+    __C( 9.7236992e-01, -2.3344536e-01), __C( 9.6245524e-01, -2.7144045e-01),
+    __C( 9.5105652e-01, -3.0901699e-01), __C( 9.3819134e-01, -3.4611706e-01),
+    __C( 9.2387953e-01, -3.8268343e-01), __C( 9.0814317e-01, -4.1865974e-01),
+    __C( 8.9100652e-01, -4.5399050e-01), __C( 8.7249601e-01, -4.8862124e-01),
+    __C( 8.5264016e-01, -5.2249856e-01), __C( 8.3146961e-01, -5.5557023e-01),
+    __C( 8.0901699e-01, -5.8778525e-01), __C( 7.8531693e-01, -6.1909395e-01),
+    __C( 7.6040597e-01, -6.4944805e-01), __C( 7.3432251e-01, -6.7880075e-01),
+    __C( 7.0710678e-01, -7.0710678e-01), __C( 6.7880075e-01, -7.3432251e-01),
+    __C( 6.4944805e-01, -7.6040597e-01), __C( 6.1909395e-01, -7.8531693e-01),
+    __C( 5.8778525e-01, -8.0901699e-01), __C( 5.5557023e-01, -8.3146961e-01),
+    __C( 5.2249856e-01, -8.5264016e-01), __C( 4.8862124e-01, -8.7249601e-01),
+    __C( 4.5399050e-01, -8.9100652e-01), __C( 4.1865974e-01, -9.0814317e-01),
+    __C( 3.8268343e-01, -9.2387953e-01), __C( 3.4611706e-01, -9.3819134e-01),
+    __C( 3.0901699e-01, -9.5105652e-01), __C( 2.7144045e-01, -9.6245524e-01),
+    __C( 2.3344536e-01, -9.7236992e-01), __C( 1.9509032e-01, -9.8078528e-01),
+    __C( 1.5643447e-01, -9.8768834e-01), __C( 1.1753740e-01, -9.9306846e-01),
+    __C( 7.8459096e-02, -9.9691733e-01), __C( 3.9259816e-02, -9.9922904e-01),
+    __C( 6.1232340e-17, -1.0000000e+00), __C(-3.9259816e-02, -9.9922904e-01),
+    __C(-7.8459096e-02, -9.9691733e-01), __C(-1.1753740e-01, -9.9306846e-01),
+    __C(-1.5643447e-01, -9.8768834e-01), __C(-1.9509032e-01, -9.8078528e-01),
+    __C(-2.3344536e-01, -9.7236992e-01), __C(-2.7144045e-01, -9.6245524e-01),
+    __C(-3.0901699e-01, -9.5105652e-01), __C(-3.4611706e-01, -9.3819134e-01),
+    __C(-3.8268343e-01, -9.2387953e-01), __C(-4.1865974e-01, -9.0814317e-01),
+    __C(-4.5399050e-01, -8.9100652e-01), __C(-4.8862124e-01, -8.7249601e-01),
+    __C(-5.2249856e-01, -8.5264016e-01), __C(-5.5557023e-01, -8.3146961e-01),
+    __C(-5.8778525e-01, -8.0901699e-01), __C(-6.1909395e-01, -7.8531693e-01),
+    __C(-6.4944805e-01, -7.6040597e-01), __C(-6.7880075e-01, -7.3432251e-01),
+    __C(-7.0710678e-01, -7.0710678e-01), __C(-7.3432251e-01, -6.7880075e-01),
+    __C(-7.6040597e-01, -6.4944805e-01), __C(-7.8531693e-01, -6.1909395e-01),
+    __C(-8.0901699e-01, -5.8778525e-01), __C(-8.3146961e-01, -5.5557023e-01),
+    __C(-8.5264016e-01, -5.2249856e-01), __C(-8.7249601e-01, -4.8862124e-01),
+    __C(-8.9100652e-01, -4.5399050e-01), __C(-9.0814317e-01, -4.1865974e-01),
+    __C(-9.2387953e-01, -3.8268343e-01), __C(-9.3819134e-01, -3.4611706e-01),
+    __C(-9.5105652e-01, -3.0901699e-01), __C(-9.6245524e-01, -2.7144045e-01),
+    __C(-9.7236992e-01, -2.3344536e-01), __C(-9.8078528e-01, -1.9509032e-01),
+    __C(-9.8768834e-01, -1.5643447e-01), __C(-9.9306846e-01, -1.1753740e-01),
+    __C(-9.9691733e-01, -7.8459096e-02), __C(-9.9922904e-01, -3.9259816e-02) }
 };
 
 static const struct lc3_fft_bf2_twiddles fft_twiddles_180 = {
     .n2 = 180/2, .t = (const struct lc3_complex []){
-        {  1.0000000e+00, -0.0000000e+00 }, {  9.9939083e-01, -3.4899497e-02 },
-        {  9.9756405e-01, -6.9756474e-02 }, {  9.9452190e-01, -1.0452846e-01 },
-        {  9.9026807e-01, -1.3917310e-01 }, {  9.8480775e-01, -1.7364818e-01 },
-        {  9.7814760e-01, -2.0791169e-01 }, {  9.7029573e-01, -2.4192190e-01 },
-        {  9.6126170e-01, -2.7563736e-01 }, {  9.5105652e-01, -3.0901699e-01 },
-        {  9.3969262e-01, -3.4202014e-01 }, {  9.2718385e-01, -3.7460659e-01 },
-        {  9.1354546e-01, -4.0673664e-01 }, {  8.9879405e-01, -4.3837115e-01 },
-        {  8.8294759e-01, -4.6947156e-01 }, {  8.6602540e-01, -5.0000000e-01 },
-        {  8.4804810e-01, -5.2991926e-01 }, {  8.2903757e-01, -5.5919290e-01 },
-        {  8.0901699e-01, -5.8778525e-01 }, {  7.8801075e-01, -6.1566148e-01 },
-        {  7.6604444e-01, -6.4278761e-01 }, {  7.4314483e-01, -6.6913061e-01 },
-        {  7.1933980e-01, -6.9465837e-01 }, {  6.9465837e-01, -7.1933980e-01 },
-        {  6.6913061e-01, -7.4314483e-01 }, {  6.4278761e-01, -7.6604444e-01 },
-        {  6.1566148e-01, -7.8801075e-01 }, {  5.8778525e-01, -8.0901699e-01 },
-        {  5.5919290e-01, -8.2903757e-01 }, {  5.2991926e-01, -8.4804810e-01 },
-        {  5.0000000e-01, -8.6602540e-01 }, {  4.6947156e-01, -8.8294759e-01 },
-        {  4.3837115e-01, -8.9879405e-01 }, {  4.0673664e-01, -9.1354546e-01 },
-        {  3.7460659e-01, -9.2718385e-01 }, {  3.4202014e-01, -9.3969262e-01 },
-        {  3.0901699e-01, -9.5105652e-01 }, {  2.7563736e-01, -9.6126170e-01 },
-        {  2.4192190e-01, -9.7029573e-01 }, {  2.0791169e-01, -9.7814760e-01 },
-        {  1.7364818e-01, -9.8480775e-01 }, {  1.3917310e-01, -9.9026807e-01 },
-        {  1.0452846e-01, -9.9452190e-01 }, {  6.9756474e-02, -9.9756405e-01 },
-        {  3.4899497e-02, -9.9939083e-01 }, {  6.1232340e-17, -1.0000000e+00 },
-        { -3.4899497e-02, -9.9939083e-01 }, { -6.9756474e-02, -9.9756405e-01 },
-        { -1.0452846e-01, -9.9452190e-01 }, { -1.3917310e-01, -9.9026807e-01 },
-        { -1.7364818e-01, -9.8480775e-01 }, { -2.0791169e-01, -9.7814760e-01 },
-        { -2.4192190e-01, -9.7029573e-01 }, { -2.7563736e-01, -9.6126170e-01 },
-        { -3.0901699e-01, -9.5105652e-01 }, { -3.4202014e-01, -9.3969262e-01 },
-        { -3.7460659e-01, -9.2718385e-01 }, { -4.0673664e-01, -9.1354546e-01 },
-        { -4.3837115e-01, -8.9879405e-01 }, { -4.6947156e-01, -8.8294759e-01 },
-        { -5.0000000e-01, -8.6602540e-01 }, { -5.2991926e-01, -8.4804810e-01 },
-        { -5.5919290e-01, -8.2903757e-01 }, { -5.8778525e-01, -8.0901699e-01 },
-        { -6.1566148e-01, -7.8801075e-01 }, { -6.4278761e-01, -7.6604444e-01 },
-        { -6.6913061e-01, -7.4314483e-01 }, { -6.9465837e-01, -7.1933980e-01 },
-        { -7.1933980e-01, -6.9465837e-01 }, { -7.4314483e-01, -6.6913061e-01 },
-        { -7.6604444e-01, -6.4278761e-01 }, { -7.8801075e-01, -6.1566148e-01 },
-        { -8.0901699e-01, -5.8778525e-01 }, { -8.2903757e-01, -5.5919290e-01 },
-        { -8.4804810e-01, -5.2991926e-01 }, { -8.6602540e-01, -5.0000000e-01 },
-        { -8.8294759e-01, -4.6947156e-01 }, { -8.9879405e-01, -4.3837115e-01 },
-        { -9.1354546e-01, -4.0673664e-01 }, { -9.2718385e-01, -3.7460659e-01 },
-        { -9.3969262e-01, -3.4202014e-01 }, { -9.5105652e-01, -3.0901699e-01 },
-        { -9.6126170e-01, -2.7563736e-01 }, { -9.7029573e-01, -2.4192190e-01 },
-        { -9.7814760e-01, -2.0791169e-01 }, { -9.8480775e-01, -1.7364818e-01 },
-        { -9.9026807e-01, -1.3917310e-01 }, { -9.9452190e-01, -1.0452846e-01 },
-        { -9.9756405e-01, -6.9756474e-02 }, { -9.9939083e-01, -3.4899497e-02 },
-    }
+    __C( 1.0000000e+00, -0.0000000e+00), __C( 9.9939083e-01, -3.4899497e-02),
+    __C( 9.9756405e-01, -6.9756474e-02), __C( 9.9452190e-01, -1.0452846e-01),
+    __C( 9.9026807e-01, -1.3917310e-01), __C( 9.8480775e-01, -1.7364818e-01),
+    __C( 9.7814760e-01, -2.0791169e-01), __C( 9.7029573e-01, -2.4192190e-01),
+    __C( 9.6126170e-01, -2.7563736e-01), __C( 9.5105652e-01, -3.0901699e-01),
+    __C( 9.3969262e-01, -3.4202014e-01), __C( 9.2718385e-01, -3.7460659e-01),
+    __C( 9.1354546e-01, -4.0673664e-01), __C( 8.9879405e-01, -4.3837115e-01),
+    __C( 8.8294759e-01, -4.6947156e-01), __C( 8.6602540e-01, -5.0000000e-01),
+    __C( 8.4804810e-01, -5.2991926e-01), __C( 8.2903757e-01, -5.5919290e-01),
+    __C( 8.0901699e-01, -5.8778525e-01), __C( 7.8801075e-01, -6.1566148e-01),
+    __C( 7.6604444e-01, -6.4278761e-01), __C( 7.4314483e-01, -6.6913061e-01),
+    __C( 7.1933980e-01, -6.9465837e-01), __C( 6.9465837e-01, -7.1933980e-01),
+    __C( 6.6913061e-01, -7.4314483e-01), __C( 6.4278761e-01, -7.6604444e-01),
+    __C( 6.1566148e-01, -7.8801075e-01), __C( 5.8778525e-01, -8.0901699e-01),
+    __C( 5.5919290e-01, -8.2903757e-01), __C( 5.2991926e-01, -8.4804810e-01),
+    __C( 5.0000000e-01, -8.6602540e-01), __C( 4.6947156e-01, -8.8294759e-01),
+    __C( 4.3837115e-01, -8.9879405e-01), __C( 4.0673664e-01, -9.1354546e-01),
+    __C( 3.7460659e-01, -9.2718385e-01), __C( 3.4202014e-01, -9.3969262e-01),
+    __C( 3.0901699e-01, -9.5105652e-01), __C( 2.7563736e-01, -9.6126170e-01),
+    __C( 2.4192190e-01, -9.7029573e-01), __C( 2.0791169e-01, -9.7814760e-01),
+    __C( 1.7364818e-01, -9.8480775e-01), __C( 1.3917310e-01, -9.9026807e-01),
+    __C( 1.0452846e-01, -9.9452190e-01), __C( 6.9756474e-02, -9.9756405e-01),
+    __C( 3.4899497e-02, -9.9939083e-01), __C( 6.1232340e-17, -1.0000000e+00),
+    __C(-3.4899497e-02, -9.9939083e-01), __C(-6.9756474e-02, -9.9756405e-01),
+    __C(-1.0452846e-01, -9.9452190e-01), __C(-1.3917310e-01, -9.9026807e-01),
+    __C(-1.7364818e-01, -9.8480775e-01), __C(-2.0791169e-01, -9.7814760e-01),
+    __C(-2.4192190e-01, -9.7029573e-01), __C(-2.7563736e-01, -9.6126170e-01),
+    __C(-3.0901699e-01, -9.5105652e-01), __C(-3.4202014e-01, -9.3969262e-01),
+    __C(-3.7460659e-01, -9.2718385e-01), __C(-4.0673664e-01, -9.1354546e-01),
+    __C(-4.3837115e-01, -8.9879405e-01), __C(-4.6947156e-01, -8.8294759e-01),
+    __C(-5.0000000e-01, -8.6602540e-01), __C(-5.2991926e-01, -8.4804810e-01),
+    __C(-5.5919290e-01, -8.2903757e-01), __C(-5.8778525e-01, -8.0901699e-01),
+    __C(-6.1566148e-01, -7.8801075e-01), __C(-6.4278761e-01, -7.6604444e-01),
+    __C(-6.6913061e-01, -7.4314483e-01), __C(-6.9465837e-01, -7.1933980e-01),
+    __C(-7.1933980e-01, -6.9465837e-01), __C(-7.4314483e-01, -6.6913061e-01),
+    __C(-7.6604444e-01, -6.4278761e-01), __C(-7.8801075e-01, -6.1566148e-01),
+    __C(-8.0901699e-01, -5.8778525e-01), __C(-8.2903757e-01, -5.5919290e-01),
+    __C(-8.4804810e-01, -5.2991926e-01), __C(-8.6602540e-01, -5.0000000e-01),
+    __C(-8.8294759e-01, -4.6947156e-01), __C(-8.9879405e-01, -4.3837115e-01),
+    __C(-9.1354546e-01, -4.0673664e-01), __C(-9.2718385e-01, -3.7460659e-01),
+    __C(-9.3969262e-01, -3.4202014e-01), __C(-9.5105652e-01, -3.0901699e-01),
+    __C(-9.6126170e-01, -2.7563736e-01), __C(-9.7029573e-01, -2.4192190e-01),
+    __C(-9.7814760e-01, -2.0791169e-01), __C(-9.8480775e-01, -1.7364818e-01),
+    __C(-9.9026807e-01, -1.3917310e-01), __C(-9.9452190e-01, -1.0452846e-01),
+    __C(-9.9756405e-01, -6.9756474e-02), __C(-9.9939083e-01, -3.4899497e-02) }
 };
 
 static const struct lc3_fft_bf2_twiddles fft_twiddles_240 = {
     .n2 = 240/2, .t = (const struct lc3_complex []){
-        {  1.0000000e+00, -0.0000000e+00 }, {  9.9965732e-01, -2.6176948e-02 },
-        {  9.9862953e-01, -5.2335956e-02 }, {  9.9691733e-01, -7.8459096e-02 },
-        {  9.9452190e-01, -1.0452846e-01 }, {  9.9144486e-01, -1.3052619e-01 },
-        {  9.8768834e-01, -1.5643447e-01 }, {  9.8325491e-01, -1.8223553e-01 },
-        {  9.7814760e-01, -2.0791169e-01 }, {  9.7236992e-01, -2.3344536e-01 },
-        {  9.6592583e-01, -2.5881905e-01 }, {  9.5881973e-01, -2.8401534e-01 },
-        {  9.5105652e-01, -3.0901699e-01 }, {  9.4264149e-01, -3.3380686e-01 },
-        {  9.3358043e-01, -3.5836795e-01 }, {  9.2387953e-01, -3.8268343e-01 },
-        {  9.1354546e-01, -4.0673664e-01 }, {  9.0258528e-01, -4.3051110e-01 },
-        {  8.9100652e-01, -4.5399050e-01 }, {  8.7881711e-01, -4.7715876e-01 },
-        {  8.6602540e-01, -5.0000000e-01 }, {  8.5264016e-01, -5.2249856e-01 },
-        {  8.3867057e-01, -5.4463904e-01 }, {  8.2412619e-01, -5.6640624e-01 },
-        {  8.0901699e-01, -5.8778525e-01 }, {  7.9335334e-01, -6.0876143e-01 },
-        {  7.7714596e-01, -6.2932039e-01 }, {  7.6040597e-01, -6.4944805e-01 },
-        {  7.4314483e-01, -6.6913061e-01 }, {  7.2537437e-01, -6.8835458e-01 },
-        {  7.0710678e-01, -7.0710678e-01 }, {  6.8835458e-01, -7.2537437e-01 },
-        {  6.6913061e-01, -7.4314483e-01 }, {  6.4944805e-01, -7.6040597e-01 },
-        {  6.2932039e-01, -7.7714596e-01 }, {  6.0876143e-01, -7.9335334e-01 },
-        {  5.8778525e-01, -8.0901699e-01 }, {  5.6640624e-01, -8.2412619e-01 },
-        {  5.4463904e-01, -8.3867057e-01 }, {  5.2249856e-01, -8.5264016e-01 },
-        {  5.0000000e-01, -8.6602540e-01 }, {  4.7715876e-01, -8.7881711e-01 },
-        {  4.5399050e-01, -8.9100652e-01 }, {  4.3051110e-01, -9.0258528e-01 },
-        {  4.0673664e-01, -9.1354546e-01 }, {  3.8268343e-01, -9.2387953e-01 },
-        {  3.5836795e-01, -9.3358043e-01 }, {  3.3380686e-01, -9.4264149e-01 },
-        {  3.0901699e-01, -9.5105652e-01 }, {  2.8401534e-01, -9.5881973e-01 },
-        {  2.5881905e-01, -9.6592583e-01 }, {  2.3344536e-01, -9.7236992e-01 },
-        {  2.0791169e-01, -9.7814760e-01 }, {  1.8223553e-01, -9.8325491e-01 },
-        {  1.5643447e-01, -9.8768834e-01 }, {  1.3052619e-01, -9.9144486e-01 },
-        {  1.0452846e-01, -9.9452190e-01 }, {  7.8459096e-02, -9.9691733e-01 },
-        {  5.2335956e-02, -9.9862953e-01 }, {  2.6176948e-02, -9.9965732e-01 },
-        {  2.8327694e-16, -1.0000000e+00 }, { -2.6176948e-02, -9.9965732e-01 },
-        { -5.2335956e-02, -9.9862953e-01 }, { -7.8459096e-02, -9.9691733e-01 },
-        { -1.0452846e-01, -9.9452190e-01 }, { -1.3052619e-01, -9.9144486e-01 },
-        { -1.5643447e-01, -9.8768834e-01 }, { -1.8223553e-01, -9.8325491e-01 },
-        { -2.0791169e-01, -9.7814760e-01 }, { -2.3344536e-01, -9.7236992e-01 },
-        { -2.5881905e-01, -9.6592583e-01 }, { -2.8401534e-01, -9.5881973e-01 },
-        { -3.0901699e-01, -9.5105652e-01 }, { -3.3380686e-01, -9.4264149e-01 },
-        { -3.5836795e-01, -9.3358043e-01 }, { -3.8268343e-01, -9.2387953e-01 },
-        { -4.0673664e-01, -9.1354546e-01 }, { -4.3051110e-01, -9.0258528e-01 },
-        { -4.5399050e-01, -8.9100652e-01 }, { -4.7715876e-01, -8.7881711e-01 },
-        { -5.0000000e-01, -8.6602540e-01 }, { -5.2249856e-01, -8.5264016e-01 },
-        { -5.4463904e-01, -8.3867057e-01 }, { -5.6640624e-01, -8.2412619e-01 },
-        { -5.8778525e-01, -8.0901699e-01 }, { -6.0876143e-01, -7.9335334e-01 },
-        { -6.2932039e-01, -7.7714596e-01 }, { -6.4944805e-01, -7.6040597e-01 },
-        { -6.6913061e-01, -7.4314483e-01 }, { -6.8835458e-01, -7.2537437e-01 },
-        { -7.0710678e-01, -7.0710678e-01 }, { -7.2537437e-01, -6.8835458e-01 },
-        { -7.4314483e-01, -6.6913061e-01 }, { -7.6040597e-01, -6.4944805e-01 },
-        { -7.7714596e-01, -6.2932039e-01 }, { -7.9335334e-01, -6.0876143e-01 },
-        { -8.0901699e-01, -5.8778525e-01 }, { -8.2412619e-01, -5.6640624e-01 },
-        { -8.3867057e-01, -5.4463904e-01 }, { -8.5264016e-01, -5.2249856e-01 },
-        { -8.6602540e-01, -5.0000000e-01 }, { -8.7881711e-01, -4.7715876e-01 },
-        { -8.9100652e-01, -4.5399050e-01 }, { -9.0258528e-01, -4.3051110e-01 },
-        { -9.1354546e-01, -4.0673664e-01 }, { -9.2387953e-01, -3.8268343e-01 },
-        { -9.3358043e-01, -3.5836795e-01 }, { -9.4264149e-01, -3.3380686e-01 },
-        { -9.5105652e-01, -3.0901699e-01 }, { -9.5881973e-01, -2.8401534e-01 },
-        { -9.6592583e-01, -2.5881905e-01 }, { -9.7236992e-01, -2.3344536e-01 },
-        { -9.7814760e-01, -2.0791169e-01 }, { -9.8325491e-01, -1.8223553e-01 },
-        { -9.8768834e-01, -1.5643447e-01 }, { -9.9144486e-01, -1.3052619e-01 },
-        { -9.9452190e-01, -1.0452846e-01 }, { -9.9691733e-01, -7.8459096e-02 },
-        { -9.9862953e-01, -5.2335956e-02 }, { -9.9965732e-01, -2.6176948e-02 },
-    }
+    __C( 1.0000000e+00, -0.0000000e+00), __C( 9.9965732e-01, -2.6176948e-02),
+    __C( 9.9862953e-01, -5.2335956e-02), __C( 9.9691733e-01, -7.8459096e-02),
+    __C( 9.9452190e-01, -1.0452846e-01), __C( 9.9144486e-01, -1.3052619e-01),
+    __C( 9.8768834e-01, -1.5643447e-01), __C( 9.8325491e-01, -1.8223553e-01),
+    __C( 9.7814760e-01, -2.0791169e-01), __C( 9.7236992e-01, -2.3344536e-01),
+    __C( 9.6592583e-01, -2.5881905e-01), __C( 9.5881973e-01, -2.8401534e-01),
+    __C( 9.5105652e-01, -3.0901699e-01), __C( 9.4264149e-01, -3.3380686e-01),
+    __C( 9.3358043e-01, -3.5836795e-01), __C( 9.2387953e-01, -3.8268343e-01),
+    __C( 9.1354546e-01, -4.0673664e-01), __C( 9.0258528e-01, -4.3051110e-01),
+    __C( 8.9100652e-01, -4.5399050e-01), __C( 8.7881711e-01, -4.7715876e-01),
+    __C( 8.6602540e-01, -5.0000000e-01), __C( 8.5264016e-01, -5.2249856e-01),
+    __C( 8.3867057e-01, -5.4463904e-01), __C( 8.2412619e-01, -5.6640624e-01),
+    __C( 8.0901699e-01, -5.8778525e-01), __C( 7.9335334e-01, -6.0876143e-01),
+    __C( 7.7714596e-01, -6.2932039e-01), __C( 7.6040597e-01, -6.4944805e-01),
+    __C( 7.4314483e-01, -6.6913061e-01), __C( 7.2537437e-01, -6.8835458e-01),
+    __C( 7.0710678e-01, -7.0710678e-01), __C( 6.8835458e-01, -7.2537437e-01),
+    __C( 6.6913061e-01, -7.4314483e-01), __C( 6.4944805e-01, -7.6040597e-01),
+    __C( 6.2932039e-01, -7.7714596e-01), __C( 6.0876143e-01, -7.9335334e-01),
+    __C( 5.8778525e-01, -8.0901699e-01), __C( 5.6640624e-01, -8.2412619e-01),
+    __C( 5.4463904e-01, -8.3867057e-01), __C( 5.2249856e-01, -8.5264016e-01),
+    __C( 5.0000000e-01, -8.6602540e-01), __C( 4.7715876e-01, -8.7881711e-01),
+    __C( 4.5399050e-01, -8.9100652e-01), __C( 4.3051110e-01, -9.0258528e-01),
+    __C( 4.0673664e-01, -9.1354546e-01), __C( 3.8268343e-01, -9.2387953e-01),
+    __C( 3.5836795e-01, -9.3358043e-01), __C( 3.3380686e-01, -9.4264149e-01),
+    __C( 3.0901699e-01, -9.5105652e-01), __C( 2.8401534e-01, -9.5881973e-01),
+    __C( 2.5881905e-01, -9.6592583e-01), __C( 2.3344536e-01, -9.7236992e-01),
+    __C( 2.0791169e-01, -9.7814760e-01), __C( 1.8223553e-01, -9.8325491e-01),
+    __C( 1.5643447e-01, -9.8768834e-01), __C( 1.3052619e-01, -9.9144486e-01),
+    __C( 1.0452846e-01, -9.9452190e-01), __C( 7.8459096e-02, -9.9691733e-01),
+    __C( 5.2335956e-02, -9.9862953e-01), __C( 2.6176948e-02, -9.9965732e-01),
+    __C( 2.8327694e-16, -1.0000000e+00), __C(-2.6176948e-02, -9.9965732e-01),
+    __C(-5.2335956e-02, -9.9862953e-01), __C(-7.8459096e-02, -9.9691733e-01),
+    __C(-1.0452846e-01, -9.9452190e-01), __C(-1.3052619e-01, -9.9144486e-01),
+    __C(-1.5643447e-01, -9.8768834e-01), __C(-1.8223553e-01, -9.8325491e-01),
+    __C(-2.0791169e-01, -9.7814760e-01), __C(-2.3344536e-01, -9.7236992e-01),
+    __C(-2.5881905e-01, -9.6592583e-01), __C(-2.8401534e-01, -9.5881973e-01),
+    __C(-3.0901699e-01, -9.5105652e-01), __C(-3.3380686e-01, -9.4264149e-01),
+    __C(-3.5836795e-01, -9.3358043e-01), __C(-3.8268343e-01, -9.2387953e-01),
+    __C(-4.0673664e-01, -9.1354546e-01), __C(-4.3051110e-01, -9.0258528e-01),
+    __C(-4.5399050e-01, -8.9100652e-01), __C(-4.7715876e-01, -8.7881711e-01),
+    __C(-5.0000000e-01, -8.6602540e-01), __C(-5.2249856e-01, -8.5264016e-01),
+    __C(-5.4463904e-01, -8.3867057e-01), __C(-5.6640624e-01, -8.2412619e-01),
+    __C(-5.8778525e-01, -8.0901699e-01), __C(-6.0876143e-01, -7.9335334e-01),
+    __C(-6.2932039e-01, -7.7714596e-01), __C(-6.4944805e-01, -7.6040597e-01),
+    __C(-6.6913061e-01, -7.4314483e-01), __C(-6.8835458e-01, -7.2537437e-01),
+    __C(-7.0710678e-01, -7.0710678e-01), __C(-7.2537437e-01, -6.8835458e-01),
+    __C(-7.4314483e-01, -6.6913061e-01), __C(-7.6040597e-01, -6.4944805e-01),
+    __C(-7.7714596e-01, -6.2932039e-01), __C(-7.9335334e-01, -6.0876143e-01),
+    __C(-8.0901699e-01, -5.8778525e-01), __C(-8.2412619e-01, -5.6640624e-01),
+    __C(-8.3867057e-01, -5.4463904e-01), __C(-8.5264016e-01, -5.2249856e-01),
+    __C(-8.6602540e-01, -5.0000000e-01), __C(-8.7881711e-01, -4.7715876e-01),
+    __C(-8.9100652e-01, -4.5399050e-01), __C(-9.0258528e-01, -4.3051110e-01),
+    __C(-9.1354546e-01, -4.0673664e-01), __C(-9.2387953e-01, -3.8268343e-01),
+    __C(-9.3358043e-01, -3.5836795e-01), __C(-9.4264149e-01, -3.3380686e-01),
+    __C(-9.5105652e-01, -3.0901699e-01), __C(-9.5881973e-01, -2.8401534e-01),
+    __C(-9.6592583e-01, -2.5881905e-01), __C(-9.7236992e-01, -2.3344536e-01),
+    __C(-9.7814760e-01, -2.0791169e-01), __C(-9.8325491e-01, -1.8223553e-01),
+    __C(-9.8768834e-01, -1.5643447e-01), __C(-9.9144486e-01, -1.3052619e-01),
+    __C(-9.9452190e-01, -1.0452846e-01), __C(-9.9691733e-01, -7.8459096e-02),
+    __C(-9.9862953e-01, -5.2335956e-02), __C(-9.9965732e-01, -2.6176948e-02) }
 };
 
 const struct lc3_fft_bf2_twiddles *lc3_fft_twiddles_bf2[][3] = {
@@ -430,557 +423,552 @@
     { &fft_twiddles_160  }
 };
 
+#undef __C
+
 
 /**
  * MDCT Rotation twiddles
  *
  *            2Pi (n + 1/8) / N
- *   W[n] = e                   , n = [0..N/4-1]
+ *   W[n] = e                   * sqrt( sqrt( 4/N ) ), n = [0..N/4-1]
  */
 
+#define __C(re, im)  { LC3_INTFLOAT_C(re, 31), LC3_INTFLOAT_C(im, 31) }
+
 static const struct lc3_mdct_rot_def mdct_rot_120 = {
     .n4 = 120/4, .w = (const struct lc3_complex []){
-        { 9.9997858e-01, 6.5449380e-03 }, { 9.9826561e-01, 5.8870804e-02 },
-        { 9.9381646e-01, 1.1103531e-01 }, { 9.8664333e-01, 1.6289547e-01 },
-        { 9.7676588e-01, 2.1430915e-01 }, { 9.6421118e-01, 2.6513543e-01 },
-        { 9.4901365e-01, 3.1523498e-01 }, { 9.3121493e-01, 3.6447050e-01 },
-        { 9.1086382e-01, 4.1270703e-01 }, { 8.8801610e-01, 4.5981236e-01 },
-        { 8.6273439e-01, 5.0565737e-01 }, { 8.3508798e-01, 5.5011642e-01 },
-        { 8.0515265e-01, 5.9306763e-01 }, { 7.7301045e-01, 6.3439328e-01 },
-        { 7.3874949e-01, 6.7398011e-01 }, { 7.0246367e-01, 7.1171961e-01 },
-        { 6.6425244e-01, 7.4750833e-01 }, { 6.2422054e-01, 7.8124818e-01 },
-        { 5.8247770e-01, 8.1284668e-01 }, { 5.3913832e-01, 8.4221723e-01 },
-        { 4.9432121e-01, 8.6927932e-01 }, { 4.4814919e-01, 8.9395878e-01 },
-        { 4.0074883e-01, 9.1618796e-01 }, { 3.5225005e-01, 9.3590593e-01 },
-        { 3.0278577e-01, 9.5305864e-01 }, { 2.5249158e-01, 9.6759909e-01 },
-        { 2.0150532e-01, 9.7948742e-01 }, { 1.4996676e-01, 9.8869104e-01 },
-        { 9.8017140e-02, 9.9518473e-01 }, { 4.5798867e-02, 9.9895068e-01 },
-    }
+    __C( 4.2727785e-01, 2.7965670e-03 ), __C( 4.2654592e-01, 2.5154729e-02 ),
+    __C( 4.2464486e-01, 4.7443945e-02 ), __C( 4.2157988e-01, 6.9603119e-02 ),
+    __C( 4.1735937e-01, 9.1571516e-02 ), __C( 4.1199491e-01, 1.1328892e-01 ),
+    __C( 4.0550120e-01, 1.3469581e-01 ), __C( 3.9789604e-01, 1.5573351e-01 ),
+    __C( 3.8920028e-01, 1.7634435e-01 ), __C( 3.7943774e-01, 1.9647185e-01 ),
+    __C( 3.6863519e-01, 2.1606083e-01 ), __C( 3.5682224e-01, 2.3505760e-01 ),
+    __C( 3.4403126e-01, 2.5341009e-01 ), __C( 3.3029732e-01, 2.7106801e-01 ),
+    __C( 3.1565806e-01, 2.8798294e-01 ), __C( 3.0015360e-01, 3.0410854e-01 ),
+    __C( 2.8382644e-01, 3.1940060e-01 ), __C( 2.6672133e-01, 3.3381720e-01 ),
+    __C( 2.4888515e-01, 3.4731883e-01 ), __C( 2.3036680e-01, 3.5986848e-01 ),
+    __C( 2.1121703e-01, 3.7143176e-01 ), __C( 1.9148833e-01, 3.8197697e-01 ),
+    __C( 1.7123477e-01, 3.9147521e-01 ), __C( 1.5051187e-01, 3.9990044e-01 ),
+    __C( 1.2937643e-01, 4.0722957e-01 ), __C( 1.0788637e-01, 4.1344252e-01 ),
+    __C( 8.6100606e-02, 4.1852225e-01 ), __C( 6.4078846e-02, 4.2245483e-01 ),
+    __C( 4.1881450e-02, 4.2522950e-01 ), __C( 1.9569261e-02, 4.2683865e-01 ) }
 };
 
 static const struct lc3_mdct_rot_def mdct_rot_160 = {
     .n4 = 160/4, .w = (const struct lc3_complex []){
-        { 9.9998795e-01, 4.9087188e-03 }, { 9.9902428e-01, 4.4164277e-02 },
-        { 9.9652019e-01, 8.3351737e-02 }, { 9.9247953e-01, 1.2241068e-01 },
-        { 9.8690855e-01, 1.6128086e-01 }, { 9.7981582e-01, 1.9990237e-01 },
-        { 9.7121229e-01, 2.3821564e-01 }, { 9.6111122e-01, 2.7616160e-01 },
-        { 9.4952818e-01, 3.1368174e-01 }, { 9.3648104e-01, 3.5071820e-01 },
-        { 9.2198992e-01, 3.8721389e-01 }, { 9.0607715e-01, 4.2311251e-01 },
-        { 8.8876728e-01, 4.5835873e-01 }, { 8.7008699e-01, 4.9289819e-01 },
-        { 8.5006509e-01, 5.2667764e-01 }, { 8.2873246e-01, 5.5964499e-01 },
-        { 8.0612197e-01, 5.9174941e-01 }, { 7.8226851e-01, 6.2294139e-01 },
-        { 7.5720885e-01, 6.5317284e-01 }, { 7.3098162e-01, 6.8239715e-01 },
-        { 7.0362727e-01, 7.1056925e-01 }, { 6.7518798e-01, 7.3764570e-01 },
-        { 6.4570760e-01, 7.6358476e-01 }, { 6.1523159e-01, 7.8834643e-01 },
-        { 5.8380693e-01, 8.1189252e-01 }, { 5.5148209e-01, 8.3418673e-01 },
-        { 5.1830690e-01, 8.5519469e-01 }, { 4.8433252e-01, 8.7488400e-01 },
-        { 4.4961133e-01, 8.9322430e-01 }, { 4.1419687e-01, 9.1018732e-01 },
-        { 3.7814376e-01, 9.2574689e-01 }, { 3.4150757e-01, 9.3987902e-01 },
-        { 3.0434480e-01, 9.5256194e-01 }, { 2.6671276e-01, 9.6377607e-01 },
-        { 2.2866946e-01, 9.7350412e-01 }, { 1.9027357e-01, 9.8173111e-01 },
-        { 1.5158430e-01, 9.8844433e-01 }, { 1.1266129e-01, 9.9363345e-01 },
-        { 7.3564564e-02, 9.9729046e-01 }, { 3.4354408e-02, 9.9940971e-01 },
-    }
+    __C( 3.9763057e-01, 1.9518802e-03 ), __C( 3.9724738e-01, 1.7561278e-02 ),
+    __C( 3.9625167e-01, 3.3143598e-02 ), __C( 3.9464496e-01, 4.8674813e-02 ),
+    __C( 3.9242974e-01, 6.4130975e-02 ), __C( 3.8960942e-01, 7.9488252e-02 ),
+    __C( 3.8618835e-01, 9.4722964e-02 ), __C( 3.8217181e-01, 1.0981162e-01 ),
+    __C( 3.7756598e-01, 1.2473095e-01 ), __C( 3.7237798e-01, 1.3945796e-01 ),
+    __C( 3.6661580e-01, 1.5396993e-01 ), __C( 3.6028832e-01, 1.6824450e-01 ),
+    __C( 3.5340530e-01, 1.8225964e-01 ), __C( 3.4597736e-01, 1.9599375e-01 ),
+    __C( 3.3801594e-01, 2.0942566e-01 ), __C( 3.2953333e-01, 2.2253464e-01 ),
+    __C( 3.2054261e-01, 2.3530049e-01 ), __C( 3.1105762e-01, 2.4770353e-01 ),
+    __C( 3.0109302e-01, 2.5972462e-01 ), __C( 2.9066414e-01, 2.7134524e-01 ),
+    __C( 2.7978709e-01, 2.8254746e-01 ), __C( 2.6847862e-01, 2.9331402e-01 ),
+    __C( 2.5675618e-01, 3.0362831e-01 ), __C( 2.4463784e-01, 3.1347442e-01 ),
+    __C( 2.3214228e-01, 3.2283718e-01 ), __C( 2.1928878e-01, 3.3170215e-01 ),
+    __C( 2.0609715e-01, 3.4005565e-01 ), __C( 1.9258774e-01, 3.4788482e-01 ),
+    __C( 1.7878136e-01, 3.5517757e-01 ), __C( 1.6469932e-01, 3.6192266e-01 ),
+    __C( 1.5036333e-01, 3.6810970e-01 ), __C( 1.3579549e-01, 3.7372914e-01 ),
+    __C( 1.2101826e-01, 3.7877231e-01 ), __C( 1.0605442e-01, 3.8323145e-01 ),
+    __C( 9.0927064e-02, 3.8709967e-01 ), __C( 7.5659501e-02, 3.9037101e-01 ),
+    __C( 6.0275277e-02, 3.9304042e-01 ), __C( 4.4798112e-02, 3.9510380e-01 ),
+    __C( 2.9251872e-02, 3.9655795e-01 ), __C( 1.3660528e-02, 3.9740065e-01 ) }
 };
 
 static const struct lc3_mdct_rot_def mdct_rot_240 = {
     .n4 = 240/4, .w = (const struct lc3_complex []){
-        { 9.9999465e-01, 3.2724865e-03 }, { 9.9956631e-01, 2.9448173e-02 },
-        { 9.9845292e-01, 5.5603678e-02 }, { 9.9665524e-01, 8.1721074e-02 },
-        { 9.9417450e-01, 1.0778246e-01 }, { 9.9101241e-01, 1.3376998e-01 },
-        { 9.8717112e-01, 1.5966582e-01 }, { 9.8265328e-01, 1.8545224e-01 },
-        { 9.7746197e-01, 2.1111155e-01 }, { 9.7160077e-01, 2.3662618e-01 },
-        { 9.6507367e-01, 2.6197864e-01 }, { 9.5788516e-01, 2.8715155e-01 },
-        { 9.5004017e-01, 3.1212766e-01 }, { 9.4154407e-01, 3.3688985e-01 },
-        { 9.3240267e-01, 3.6142116e-01 }, { 9.2262226e-01, 3.8570477e-01 },
-        { 9.1220953e-01, 4.0972403e-01 }, { 9.0117161e-01, 4.3346249e-01 },
-        { 8.8951608e-01, 4.5690388e-01 }, { 8.7725091e-01, 4.8003212e-01 },
-        { 8.6438452e-01, 5.0283138e-01 }, { 8.5092573e-01, 5.2528602e-01 },
-        { 8.3688375e-01, 5.4738066e-01 }, { 8.2226822e-01, 5.6910015e-01 },
-        { 8.0708914e-01, 5.9042960e-01 }, { 7.9135693e-01, 6.1135441e-01 },
-        { 7.7508236e-01, 6.3186022e-01 }, { 7.5827658e-01, 6.5193299e-01 },
-        { 7.4095113e-01, 6.7155895e-01 }, { 7.2311786e-01, 6.9072467e-01 },
-        { 7.0478900e-01, 7.0941699e-01 }, { 6.8597711e-01, 7.2762312e-01 },
-        { 6.6669509e-01, 7.4533057e-01 }, { 6.4695615e-01, 7.6252720e-01 },
-        { 6.2677382e-01, 7.7920124e-01 }, { 6.0616193e-01, 7.9534126e-01 },
-        { 5.8513461e-01, 8.1093618e-01 }, { 5.6370626e-01, 8.2597533e-01 },
-        { 5.4189158e-01, 8.4044840e-01 }, { 5.1970551e-01, 8.5434547e-01 },
-        { 4.9716327e-01, 8.6765701e-01 }, { 4.7428029e-01, 8.8037390e-01 },
-        { 4.5107226e-01, 8.9248743e-01 }, { 4.2755509e-01, 9.0398929e-01 },
-        { 4.0374490e-01, 9.1487161e-01 }, { 3.7965800e-01, 9.2512691e-01 },
-        { 3.5531090e-01, 9.3474818e-01 }, { 3.3072029e-01, 9.4372882e-01 },
-        { 3.0590302e-01, 9.5206268e-01 }, { 2.8087610e-01, 9.5974404e-01 },
-        { 2.5565668e-01, 9.6676764e-01 }, { 2.3026205e-01, 9.7312866e-01 },
-        { 2.0470960e-01, 9.7882275e-01 }, { 1.7901686e-01, 9.8384601e-01 },
-        { 1.5320143e-01, 9.8819498e-01 }, { 1.2728100e-01, 9.9186670e-01 },
-        { 1.0127334e-01, 9.9485864e-01 }, { 7.5196277e-02, 9.9716875e-01 },
-        { 4.9067674e-02, 9.9879546e-01 }, { 2.2905443e-02, 9.9973764e-01 },
-    }
+    __C( 3.5930219e-01, 1.1758179e-03 ), __C( 3.5914828e-01, 1.0580850e-02 ),
+    __C( 3.5874824e-01, 1.9978630e-02 ), __C( 3.5810233e-01, 2.9362718e-02 ),
+    __C( 3.5721099e-01, 3.8726682e-02 ), __C( 3.5607483e-01, 4.8064105e-02 ),
+    __C( 3.5469464e-01, 5.7368587e-02 ), __C( 3.5307136e-01, 6.6633752e-02 ),
+    __C( 3.5120611e-01, 7.5853249e-02 ), __C( 3.4910015e-01, 8.5020760e-02 ),
+    __C( 3.4675494e-01, 9.4130002e-02 ), __C( 3.4417208e-01, 1.0317473e-01 ),
+    __C( 3.4135334e-01, 1.1214875e-01 ), __C( 3.3830065e-01, 1.2104591e-01 ),
+    __C( 3.3501611e-01, 1.2986011e-01 ), __C( 3.3150197e-01, 1.3858531e-01 ),
+    __C( 3.2776063e-01, 1.4721553e-01 ), __C( 3.2379466e-01, 1.5574485e-01 ),
+    __C( 3.1960678e-01, 1.6416744e-01 ), __C( 3.1519986e-01, 1.7247752e-01 ),
+    __C( 3.1057691e-01, 1.8066938e-01 ), __C( 3.0574111e-01, 1.8873743e-01 ),
+    __C( 3.0069577e-01, 1.9667612e-01 ), __C( 2.9544435e-01, 2.0448002e-01 ),
+    __C( 2.8999045e-01, 2.1214378e-01 ), __C( 2.8433780e-01, 2.1966215e-01 ),
+    __C( 2.7849028e-01, 2.2702998e-01 ), __C( 2.7245189e-01, 2.3424220e-01 ),
+    __C( 2.6622679e-01, 2.4129389e-01 ), __C( 2.5981922e-01, 2.4818021e-01 ),
+    __C( 2.5323358e-01, 2.5489644e-01 ), __C( 2.4647440e-01, 2.6143798e-01 ),
+    __C( 2.3954629e-01, 2.6780034e-01 ), __C( 2.3245401e-01, 2.7397916e-01 ),
+    __C( 2.2520241e-01, 2.7997021e-01 ), __C( 2.1779647e-01, 2.8576938e-01 ),
+    __C( 2.1024127e-01, 2.9137270e-01 ), __C( 2.0254198e-01, 2.9677633e-01 ),
+    __C( 1.9470387e-01, 3.0197657e-01 ), __C( 1.8673233e-01, 3.0696984e-01 ),
+    __C( 1.7863281e-01, 3.1175273e-01 ), __C( 1.7041086e-01, 3.1632196e-01 ),
+    __C( 1.6207212e-01, 3.2067440e-01 ), __C( 1.5362230e-01, 3.2480707e-01 ),
+    __C( 1.4506720e-01, 3.2871713e-01 ), __C( 1.3641268e-01, 3.3240190e-01 ),
+    __C( 1.2766467e-01, 3.3585887e-01 ), __C( 1.1882916e-01, 3.3908565e-01 ),
+    __C( 1.0991221e-01, 3.4208003e-01 ), __C( 1.0091994e-01, 3.4483998e-01 ),
+    __C( 9.1858496e-02, 3.4736359e-01 ), __C( 8.2734100e-02, 3.4964913e-01 ),
+    __C( 7.3553002e-02, 3.5169504e-01 ), __C( 6.4321494e-02, 3.5349992e-01 ),
+    __C( 5.5045904e-02, 3.5506252e-01 ), __C( 4.5732588e-02, 3.5638178e-01 ),
+    __C( 3.6387929e-02, 3.5745680e-01 ), __C( 2.7018332e-02, 3.5828683e-01 ),
+    __C( 1.7630217e-02, 3.5887131e-01 ), __C( 8.2300199e-03, 3.5920984e-01 ) }
 };
 
 static const struct lc3_mdct_rot_def mdct_rot_320 = {
     .n4 = 320/4, .w = (const struct lc3_complex []){
-        { 9.9999699e-01, 2.4543668e-03 }, { 9.9975604e-01, 2.2087527e-02 },
-        { 9.9912967e-01, 4.1712172e-02 }, { 9.9811811e-01, 6.1320736e-02 },
-        { 9.9672176e-01, 8.0905660e-02 }, { 9.9494116e-01, 1.0045939e-01 },
-        { 9.9277699e-01, 1.1997440e-01 }, { 9.9023008e-01, 1.3944315e-01 },
-        { 9.8730142e-01, 1.5885814e-01 }, { 9.8399213e-01, 1.7821189e-01 },
-        { 9.8030350e-01, 1.9749694e-01 }, { 9.7623695e-01, 2.1670585e-01 },
-        { 9.7179403e-01, 2.3583121e-01 }, { 9.6697647e-01, 2.5486566e-01 },
-        { 9.6178612e-01, 2.7380185e-01 }, { 9.5622499e-01, 2.9263249e-01 },
-        { 9.5029521e-01, 3.1135031e-01 }, { 9.4399908e-01, 3.2994809e-01 },
-        { 9.3733901e-01, 3.4841868e-01 }, { 9.3031759e-01, 3.6675495e-01 },
-        { 9.2293750e-01, 3.8494982e-01 }, { 9.1520161e-01, 4.0299629e-01 },
-        { 9.0711289e-01, 4.2088739e-01 }, { 8.9867447e-01, 4.3861624e-01 },
-        { 8.8988958e-01, 4.5617599e-01 }, { 8.8076163e-01, 4.7355988e-01 },
-        { 8.7129412e-01, 4.9076120e-01 }, { 8.6149072e-01, 5.0777332e-01 },
-        { 8.5135519e-01, 5.2458968e-01 }, { 8.4089145e-01, 5.4120381e-01 },
-        { 8.3010353e-01, 5.5760929e-01 }, { 8.1899560e-01, 5.7379980e-01 },
-        { 8.0757192e-01, 5.8976911e-01 }, { 7.9583690e-01, 6.0551104e-01 },
-        { 7.8379508e-01, 6.2101954e-01 }, { 7.7145109e-01, 6.3628862e-01 },
-        { 7.5880969e-01, 6.5131241e-01 }, { 7.4587576e-01, 6.6608510e-01 },
-        { 7.3265427e-01, 6.8060100e-01 }, { 7.1915033e-01, 6.9485451e-01 },
-        { 7.0536915e-01, 7.0884015e-01 }, { 6.9131604e-01, 7.2255252e-01 },
-        { 6.7699640e-01, 7.3598632e-01 }, { 6.6241578e-01, 7.4913639e-01 },
-        { 6.4757978e-01, 7.6199766e-01 }, { 6.3249412e-01, 7.7456516e-01 },
-        { 6.1716463e-01, 7.8683405e-01 }, { 6.0159721e-01, 7.9879960e-01 },
-        { 5.8579786e-01, 8.1045720e-01 }, { 5.6977267e-01, 8.2180235e-01 },
-        { 5.5352783e-01, 8.3283068e-01 }, { 5.3706959e-01, 8.4353794e-01 },
-        { 5.2040430e-01, 8.5392000e-01 }, { 5.0353838e-01, 8.6397286e-01 },
-        { 4.8647834e-01, 8.7369263e-01 }, { 4.6923076e-01, 8.8307559e-01 },
-        { 4.5180228e-01, 8.9211810e-01 }, { 4.3419961e-01, 9.0081668e-01 },
-        { 4.1642956e-01, 9.0916798e-01 }, { 3.9849896e-01, 9.1716878e-01 },
-        { 3.8041474e-01, 9.2481600e-01 }, { 3.6218386e-01, 9.3210667e-01 },
-        { 3.4381335e-01, 9.3903801e-01 }, { 3.2531029e-01, 9.4560733e-01 },
-        { 3.0668182e-01, 9.5181209e-01 }, { 2.8793512e-01, 9.5764992e-01 },
-        { 2.6907741e-01, 9.6311855e-01 }, { 2.5011597e-01, 9.6821588e-01 },
-        { 2.3105811e-01, 9.7293995e-01 }, { 2.1191117e-01, 9.7728893e-01 },
-        { 1.9268253e-01, 9.8126115e-01 }, { 1.7337961e-01, 9.8485507e-01 },
-        { 1.5400984e-01, 9.8806931e-01 }, { 1.3458071e-01, 9.9090264e-01 },
-        { 1.1509969e-01, 9.9335395e-01 }, { 9.5574297e-02, 9.9542230e-01 },
-        { 7.6012059e-02, 9.9710690e-01 }, { 5.6420516e-02, 9.9840709e-01 },
-        { 3.6807223e-02, 9.9932238e-01 }, { 1.7179740e-02, 9.9985242e-01 },
-    }
+    __C( 3.3436915e-01, 8.2066700e-04 ), __C( 3.3428858e-01, 7.3854098e-03 ),
+    __C( 3.3407914e-01, 1.3947305e-02 ), __C( 3.3374091e-01, 2.0503824e-02 ),
+    __C( 3.3327401e-01, 2.7052438e-02 ), __C( 3.3267863e-01, 3.3590623e-02 ),
+    __C( 3.3195499e-01, 4.0115858e-02 ), __C( 3.3110338e-01, 4.6625627e-02 ),
+    __C( 3.3012413e-01, 5.3117422e-02 ), __C( 3.2901760e-01, 5.9588738e-02 ),
+    __C( 3.2778423e-01, 6.6037082e-02 ), __C( 3.2642450e-01, 7.2459968e-02 ),
+    __C( 3.2493892e-01, 7.8854919e-02 ), __C( 3.2332807e-01, 8.5219469e-02 ),
+    __C( 3.2159257e-01, 9.1551166e-02 ), __C( 3.1973310e-01, 9.7847569e-02 ),
+    __C( 3.1775035e-01, 1.0410625e-01 ), __C( 3.1564512e-01, 1.1032479e-01 ),
+    __C( 3.1341819e-01, 1.1650081e-01 ), __C( 3.1107043e-01, 1.2263191e-01 ),
+    __C( 3.0860275e-01, 1.2871573e-01 ), __C( 3.0601610e-01, 1.3474993e-01 ),
+    __C( 3.0331148e-01, 1.4073218e-01 ), __C( 3.0048992e-01, 1.4666018e-01 ),
+    __C( 2.9755251e-01, 1.5253164e-01 ), __C( 2.9450040e-01, 1.5834429e-01 ),
+    __C( 2.9133475e-01, 1.6409590e-01 ), __C( 2.8805678e-01, 1.6978424e-01 ),
+    __C( 2.8466777e-01, 1.7540713e-01 ), __C( 2.8116900e-01, 1.8096240e-01 ),
+    __C( 2.7756185e-01, 1.8644790e-01 ), __C( 2.7384768e-01, 1.9186153e-01 ),
+    __C( 2.7002795e-01, 1.9720119e-01 ), __C( 2.6610411e-01, 2.0246482e-01 ),
+    __C( 2.6207768e-01, 2.0765040e-01 ), __C( 2.5795022e-01, 2.1275592e-01 ),
+    __C( 2.5372331e-01, 2.1777943e-01 ), __C( 2.4939859e-01, 2.2271898e-01 ),
+    __C( 2.4497772e-01, 2.2757266e-01 ), __C( 2.4046241e-01, 2.3233861e-01 ),
+    __C( 2.3585439e-01, 2.3701499e-01 ), __C( 2.3115545e-01, 2.4159999e-01 ),
+    __C( 2.2636739e-01, 2.4609186e-01 ), __C( 2.2149206e-01, 2.5048885e-01 ),
+    __C( 2.1653135e-01, 2.5478927e-01 ), __C( 2.1148716e-01, 2.5899147e-01 ),
+    __C( 2.0636143e-01, 2.6309382e-01 ), __C( 2.0115615e-01, 2.6709474e-01 ),
+    __C( 1.9587332e-01, 2.7099270e-01 ), __C( 1.9051498e-01, 2.7478618e-01 ),
+    __C( 1.8508318e-01, 2.7847372e-01 ), __C( 1.7958004e-01, 2.8205391e-01 ),
+    __C( 1.7400766e-01, 2.8552536e-01 ), __C( 1.6836821e-01, 2.8888674e-01 ),
+    __C( 1.6266384e-01, 2.9213674e-01 ), __C( 1.5689676e-01, 2.9527412e-01 ),
+    __C( 1.5106920e-01, 2.9829767e-01 ), __C( 1.4518339e-01, 3.0120621e-01 ),
+    __C( 1.3924162e-01, 3.0399864e-01 ), __C( 1.3324616e-01, 3.0667387e-01 ),
+    __C( 1.2719933e-01, 3.0923087e-01 ), __C( 1.2110347e-01, 3.1166865e-01 ),
+    __C( 1.1496092e-01, 3.1398628e-01 ), __C( 1.0877405e-01, 3.1618287e-01 ),
+    __C( 1.0254525e-01, 3.1825755e-01 ), __C( 9.6276910e-02, 3.2020955e-01 ),
+    __C( 8.9971456e-02, 3.2203810e-01 ), __C( 8.3631316e-02, 3.2374249e-01 ),
+    __C( 7.7258935e-02, 3.2532208e-01 ), __C( 7.0856769e-02, 3.2677625e-01 ),
+    __C( 6.4427286e-02, 3.2810444e-01 ), __C( 5.7972965e-02, 3.2930614e-01 ),
+    __C( 5.1496295e-02, 3.3038089e-01 ), __C( 4.4999772e-02, 3.3132827e-01 ),
+    __C( 3.8485901e-02, 3.3214791e-01 ), __C( 3.1957192e-02, 3.3283951e-01 ),
+    __C( 2.5416164e-02, 3.3340279e-01 ), __C( 1.8865337e-02, 3.3383753e-01 ),
+    __C( 1.2307237e-02, 3.3414358e-01 ), __C( 5.7443922e-03, 3.3432081e-01 ) }
 };
 
 static const struct lc3_mdct_rot_def mdct_rot_360 = {
     .n4 = 360/4, .w = (const struct lc3_complex []){
-        { 9.9999762e-01, 2.1816598e-03 }, { 9.9980724e-01, 1.9633692e-02 },
-        { 9.9931231e-01, 3.7079744e-02 }, { 9.9851298e-01, 5.4514502e-02 },
-        { 9.9740949e-01, 7.1932653e-02 }, { 9.9600218e-01, 8.9328893e-02 },
-        { 9.9429148e-01, 1.0669792e-01 }, { 9.9227791e-01, 1.2403445e-01 },
-        { 9.8996208e-01, 1.4133320e-01 }, { 9.8734470e-01, 1.5858889e-01 },
-        { 9.8442657e-01, 1.7579628e-01 }, { 9.8120857e-01, 1.9295012e-01 },
-        { 9.7769168e-01, 2.1004518e-01 }, { 9.7387698e-01, 2.2707626e-01 },
-        { 9.6976563e-01, 2.4403818e-01 }, { 9.6535887e-01, 2.6092575e-01 },
-        { 9.6065806e-01, 2.7773385e-01 }, { 9.5566462e-01, 2.9445734e-01 },
-        { 9.5038008e-01, 3.1109114e-01 }, { 9.4480605e-01, 3.2763018e-01 },
-        { 9.3894421e-01, 3.4406942e-01 }, { 9.3279637e-01, 3.6040385e-01 },
-        { 9.2636438e-01, 3.7662850e-01 }, { 9.1965022e-01, 3.9273843e-01 },
-        { 9.1265592e-01, 4.0872872e-01 }, { 9.0538362e-01, 4.2459451e-01 },
-        { 8.9783553e-01, 4.4033097e-01 }, { 8.9001395e-01, 4.5593329e-01 },
-        { 8.8192126e-01, 4.7139674e-01 }, { 8.7355994e-01, 4.8671659e-01 },
-        { 8.6493251e-01, 5.0188818e-01 }, { 8.5604162e-01, 5.1690690e-01 },
-        { 8.4688997e-01, 5.3176816e-01 }, { 8.3748035e-01, 5.4646743e-01 },
-        { 8.2781563e-01, 5.6100025e-01 }, { 8.1789875e-01, 5.7536218e-01 },
-        { 8.0773272e-01, 5.8954885e-01 }, { 7.9732065e-01, 6.0355594e-01 },
-        { 7.8666571e-01, 6.1737918e-01 }, { 7.7577115e-01, 6.3101436e-01 },
-        { 7.6464028e-01, 6.4445733e-01 }, { 7.5327649e-01, 6.5770399e-01 },
-        { 7.4168324e-01, 6.7075030e-01 }, { 7.2986407e-01, 6.8359230e-01 },
-        { 7.1782258e-01, 6.9622607e-01 }, { 7.0556243e-01, 7.0864776e-01 },
-        { 6.9308736e-01, 7.2085360e-01 }, { 6.8040117e-01, 7.3283985e-01 },
-        { 6.6750772e-01, 7.4460287e-01 }, { 6.5441095e-01, 7.5613908e-01 },
-        { 6.4111483e-01, 7.6744496e-01 }, { 6.2762343e-01, 7.7851708e-01 },
-        { 6.1394084e-01, 7.8935204e-01 }, { 6.0007124e-01, 7.9994657e-01 },
-        { 5.8601885e-01, 8.1029742e-01 }, { 5.7178796e-01, 8.2040144e-01 },
-        { 5.5738289e-01, 8.3025557e-01 }, { 5.4280804e-01, 8.3985679e-01 },
-        { 5.2806785e-01, 8.4920218e-01 }, { 5.1316680e-01, 8.5828890e-01 },
-        { 4.9810944e-01, 8.6711417e-01 }, { 4.8290034e-01, 8.7567532e-01 },
-        { 4.6754415e-01, 8.8396972e-01 }, { 4.5204555e-01, 8.9199486e-01 },
-        { 4.3640924e-01, 8.9974828e-01 }, { 4.2064000e-01, 9.0722764e-01 },
-        { 4.0474263e-01, 9.1443064e-01 }, { 3.8872197e-01, 9.2135511e-01 },
-        { 3.7258290e-01, 9.2799891e-01 }, { 3.5633034e-01, 9.3436004e-01 },
-        { 3.3996924e-01, 9.4043656e-01 }, { 3.2350458e-01, 9.4622660e-01 },
-        { 3.0694138e-01, 9.5172842e-01 }, { 2.9028468e-01, 9.5694034e-01 },
-        { 2.7353955e-01, 9.6186076e-01 }, { 2.5671111e-01, 9.6648818e-01 },
-        { 2.3980446e-01, 9.7082121e-01 }, { 2.2282477e-01, 9.7485851e-01 },
-        { 2.0577721e-01, 9.7859887e-01 }, { 1.8866696e-01, 9.8204113e-01 },
-        { 1.7149925e-01, 9.8518425e-01 }, { 1.5427929e-01, 9.8802728e-01 },
-        { 1.3701234e-01, 9.9056934e-01 }, { 1.1970366e-01, 9.9280967e-01 },
-        { 1.0235851e-01, 9.9474757e-01 }, { 8.4982177e-02, 9.9638247e-01 },
-        { 6.7579962e-02, 9.9771386e-01 }, { 5.0157162e-02, 9.9874134e-01 },
-        { 3.2719083e-02, 9.9946459e-01 }, { 1.5271037e-02, 9.9988339e-01 },
-    }
+    __C( 3.2466714e-01, 7.0831495e-04 ), __C( 3.2460533e-01, 6.3744300e-03 ),
+    __C( 3.2444464e-01, 1.2038603e-02 ), __C( 3.2418513e-01, 1.7699110e-02 ),
+    __C( 3.2382686e-01, 2.3354225e-02 ), __C( 3.2336995e-01, 2.9002226e-02 ),
+    __C( 3.2281454e-01, 3.4641392e-02 ), __C( 3.2216080e-01, 4.0270007e-02 ),
+    __C( 3.2140893e-01, 4.5886355e-02 ), __C( 3.2055915e-01, 5.1488725e-02 ),
+    __C( 3.1961172e-01, 5.7075412e-02 ), __C( 3.1856694e-01, 6.2644713e-02 ),
+    __C( 3.1742512e-01, 6.8194931e-02 ), __C( 3.1618661e-01, 7.3724377e-02 ),
+    __C( 3.1485178e-01, 7.9231366e-02 ), __C( 3.1342105e-01, 8.4714220e-02 ),
+    __C( 3.1189485e-01, 9.0171269e-02 ), __C( 3.1027364e-01, 9.5600851e-02 ),
+    __C( 3.0855792e-01, 1.0100131e-01 ), __C( 3.0674821e-01, 1.0637101e-01 ),
+    __C( 3.0484506e-01, 1.1170830e-01 ), __C( 3.0284905e-01, 1.1701157e-01 ),
+    __C( 3.0076079e-01, 1.2227919e-01 ), __C( 2.9858092e-01, 1.2750957e-01 ),
+    __C( 2.9631010e-01, 1.3270110e-01 ), __C( 2.9394901e-01, 1.3785221e-01 ),
+    __C( 2.9149839e-01, 1.4296134e-01 ), __C( 2.8895897e-01, 1.4802691e-01 ),
+    __C( 2.8633154e-01, 1.5304740e-01 ), __C( 2.8361688e-01, 1.5802126e-01 ),
+    __C( 2.8081584e-01, 1.6294699e-01 ), __C( 2.7792925e-01, 1.6782308e-01 ),
+    __C( 2.7495800e-01, 1.7264806e-01 ), __C( 2.7190300e-01, 1.7742044e-01 ),
+    __C( 2.6876518e-01, 1.8213878e-01 ), __C( 2.6554548e-01, 1.8680164e-01 ),
+    __C( 2.6224490e-01, 1.9140760e-01 ), __C( 2.5886443e-01, 1.9595525e-01 ),
+    __C( 2.5540512e-01, 2.0044321e-01 ), __C( 2.5186800e-01, 2.0487012e-01 ),
+    __C( 2.4825416e-01, 2.0923462e-01 ), __C( 2.4456471e-01, 2.1353538e-01 ),
+    __C( 2.4080075e-01, 2.1777110e-01 ), __C( 2.3696345e-01, 2.2194049e-01 ),
+    __C( 2.3305396e-01, 2.2604227e-01 ), __C( 2.2907348e-01, 2.3007519e-01 ),
+    __C( 2.2502323e-01, 2.3403803e-01 ), __C( 2.2090443e-01, 2.3792959e-01 ),
+    __C( 2.1671834e-01, 2.4174866e-01 ), __C( 2.1246624e-01, 2.4549410e-01 ),
+    __C( 2.0814942e-01, 2.4916476e-01 ), __C( 2.0376919e-01, 2.5275952e-01 ),
+    __C( 1.9932689e-01, 2.5627728e-01 ), __C( 1.9482388e-01, 2.5971698e-01 ),
+    __C( 1.9026152e-01, 2.6307757e-01 ), __C( 1.8564121e-01, 2.6635803e-01 ),
+    __C( 1.8096434e-01, 2.6955734e-01 ), __C( 1.7623236e-01, 2.7267455e-01 ),
+    __C( 1.7144669e-01, 2.7570870e-01 ), __C( 1.6660880e-01, 2.7865887e-01 ),
+    __C( 1.6172015e-01, 2.8152415e-01 ), __C( 1.5678225e-01, 2.8430368e-01 ),
+    __C( 1.5179659e-01, 2.8699661e-01 ), __C( 1.4676469e-01, 2.8960211e-01 ),
+    __C( 1.4168808e-01, 2.9211940e-01 ), __C( 1.3656831e-01, 2.9454771e-01 ),
+    __C( 1.3140695e-01, 2.9688629e-01 ), __C( 1.2620555e-01, 2.9913444e-01 ),
+    __C( 1.2096571e-01, 3.0129147e-01 ), __C( 1.1568903e-01, 3.0335673e-01 ),
+    __C( 1.1037710e-01, 3.0532958e-01 ), __C( 1.0503156e-01, 3.0720942e-01 ),
+    __C( 9.9654017e-02, 3.0899568e-01 ), __C( 9.4246121e-02, 3.1068782e-01 ),
+    __C( 8.8809517e-02, 3.1228533e-01 ), __C( 8.3345860e-02, 3.1378770e-01 ),
+    __C( 7.7856816e-02, 3.1519450e-01 ), __C( 7.2344055e-02, 3.1650528e-01 ),
+    __C( 6.6809258e-02, 3.1771965e-01 ), __C( 6.1254110e-02, 3.1883725e-01 ),
+    __C( 5.5680304e-02, 3.1985772e-01 ), __C( 5.0089536e-02, 3.2078076e-01 ),
+    __C( 4.4483511e-02, 3.2160608e-01 ), __C( 3.8863936e-02, 3.2233345e-01 ),
+    __C( 3.3232523e-02, 3.2296262e-01 ), __C( 2.7590986e-02, 3.2349342e-01 ),
+    __C( 2.1941045e-02, 3.2392568e-01 ), __C( 1.6284421e-02, 3.2425927e-01 ),
+    __C( 1.0622836e-02, 3.2449408e-01 ), __C( 4.9580159e-03, 3.2463006e-01 ) }
 };
 
 static const struct lc3_mdct_rot_def mdct_rot_480 = {
     .n4 = 480/4, .w = (const struct lc3_complex []){
-        { 9.9999866e-01, 1.6362454e-03 }, { 9.9989157e-01, 1.4725683e-02 },
-        { 9.9961315e-01, 2.7812598e-02 }, { 9.9916346e-01, 4.0894747e-02 },
-        { 9.9854256e-01, 5.3969889e-02 }, { 9.9775057e-01, 6.7035784e-02 },
-        { 9.9678762e-01, 8.0090192e-02 }, { 9.9565388e-01, 9.3130877e-02 },
-        { 9.9434953e-01, 1.0615561e-01 }, { 9.9287481e-01, 1.1916214e-01 },
-        { 9.9122996e-01, 1.3214826e-01 }, { 9.8941527e-01, 1.4511174e-01 },
-        { 9.8743105e-01, 1.5805036e-01 }, { 9.8527764e-01, 1.7096189e-01 },
-        { 9.8295541e-01, 1.8384413e-01 }, { 9.8046475e-01, 1.9669487e-01 },
-        { 9.7780610e-01, 2.0951190e-01 }, { 9.7497990e-01, 2.2229304e-01 },
-        { 9.7198664e-01, 2.3503609e-01 }, { 9.6882685e-01, 2.4773886e-01 },
-        { 9.6550104e-01, 2.6039919e-01 }, { 9.6200980e-01, 2.7301490e-01 },
-        { 9.5835373e-01, 2.8558383e-01 }, { 9.5453345e-01, 2.9810383e-01 },
-        { 9.5054962e-01, 3.1057274e-01 }, { 9.4640291e-01, 3.2298845e-01 },
-        { 9.4209404e-01, 3.3534881e-01 }, { 9.3762375e-01, 3.4765171e-01 },
-        { 9.3299280e-01, 3.5989504e-01 }, { 9.2820199e-01, 3.7207670e-01 },
-        { 9.2325213e-01, 3.8419461e-01 }, { 9.1814408e-01, 3.9624670e-01 },
-        { 9.1287871e-01, 4.0823088e-01 }, { 9.0745693e-01, 4.2014512e-01 },
-        { 9.0187965e-01, 4.3198737e-01 }, { 8.9614785e-01, 4.4375560e-01 },
-        { 8.9026249e-01, 4.5544780e-01 }, { 8.8422459e-01, 4.6706195e-01 },
-        { 8.7803519e-01, 4.7859608e-01 }, { 8.7169533e-01, 4.9004821e-01 },
-        { 8.6520612e-01, 5.0141636e-01 }, { 8.5856866e-01, 5.1269860e-01 },
-        { 8.5178409e-01, 5.2389299e-01 }, { 8.4485357e-01, 5.3499762e-01 },
-        { 8.3777828e-01, 5.4601058e-01 }, { 8.3055945e-01, 5.5692998e-01 },
-        { 8.2319831e-01, 5.6775395e-01 }, { 8.1569611e-01, 5.7848064e-01 },
-        { 8.0805415e-01, 5.8910822e-01 }, { 8.0027373e-01, 5.9963485e-01 },
-        { 7.9235620e-01, 6.1005873e-01 }, { 7.8430289e-01, 6.2037809e-01 },
-        { 7.7611520e-01, 6.3059115e-01 }, { 7.6779452e-01, 6.4069616e-01 },
-        { 7.5934229e-01, 6.5069139e-01 }, { 7.5075995e-01, 6.6057513e-01 },
-        { 7.4204897e-01, 6.7034568e-01 }, { 7.3321084e-01, 6.8000137e-01 },
-        { 7.2424708e-01, 6.8954054e-01 }, { 7.1515923e-01, 6.9896157e-01 },
-        { 7.0594883e-01, 7.0826283e-01 }, { 6.9661748e-01, 7.1744274e-01 },
-        { 6.8716676e-01, 7.2649972e-01 }, { 6.7759830e-01, 7.3543221e-01 },
-        { 6.6791374e-01, 7.4423869e-01 }, { 6.5811474e-01, 7.5291765e-01 },
-        { 6.4820297e-01, 7.6146760e-01 }, { 6.3818013e-01, 7.6988708e-01 },
-        { 6.2804795e-01, 7.7817464e-01 }, { 6.1780815e-01, 7.8632887e-01 },
-        { 6.0746249e-01, 7.9434836e-01 }, { 5.9701275e-01, 8.0223175e-01 },
-        { 5.8646072e-01, 8.0997767e-01 }, { 5.7580819e-01, 8.1758481e-01 },
-        { 5.6505701e-01, 8.2505187e-01 }, { 5.5420900e-01, 8.3237755e-01 },
-        { 5.4326604e-01, 8.3956061e-01 }, { 5.3222998e-01, 8.4659981e-01 },
-        { 5.2110274e-01, 8.5349396e-01 }, { 5.0988620e-01, 8.6024186e-01 },
-        { 4.9858230e-01, 8.6684237e-01 }, { 4.8719297e-01, 8.7329434e-01 },
-        { 4.7572016e-01, 8.7959669e-01 }, { 4.6416584e-01, 8.8574831e-01 },
-        { 4.5253199e-01, 8.9174817e-01 }, { 4.4082059e-01, 8.9759523e-01 },
-        { 4.2903367e-01, 9.0328850e-01 }, { 4.1717323e-01, 9.0882699e-01 },
-        { 4.0524131e-01, 9.1420976e-01 }, { 3.9323996e-01, 9.1943588e-01 },
-        { 3.8117123e-01, 9.2450446e-01 }, { 3.6903718e-01, 9.2941463e-01 },
-        { 3.5683990e-01, 9.3416555e-01 }, { 3.4458148e-01, 9.3875641e-01 },
-        { 3.3226402e-01, 9.4318642e-01 }, { 3.1988962e-01, 9.4745482e-01 },
-        { 3.0746042e-01, 9.5156087e-01 }, { 2.9497853e-01, 9.5550388e-01 },
-        { 2.8244610e-01, 9.5928317e-01 }, { 2.6986527e-01, 9.6289809e-01 },
-        { 2.5723821e-01, 9.6634802e-01 }, { 2.4456706e-01, 9.6963238e-01 },
-        { 2.3185402e-01, 9.7275059e-01 }, { 2.1910124e-01, 9.7570213e-01 },
-        { 2.0631092e-01, 9.7848649e-01 }, { 1.9348526e-01, 9.8110318e-01 },
-        { 1.8062644e-01, 9.8355177e-01 }, { 1.6773667e-01, 9.8583184e-01 },
-        { 1.5481816e-01, 9.8794298e-01 }, { 1.4187312e-01, 9.8988485e-01 },
-        { 1.2890377e-01, 9.9165711e-01 }, { 1.1591234e-01, 9.9325945e-01 },
-        { 1.0290104e-01, 9.9469160e-01 }, { 8.9872115e-02, 9.9595331e-01 },
-        { 7.6827789e-02, 9.9704438e-01 }, { 6.3770300e-02, 9.9796460e-01 },
-        { 5.0701883e-02, 9.9871383e-01 }, { 3.7624779e-02, 9.9929194e-01 },
-        { 2.4541229e-02, 9.9969882e-01 }, { 1.1453473e-02, 9.9993441e-01 },
-    }
+    __C( 3.0213714e-01, 4.9437117e-04 ), __C( 3.0210478e-01, 4.4491817e-03 ),
+    __C( 3.0202066e-01, 8.4032299e-03 ), __C( 3.0188479e-01, 1.2355838e-02 ),
+    __C( 3.0169719e-01, 1.6306330e-02 ), __C( 3.0145790e-01, 2.0254027e-02 ),
+    __C( 3.0116696e-01, 2.4198254e-02 ), __C( 3.0082441e-01, 2.8138334e-02 ),
+    __C( 3.0043032e-01, 3.2073593e-02 ), __C( 2.9998475e-01, 3.6003357e-02 ),
+    __C( 2.9948778e-01, 3.9926952e-02 ), __C( 2.9893950e-01, 4.3843705e-02 ),
+    __C( 2.9833999e-01, 4.7752946e-02 ), __C( 2.9768936e-01, 5.1654004e-02 ),
+    __C( 2.9698773e-01, 5.5546213e-02 ), __C( 2.9623521e-01, 5.9428903e-02 ),
+    __C( 2.9543193e-01, 6.3301411e-02 ), __C( 2.9457803e-01, 6.7163072e-02 ),
+    __C( 2.9367365e-01, 7.1013225e-02 ), __C( 2.9271896e-01, 7.4851211e-02 ),
+    __C( 2.9171411e-01, 7.8676371e-02 ), __C( 2.9065928e-01, 8.2488050e-02 ),
+    __C( 2.8955464e-01, 8.6285595e-02 ), __C( 2.8840039e-01, 9.0068356e-02 ),
+    __C( 2.8719672e-01, 9.3835684e-02 ), __C( 2.8594385e-01, 9.7586934e-02 ),
+    __C( 2.8464198e-01, 1.0132146e-01 ), __C( 2.8329133e-01, 1.0503863e-01 ),
+    __C( 2.8189215e-01, 1.0873780e-01 ), __C( 2.8044466e-01, 1.1241834e-01 ),
+    __C( 2.7894913e-01, 1.1607962e-01 ), __C( 2.7740579e-01, 1.1972100e-01 ),
+    __C( 2.7581493e-01, 1.2334187e-01 ), __C( 2.7417680e-01, 1.2694161e-01 ),
+    __C( 2.7249170e-01, 1.3051960e-01 ), __C( 2.7075991e-01, 1.3407523e-01 ),
+    __C( 2.6898172e-01, 1.3760788e-01 ), __C( 2.6715744e-01, 1.4111695e-01 ),
+    __C( 2.6528739e-01, 1.4460184e-01 ), __C( 2.6337188e-01, 1.4806196e-01 ),
+    __C( 2.6141125e-01, 1.5149671e-01 ), __C( 2.5940582e-01, 1.5490549e-01 ),
+    __C( 2.5735595e-01, 1.5828774e-01 ), __C( 2.5526198e-01, 1.6164286e-01 ),
+    __C( 2.5312427e-01, 1.6497029e-01 ), __C( 2.5094319e-01, 1.6826945e-01 ),
+    __C( 2.4871911e-01, 1.7153978e-01 ), __C( 2.4645242e-01, 1.7478072e-01 ),
+    __C( 2.4414349e-01, 1.7799171e-01 ), __C( 2.4179274e-01, 1.8117220e-01 ),
+    __C( 2.3940055e-01, 1.8432165e-01 ), __C( 2.3696735e-01, 1.8743951e-01 ),
+    __C( 2.3449354e-01, 1.9052526e-01 ), __C( 2.3197955e-01, 1.9357836e-01 ),
+    __C( 2.2942581e-01, 1.9659830e-01 ), __C( 2.2683276e-01, 1.9958454e-01 ),
+    __C( 2.2420085e-01, 2.0253659e-01 ), __C( 2.2153052e-01, 2.0545394e-01 ),
+    __C( 2.1882223e-01, 2.0833608e-01 ), __C( 2.1607645e-01, 2.1118253e-01 ),
+    __C( 2.1329364e-01, 2.1399279e-01 ), __C( 2.1047429e-01, 2.1676638e-01 ),
+    __C( 2.0761888e-01, 2.1950284e-01 ), __C( 2.0472788e-01, 2.2220168e-01 ),
+    __C( 2.0180182e-01, 2.2486245e-01 ), __C( 1.9884117e-01, 2.2748469e-01 ),
+    __C( 1.9584645e-01, 2.3006795e-01 ), __C( 1.9281818e-01, 2.3261179e-01 ),
+    __C( 1.8975686e-01, 2.3511577e-01 ), __C( 1.8666303e-01, 2.3757947e-01 ),
+    __C( 1.8353722e-01, 2.4000246e-01 ), __C( 1.8037996e-01, 2.4238433e-01 ),
+    __C( 1.7719180e-01, 2.4472466e-01 ), __C( 1.7397327e-01, 2.4702306e-01 ),
+    __C( 1.7072493e-01, 2.4927914e-01 ), __C( 1.6744734e-01, 2.5149250e-01 ),
+    __C( 1.6414106e-01, 2.5366278e-01 ), __C( 1.6080666e-01, 2.5578958e-01 ),
+    __C( 1.5744470e-01, 2.5787256e-01 ), __C( 1.5405576e-01, 2.5991136e-01 ),
+    __C( 1.5064043e-01, 2.6190562e-01 ), __C( 1.4719929e-01, 2.6385500e-01 ),
+    __C( 1.4373292e-01, 2.6575918e-01 ), __C( 1.4024192e-01, 2.6761782e-01 ),
+    __C( 1.3672690e-01, 2.6943060e-01 ), __C( 1.3318845e-01, 2.7119722e-01 ),
+    __C( 1.2962718e-01, 2.7291736e-01 ), __C( 1.2604369e-01, 2.7459075e-01 ),
+    __C( 1.2243861e-01, 2.7621709e-01 ), __C( 1.1881255e-01, 2.7779609e-01 ),
+    __C( 1.1516614e-01, 2.7932750e-01 ), __C( 1.1149999e-01, 2.8081105e-01 ),
+    __C( 1.0781473e-01, 2.8224648e-01 ), __C( 1.0411100e-01, 2.8363355e-01 ),
+    __C( 1.0038943e-01, 2.8497202e-01 ), __C( 9.6650664e-02, 2.8626167e-01 ),
+    __C( 9.2895335e-02, 2.8750226e-01 ), __C( 8.9124088e-02, 2.8869359e-01 ),
+    __C( 8.5337570e-02, 2.8983546e-01 ), __C( 8.1536430e-02, 2.9092766e-01 ),
+    __C( 7.7721319e-02, 2.9197001e-01 ), __C( 7.3892891e-02, 2.9296234e-01 ),
+    __C( 7.0051802e-02, 2.9390447e-01 ), __C( 6.6198710e-02, 2.9479624e-01 ),
+    __C( 6.2334275e-02, 2.9563750e-01 ), __C( 5.8459159e-02, 2.9642810e-01 ),
+    __C( 5.4574027e-02, 2.9716791e-01 ), __C( 5.0679543e-02, 2.9785681e-01 ),
+    __C( 4.6776376e-02, 2.9849466e-01 ), __C( 4.2865195e-02, 2.9908137e-01 ),
+    __C( 3.8946668e-02, 2.9961684e-01 ), __C( 3.5021468e-02, 3.0010097e-01 ),
+    __C( 3.1090267e-02, 3.0053367e-01 ), __C( 2.7153740e-02, 3.0091488e-01 ),
+    __C( 2.3212559e-02, 3.0124454e-01 ), __C( 1.9267401e-02, 3.0152257e-01 ),
+    __C( 1.5318942e-02, 3.0174894e-01 ), __C( 1.1367858e-02, 3.0192361e-01 ),
+    __C( 7.4148264e-03, 3.0204654e-01 ), __C( 3.4605241e-03, 3.0211772e-01 ) }
 };
 
 static const struct lc3_mdct_rot_def mdct_rot_640 = {
     .n4 = 640/4, .w = (const struct lc3_complex []){
-        { 9.9999925e-01, 1.2271843e-03 }, { 9.9993901e-01, 1.1044437e-02 },
-        { 9.9978239e-01, 2.0860625e-02 }, { 9.9952942e-01, 3.0674803e-02 },
-        { 9.9918010e-01, 4.0486024e-02 }, { 9.9873449e-01, 5.0293344e-02 },
-        { 9.9819261e-01, 6.0095815e-02 }, { 9.9755453e-01, 6.9892495e-02 },
-        { 9.9682030e-01, 7.9682438e-02 }, { 9.9598999e-01, 8.9464701e-02 },
-        { 9.9506369e-01, 9.9238342e-02 }, { 9.9404148e-01, 1.0900242e-01 },
-        { 9.9292347e-01, 1.1875599e-01 }, { 9.9170975e-01, 1.2849811e-01 },
-        { 9.9040046e-01, 1.3822785e-01 }, { 9.8899570e-01, 1.4794427e-01 },
-        { 9.8749562e-01, 1.5764642e-01 }, { 9.8590037e-01, 1.6733339e-01 },
-        { 9.8421009e-01, 1.7700422e-01 }, { 9.8242496e-01, 1.8665800e-01 },
-        { 9.8054513e-01, 1.9629378e-01 }, { 9.7857080e-01, 2.0591064e-01 },
-        { 9.7650215e-01, 2.1550766e-01 }, { 9.7433938e-01, 2.2508391e-01 },
-        { 9.7208271e-01, 2.3463847e-01 }, { 9.6973234e-01, 2.4417040e-01 },
-        { 9.6728851e-01, 2.5367881e-01 }, { 9.6475145e-01, 2.6316276e-01 },
-        { 9.6212140e-01, 2.7262136e-01 }, { 9.5939863e-01, 2.8205367e-01 },
-        { 9.5658338e-01, 2.9145880e-01 }, { 9.5367594e-01, 3.0083584e-01 },
-        { 9.5067658e-01, 3.1018388e-01 }, { 9.4758559e-01, 3.1950203e-01 },
-        { 9.4440327e-01, 3.2878938e-01 }, { 9.4112993e-01, 3.3804505e-01 },
-        { 9.3776588e-01, 3.4726813e-01 }, { 9.3431145e-01, 3.5645774e-01 },
-        { 9.3076696e-01, 3.6561300e-01 }, { 9.2713277e-01, 3.7473302e-01 },
-        { 9.2340921e-01, 3.8381691e-01 }, { 9.1959666e-01, 3.9286382e-01 },
-        { 9.1569547e-01, 4.0187286e-01 }, { 9.1170603e-01, 4.1084317e-01 },
-        { 9.0762872e-01, 4.1977388e-01 }, { 9.0346392e-01, 4.2866413e-01 },
-        { 8.9921205e-01, 4.3751307e-01 }, { 8.9487351e-01, 4.4631984e-01 },
-        { 8.9044872e-01, 4.5508359e-01 }, { 8.8593811e-01, 4.6380348e-01 },
-        { 8.8134211e-01, 4.7247866e-01 }, { 8.7666116e-01, 4.8110831e-01 },
-        { 8.7189572e-01, 4.8969159e-01 }, { 8.6704625e-01, 4.9822767e-01 },
-        { 8.6211320e-01, 5.0671573e-01 }, { 8.5709707e-01, 5.1515495e-01 },
-        { 8.5199832e-01, 5.2354452e-01 }, { 8.4681746e-01, 5.3188363e-01 },
-        { 8.4155498e-01, 5.4017147e-01 }, { 8.3621139e-01, 5.4840726e-01 },
-        { 8.3078720e-01, 5.5659018e-01 }, { 8.2528294e-01, 5.6471946e-01 },
-        { 8.1969914e-01, 5.7279431e-01 }, { 8.1403633e-01, 5.8081396e-01 },
-        { 8.0829506e-01, 5.8877762e-01 }, { 8.0247589e-01, 5.9668454e-01 },
-        { 7.9657938e-01, 6.0453395e-01 }, { 7.9060609e-01, 6.1232509e-01 },
-        { 7.8455660e-01, 6.2005721e-01 }, { 7.7843149e-01, 6.2772957e-01 },
-        { 7.7223135e-01, 6.3534143e-01 }, { 7.6595679e-01, 6.4289206e-01 },
-        { 7.5960840e-01, 6.5038072e-01 }, { 7.5318680e-01, 6.5780669e-01 },
-        { 7.4669260e-01, 6.6516927e-01 }, { 7.4012644e-01, 6.7246773e-01 },
-        { 7.3348894e-01, 6.7970138e-01 }, { 7.2678075e-01, 6.8686952e-01 },
-        { 7.2000251e-01, 6.9397146e-01 }, { 7.1315487e-01, 7.0100651e-01 },
-        { 7.0623850e-01, 7.0797400e-01 }, { 6.9925406e-01, 7.1487325e-01 },
-        { 6.9220222e-01, 7.2170360e-01 }, { 6.8508367e-01, 7.2846439e-01 },
-        { 6.7789909e-01, 7.3515497e-01 }, { 6.7064917e-01, 7.4177469e-01 },
-        { 6.6333461e-01, 7.4832292e-01 }, { 6.5595612e-01, 7.5479903e-01 },
-        { 6.4851440e-01, 7.6120239e-01 }, { 6.4101018e-01, 7.6753238e-01 },
-        { 6.3344418e-01, 7.7378839e-01 }, { 6.2581713e-01, 7.7996982e-01 },
-        { 6.1812975e-01, 7.8607608e-01 }, { 6.1038281e-01, 7.9210658e-01 },
-        { 6.0257703e-01, 7.9806073e-01 }, { 5.9471317e-01, 8.0393796e-01 },
-        { 5.8679200e-01, 8.0973771e-01 }, { 5.7881426e-01, 8.1545941e-01 },
-        { 5.7078075e-01, 8.2110251e-01 }, { 5.6269221e-01, 8.2666648e-01 },
-        { 5.5454945e-01, 8.3215077e-01 }, { 5.4635323e-01, 8.3755486e-01 },
-        { 5.3810436e-01, 8.4287822e-01 }, { 5.2980362e-01, 8.4812034e-01 },
-        { 5.2145182e-01, 8.5328072e-01 }, { 5.1304977e-01, 8.5835886e-01 },
-        { 5.0459826e-01, 8.6335427e-01 }, { 4.9609812e-01, 8.6826647e-01 },
-        { 4.8755016e-01, 8.7309498e-01 }, { 4.7895521e-01, 8.7783934e-01 },
-        { 4.7031410e-01, 8.8249909e-01 }, { 4.6162766e-01, 8.8707379e-01 },
-        { 4.5289673e-01, 8.9156298e-01 }, { 4.4412214e-01, 8.9596625e-01 },
-        { 4.3530476e-01, 9.0028316e-01 }, { 4.2644541e-01, 9.0451330e-01 },
-        { 4.1754496e-01, 9.0865626e-01 }, { 4.0860427e-01, 9.1271165e-01 },
-        { 3.9962420e-01, 9.1667906e-01 }, { 3.9060561e-01, 9.2055812e-01 },
-        { 3.8154937e-01, 9.2434846e-01 }, { 3.7245636e-01, 9.2804971e-01 },
-        { 3.6332745e-01, 9.3166151e-01 }, { 3.5416353e-01, 9.3518351e-01 },
-        { 3.4496546e-01, 9.3861538e-01 }, { 3.3573415e-01, 9.4195678e-01 },
-        { 3.2647048e-01, 9.4520740e-01 }, { 3.1717535e-01, 9.4836691e-01 },
-        { 3.0784964e-01, 9.5143502e-01 }, { 2.9849426e-01, 9.5441143e-01 },
-        { 2.8911012e-01, 9.5729585e-01 }, { 2.7969810e-01, 9.6008800e-01 },
-        { 2.7025914e-01, 9.6278762e-01 }, { 2.6079412e-01, 9.6539444e-01 },
-        { 2.5130396e-01, 9.6790822e-01 }, { 2.4178959e-01, 9.7032870e-01 },
-        { 2.3225191e-01, 9.7265567e-01 }, { 2.2269185e-01, 9.7488889e-01 },
-        { 2.1311032e-01, 9.7702814e-01 }, { 2.0350825e-01, 9.7907323e-01 },
-        { 1.9388657e-01, 9.8102395e-01 }, { 1.8424620e-01, 9.8288012e-01 },
-        { 1.7458807e-01, 9.8464156e-01 }, { 1.6491312e-01, 9.8630810e-01 },
-        { 1.5522227e-01, 9.8787957e-01 }, { 1.4551646e-01, 9.8935583e-01 },
-        { 1.3579663e-01, 9.9073673e-01 }, { 1.2606370e-01, 9.9202215e-01 },
-        { 1.1631863e-01, 9.9321195e-01 }, { 1.0656235e-01, 9.9430602e-01 },
-        { 9.6795791e-02, 9.9530426e-01 }, { 8.7019907e-02, 9.9620657e-01 },
-        { 7.7235635e-02, 9.9701287e-01 }, { 6.7443920e-02, 9.9772307e-01 },
-        { 5.7645703e-02, 9.9833710e-01 }, { 4.7841931e-02, 9.9885492e-01 },
-        { 3.8033548e-02, 9.9927646e-01 }, { 2.8221499e-02, 9.9960169e-01 },
-        { 1.8406730e-02, 9.9983058e-01 }, { 8.5901868e-03, 9.9996310e-01 },
-    }
+    __C( 2.8117045e-01, 3.4504823e-04 ), __C( 2.8115351e-01, 3.1053717e-03 ),
+    __C( 2.8110948e-01, 5.8653959e-03 ), __C( 2.8103835e-01, 8.6248547e-03 ),
+    __C( 2.8094013e-01, 1.1383482e-02 ), __C( 2.8081484e-01, 1.4141013e-02 ),
+    __C( 2.8066248e-01, 1.6897180e-02 ), __C( 2.8048307e-01, 1.9651719e-02 ),
+    __C( 2.8027662e-01, 2.2404364e-02 ), __C( 2.8004317e-01, 2.5154849e-02 ),
+    __C( 2.7978272e-01, 2.7902910e-02 ), __C( 2.7949530e-01, 3.0648282e-02 ),
+    __C( 2.7918095e-01, 3.3390700e-02 ), __C( 2.7883969e-01, 3.6129899e-02 ),
+    __C( 2.7847155e-01, 3.8865616e-02 ), __C( 2.7807658e-01, 4.1597587e-02 ),
+    __C( 2.7765480e-01, 4.4325549e-02 ), __C( 2.7720626e-01, 4.7049239e-02 ),
+    __C( 2.7673100e-01, 4.9768394e-02 ), __C( 2.7622908e-01, 5.2482752e-02 ),
+    __C( 2.7570052e-01, 5.5192052e-02 ), __C( 2.7514540e-01, 5.7896032e-02 ),
+    __C( 2.7456376e-01, 6.0594433e-02 ), __C( 2.7395565e-01, 6.3286992e-02 ),
+    __C( 2.7332114e-01, 6.5973453e-02 ), __C( 2.7266028e-01, 6.8653554e-02 ),
+    __C( 2.7197315e-01, 7.1327039e-02 ), __C( 2.7125980e-01, 7.3993649e-02 ),
+    __C( 2.7052031e-01, 7.6653127e-02 ), __C( 2.6975475e-01, 7.9305217e-02 ),
+    __C( 2.6896318e-01, 8.1949664e-02 ), __C( 2.6814570e-01, 8.4586212e-02 ),
+    __C( 2.6730236e-01, 8.7214608e-02 ), __C( 2.6643327e-01, 8.9834598e-02 ),
+    __C( 2.6553849e-01, 9.2445929e-02 ), __C( 2.6461813e-01, 9.5048350e-02 ),
+    __C( 2.6367225e-01, 9.7641610e-02 ), __C( 2.6270097e-01, 1.0022546e-01 ),
+    __C( 2.6170436e-01, 1.0279965e-01 ), __C( 2.6068253e-01, 1.0536393e-01 ),
+    __C( 2.5963558e-01, 1.0791806e-01 ), __C( 2.5856360e-01, 1.1046178e-01 ),
+    __C( 2.5746670e-01, 1.1299486e-01 ), __C( 2.5634499e-01, 1.1551705e-01 ),
+    __C( 2.5519857e-01, 1.1802810e-01 ), __C( 2.5402755e-01, 1.2052778e-01 ),
+    __C( 2.5283205e-01, 1.2301584e-01 ), __C( 2.5161218e-01, 1.2549204e-01 ),
+    __C( 2.5036806e-01, 1.2795615e-01 ), __C( 2.4909981e-01, 1.3040793e-01 ),
+    __C( 2.4780754e-01, 1.3284714e-01 ), __C( 2.4649140e-01, 1.3527354e-01 ),
+    __C( 2.4515150e-01, 1.3768691e-01 ), __C( 2.4378797e-01, 1.4008700e-01 ),
+    __C( 2.4240094e-01, 1.4247360e-01 ), __C( 2.4099055e-01, 1.4484646e-01 ),
+    __C( 2.3955693e-01, 1.4720536e-01 ), __C( 2.3810023e-01, 1.4955007e-01 ),
+    __C( 2.3662057e-01, 1.5188037e-01 ), __C( 2.3511811e-01, 1.5419603e-01 ),
+    __C( 2.3359299e-01, 1.5649683e-01 ), __C( 2.3204535e-01, 1.5878255e-01 ),
+    __C( 2.3047535e-01, 1.6105296e-01 ), __C( 2.2888313e-01, 1.6330785e-01 ),
+    __C( 2.2726886e-01, 1.6554699e-01 ), __C( 2.2563268e-01, 1.6777019e-01 ),
+    __C( 2.2397475e-01, 1.6997721e-01 ), __C( 2.2229524e-01, 1.7216785e-01 ),
+    __C( 2.2059430e-01, 1.7434190e-01 ), __C( 2.1887210e-01, 1.7649914e-01 ),
+    __C( 2.1712880e-01, 1.7863937e-01 ), __C( 2.1536458e-01, 1.8076239e-01 ),
+    __C( 2.1357960e-01, 1.8286798e-01 ), __C( 2.1177403e-01, 1.8495594e-01 ),
+    __C( 2.0994805e-01, 1.8702608e-01 ), __C( 2.0810184e-01, 1.8907820e-01 ),
+    __C( 2.0623557e-01, 1.9111209e-01 ), __C( 2.0434942e-01, 1.9312756e-01 ),
+    __C( 2.0244358e-01, 1.9512442e-01 ), __C( 2.0051823e-01, 1.9710247e-01 ),
+    __C( 1.9857355e-01, 1.9906152e-01 ), __C( 1.9660973e-01, 2.0100139e-01 ),
+    __C( 1.9462696e-01, 2.0292188e-01 ), __C( 1.9262543e-01, 2.0482282e-01 ),
+    __C( 1.9060533e-01, 2.0670401e-01 ), __C( 1.8856687e-01, 2.0856528e-01 ),
+    __C( 1.8651023e-01, 2.1040645e-01 ), __C( 1.8443562e-01, 2.1222734e-01 ),
+    __C( 1.8234322e-01, 2.1402778e-01 ), __C( 1.8023326e-01, 2.1580759e-01 ),
+    __C( 1.7810592e-01, 2.1756659e-01 ), __C( 1.7596142e-01, 2.1930463e-01 ),
+    __C( 1.7379995e-01, 2.2102153e-01 ), __C( 1.7162174e-01, 2.2271713e-01 ),
+    __C( 1.6942698e-01, 2.2439126e-01 ), __C( 1.6721590e-01, 2.2604377e-01 ),
+    __C( 1.6498869e-01, 2.2767449e-01 ), __C( 1.6274559e-01, 2.2928326e-01 ),
+    __C( 1.6048680e-01, 2.3086994e-01 ), __C( 1.5821254e-01, 2.3243436e-01 ),
+    __C( 1.5592304e-01, 2.3397638e-01 ), __C( 1.5361850e-01, 2.3549585e-01 ),
+    __C( 1.5129916e-01, 2.3699263e-01 ), __C( 1.4896524e-01, 2.3846656e-01 ),
+    __C( 1.4661696e-01, 2.3991751e-01 ), __C( 1.4425454e-01, 2.4134533e-01 ),
+    __C( 1.4187823e-01, 2.4274989e-01 ), __C( 1.3948824e-01, 2.4413106e-01 ),
+    __C( 1.3708480e-01, 2.4548869e-01 ), __C( 1.3466815e-01, 2.4682267e-01 ),
+    __C( 1.3223853e-01, 2.4813285e-01 ), __C( 1.2979616e-01, 2.4941912e-01 ),
+    __C( 1.2734127e-01, 2.5068135e-01 ), __C( 1.2487412e-01, 2.5191942e-01 ),
+    __C( 1.2239493e-01, 2.5313321e-01 ), __C( 1.1990394e-01, 2.5432260e-01 ),
+    __C( 1.1740139e-01, 2.5548748e-01 ), __C( 1.1488753e-01, 2.5662774e-01 ),
+    __C( 1.1236260e-01, 2.5774326e-01 ), __C( 1.0982684e-01, 2.5883394e-01 ),
+    __C( 1.0728049e-01, 2.5989967e-01 ), __C( 1.0472380e-01, 2.6094035e-01 ),
+    __C( 1.0215702e-01, 2.6195588e-01 ), __C( 9.9580393e-02, 2.6294617e-01 ),
+    __C( 9.6994168e-02, 2.6391111e-01 ), __C( 9.4398594e-02, 2.6485061e-01 ),
+    __C( 9.1793922e-02, 2.6576459e-01 ), __C( 8.9180402e-02, 2.6665295e-01 ),
+    __C( 8.6558287e-02, 2.6751562e-01 ), __C( 8.3927830e-02, 2.6835249e-01 ),
+    __C( 8.1289283e-02, 2.6916351e-01 ), __C( 7.8642901e-02, 2.6994858e-01 ),
+    __C( 7.5988940e-02, 2.7070763e-01 ), __C( 7.3327655e-02, 2.7144059e-01 ),
+    __C( 7.0659302e-02, 2.7214739e-01 ), __C( 6.7984139e-02, 2.7282796e-01 ),
+    __C( 6.5302424e-02, 2.7348224e-01 ), __C( 6.2614414e-02, 2.7411015e-01 ),
+    __C( 5.9920370e-02, 2.7471165e-01 ), __C( 5.7220550e-02, 2.7528667e-01 ),
+    __C( 5.4515216e-02, 2.7583516e-01 ), __C( 5.1804627e-02, 2.7635706e-01 ),
+    __C( 4.9089045e-02, 2.7685232e-01 ), __C( 4.6368731e-02, 2.7732090e-01 ),
+    __C( 4.3643949e-02, 2.7776275e-01 ), __C( 4.0914960e-02, 2.7817783e-01 ),
+    __C( 3.8182028e-02, 2.7856610e-01 ), __C( 3.5445415e-02, 2.7892752e-01 ),
+    __C( 3.2705387e-02, 2.7926206e-01 ), __C( 2.9962206e-02, 2.7956968e-01 ),
+    __C( 2.7216137e-02, 2.7985036e-01 ), __C( 2.4467445e-02, 2.8010406e-01 ),
+    __C( 2.1716395e-02, 2.8033077e-01 ), __C( 1.8963252e-02, 2.8053046e-01 ),
+    __C( 1.6208281e-02, 2.8070310e-01 ), __C( 1.3451748e-02, 2.8084870e-01 ),
+    __C( 1.0693918e-02, 2.8096723e-01 ), __C( 7.9350576e-03, 2.8105867e-01 ),
+    __C( 5.1754324e-03, 2.8112303e-01 ), __C( 2.4153085e-03, 2.8116029e-01 ) }
 };
 
 static const struct lc3_mdct_rot_def mdct_rot_720 = {
     .n4 = 720/4, .w = (const struct lc3_complex []){
-        { 9.9999941e-01, 1.0908306e-03 }, { 9.9995181e-01, 9.8173193e-03 },
-        { 9.9982806e-01, 1.8543060e-02 }, { 9.9962818e-01, 2.7267389e-02 },
-        { 9.9935216e-01, 3.5989642e-02 }, { 9.9900005e-01, 4.4709154e-02 },
-        { 9.9857185e-01, 5.3425261e-02 }, { 9.9806761e-01, 6.2137299e-02 },
-        { 9.9748736e-01, 7.0844606e-02 }, { 9.9683116e-01, 7.9546517e-02 },
-        { 9.9609903e-01, 8.8242371e-02 }, { 9.9529105e-01, 9.6931504e-02 },
-        { 9.9440728e-01, 1.0561326e-01 }, { 9.9344778e-01, 1.1428696e-01 },
-        { 9.9241262e-01, 1.2295197e-01 }, { 9.9130189e-01, 1.3160761e-01 },
-        { 9.9011567e-01, 1.4025323e-01 }, { 9.8885404e-01, 1.4888817e-01 },
-        { 9.8751711e-01, 1.5751177e-01 }, { 9.8610498e-01, 1.6612338e-01 },
-        { 9.8461775e-01, 1.7472233e-01 }, { 9.8305553e-01, 1.8330798e-01 },
-        { 9.8141846e-01, 1.9187967e-01 }, { 9.7970664e-01, 2.0043675e-01 },
-        { 9.7792022e-01, 2.0897856e-01 }, { 9.7605933e-01, 2.1750446e-01 },
-        { 9.7412410e-01, 2.2601379e-01 }, { 9.7211469e-01, 2.3450592e-01 },
-        { 9.7003125e-01, 2.4298018e-01 }, { 9.6787394e-01, 2.5143594e-01 },
-        { 9.6564292e-01, 2.5987255e-01 }, { 9.6333837e-01, 2.6828937e-01 },
-        { 9.6096045e-01, 2.7668577e-01 }, { 9.5850935e-01, 2.8506109e-01 },
-        { 9.5598526e-01, 2.9341470e-01 }, { 9.5338836e-01, 3.0174596e-01 },
-        { 9.5071887e-01, 3.1005425e-01 }, { 9.4797697e-01, 3.1833893e-01 },
-        { 9.4516287e-01, 3.2659936e-01 }, { 9.4227680e-01, 3.3483492e-01 },
-        { 9.3931898e-01, 3.4304499e-01 }, { 9.3628962e-01, 3.5122892e-01 },
-        { 9.3318895e-01, 3.5938611e-01 }, { 9.3001722e-01, 3.6751594e-01 },
-        { 9.2677467e-01, 3.7561777e-01 }, { 9.2346154e-01, 3.8369100e-01 },
-        { 9.2007808e-01, 3.9173501e-01 }, { 9.1662456e-01, 3.9974919e-01 },
-        { 9.1310123e-01, 4.0773292e-01 }, { 9.0950837e-01, 4.1568561e-01 },
-        { 9.0584624e-01, 4.2360664e-01 }, { 9.0211513e-01, 4.3149541e-01 },
-        { 8.9831532e-01, 4.3935132e-01 }, { 8.9444710e-01, 4.4717377e-01 },
-        { 8.9051077e-01, 4.5496217e-01 }, { 8.8650662e-01, 4.6271592e-01 },
-        { 8.8243495e-01, 4.7043443e-01 }, { 8.7829609e-01, 4.7811712e-01 },
-        { 8.7409034e-01, 4.8576339e-01 }, { 8.6981803e-01, 4.9337268e-01 },
-        { 8.6547947e-01, 5.0094439e-01 }, { 8.6107501e-01, 5.0847795e-01 },
-        { 8.5660497e-01, 5.1597279e-01 }, { 8.5206970e-01, 5.2342834e-01 },
-        { 8.4746954e-01, 5.3084403e-01 }, { 8.4280484e-01, 5.3821929e-01 },
-        { 8.3807596e-01, 5.4555356e-01 }, { 8.3328326e-01, 5.5284629e-01 },
-        { 8.2842709e-01, 5.6009691e-01 }, { 8.2350785e-01, 5.6730488e-01 },
-        { 8.1852588e-01, 5.7446965e-01 }, { 8.1348159e-01, 5.8159067e-01 },
-        { 8.0837534e-01, 5.8866740e-01 }, { 8.0320753e-01, 5.9569930e-01 },
-        { 7.9797856e-01, 6.0268584e-01 }, { 7.9268881e-01, 6.0962648e-01 },
-        { 7.8733870e-01, 6.1652070e-01 }, { 7.8192863e-01, 6.2336796e-01 },
-        { 7.7645902e-01, 6.3016775e-01 }, { 7.7093027e-01, 6.3691955e-01 },
-        { 7.6534281e-01, 6.4362285e-01 }, { 7.5969708e-01, 6.5027714e-01 },
-        { 7.5399348e-01, 6.5688190e-01 }, { 7.4823247e-01, 6.6343664e-01 },
-        { 7.4241448e-01, 6.6994085e-01 }, { 7.3653994e-01, 6.7639405e-01 },
-        { 7.3060932e-01, 6.8279574e-01 }, { 7.2462306e-01, 6.8914543e-01 },
-        { 7.1858162e-01, 6.9544264e-01 }, { 7.1248545e-01, 7.0168688e-01 },
-        { 7.0633503e-01, 7.0787769e-01 }, { 7.0013081e-01, 7.1401460e-01 },
-        { 6.9387328e-01, 7.2009713e-01 }, { 6.8756291e-01, 7.2612482e-01 },
-        { 6.8120017e-01, 7.3209721e-01 }, { 6.7478556e-01, 7.3801385e-01 },
-        { 6.6831956e-01, 7.4387429e-01 }, { 6.6180267e-01, 7.4967808e-01 },
-        { 6.5523538e-01, 7.5542478e-01 }, { 6.4861819e-01, 7.6111395e-01 },
-        { 6.4195160e-01, 7.6674516e-01 }, { 6.3523613e-01, 7.7231798e-01 },
-        { 6.2847228e-01, 7.7783198e-01 }, { 6.2166057e-01, 7.8328675e-01 },
-        { 6.1480152e-01, 7.8868187e-01 }, { 6.0789565e-01, 7.9401692e-01 },
-        { 6.0094349e-01, 7.9929151e-01 }, { 5.9394556e-01, 8.0450523e-01 },
-        { 5.8690240e-01, 8.0965769e-01 }, { 5.7981455e-01, 8.1474848e-01 },
-        { 5.7268254e-01, 8.1977723e-01 }, { 5.6550692e-01, 8.2474355e-01 },
-        { 5.5828823e-01, 8.2964706e-01 }, { 5.5102703e-01, 8.3448740e-01 },
-        { 5.4372386e-01, 8.3926418e-01 }, { 5.3637929e-01, 8.4397705e-01 },
-        { 5.2899387e-01, 8.4862564e-01 }, { 5.2156817e-01, 8.5320961e-01 },
-        { 5.1410274e-01, 8.5772861e-01 }, { 5.0659817e-01, 8.6218229e-01 },
-        { 4.9905502e-01, 8.6657030e-01 }, { 4.9147386e-01, 8.7089233e-01 },
-        { 4.8385527e-01, 8.7514803e-01 }, { 4.7619984e-01, 8.7933709e-01 },
-        { 4.6850814e-01, 8.8345918e-01 }, { 4.6078076e-01, 8.8751399e-01 },
-        { 4.5301829e-01, 8.9150122e-01 }, { 4.4522133e-01, 8.9542056e-01 },
-        { 4.3739045e-01, 8.9927170e-01 }, { 4.2952627e-01, 9.0305436e-01 },
-        { 4.2162938e-01, 9.0676825e-01 }, { 4.1370038e-01, 9.1041309e-01 },
-        { 4.0573988e-01, 9.1398859e-01 }, { 3.9774847e-01, 9.1749450e-01 },
-        { 3.8972678e-01, 9.2093053e-01 }, { 3.8167541e-01, 9.2429643e-01 },
-        { 3.7359497e-01, 9.2759194e-01 }, { 3.6548608e-01, 9.3081681e-01 },
-        { 3.5734936e-01, 9.3397079e-01 }, { 3.4918542e-01, 9.3705365e-01 },
-        { 3.4099489e-01, 9.4006515e-01 }, { 3.3277840e-01, 9.4300506e-01 },
-        { 3.2453656e-01, 9.4587315e-01 }, { 3.1627001e-01, 9.4866922e-01 },
-        { 3.0797937e-01, 9.5139304e-01 }, { 2.9966528e-01, 9.5404440e-01 },
-        { 2.9132836e-01, 9.5662311e-01 }, { 2.8296927e-01, 9.5912898e-01 },
-        { 2.7458862e-01, 9.6156180e-01 }, { 2.6618706e-01, 9.6392139e-01 },
-        { 2.5776523e-01, 9.6620758e-01 }, { 2.4932377e-01, 9.6842019e-01 },
-        { 2.4086332e-01, 9.7055904e-01 }, { 2.3238453e-01, 9.7262399e-01 },
-        { 2.2388805e-01, 9.7461487e-01 }, { 2.1537451e-01, 9.7653153e-01 },
-        { 2.0684457e-01, 9.7837382e-01 }, { 1.9829888e-01, 9.8014160e-01 },
-        { 1.8973809e-01, 9.8183474e-01 }, { 1.8116285e-01, 9.8345311e-01 },
-        { 1.7257382e-01, 9.8499659e-01 }, { 1.6397164e-01, 9.8646505e-01 },
-        { 1.5535697e-01, 9.8785840e-01 }, { 1.4673047e-01, 9.8917651e-01 },
-        { 1.3809280e-01, 9.9041929e-01 }, { 1.2944462e-01, 9.9158665e-01 },
-        { 1.2078657e-01, 9.9267850e-01 }, { 1.1211933e-01, 9.9369475e-01 },
-        { 1.0344355e-01, 9.9463533e-01 }, { 9.4759887e-02, 9.9550016e-01 },
-        { 8.6069011e-02, 9.9628918e-01 }, { 7.7371581e-02, 9.9700233e-01 },
-        { 6.8668259e-02, 9.9763955e-01 }, { 5.9959707e-02, 9.9820080e-01 },
-        { 5.1246589e-02, 9.9868603e-01 }, { 4.2529569e-02, 9.9909521e-01 },
-        { 3.3809310e-02, 9.9942830e-01 }, { 2.5086476e-02, 9.9968528e-01 },
-        { 1.6361732e-02, 9.9986614e-01 }, { 7.6357413e-03, 9.9997085e-01 },
-    }
+    __C( 2.7301192e-01, 2.9780993e-04 ), __C( 2.7299893e-01, 2.6802468e-03 ),
+    __C( 2.7296515e-01, 5.0624796e-03 ), __C( 2.7291057e-01, 7.4443269e-03 ),
+    __C( 2.7283522e-01, 9.8256072e-03 ), __C( 2.7273909e-01, 1.2206139e-02 ),
+    __C( 2.7262218e-01, 1.4585742e-02 ), __C( 2.7248452e-01, 1.6964234e-02 ),
+    __C( 2.7232611e-01, 1.9341434e-02 ), __C( 2.7214695e-01, 2.1717161e-02 ),
+    __C( 2.7194708e-01, 2.4091234e-02 ), __C( 2.7172649e-01, 2.6463472e-02 ),
+    __C( 2.7148521e-01, 2.8833695e-02 ), __C( 2.7122325e-01, 3.1201723e-02 ),
+    __C( 2.7094064e-01, 3.3567374e-02 ), __C( 2.7063740e-01, 3.5930469e-02 ),
+    __C( 2.7031354e-01, 3.8290828e-02 ), __C( 2.6996910e-01, 4.0648270e-02 ),
+    __C( 2.6960411e-01, 4.3002618e-02 ), __C( 2.6921858e-01, 4.5353690e-02 ),
+    __C( 2.6881255e-01, 4.7701309e-02 ), __C( 2.6838604e-01, 5.0045294e-02 ),
+    __C( 2.6793910e-01, 5.2385469e-02 ), __C( 2.6747176e-01, 5.4721655e-02 ),
+    __C( 2.6698404e-01, 5.7053673e-02 ), __C( 2.6647599e-01, 5.9381346e-02 ),
+    __C( 2.6594765e-01, 6.1704497e-02 ), __C( 2.6539906e-01, 6.4022949e-02 ),
+    __C( 2.6483026e-01, 6.6336526e-02 ), __C( 2.6424128e-01, 6.8645051e-02 ),
+    __C( 2.6363219e-01, 7.0948348e-02 ), __C( 2.6300302e-01, 7.3246242e-02 ),
+    __C( 2.6235382e-01, 7.5538558e-02 ), __C( 2.6168464e-01, 7.7825122e-02 ),
+    __C( 2.6099553e-01, 8.0105759e-02 ), __C( 2.6028655e-01, 8.2380295e-02 ),
+    __C( 2.5955774e-01, 8.4648558e-02 ), __C( 2.5880917e-01, 8.6910375e-02 ),
+    __C( 2.5804089e-01, 8.9165573e-02 ), __C( 2.5725296e-01, 9.1413981e-02 ),
+    __C( 2.5644543e-01, 9.3655427e-02 ), __C( 2.5561838e-01, 9.5889741e-02 ),
+    __C( 2.5477186e-01, 9.8116753e-02 ), __C( 2.5390594e-01, 1.0033629e-01 ),
+    __C( 2.5302069e-01, 1.0254819e-01 ), __C( 2.5211616e-01, 1.0475228e-01 ),
+    __C( 2.5119244e-01, 1.0694839e-01 ), __C( 2.5024958e-01, 1.0913636e-01 ),
+    __C( 2.4928767e-01, 1.1131602e-01 ), __C( 2.4830678e-01, 1.1348720e-01 ),
+    __C( 2.4730697e-01, 1.1564973e-01 ), __C( 2.4628833e-01, 1.1780346e-01 ),
+    __C( 2.4525094e-01, 1.1994822e-01 ), __C( 2.4419487e-01, 1.2208384e-01 ),
+    __C( 2.4312020e-01, 1.2421017e-01 ), __C( 2.4202702e-01, 1.2632704e-01 ),
+    __C( 2.4091541e-01, 1.2843429e-01 ), __C( 2.3978545e-01, 1.3053175e-01 ),
+    __C( 2.3863723e-01, 1.3261928e-01 ), __C( 2.3747083e-01, 1.3469670e-01 ),
+    __C( 2.3628636e-01, 1.3676387e-01 ), __C( 2.3508388e-01, 1.3882063e-01 ),
+    __C( 2.3386351e-01, 1.4086681e-01 ), __C( 2.3262533e-01, 1.4290226e-01 ),
+    __C( 2.3136943e-01, 1.4492683e-01 ), __C( 2.3009591e-01, 1.4694037e-01 ),
+    __C( 2.2880487e-01, 1.4894272e-01 ), __C( 2.2749640e-01, 1.5093372e-01 ),
+    __C( 2.2617061e-01, 1.5291323e-01 ), __C( 2.2482759e-01, 1.5488109e-01 ),
+    __C( 2.2346746e-01, 1.5683716e-01 ), __C( 2.2209030e-01, 1.5878128e-01 ),
+    __C( 2.2069624e-01, 1.6071332e-01 ), __C( 2.1928536e-01, 1.6263311e-01 ),
+    __C( 2.1785779e-01, 1.6454052e-01 ), __C( 2.1641363e-01, 1.6643540e-01 ),
+    __C( 2.1495298e-01, 1.6831760e-01 ), __C( 2.1347597e-01, 1.7018699e-01 ),
+    __C( 2.1198270e-01, 1.7204341e-01 ), __C( 2.1047328e-01, 1.7388674e-01 ),
+    __C( 2.0894784e-01, 1.7571682e-01 ), __C( 2.0740648e-01, 1.7753352e-01 ),
+    __C( 2.0584933e-01, 1.7933670e-01 ), __C( 2.0427651e-01, 1.8112622e-01 ),
+    __C( 2.0268812e-01, 1.8290195e-01 ), __C( 2.0108431e-01, 1.8466375e-01 ),
+    __C( 1.9946518e-01, 1.8641149e-01 ), __C( 1.9783085e-01, 1.8814503e-01 ),
+    __C( 1.9618147e-01, 1.8986424e-01 ), __C( 1.9451714e-01, 1.9156900e-01 ),
+    __C( 1.9283800e-01, 1.9325917e-01 ), __C( 1.9114417e-01, 1.9493462e-01 ),
+    __C( 1.8943579e-01, 1.9659522e-01 ), __C( 1.8771298e-01, 1.9824085e-01 ),
+    __C( 1.8597588e-01, 1.9987139e-01 ), __C( 1.8422461e-01, 2.0148670e-01 ),
+    __C( 1.8245932e-01, 2.0308667e-01 ), __C( 1.8068013e-01, 2.0467118e-01 ),
+    __C( 1.7888718e-01, 2.0624010e-01 ), __C( 1.7708060e-01, 2.0779331e-01 ),
+    __C( 1.7526055e-01, 2.0933070e-01 ), __C( 1.7342714e-01, 2.1085214e-01 ),
+    __C( 1.7158053e-01, 2.1235753e-01 ), __C( 1.6972085e-01, 2.1384675e-01 ),
+    __C( 1.6784825e-01, 2.1531968e-01 ), __C( 1.6596286e-01, 2.1677622e-01 ),
+    __C( 1.6406484e-01, 2.1821624e-01 ), __C( 1.6215432e-01, 2.1963965e-01 ),
+    __C( 1.6023145e-01, 2.2104633e-01 ), __C( 1.5829638e-01, 2.2243618e-01 ),
+    __C( 1.5634925e-01, 2.2380909e-01 ), __C( 1.5439022e-01, 2.2516496e-01 ),
+    __C( 1.5241943e-01, 2.2650368e-01 ), __C( 1.5043704e-01, 2.2782514e-01 ),
+    __C( 1.4844319e-01, 2.2912926e-01 ), __C( 1.4643803e-01, 2.3041593e-01 ),
+    __C( 1.4442172e-01, 2.3168506e-01 ), __C( 1.4239441e-01, 2.3293654e-01 ),
+    __C( 1.4035626e-01, 2.3417028e-01 ), __C( 1.3830742e-01, 2.3538618e-01 ),
+    __C( 1.3624805e-01, 2.3658417e-01 ), __C( 1.3417830e-01, 2.3776413e-01 ),
+    __C( 1.3209834e-01, 2.3892599e-01 ), __C( 1.3000831e-01, 2.4006965e-01 ),
+    __C( 1.2790838e-01, 2.4119503e-01 ), __C( 1.2579872e-01, 2.4230205e-01 ),
+    __C( 1.2367947e-01, 2.4339061e-01 ), __C( 1.2155080e-01, 2.4446063e-01 ),
+    __C( 1.1941288e-01, 2.4551204e-01 ), __C( 1.1726586e-01, 2.4654476e-01 ),
+    __C( 1.1510992e-01, 2.4755869e-01 ), __C( 1.1294520e-01, 2.4855378e-01 ),
+    __C( 1.1077189e-01, 2.4952993e-01 ), __C( 1.0859014e-01, 2.5048709e-01 ),
+    __C( 1.0640012e-01, 2.5142516e-01 ), __C( 1.0420200e-01, 2.5234410e-01 ),
+    __C( 1.0199594e-01, 2.5324381e-01 ), __C( 9.9782117e-02, 2.5412424e-01 ),
+    __C( 9.7560694e-02, 2.5498531e-01 ), __C( 9.5331841e-02, 2.5582697e-01 ),
+    __C( 9.3095728e-02, 2.5664915e-01 ), __C( 9.0852525e-02, 2.5745178e-01 ),
+    __C( 8.8602403e-02, 2.5823480e-01 ), __C( 8.6345534e-02, 2.5899816e-01 ),
+    __C( 8.4082090e-02, 2.5974180e-01 ), __C( 8.1812242e-02, 2.6046565e-01 ),
+    __C( 7.9536165e-02, 2.6116967e-01 ), __C( 7.7254030e-02, 2.6185380e-01 ),
+    __C( 7.4966012e-02, 2.6251799e-01 ), __C( 7.2672284e-02, 2.6316219e-01 ),
+    __C( 7.0373023e-02, 2.6378635e-01 ), __C( 6.8068403e-02, 2.6439042e-01 ),
+    __C( 6.5758598e-02, 2.6497435e-01 ), __C( 6.3443786e-02, 2.6553810e-01 ),
+    __C( 6.1124143e-02, 2.6608164e-01 ), __C( 5.8799845e-02, 2.6660491e-01 ),
+    __C( 5.6471069e-02, 2.6710788e-01 ), __C( 5.4137992e-02, 2.6759050e-01 ),
+    __C( 5.1800793e-02, 2.6805275e-01 ), __C( 4.9459648e-02, 2.6849459e-01 ),
+    __C( 4.7114738e-02, 2.6891597e-01 ), __C( 4.4766239e-02, 2.6931688e-01 ),
+    __C( 4.2414331e-02, 2.6969728e-01 ), __C( 4.0059193e-02, 2.7005714e-01 ),
+    __C( 3.7701004e-02, 2.7039644e-01 ), __C( 3.5339945e-02, 2.7071514e-01 ),
+    __C( 3.2976194e-02, 2.7101323e-01 ), __C( 3.0609932e-02, 2.7129068e-01 ),
+    __C( 2.8241338e-02, 2.7154747e-01 ), __C( 2.5870594e-02, 2.7178357e-01 ),
+    __C( 2.3497880e-02, 2.7199899e-01 ), __C( 2.1123377e-02, 2.7219369e-01 ),
+    __C( 1.8747265e-02, 2.7236765e-01 ), __C( 1.6369725e-02, 2.7252088e-01 ),
+    __C( 1.3990938e-02, 2.7265336e-01 ), __C( 1.1611086e-02, 2.7276507e-01 ),
+    __C( 9.2303502e-03, 2.7285601e-01 ), __C( 6.8489111e-03, 2.7292617e-01 ),
+    __C( 4.4669505e-03, 2.7297554e-01 ), __C( 2.0846497e-03, 2.7300413e-01 ) }
 };
 
 static const struct lc3_mdct_rot_def mdct_rot_960 = {
     .n4 = 960/4, .w = (const struct lc3_complex []){
-        { 9.9999967e-01, 8.1812300e-04 }, { 9.9997289e-01, 7.3630412e-03 },
-        { 9.9990328e-01, 1.3907644e-02 }, { 9.9979084e-01, 2.0451651e-02 },
-        { 9.9963557e-01, 2.6994782e-02 }, { 9.9943748e-01, 3.3536757e-02 },
-        { 9.9919658e-01, 4.0077295e-02 }, { 9.9891288e-01, 4.6616116e-02 },
-        { 9.9858638e-01, 5.3152941e-02 }, { 9.9821711e-01, 5.9687488e-02 },
-        { 9.9780508e-01, 6.6219479e-02 }, { 9.9735031e-01, 7.2748633e-02 },
-        { 9.9685281e-01, 7.9274670e-02 }, { 9.9631261e-01, 8.5797312e-02 },
-        { 9.9572973e-01, 9.2316279e-02 }, { 9.9510420e-01, 9.8831291e-02 },
-        { 9.9443605e-01, 1.0534207e-01 }, { 9.9372529e-01, 1.1184834e-01 },
-        { 9.9297196e-01, 1.1834981e-01 }, { 9.9217610e-01, 1.2484622e-01 },
-        { 9.9133774e-01, 1.3133727e-01 }, { 9.9045692e-01, 1.3782270e-01 },
-        { 9.8953366e-01, 1.4430223e-01 }, { 9.8856802e-01, 1.5077558e-01 },
-        { 9.8756003e-01, 1.5724246e-01 }, { 9.8650973e-01, 1.6370261e-01 },
-        { 9.8541718e-01, 1.7015575e-01 }, { 9.8428242e-01, 1.7660160e-01 },
-        { 9.8310549e-01, 1.8303989e-01 }, { 9.8188645e-01, 1.8947033e-01 },
-        { 9.8062534e-01, 1.9589266e-01 }, { 9.7932224e-01, 2.0230660e-01 },
-        { 9.7797718e-01, 2.0871187e-01 }, { 9.7659022e-01, 2.1510820e-01 },
-        { 9.7516144e-01, 2.2149531e-01 }, { 9.7369088e-01, 2.2787294e-01 },
-        { 9.7217861e-01, 2.3424080e-01 }, { 9.7062469e-01, 2.4059864e-01 },
-        { 9.6902920e-01, 2.4694616e-01 }, { 9.6739220e-01, 2.5328311e-01 },
-        { 9.6571376e-01, 2.5960920e-01 }, { 9.6399395e-01, 2.6592418e-01 },
-        { 9.6223284e-01, 2.7222777e-01 }, { 9.6043052e-01, 2.7851969e-01 },
-        { 9.5858705e-01, 2.8479968e-01 }, { 9.5670253e-01, 2.9106748e-01 },
-        { 9.5477702e-01, 2.9732280e-01 }, { 9.5281061e-01, 3.0356539e-01 },
-        { 9.5080338e-01, 3.0979497e-01 }, { 9.4875543e-01, 3.1601129e-01 },
-        { 9.4666684e-01, 3.2221406e-01 }, { 9.4453769e-01, 3.2840304e-01 },
-        { 9.4236808e-01, 3.3457794e-01 }, { 9.4015810e-01, 3.4073852e-01 },
-        { 9.3790786e-01, 3.4688450e-01 }, { 9.3561743e-01, 3.5301562e-01 },
-        { 9.3328693e-01, 3.5913161e-01 }, { 9.3091644e-01, 3.6523223e-01 },
-        { 9.2850608e-01, 3.7131719e-01 }, { 9.2605595e-01, 3.7738626e-01 },
-        { 9.2356614e-01, 3.8343915e-01 }, { 9.2103677e-01, 3.8947562e-01 },
-        { 9.1846795e-01, 3.9549541e-01 }, { 9.1585979e-01, 4.0149825e-01 },
-        { 9.1321239e-01, 4.0748390e-01 }, { 9.1052587e-01, 4.1345209e-01 },
-        { 9.0780035e-01, 4.1940257e-01 }, { 9.0503595e-01, 4.2533508e-01 },
-        { 9.0223277e-01, 4.3124938e-01 }, { 8.9939095e-01, 4.3714520e-01 },
-        { 8.9651059e-01, 4.4302229e-01 }, { 8.9359184e-01, 4.4888041e-01 },
-        { 8.9063481e-01, 4.5471930e-01 }, { 8.8763962e-01, 4.6053871e-01 },
-        { 8.8460641e-01, 4.6633839e-01 }, { 8.8153531e-01, 4.7211810e-01 },
-        { 8.7842644e-01, 4.7787758e-01 }, { 8.7527995e-01, 4.8361659e-01 },
-        { 8.7209596e-01, 4.8933489e-01 }, { 8.6887462e-01, 4.9503222e-01 },
-        { 8.6561605e-01, 5.0070835e-01 }, { 8.6232041e-01, 5.0636303e-01 },
-        { 8.5898782e-01, 5.1199602e-01 }, { 8.5561844e-01, 5.1760707e-01 },
-        { 8.5221241e-01, 5.2319595e-01 }, { 8.4876987e-01, 5.2876243e-01 },
-        { 8.4529098e-01, 5.3430625e-01 }, { 8.4177587e-01, 5.3982718e-01 },
-        { 8.3822471e-01, 5.4532499e-01 }, { 8.3463763e-01, 5.5079944e-01 },
-        { 8.3101481e-01, 5.5625029e-01 }, { 8.2735639e-01, 5.6167732e-01 },
-        { 8.2366252e-01, 5.6708028e-01 }, { 8.1993338e-01, 5.7245896e-01 },
-        { 8.1616911e-01, 5.7781311e-01 }, { 8.1236987e-01, 5.8314251e-01 },
-        { 8.0853584e-01, 5.8844693e-01 }, { 8.0466718e-01, 5.9372614e-01 },
-        { 8.0076404e-01, 5.9897992e-01 }, { 7.9682660e-01, 6.0420805e-01 },
-        { 7.9285503e-01, 6.0941029e-01 }, { 7.8884950e-01, 6.1458642e-01 },
-        { 7.8481017e-01, 6.1973623e-01 }, { 7.8073723e-01, 6.2485949e-01 },
-        { 7.7663084e-01, 6.2995598e-01 }, { 7.7249118e-01, 6.3502549e-01 },
-        { 7.6831844e-01, 6.4006780e-01 }, { 7.6411277e-01, 6.4508268e-01 },
-        { 7.5987438e-01, 6.5006994e-01 }, { 7.5560344e-01, 6.5502934e-01 },
-        { 7.5130013e-01, 6.5996069e-01 }, { 7.4696464e-01, 6.6486377e-01 },
-        { 7.4259715e-01, 6.6973837e-01 }, { 7.3819784e-01, 6.7458427e-01 },
-        { 7.3376692e-01, 6.7940128e-01 }, { 7.2930457e-01, 6.8418919e-01 },
-        { 7.2481097e-01, 6.8894779e-01 }, { 7.2028632e-01, 6.9367688e-01 },
-        { 7.1573083e-01, 6.9837625e-01 }, { 7.1114467e-01, 7.0304571e-01 },
-        { 7.0652804e-01, 7.0768504e-01 }, { 7.0188116e-01, 7.1229407e-01 },
-        { 6.9720420e-01, 7.1687258e-01 }, { 6.9249738e-01, 7.2142039e-01 },
-        { 6.8776090e-01, 7.2593729e-01 }, { 6.8299495e-01, 7.3042309e-01 },
-        { 6.7819975e-01, 7.3487761e-01 }, { 6.7337550e-01, 7.3930064e-01 },
-        { 6.6852240e-01, 7.4369201e-01 }, { 6.6364066e-01, 7.4805152e-01 },
-        { 6.5873050e-01, 7.5237898e-01 }, { 6.5379211e-01, 7.5667422e-01 },
-        { 6.4882573e-01, 7.6093704e-01 }, { 6.4383154e-01, 7.6516727e-01 },
-        { 6.3880978e-01, 7.6936471e-01 }, { 6.3376065e-01, 7.7352921e-01 },
-        { 6.2868438e-01, 7.7766056e-01 }, { 6.2358117e-01, 7.8175861e-01 },
-        { 6.1845126e-01, 7.8582316e-01 }, { 6.1329485e-01, 7.8985406e-01 },
-        { 6.0811216e-01, 7.9385112e-01 }, { 6.0290343e-01, 7.9781417e-01 },
-        { 5.9766888e-01, 8.0174305e-01 }, { 5.9240872e-01, 8.0563758e-01 },
-        { 5.8712318e-01, 8.0949760e-01 }, { 5.8181249e-01, 8.1332295e-01 },
-        { 5.7647688e-01, 8.1711346e-01 }, { 5.7111658e-01, 8.2086896e-01 },
-        { 5.6573181e-01, 8.2458930e-01 }, { 5.6032281e-01, 8.2827432e-01 },
-        { 5.5488980e-01, 8.3192386e-01 }, { 5.4943303e-01, 8.3553776e-01 },
-        { 5.4395272e-01, 8.3911587e-01 }, { 5.3844911e-01, 8.4265803e-01 },
-        { 5.3292243e-01, 8.4616410e-01 }, { 5.2737292e-01, 8.4963392e-01 },
-        { 5.2180083e-01, 8.5306735e-01 }, { 5.1620638e-01, 8.5646423e-01 },
-        { 5.1058981e-01, 8.5982442e-01 }, { 5.0495138e-01, 8.6314779e-01 },
-        { 4.9929132e-01, 8.6643418e-01 }, { 4.9360987e-01, 8.6968345e-01 },
-        { 4.8790727e-01, 8.7289547e-01 }, { 4.8218377e-01, 8.7607009e-01 },
-        { 4.7643962e-01, 8.7920719e-01 }, { 4.7067506e-01, 8.8230663e-01 },
-        { 4.6489034e-01, 8.8536827e-01 }, { 4.5908570e-01, 8.8839199e-01 },
-        { 4.5326139e-01, 8.9137765e-01 }, { 4.4741768e-01, 8.9432512e-01 },
-        { 4.4155479e-01, 8.9723429e-01 }, { 4.3567299e-01, 9.0010502e-01 },
-        { 4.2977253e-01, 9.0293719e-01 }, { 4.2385365e-01, 9.0573069e-01 },
-        { 4.1791662e-01, 9.0848539e-01 }, { 4.1196169e-01, 9.1120117e-01 },
-        { 4.0598911e-01, 9.1387791e-01 }, { 3.9999914e-01, 9.1651551e-01 },
-        { 3.9399204e-01, 9.1911385e-01 }, { 3.8796806e-01, 9.2167282e-01 },
-        { 3.8192746e-01, 9.2419231e-01 }, { 3.7587050e-01, 9.2667220e-01 },
-        { 3.6979743e-01, 9.2911240e-01 }, { 3.6370853e-01, 9.3151280e-01 },
-        { 3.5760405e-01, 9.3387330e-01 }, { 3.5148424e-01, 9.3619380e-01 },
-        { 3.4534939e-01, 9.3847419e-01 }, { 3.3919973e-01, 9.4071438e-01 },
-        { 3.3303555e-01, 9.4291427e-01 }, { 3.2685710e-01, 9.4507377e-01 },
-        { 3.2066465e-01, 9.4719279e-01 }, { 3.1445847e-01, 9.4927123e-01 },
-        { 3.0823881e-01, 9.5130901e-01 }, { 3.0200595e-01, 9.5330604e-01 },
-        { 2.9576015e-01, 9.5526223e-01 }, { 2.8950169e-01, 9.5717750e-01 },
-        { 2.8323082e-01, 9.5905177e-01 }, { 2.7694782e-01, 9.6088496e-01 },
-        { 2.7065295e-01, 9.6267699e-01 }, { 2.6434649e-01, 9.6442777e-01 },
-        { 2.5802871e-01, 9.6613725e-01 }, { 2.5169988e-01, 9.6780534e-01 },
-        { 2.4536026e-01, 9.6943197e-01 }, { 2.3901013e-01, 9.7101707e-01 },
-        { 2.3264977e-01, 9.7256058e-01 }, { 2.2627944e-01, 9.7406243e-01 },
-        { 2.1989941e-01, 9.7552255e-01 }, { 2.1350997e-01, 9.7694089e-01 },
-        { 2.0711138e-01, 9.7831737e-01 }, { 2.0070391e-01, 9.7965195e-01 },
-        { 1.9428785e-01, 9.8094456e-01 }, { 1.8786347e-01, 9.8219515e-01 },
-        { 1.8143104e-01, 9.8340367e-01 }, { 1.7499084e-01, 9.8457006e-01 },
-        { 1.6854314e-01, 9.8569428e-01 }, { 1.6208822e-01, 9.8677627e-01 },
-        { 1.5562636e-01, 9.8781599e-01 }, { 1.4915783e-01, 9.8881340e-01 },
-        { 1.4268292e-01, 9.8976845e-01 }, { 1.3620189e-01, 9.9068110e-01 },
-        { 1.2971502e-01, 9.9155132e-01 }, { 1.2322260e-01, 9.9237906e-01 },
-        { 1.1672491e-01, 9.9316428e-01 }, { 1.1022221e-01, 9.9390697e-01 },
-        { 1.0371479e-01, 9.9460708e-01 }, { 9.7202924e-02, 9.9526458e-01 },
-        { 9.0686897e-02, 9.9587945e-01 }, { 8.4166986e-02, 9.9645166e-01 },
-        { 7.7643468e-02, 9.9698119e-01 }, { 7.1116625e-02, 9.9746801e-01 },
-        { 6.4586736e-02, 9.9791210e-01 }, { 5.8054080e-02, 9.9831344e-01 },
-        { 5.1518937e-02, 9.9867202e-01 }, { 4.4981587e-02, 9.9898782e-01 },
-        { 3.8442310e-02, 9.9926082e-01 }, { 3.1901387e-02, 9.9949102e-01 },
-        { 2.5359097e-02, 9.9967841e-01 }, { 1.8815721e-02, 9.9982297e-01 },
-        { 1.2271538e-02, 9.9992470e-01 }, { 5.7268303e-03, 9.9998360e-01 },
-    }
+    __C( 2.5406629e-01, 2.0785754e-04 ), __C( 2.5405949e-01, 1.8707012e-03 ),
+    __C( 2.5404180e-01, 3.5334647e-03 ), __C( 2.5401323e-01, 5.1960769e-03 ),
+    __C( 2.5397379e-01, 6.8584664e-03 ), __C( 2.5392346e-01, 8.5205622e-03 ),
+    __C( 2.5386225e-01, 1.0182293e-02 ), __C( 2.5379017e-01, 1.1843588e-02 ),
+    __C( 2.5370722e-01, 1.3504375e-02 ), __C( 2.5361340e-01, 1.5164584e-02 ),
+    __C( 2.5350872e-01, 1.6824143e-02 ), __C( 2.5339318e-01, 1.8482981e-02 ),
+    __C( 2.5326678e-01, 2.0141028e-02 ), __C( 2.5312953e-01, 2.1798212e-02 ),
+    __C( 2.5298144e-01, 2.3454462e-02 ), __C( 2.5282252e-01, 2.5109708e-02 ),
+    __C( 2.5265276e-01, 2.6763878e-02 ), __C( 2.5247218e-01, 2.8416901e-02 ),
+    __C( 2.5228079e-01, 3.0068707e-02 ), __C( 2.5207859e-01, 3.1719225e-02 ),
+    __C( 2.5186559e-01, 3.3368385e-02 ), __C( 2.5164180e-01, 3.5016115e-02 ),
+    __C( 2.5140723e-01, 3.6662344e-02 ), __C( 2.5116189e-01, 3.8307004e-02 ),
+    __C( 2.5090580e-01, 3.9950022e-02 ), __C( 2.5063895e-01, 4.1591330e-02 ),
+    __C( 2.5036137e-01, 4.3230855e-02 ), __C( 2.5007306e-01, 4.4868529e-02 ),
+    __C( 2.4977405e-01, 4.6504281e-02 ), __C( 2.4946433e-01, 4.8138040e-02 ),
+    __C( 2.4914393e-01, 4.9769738e-02 ), __C( 2.4881285e-01, 5.1399303e-02 ),
+    __C( 2.4847112e-01, 5.3026667e-02 ), __C( 2.4811874e-01, 5.4651759e-02 ),
+    __C( 2.4775573e-01, 5.6274511e-02 ), __C( 2.4738211e-01, 5.7894851e-02 ),
+    __C( 2.4699789e-01, 5.9512712e-02 ), __C( 2.4660310e-01, 6.1128023e-02 ),
+    __C( 2.4619774e-01, 6.2740716e-02 ), __C( 2.4578183e-01, 6.4350721e-02 ),
+    __C( 2.4535539e-01, 6.5957969e-02 ), __C( 2.4491845e-01, 6.7562392e-02 ),
+    __C( 2.4447101e-01, 6.9163921e-02 ), __C( 2.4401310e-01, 7.0762488e-02 ),
+    __C( 2.4354474e-01, 7.2358023e-02 ), __C( 2.4306594e-01, 7.3950458e-02 ),
+    __C( 2.4257673e-01, 7.5539726e-02 ), __C( 2.4207714e-01, 7.7125757e-02 ),
+    __C( 2.4156717e-01, 7.8708485e-02 ), __C( 2.4104685e-01, 8.0287842e-02 ),
+    __C( 2.4051621e-01, 8.1863759e-02 ), __C( 2.3997527e-01, 8.3436169e-02 ),
+    __C( 2.3942404e-01, 8.5005005e-02 ), __C( 2.3886256e-01, 8.6570200e-02 ),
+    __C( 2.3829085e-01, 8.8131686e-02 ), __C( 2.3770893e-01, 8.9689398e-02 ),
+    __C( 2.3711683e-01, 9.1243267e-02 ), __C( 2.3651456e-01, 9.2793227e-02 ),
+    __C( 2.3590217e-01, 9.4339213e-02 ), __C( 2.3527968e-01, 9.5881158e-02 ),
+    __C( 2.3464710e-01, 9.7418995e-02 ), __C( 2.3400447e-01, 9.8952659e-02 ),
+    __C( 2.3335182e-01, 1.0048208e-01 ), __C( 2.3268918e-01, 1.0200721e-01 ),
+    __C( 2.3201656e-01, 1.0352796e-01 ), __C( 2.3133401e-01, 1.0504427e-01 ),
+    __C( 2.3064154e-01, 1.0655609e-01 ), __C( 2.2993920e-01, 1.0806334e-01 ),
+    __C( 2.2922701e-01, 1.0956597e-01 ), __C( 2.2850500e-01, 1.1106390e-01 ),
+    __C( 2.2777320e-01, 1.1255707e-01 ), __C( 2.2703164e-01, 1.1404542e-01 ),
+    __C( 2.2628036e-01, 1.1552888e-01 ), __C( 2.2551938e-01, 1.1700740e-01 ),
+    __C( 2.2474874e-01, 1.1848090e-01 ), __C( 2.2396848e-01, 1.1994933e-01 ),
+    __C( 2.2317862e-01, 1.2141262e-01 ), __C( 2.2237920e-01, 1.2287071e-01 ),
+    __C( 2.2157026e-01, 1.2432354e-01 ), __C( 2.2075182e-01, 1.2577104e-01 ),
+    __C( 2.1992393e-01, 1.2721315e-01 ), __C( 2.1908662e-01, 1.2864982e-01 ),
+    __C( 2.1823992e-01, 1.3008097e-01 ), __C( 2.1738388e-01, 1.3150655e-01 ),
+    __C( 2.1651852e-01, 1.3292650e-01 ), __C( 2.1564388e-01, 1.3434075e-01 ),
+    __C( 2.1476001e-01, 1.3574925e-01 ), __C( 2.1386694e-01, 1.3715193e-01 ),
+    __C( 2.1296471e-01, 1.3854874e-01 ), __C( 2.1205336e-01, 1.3993962e-01 ),
+    __C( 2.1113292e-01, 1.4132449e-01 ), __C( 2.1020344e-01, 1.4270332e-01 ),
+    __C( 2.0926495e-01, 1.4407603e-01 ), __C( 2.0831750e-01, 1.4544257e-01 ),
+    __C( 2.0736113e-01, 1.4680288e-01 ), __C( 2.0639587e-01, 1.4815690e-01 ),
+    __C( 2.0542177e-01, 1.4950458e-01 ), __C( 2.0443887e-01, 1.5084585e-01 ),
+    __C( 2.0344722e-01, 1.5218066e-01 ), __C( 2.0244685e-01, 1.5350895e-01 ),
+    __C( 2.0143780e-01, 1.5483066e-01 ), __C( 2.0042013e-01, 1.5614574e-01 ),
+    __C( 1.9939388e-01, 1.5745414e-01 ), __C( 1.9835908e-01, 1.5875578e-01 ),
+    __C( 1.9731578e-01, 1.6005063e-01 ), __C( 1.9626403e-01, 1.6133862e-01 ),
+    __C( 1.9520388e-01, 1.6261970e-01 ), __C( 1.9413536e-01, 1.6389382e-01 ),
+    __C( 1.9305853e-01, 1.6516091e-01 ), __C( 1.9197343e-01, 1.6642093e-01 ),
+    __C( 1.9088010e-01, 1.6767382e-01 ), __C( 1.8977860e-01, 1.6891953e-01 ),
+    __C( 1.8866896e-01, 1.7015800e-01 ), __C( 1.8755125e-01, 1.7138918e-01 ),
+    __C( 1.8642550e-01, 1.7261302e-01 ), __C( 1.8529177e-01, 1.7382947e-01 ),
+    __C( 1.8415009e-01, 1.7503847e-01 ), __C( 1.8300053e-01, 1.7623997e-01 ),
+    __C( 1.8184314e-01, 1.7743392e-01 ), __C( 1.8067795e-01, 1.7862027e-01 ),
+    __C( 1.7950502e-01, 1.7979897e-01 ), __C( 1.7832440e-01, 1.8096997e-01 ),
+    __C( 1.7713614e-01, 1.8213322e-01 ), __C( 1.7594030e-01, 1.8328866e-01 ),
+    __C( 1.7473692e-01, 1.8443625e-01 ), __C( 1.7352605e-01, 1.8557595e-01 ),
+    __C( 1.7230775e-01, 1.8670769e-01 ), __C( 1.7108207e-01, 1.8783143e-01 ),
+    __C( 1.6984906e-01, 1.8894713e-01 ), __C( 1.6860878e-01, 1.9005474e-01 ),
+    __C( 1.6736127e-01, 1.9115420e-01 ), __C( 1.6610659e-01, 1.9224547e-01 ),
+    __C( 1.6484480e-01, 1.9332851e-01 ), __C( 1.6357595e-01, 1.9440327e-01 ),
+    __C( 1.6230008e-01, 1.9546970e-01 ), __C( 1.6101727e-01, 1.9652776e-01 ),
+    __C( 1.5972756e-01, 1.9757740e-01 ), __C( 1.5843101e-01, 1.9861857e-01 ),
+    __C( 1.5712767e-01, 1.9965124e-01 ), __C( 1.5581760e-01, 2.0067536e-01 ),
+    __C( 1.5450085e-01, 2.0169087e-01 ), __C( 1.5317749e-01, 2.0269775e-01 ),
+    __C( 1.5184756e-01, 2.0369595e-01 ), __C( 1.5051113e-01, 2.0468542e-01 ),
+    __C( 1.4916826e-01, 2.0566612e-01 ), __C( 1.4781899e-01, 2.0663801e-01 ),
+    __C( 1.4646339e-01, 2.0760105e-01 ), __C( 1.4510152e-01, 2.0855520e-01 ),
+    __C( 1.4373343e-01, 2.0950041e-01 ), __C( 1.4235918e-01, 2.1043665e-01 ),
+    __C( 1.4097884e-01, 2.1136388e-01 ), __C( 1.3959246e-01, 2.1228205e-01 ),
+    __C( 1.3820009e-01, 2.1319113e-01 ), __C( 1.3680181e-01, 2.1409107e-01 ),
+    __C( 1.3539767e-01, 2.1498185e-01 ), __C( 1.3398773e-01, 2.1586341e-01 ),
+    __C( 1.3257204e-01, 2.1673573e-01 ), __C( 1.3115068e-01, 2.1759876e-01 ),
+    __C( 1.2972370e-01, 2.1845247e-01 ), __C( 1.2829117e-01, 2.1929683e-01 ),
+    __C( 1.2685313e-01, 2.2013179e-01 ), __C( 1.2540967e-01, 2.2095732e-01 ),
+    __C( 1.2396083e-01, 2.2177339e-01 ), __C( 1.2250668e-01, 2.2257995e-01 ),
+    __C( 1.2104729e-01, 2.2337698e-01 ), __C( 1.1958271e-01, 2.2416445e-01 ),
+    __C( 1.1811300e-01, 2.2494231e-01 ), __C( 1.1663824e-01, 2.2571053e-01 ),
+    __C( 1.1515848e-01, 2.2646909e-01 ), __C( 1.1367379e-01, 2.2721794e-01 ),
+    __C( 1.1218422e-01, 2.2795706e-01 ), __C( 1.1068986e-01, 2.2868642e-01 ),
+    __C( 1.0919075e-01, 2.2940598e-01 ), __C( 1.0768696e-01, 2.3011571e-01 ),
+    __C( 1.0617856e-01, 2.3081559e-01 ), __C( 1.0466561e-01, 2.3150558e-01 ),
+    __C( 1.0314818e-01, 2.3218565e-01 ), __C( 1.0162633e-01, 2.3285577e-01 ),
+    __C( 1.0010013e-01, 2.3351592e-01 ), __C( 9.8569638e-02, 2.3416607e-01 ),
+    __C( 9.7034924e-02, 2.3480619e-01 ), __C( 9.5496054e-02, 2.3543625e-01 ),
+    __C( 9.3953093e-02, 2.3605622e-01 ), __C( 9.2406107e-02, 2.3666608e-01 ),
+    __C( 9.0855163e-02, 2.3726580e-01 ), __C( 8.9300327e-02, 2.3785536e-01 ),
+    __C( 8.7741666e-02, 2.3843473e-01 ), __C( 8.6179246e-02, 2.3900389e-01 ),
+    __C( 8.4613135e-02, 2.3956281e-01 ), __C( 8.3043399e-02, 2.4011147e-01 ),
+    __C( 8.1470106e-02, 2.4064984e-01 ), __C( 7.9893322e-02, 2.4117790e-01 ),
+    __C( 7.8313117e-02, 2.4169563e-01 ), __C( 7.6729556e-02, 2.4220301e-01 ),
+    __C( 7.5142709e-02, 2.4270001e-01 ), __C( 7.3552643e-02, 2.4318662e-01 ),
+    __C( 7.1959427e-02, 2.4366281e-01 ), __C( 7.0363128e-02, 2.4412856e-01 ),
+    __C( 6.8763814e-02, 2.4458385e-01 ), __C( 6.7161555e-02, 2.4502867e-01 ),
+    __C( 6.5556419e-02, 2.4546299e-01 ), __C( 6.3948475e-02, 2.4588679e-01 ),
+    __C( 6.2337792e-02, 2.4630007e-01 ), __C( 6.0724438e-02, 2.4670279e-01 ),
+    __C( 5.9108483e-02, 2.4709494e-01 ), __C( 5.7489996e-02, 2.4747651e-01 ),
+    __C( 5.5869046e-02, 2.4784748e-01 ), __C( 5.4245703e-02, 2.4820783e-01 ),
+    __C( 5.2620036e-02, 2.4855755e-01 ), __C( 5.0992116e-02, 2.4889662e-01 ),
+    __C( 4.9362011e-02, 2.4922503e-01 ), __C( 4.7729791e-02, 2.4954276e-01 ),
+    __C( 4.6095527e-02, 2.4984980e-01 ), __C( 4.4459288e-02, 2.5014615e-01 ),
+    __C( 4.2821145e-02, 2.5043177e-01 ), __C( 4.1181167e-02, 2.5070667e-01 ),
+    __C( 3.9539426e-02, 2.5097083e-01 ), __C( 3.7895990e-02, 2.5122424e-01 ),
+    __C( 3.6250931e-02, 2.5146688e-01 ), __C( 3.4604320e-02, 2.5169876e-01 ),
+    __C( 3.2956226e-02, 2.5191985e-01 ), __C( 3.1306720e-02, 2.5213015e-01 ),
+    __C( 2.9655874e-02, 2.5232965e-01 ), __C( 2.8003757e-02, 2.5251834e-01 ),
+    __C( 2.6350440e-02, 2.5269621e-01 ), __C( 2.4695994e-02, 2.5286326e-01 ),
+    __C( 2.3040491e-02, 2.5301948e-01 ), __C( 2.1384001e-02, 2.5316486e-01 ),
+    __C( 1.9726595e-02, 2.5329940e-01 ), __C( 1.8068343e-02, 2.5342308e-01 ),
+    __C( 1.6409318e-02, 2.5353591e-01 ), __C( 1.4749590e-02, 2.5363788e-01 ),
+    __C( 1.3089230e-02, 2.5372898e-01 ), __C( 1.1428309e-02, 2.5380921e-01 ),
+    __C( 9.7668984e-03, 2.5387857e-01 ), __C( 8.1050697e-03, 2.5393706e-01 ),
+    __C( 6.4428938e-03, 2.5398467e-01 ), __C( 4.7804419e-03, 2.5402140e-01 ),
+    __C( 3.1177852e-03, 2.5404724e-01 ), __C( 1.4549950e-03, 2.5406221e-01 ) }
 };
 
 const struct lc3_mdct_rot_def * lc3_mdct_rot[LC3_NUM_DT][LC3_NUM_SRATE] = {
@@ -990,988 +978,993 @@
                      &mdct_rot_640, &mdct_rot_960                }
 };
 
+#undef __C
+
 
 /**
  * Low delay MDCT windows (cf. 3.7.3)
  */
 
-static const float mdct_win_10m_80[80+50] = {
-    -7.07854671e-04, -2.09819773e-03, -4.52519808e-03, -8.23397633e-03,
-    -1.33771310e-02, -1.99972156e-02, -2.80090946e-02, -3.72150208e-02,
-    -4.73176826e-02, -5.79465483e-02, -6.86760675e-02, -7.90464744e-02,
-    -8.85970547e-02, -9.68830362e-02, -1.03496124e-01, -1.08076646e-01,
-    -1.10324226e-01, -1.09980985e-01, -1.06817214e-01, -1.00619042e-01,
-    -9.11645251e-02, -7.82061748e-02, -6.14668812e-02, -4.06336286e-02,
-    -1.53632952e-02,  1.47015507e-02,  4.98973651e-02,  9.05036926e-02,
-     1.36691102e-01,  1.88468639e-01,  2.45645680e-01,  3.07778908e-01,
-     3.74164237e-01,  4.43811480e-01,  5.15473546e-01,  5.87666172e-01,
-     6.58761977e-01,  7.27057670e-01,  7.90875299e-01,  8.48664336e-01,
-     8.99132024e-01,  9.41334815e-01,  9.74763483e-01,  9.99411473e-01,
-     1.01576037e+00,  1.02473616e+00,  1.02763429e+00,  1.02599149e+00,
-     1.02142721e+00,  1.01543986e+00,  1.00936693e+00,  1.00350816e+00,
-     9.98889821e-01,  9.95313390e-01,  9.92594392e-01,  9.90577196e-01,
-     9.89137162e-01,  9.88179075e-01,  9.87624927e-01,  9.87405628e-01,
-     9.87452485e-01,  9.87695113e-01,  9.88064062e-01,  9.88492687e-01,
-     9.88923003e-01,  9.89307497e-01,  9.89614633e-01,  9.89831927e-01,
-     9.89969310e-01,  9.90060335e-01,  9.90157502e-01,  9.90325529e-01,
-     9.90630379e-01,  9.91129889e-01,  9.91866549e-01,  9.92861973e-01,
-     9.94115607e-01,  9.95603378e-01,  9.97279311e-01,  9.99078484e-01,
-     1.00092237e+00,  1.00272811e+00,  1.00441604e+00,  1.00591922e+00,
-     1.00718935e+00,  1.00820015e+00,  1.00894949e+00,  1.00945824e+00,
-     1.00976898e+00,  1.00994034e+00,  1.01003945e+00,  1.01013232e+00,
-     1.01027252e+00,  1.01049435e+00,  1.01080807e+00,  1.01120107e+00,
-     1.01164127e+00,  1.01208013e+00,  1.01245818e+00,  1.01270696e+00,
-     1.01275501e+00,  1.01253013e+00,  1.01196233e+00,  1.01098214e+00,
-     1.00951244e+00,  1.00746086e+00,  1.00470868e+00,  1.00111141e+00,
-     9.96504102e-01,  9.90720000e-01,  9.82376587e-01,  9.70882175e-01,
-     9.54673298e-01,  9.32155386e-01,  9.01800368e-01,  8.62398408e-01,
-     8.13281737e-01,  7.54455197e-01,  6.86658072e-01,  6.11348804e-01,
-     5.30618165e-01,  4.47130985e-01,  3.63911468e-01,  2.84164703e-01,
-     2.11020945e-01,  1.47228797e-01,  9.48266535e-02,  5.48243661e-02,
-     2.70146141e-02,  9.99674359e-03,
+#define __C2(a, b)  LC3_INTFLOAT_C(a, 30), LC3_INTFLOAT_C(b, 30)
+#define __C4(a, b, c, d)  __C2(a, b), __C2(c, d)
+
+static const lc3_intfloat_t mdct_win_10m_80[80+50] = {
+    __C4( -7.07854671e-04, -2.09819773e-03, -4.52519808e-03, -8.23397633e-03 ),
+    __C4( -1.33771310e-02, -1.99972156e-02, -2.80090946e-02, -3.72150208e-02 ),
+    __C4( -4.73176826e-02, -5.79465483e-02, -6.86760675e-02, -7.90464744e-02 ),
+    __C4( -8.85970547e-02, -9.68830362e-02, -1.03496124e-01, -1.08076646e-01 ),
+    __C4( -1.10324226e-01, -1.09980985e-01, -1.06817214e-01, -1.00619042e-01 ),
+    __C4( -9.11645251e-02, -7.82061748e-02, -6.14668812e-02, -4.06336286e-02 ),
+    __C4( -1.53632952e-02,  1.47015507e-02,  4.98973651e-02,  9.05036926e-02 ),
+    __C4(  1.36691102e-01,  1.88468639e-01,  2.45645680e-01,  3.07778908e-01 ),
+    __C4(  3.74164237e-01,  4.43811480e-01,  5.15473546e-01,  5.87666172e-01 ),
+    __C4(  6.58761977e-01,  7.27057670e-01,  7.90875299e-01,  8.48664336e-01 ),
+    __C4(  8.99132024e-01,  9.41334815e-01,  9.74763483e-01,  9.99411473e-01 ),
+    __C4(  1.01576037e+00,  1.02473616e+00,  1.02763429e+00,  1.02599149e+00 ),
+    __C4(  1.02142721e+00,  1.01543986e+00,  1.00936693e+00,  1.00350816e+00 ),
+    __C4(  9.98889821e-01,  9.95313390e-01,  9.92594392e-01,  9.90577196e-01 ),
+    __C4(  9.89137162e-01,  9.88179075e-01,  9.87624927e-01,  9.87405628e-01 ),
+    __C4(  9.87452485e-01,  9.87695113e-01,  9.88064062e-01,  9.88492687e-01 ),
+    __C4(  9.88923003e-01,  9.89307497e-01,  9.89614633e-01,  9.89831927e-01 ),
+    __C4(  9.89969310e-01,  9.90060335e-01,  9.90157502e-01,  9.90325529e-01 ),
+    __C4(  9.90630379e-01,  9.91129889e-01,  9.91866549e-01,  9.92861973e-01 ),
+    __C4(  9.94115607e-01,  9.95603378e-01,  9.97279311e-01,  9.99078484e-01 ),
+    __C4(  1.00092237e+00,  1.00272811e+00,  1.00441604e+00,  1.00591922e+00 ),
+    __C4(  1.00718935e+00,  1.00820015e+00,  1.00894949e+00,  1.00945824e+00 ),
+    __C4(  1.00976898e+00,  1.00994034e+00,  1.01003945e+00,  1.01013232e+00 ),
+    __C4(  1.01027252e+00,  1.01049435e+00,  1.01080807e+00,  1.01120107e+00 ),
+    __C4(  1.01164127e+00,  1.01208013e+00,  1.01245818e+00,  1.01270696e+00 ),
+    __C4(  1.01275501e+00,  1.01253013e+00,  1.01196233e+00,  1.01098214e+00 ),
+    __C4(  1.00951244e+00,  1.00746086e+00,  1.00470868e+00,  1.00111141e+00 ),
+    __C4(  9.96504102e-01,  9.90720000e-01,  9.82376587e-01,  9.70882175e-01 ),
+    __C4(  9.54673298e-01,  9.32155386e-01,  9.01800368e-01,  8.62398408e-01 ),
+    __C4(  8.13281737e-01,  7.54455197e-01,  6.86658072e-01,  6.11348804e-01 ),
+    __C4(  5.30618165e-01,  4.47130985e-01,  3.63911468e-01,  2.84164703e-01 ),
+    __C4(  2.11020945e-01,  1.47228797e-01,  9.48266535e-02,  5.48243661e-02 ),
+    __C2(  2.70146141e-02,  9.99674359e-03                                   )
 };
 
-static const float mdct_win_10m_160[160+100] = {
-    -4.61989875e-04, -9.74716672e-04, -1.66447310e-03, -2.59710692e-03,
-    -3.80628516e-03, -5.32460872e-03, -7.17588528e-03, -9.38248086e-03,
-    -1.19527030e-02, -1.48952816e-02, -1.82066640e-02, -2.18757093e-02,
-    -2.58847194e-02, -3.02086274e-02, -3.48159779e-02, -3.96706799e-02,
-    -4.47269805e-02, -4.99422586e-02, -5.52633479e-02, -6.06371724e-02,
-    -6.60096152e-02, -7.13196627e-02, -7.65117823e-02, -8.15296401e-02,
-    -8.63113754e-02, -9.08041129e-02, -9.49537776e-02, -9.87073651e-02,
-    -1.02020268e-01, -1.04843883e-01, -1.07138231e-01, -1.08869014e-01,
-    -1.09996966e-01, -1.10489847e-01, -1.10322584e-01, -1.09462175e-01,
-    -1.07883429e-01, -1.05561251e-01, -1.02465016e-01, -9.85701457e-02,
-    -9.38468492e-02, -8.82630999e-02, -8.17879272e-02, -7.43878560e-02,
-    -6.60218980e-02, -5.66565564e-02, -4.62445689e-02, -3.47458578e-02,
-    -2.21158161e-02, -8.31042570e-03,  6.71769764e-03,  2.30064206e-02,
-     4.06010646e-02,  5.95323909e-02,  7.98335419e-02,  1.01523314e-01,
-     1.24617139e-01,  1.49115252e-01,  1.75006740e-01,  2.02269985e-01,
-     2.30865538e-01,  2.60736512e-01,  2.91814469e-01,  3.24009570e-01,
-     3.57217518e-01,  3.91314689e-01,  4.26157164e-01,  4.61592545e-01,
-     4.97447159e-01,  5.33532682e-01,  5.69654673e-01,  6.05608382e-01,
-     6.41183084e-01,  6.76165350e-01,  7.10340055e-01,  7.43494372e-01,
-     7.75428189e-01,  8.05943723e-01,  8.34858937e-01,  8.62010834e-01,
-     8.87259971e-01,  9.10486312e-01,  9.31596250e-01,  9.50522086e-01,
-     9.67236671e-01,  9.81739750e-01,  9.94055718e-01,  1.00424751e+00,
-     1.01240743e+00,  1.01865099e+00,  1.02311884e+00,  1.02597245e+00,
-     1.02739752e+00,  1.02758583e+00,  1.02673867e+00,  1.02506178e+00,
-     1.02275651e+00,  1.02000914e+00,  1.01699650e+00,  1.01391595e+00,
-     1.01104487e+00,  1.00777386e+00,  1.00484875e+00,  1.00224501e+00,
-     9.99939317e-01,  9.97905542e-01,  9.96120338e-01,  9.94559753e-01,
-     9.93203161e-01,  9.92029727e-01,  9.91023065e-01,  9.90166895e-01,
-     9.89448837e-01,  9.88855636e-01,  9.88377852e-01,  9.88005163e-01,
-     9.87729546e-01,  9.87541274e-01,  9.87432981e-01,  9.87394992e-01,
-     9.87419705e-01,  9.87497321e-01,  9.87620124e-01,  9.87778192e-01,
-     9.87963798e-01,  9.88167801e-01,  9.88383520e-01,  9.88602222e-01,
-     9.88818277e-01,  9.89024798e-01,  9.89217866e-01,  9.89392368e-01,
-     9.89546334e-01,  9.89677201e-01,  9.89785920e-01,  9.89872536e-01,
-     9.89941079e-01,  9.89994556e-01,  9.90039402e-01,  9.90081472e-01,
-     9.90129379e-01,  9.90190227e-01,  9.90273445e-01,  9.90386228e-01,
-     9.90537983e-01,  9.90734883e-01,  9.90984259e-01,  9.91290512e-01,
-     9.91658694e-01,  9.92090615e-01,  9.92588721e-01,  9.93151653e-01,
-     9.93779087e-01,  9.94466818e-01,  9.95211663e-01,  9.96006862e-01,
-     9.96846133e-01,  9.97720337e-01,  9.98621352e-01,  9.99538258e-01,
-     1.00046196e+00,  1.00138055e+00,  1.00228487e+00,  1.00316385e+00,
-     1.00400915e+00,  1.00481138e+00,  1.00556397e+00,  1.00625986e+00,
-     1.00689557e+00,  1.00746662e+00,  1.00797244e+00,  1.00841147e+00,
-     1.00878601e+00,  1.00909776e+00,  1.00935176e+00,  1.00955240e+00,
-     1.00970709e+00,  1.00982209e+00,  1.00990696e+00,  1.00996902e+00,
-     1.01001789e+00,  1.01006081e+00,  1.01010656e+00,  1.01016113e+00,
-     1.01023108e+00,  1.01031948e+00,  1.01043047e+00,  1.01056410e+00,
-     1.01072136e+00,  1.01089966e+00,  1.01109699e+00,  1.01130817e+00,
-     1.01152919e+00,  1.01175301e+00,  1.01197388e+00,  1.01218284e+00,
-     1.01237303e+00,  1.01253506e+00,  1.01266098e+00,  1.01274058e+00,
-     1.01276592e+00,  1.01272696e+00,  1.01261590e+00,  1.01242289e+00,
-     1.01214046e+00,  1.01175881e+00,  1.01126996e+00,  1.01066368e+00,
-     1.00993075e+00,  1.00905825e+00,  1.00803431e+00,  1.00684335e+00,
-     1.00547001e+00,  1.00389477e+00,  1.00209885e+00,  1.00006069e+00,
-     9.97760020e-01,  9.95174643e-01,  9.92286108e-01,  9.89075787e-01,
-     9.84736245e-01,  9.79861353e-01,  9.74137862e-01,  9.67333198e-01,
-     9.59253976e-01,  9.49698408e-01,  9.38463416e-01,  9.25356797e-01,
-     9.10198679e-01,  8.92833832e-01,  8.73143784e-01,  8.51042044e-01,
-     8.26483991e-01,  7.99468149e-01,  7.70043128e-01,  7.38302860e-01,
-     7.04381434e-01,  6.68461648e-01,  6.30775533e-01,  5.91579959e-01,
-     5.51170316e-01,  5.09891542e-01,  4.68101711e-01,  4.26177297e-01,
-     3.84517234e-01,  3.43522867e-01,  3.03600465e-01,  2.65143468e-01,
-     2.28528397e-01,  1.94102191e-01,  1.62173542e-01,  1.33001524e-01,
-     1.06784043e-01,  8.36505724e-02,  6.36518811e-02,  4.67653841e-02,
-     3.28807275e-02,  2.18305756e-02,  1.33638143e-02,  6.75812489e-03,
+static const lc3_intfloat_t mdct_win_10m_160[160+100] = {
+    __C4( -4.61989875e-04, -9.74716672e-04, -1.66447310e-03, -2.59710692e-03 ),
+    __C4( -3.80628516e-03, -5.32460872e-03, -7.17588528e-03, -9.38248086e-03 ),
+    __C4( -1.19527030e-02, -1.48952816e-02, -1.82066640e-02, -2.18757093e-02 ),
+    __C4( -2.58847194e-02, -3.02086274e-02, -3.48159779e-02, -3.96706799e-02 ),
+    __C4( -4.47269805e-02, -4.99422586e-02, -5.52633479e-02, -6.06371724e-02 ),
+    __C4( -6.60096152e-02, -7.13196627e-02, -7.65117823e-02, -8.15296401e-02 ),
+    __C4( -8.63113754e-02, -9.08041129e-02, -9.49537776e-02, -9.87073651e-02 ),
+    __C4( -1.02020268e-01, -1.04843883e-01, -1.07138231e-01, -1.08869014e-01 ),
+    __C4( -1.09996966e-01, -1.10489847e-01, -1.10322584e-01, -1.09462175e-01 ),
+    __C4( -1.07883429e-01, -1.05561251e-01, -1.02465016e-01, -9.85701457e-02 ),
+    __C4( -9.38468492e-02, -8.82630999e-02, -8.17879272e-02, -7.43878560e-02 ),
+    __C4( -6.60218980e-02, -5.66565564e-02, -4.62445689e-02, -3.47458578e-02 ),
+    __C4( -2.21158161e-02, -8.31042570e-03,  6.71769764e-03,  2.30064206e-02 ),
+    __C4(  4.06010646e-02,  5.95323909e-02,  7.98335419e-02,  1.01523314e-01 ),
+    __C4(  1.24617139e-01,  1.49115252e-01,  1.75006740e-01,  2.02269985e-01 ),
+    __C4(  2.30865538e-01,  2.60736512e-01,  2.91814469e-01,  3.24009570e-01 ),
+    __C4(  3.57217518e-01,  3.91314689e-01,  4.26157164e-01,  4.61592545e-01 ),
+    __C4(  4.97447159e-01,  5.33532682e-01,  5.69654673e-01,  6.05608382e-01 ),
+    __C4(  6.41183084e-01,  6.76165350e-01,  7.10340055e-01,  7.43494372e-01 ),
+    __C4(  7.75428189e-01,  8.05943723e-01,  8.34858937e-01,  8.62010834e-01 ),
+    __C4(  8.87259971e-01,  9.10486312e-01,  9.31596250e-01,  9.50522086e-01 ),
+    __C4(  9.67236671e-01,  9.81739750e-01,  9.94055718e-01,  1.00424751e+00 ),
+    __C4(  1.01240743e+00,  1.01865099e+00,  1.02311884e+00,  1.02597245e+00 ),
+    __C4(  1.02739752e+00,  1.02758583e+00,  1.02673867e+00,  1.02506178e+00 ),
+    __C4(  1.02275651e+00,  1.02000914e+00,  1.01699650e+00,  1.01391595e+00 ),
+    __C4(  1.01104487e+00,  1.00777386e+00,  1.00484875e+00,  1.00224501e+00 ),
+    __C4(  9.99939317e-01,  9.97905542e-01,  9.96120338e-01,  9.94559753e-01 ),
+    __C4(  9.93203161e-01,  9.92029727e-01,  9.91023065e-01,  9.90166895e-01 ),
+    __C4(  9.89448837e-01,  9.88855636e-01,  9.88377852e-01,  9.88005163e-01 ),
+    __C4(  9.87729546e-01,  9.87541274e-01,  9.87432981e-01,  9.87394992e-01 ),
+    __C4(  9.87419705e-01,  9.87497321e-01,  9.87620124e-01,  9.87778192e-01 ),
+    __C4(  9.87963798e-01,  9.88167801e-01,  9.88383520e-01,  9.88602222e-01 ),
+    __C4(  9.88818277e-01,  9.89024798e-01,  9.89217866e-01,  9.89392368e-01 ),
+    __C4(  9.89546334e-01,  9.89677201e-01,  9.89785920e-01,  9.89872536e-01 ),
+    __C4(  9.89941079e-01,  9.89994556e-01,  9.90039402e-01,  9.90081472e-01 ),
+    __C4(  9.90129379e-01,  9.90190227e-01,  9.90273445e-01,  9.90386228e-01 ),
+    __C4(  9.90537983e-01,  9.90734883e-01,  9.90984259e-01,  9.91290512e-01 ),
+    __C4(  9.91658694e-01,  9.92090615e-01,  9.92588721e-01,  9.93151653e-01 ),
+    __C4(  9.93779087e-01,  9.94466818e-01,  9.95211663e-01,  9.96006862e-01 ),
+    __C4(  9.96846133e-01,  9.97720337e-01,  9.98621352e-01,  9.99538258e-01 ),
+    __C4(  1.00046196e+00,  1.00138055e+00,  1.00228487e+00,  1.00316385e+00 ),
+    __C4(  1.00400915e+00,  1.00481138e+00,  1.00556397e+00,  1.00625986e+00 ),
+    __C4(  1.00689557e+00,  1.00746662e+00,  1.00797244e+00,  1.00841147e+00 ),
+    __C4(  1.00878601e+00,  1.00909776e+00,  1.00935176e+00,  1.00955240e+00 ),
+    __C4(  1.00970709e+00,  1.00982209e+00,  1.00990696e+00,  1.00996902e+00 ),
+    __C4(  1.01001789e+00,  1.01006081e+00,  1.01010656e+00,  1.01016113e+00 ),
+    __C4(  1.01023108e+00,  1.01031948e+00,  1.01043047e+00,  1.01056410e+00 ),
+    __C4(  1.01072136e+00,  1.01089966e+00,  1.01109699e+00,  1.01130817e+00 ),
+    __C4(  1.01152919e+00,  1.01175301e+00,  1.01197388e+00,  1.01218284e+00 ),
+    __C4(  1.01237303e+00,  1.01253506e+00,  1.01266098e+00,  1.01274058e+00 ),
+    __C4(  1.01276592e+00,  1.01272696e+00,  1.01261590e+00,  1.01242289e+00 ),
+    __C4(  1.01214046e+00,  1.01175881e+00,  1.01126996e+00,  1.01066368e+00 ),
+    __C4(  1.00993075e+00,  1.00905825e+00,  1.00803431e+00,  1.00684335e+00 ),
+    __C4(  1.00547001e+00,  1.00389477e+00,  1.00209885e+00,  1.00006069e+00 ),
+    __C4(  9.97760020e-01,  9.95174643e-01,  9.92286108e-01,  9.89075787e-01 ),
+    __C4(  9.84736245e-01,  9.79861353e-01,  9.74137862e-01,  9.67333198e-01 ),
+    __C4(  9.59253976e-01,  9.49698408e-01,  9.38463416e-01,  9.25356797e-01 ),
+    __C4(  9.10198679e-01,  8.92833832e-01,  8.73143784e-01,  8.51042044e-01 ),
+    __C4(  8.26483991e-01,  7.99468149e-01,  7.70043128e-01,  7.38302860e-01 ),
+    __C4(  7.04381434e-01,  6.68461648e-01,  6.30775533e-01,  5.91579959e-01 ),
+    __C4(  5.51170316e-01,  5.09891542e-01,  4.68101711e-01,  4.26177297e-01 ),
+    __C4(  3.84517234e-01,  3.43522867e-01,  3.03600465e-01,  2.65143468e-01 ),
+    __C4(  2.28528397e-01,  1.94102191e-01,  1.62173542e-01,  1.33001524e-01 ),
+    __C4(  1.06784043e-01,  8.36505724e-02,  6.36518811e-02,  4.67653841e-02 ),
+    __C4(  3.28807275e-02,  2.18305756e-02,  1.33638143e-02,  6.75812489e-03 )
 };
 
-static const float mdct_win_10m_240[240+150] = {
-    -3.61349642e-04, -7.07854671e-04, -1.07444364e-03, -1.53347854e-03,
-    -2.09819773e-03, -2.77842087e-03, -3.58412992e-03, -4.52519808e-03,
-    -5.60932724e-03, -6.84323454e-03, -8.23397633e-03, -9.78531476e-03,
-    -1.14988030e-02, -1.33771310e-02, -1.54218168e-02, -1.76297991e-02,
-    -1.99972156e-02, -2.25208056e-02, -2.51940630e-02, -2.80090946e-02,
-    -3.09576509e-02, -3.40299627e-02, -3.72150208e-02, -4.05005325e-02,
-    -4.38721922e-02, -4.73176826e-02, -5.08232534e-02, -5.43716664e-02,
-    -5.79465483e-02, -6.15342620e-02, -6.51170816e-02, -6.86760675e-02,
-    -7.21944781e-02, -7.56569598e-02, -7.90464744e-02, -8.23444256e-02,
-    -8.55332458e-02, -8.85970547e-02, -9.15209110e-02, -9.42884745e-02,
-    -9.68830362e-02, -9.92912326e-02, -1.01500847e-01, -1.03496124e-01,
-    -1.05263700e-01, -1.06793998e-01, -1.08076646e-01, -1.09099730e-01,
-    -1.09852449e-01, -1.10324226e-01, -1.10508462e-01, -1.10397741e-01,
-    -1.09980985e-01, -1.09249277e-01, -1.08197423e-01, -1.06817214e-01,
-    -1.05099580e-01, -1.03036011e-01, -1.00619042e-01, -9.78412002e-02,
-    -9.46930422e-02, -9.11645251e-02, -8.72464453e-02, -8.29304391e-02,
-    -7.82061748e-02, -7.30614243e-02, -6.74846818e-02, -6.14668812e-02,
-    -5.49949726e-02, -4.80544442e-02, -4.06336286e-02, -3.27204559e-02,
-    -2.43012258e-02, -1.53632952e-02, -5.89143427e-03,  4.12659586e-03,
-     1.47015507e-02,  2.58473819e-02,  3.75765277e-02,  4.98973651e-02,
-     6.28203403e-02,  7.63539773e-02,  9.05036926e-02,  1.05274712e-01,
-     1.20670347e-01,  1.36691102e-01,  1.53334389e-01,  1.70595471e-01,
-     1.88468639e-01,  2.06944996e-01,  2.26009300e-01,  2.45645680e-01,
-     2.65834602e-01,  2.86554381e-01,  3.07778908e-01,  3.29476944e-01,
-     3.51617148e-01,  3.74164237e-01,  3.97073959e-01,  4.20304305e-01,
-     4.43811480e-01,  4.67544229e-01,  4.91449863e-01,  5.15473546e-01,
-     5.39555764e-01,  5.63639982e-01,  5.87666172e-01,  6.11569531e-01,
-     6.35289059e-01,  6.58761977e-01,  6.81923097e-01,  7.04709282e-01,
-     7.27057670e-01,  7.48906896e-01,  7.70199019e-01,  7.90875299e-01,
-     8.10878869e-01,  8.30157914e-01,  8.48664336e-01,  8.66354816e-01,
-     8.83189685e-01,  8.99132024e-01,  9.14154056e-01,  9.28228255e-01,
-     9.41334815e-01,  9.53461939e-01,  9.64604825e-01,  9.74763483e-01,
-     9.83943539e-01,  9.92152910e-01,  9.99411473e-01,  1.00574608e+00,
-     1.01118397e+00,  1.01576037e+00,  1.01951507e+00,  1.02249094e+00,
-     1.02473616e+00,  1.02630410e+00,  1.02725098e+00,  1.02763429e+00,
-     1.02751106e+00,  1.02694280e+00,  1.02599149e+00,  1.02471615e+00,
-     1.02317598e+00,  1.02142721e+00,  1.01952157e+00,  1.01751012e+00,
-     1.01543986e+00,  1.01346092e+00,  1.01165490e+00,  1.00936693e+00,
-     1.00726318e+00,  1.00531319e+00,  1.00350816e+00,  1.00184079e+00,
-     1.00030393e+00,  9.98889821e-01,  9.97591528e-01,  9.96401528e-01,
-     9.95313390e-01,  9.94320108e-01,  9.93415896e-01,  9.92594392e-01,
-     9.91851028e-01,  9.91179799e-01,  9.90577196e-01,  9.90038105e-01,
-     9.89559439e-01,  9.89137162e-01,  9.88768437e-01,  9.88449792e-01,
-     9.88179075e-01,  9.87952836e-01,  9.87769137e-01,  9.87624927e-01,
-     9.87517995e-01,  9.87445813e-01,  9.87405628e-01,  9.87395112e-01,
-     9.87411537e-01,  9.87452485e-01,  9.87514989e-01,  9.87596889e-01,
-     9.87695113e-01,  9.87807582e-01,  9.87931200e-01,  9.88064062e-01,
-     9.88203257e-01,  9.88347108e-01,  9.88492687e-01,  9.88638659e-01,
-     9.88782558e-01,  9.88923003e-01,  9.89058172e-01,  9.89186767e-01,
-     9.89307497e-01,  9.89419640e-01,  9.89522076e-01,  9.89614633e-01,
-     9.89697035e-01,  9.89769260e-01,  9.89831927e-01,  9.89885257e-01,
-     9.89930764e-01,  9.89969310e-01,  9.90002569e-01,  9.90032156e-01,
-     9.90060335e-01,  9.90088981e-01,  9.90120659e-01,  9.90157502e-01,
-     9.90202395e-01,  9.90257541e-01,  9.90325529e-01,  9.90408791e-01,
-     9.90509649e-01,  9.90630379e-01,  9.90772711e-01,  9.90938744e-01,
-     9.91129889e-01,  9.91347632e-01,  9.91592856e-01,  9.91866549e-01,
-     9.92169132e-01,  9.92501085e-01,  9.92861973e-01,  9.93251918e-01,
-     9.93670021e-01,  9.94115607e-01,  9.94587315e-01,  9.95083740e-01,
-     9.95603378e-01,  9.96143992e-01,  9.96703453e-01,  9.97279311e-01,
-     9.97869086e-01,  9.98469709e-01,  9.99078484e-01,  9.99691901e-01,
-     1.00030819e+00,  1.00092237e+00,  1.00153264e+00,  1.00213546e+00,
-     1.00272811e+00,  1.00330745e+00,  1.00387093e+00,  1.00441604e+00,
-     1.00494055e+00,  1.00544214e+00,  1.00591922e+00,  1.00637030e+00,
-     1.00679393e+00,  1.00718935e+00,  1.00755557e+00,  1.00789267e+00,
-     1.00820015e+00,  1.00847842e+00,  1.00872788e+00,  1.00894949e+00,
-     1.00914411e+00,  1.00931322e+00,  1.00945824e+00,  1.00958128e+00,
-     1.00968409e+00,  1.00976898e+00,  1.00983831e+00,  1.00989455e+00,
-     1.00994034e+00,  1.00997792e+00,  1.01001023e+00,  1.01003945e+00,
-     1.01006820e+00,  1.01009839e+00,  1.01013232e+00,  1.01017166e+00,
-     1.01021810e+00,  1.01027252e+00,  1.01033649e+00,  1.01041022e+00,
-     1.01049435e+00,  1.01058887e+00,  1.01069350e+00,  1.01080807e+00,
-     1.01093144e+00,  1.01106288e+00,  1.01120107e+00,  1.01134470e+00,
-     1.01149190e+00,  1.01164127e+00,  1.01179028e+00,  1.01193757e+00,
-     1.01208013e+00,  1.01221624e+00,  1.01234291e+00,  1.01245818e+00,
-     1.01255888e+00,  1.01264286e+00,  1.01270696e+00,  1.01274895e+00,
-     1.01276580e+00,  1.01275501e+00,  1.01271380e+00,  1.01263978e+00,
-     1.01253013e+00,  1.01238231e+00,  1.01219407e+00,  1.01196233e+00,
-     1.01168517e+00,  1.01135914e+00,  1.01098214e+00,  1.01055072e+00,
-     1.01006213e+00,  1.00951244e+00,  1.00889869e+00,  1.00821592e+00,
-     1.00746086e+00,  1.00662774e+00,  1.00571234e+00,  1.00470868e+00,
-     1.00361147e+00,  1.00241429e+00,  1.00111141e+00,  9.99696165e-01,
-     9.98162595e-01,  9.96504102e-01,  9.94714888e-01,  9.92789191e-01,
-     9.90720000e-01,  9.88479371e-01,  9.85534766e-01,  9.82376587e-01,
-     9.78974733e-01,  9.75162381e-01,  9.70882175e-01,  9.66080552e-01,
-     9.60697640e-01,  9.54673298e-01,  9.47947935e-01,  9.40460905e-01,
-     9.32155386e-01,  9.22977548e-01,  9.12874535e-01,  9.01800368e-01,
-     8.89716328e-01,  8.76590897e-01,  8.62398408e-01,  8.47120080e-01,
-     8.30747973e-01,  8.13281737e-01,  7.94729145e-01,  7.75110884e-01,
-     7.54455197e-01,  7.32796355e-01,  7.10179084e-01,  6.86658072e-01,
-     6.62296243e-01,  6.37168412e-01,  6.11348804e-01,  5.84920660e-01,
-     5.57974743e-01,  5.30618165e-01,  5.02952396e-01,  4.75086883e-01,
-     4.47130985e-01,  4.19204992e-01,  3.91425291e-01,  3.63911468e-01,
-     3.36783777e-01,  3.10162784e-01,  2.84164703e-01,  2.58903371e-01,
-     2.34488060e-01,  2.11020945e-01,  1.88599764e-01,  1.67310081e-01,
-     1.47228797e-01,  1.28422307e-01,  1.10942255e-01,  9.48266535e-02,
-     8.00991437e-02,  6.67676585e-02,  5.48243661e-02,  4.42458885e-02,
-     3.49936100e-02,  2.70146141e-02,  2.02437018e-02,  1.46079676e-02,
-     9.99674359e-03,  5.30523510e-03,
+static const lc3_intfloat_t mdct_win_10m_240[240+150] = {
+    __C4( -3.61349642e-04, -7.07854671e-04, -1.07444364e-03, -1.53347854e-03 ),
+    __C4( -2.09819773e-03, -2.77842087e-03, -3.58412992e-03, -4.52519808e-03 ),
+    __C4( -5.60932724e-03, -6.84323454e-03, -8.23397633e-03, -9.78531476e-03 ),
+    __C4( -1.14988030e-02, -1.33771310e-02, -1.54218168e-02, -1.76297991e-02 ),
+    __C4( -1.99972156e-02, -2.25208056e-02, -2.51940630e-02, -2.80090946e-02 ),
+    __C4( -3.09576509e-02, -3.40299627e-02, -3.72150208e-02, -4.05005325e-02 ),
+    __C4( -4.38721922e-02, -4.73176826e-02, -5.08232534e-02, -5.43716664e-02 ),
+    __C4( -5.79465483e-02, -6.15342620e-02, -6.51170816e-02, -6.86760675e-02 ),
+    __C4( -7.21944781e-02, -7.56569598e-02, -7.90464744e-02, -8.23444256e-02 ),
+    __C4( -8.55332458e-02, -8.85970547e-02, -9.15209110e-02, -9.42884745e-02 ),
+    __C4( -9.68830362e-02, -9.92912326e-02, -1.01500847e-01, -1.03496124e-01 ),
+    __C4( -1.05263700e-01, -1.06793998e-01, -1.08076646e-01, -1.09099730e-01 ),
+    __C4( -1.09852449e-01, -1.10324226e-01, -1.10508462e-01, -1.10397741e-01 ),
+    __C4( -1.09980985e-01, -1.09249277e-01, -1.08197423e-01, -1.06817214e-01 ),
+    __C4( -1.05099580e-01, -1.03036011e-01, -1.00619042e-01, -9.78412002e-02 ),
+    __C4( -9.46930422e-02, -9.11645251e-02, -8.72464453e-02, -8.29304391e-02 ),
+    __C4( -7.82061748e-02, -7.30614243e-02, -6.74846818e-02, -6.14668812e-02 ),
+    __C4( -5.49949726e-02, -4.80544442e-02, -4.06336286e-02, -3.27204559e-02 ),
+    __C4( -2.43012258e-02, -1.53632952e-02, -5.89143427e-03,  4.12659586e-03 ),
+    __C4(  1.47015507e-02,  2.58473819e-02,  3.75765277e-02,  4.98973651e-02 ),
+    __C4(  6.28203403e-02,  7.63539773e-02,  9.05036926e-02,  1.05274712e-01 ),
+    __C4(  1.20670347e-01,  1.36691102e-01,  1.53334389e-01,  1.70595471e-01 ),
+    __C4(  1.88468639e-01,  2.06944996e-01,  2.26009300e-01,  2.45645680e-01 ),
+    __C4(  2.65834602e-01,  2.86554381e-01,  3.07778908e-01,  3.29476944e-01 ),
+    __C4(  3.51617148e-01,  3.74164237e-01,  3.97073959e-01,  4.20304305e-01 ),
+    __C4(  4.43811480e-01,  4.67544229e-01,  4.91449863e-01,  5.15473546e-01 ),
+    __C4(  5.39555764e-01,  5.63639982e-01,  5.87666172e-01,  6.11569531e-01 ),
+    __C4(  6.35289059e-01,  6.58761977e-01,  6.81923097e-01,  7.04709282e-01 ),
+    __C4(  7.27057670e-01,  7.48906896e-01,  7.70199019e-01,  7.90875299e-01 ),
+    __C4(  8.10878869e-01,  8.30157914e-01,  8.48664336e-01,  8.66354816e-01 ),
+    __C4(  8.83189685e-01,  8.99132024e-01,  9.14154056e-01,  9.28228255e-01 ),
+    __C4(  9.41334815e-01,  9.53461939e-01,  9.64604825e-01,  9.74763483e-01 ),
+    __C4(  9.83943539e-01,  9.92152910e-01,  9.99411473e-01,  1.00574608e+00 ),
+    __C4(  1.01118397e+00,  1.01576037e+00,  1.01951507e+00,  1.02249094e+00 ),
+    __C4(  1.02473616e+00,  1.02630410e+00,  1.02725098e+00,  1.02763429e+00 ),
+    __C4(  1.02751106e+00,  1.02694280e+00,  1.02599149e+00,  1.02471615e+00 ),
+    __C4(  1.02317598e+00,  1.02142721e+00,  1.01952157e+00,  1.01751012e+00 ),
+    __C4(  1.01543986e+00,  1.01346092e+00,  1.01165490e+00,  1.00936693e+00 ),
+    __C4(  1.00726318e+00,  1.00531319e+00,  1.00350816e+00,  1.00184079e+00 ),
+    __C4(  1.00030393e+00,  9.98889821e-01,  9.97591528e-01,  9.96401528e-01 ),
+    __C4(  9.95313390e-01,  9.94320108e-01,  9.93415896e-01,  9.92594392e-01 ),
+    __C4(  9.91851028e-01,  9.91179799e-01,  9.90577196e-01,  9.90038105e-01 ),
+    __C4(  9.89559439e-01,  9.89137162e-01,  9.88768437e-01,  9.88449792e-01 ),
+    __C4(  9.88179075e-01,  9.87952836e-01,  9.87769137e-01,  9.87624927e-01 ),
+    __C4(  9.87517995e-01,  9.87445813e-01,  9.87405628e-01,  9.87395112e-01 ),
+    __C4(  9.87411537e-01,  9.87452485e-01,  9.87514989e-01,  9.87596889e-01 ),
+    __C4(  9.87695113e-01,  9.87807582e-01,  9.87931200e-01,  9.88064062e-01 ),
+    __C4(  9.88203257e-01,  9.88347108e-01,  9.88492687e-01,  9.88638659e-01 ),
+    __C4(  9.88782558e-01,  9.88923003e-01,  9.89058172e-01,  9.89186767e-01 ),
+    __C4(  9.89307497e-01,  9.89419640e-01,  9.89522076e-01,  9.89614633e-01 ),
+    __C4(  9.89697035e-01,  9.89769260e-01,  9.89831927e-01,  9.89885257e-01 ),
+    __C4(  9.89930764e-01,  9.89969310e-01,  9.90002569e-01,  9.90032156e-01 ),
+    __C4(  9.90060335e-01,  9.90088981e-01,  9.90120659e-01,  9.90157502e-01 ),
+    __C4(  9.90202395e-01,  9.90257541e-01,  9.90325529e-01,  9.90408791e-01 ),
+    __C4(  9.90509649e-01,  9.90630379e-01,  9.90772711e-01,  9.90938744e-01 ),
+    __C4(  9.91129889e-01,  9.91347632e-01,  9.91592856e-01,  9.91866549e-01 ),
+    __C4(  9.92169132e-01,  9.92501085e-01,  9.92861973e-01,  9.93251918e-01 ),
+    __C4(  9.93670021e-01,  9.94115607e-01,  9.94587315e-01,  9.95083740e-01 ),
+    __C4(  9.95603378e-01,  9.96143992e-01,  9.96703453e-01,  9.97279311e-01 ),
+    __C4(  9.97869086e-01,  9.98469709e-01,  9.99078484e-01,  9.99691901e-01 ),
+    __C4(  1.00030819e+00,  1.00092237e+00,  1.00153264e+00,  1.00213546e+00 ),
+    __C4(  1.00272811e+00,  1.00330745e+00,  1.00387093e+00,  1.00441604e+00 ),
+    __C4(  1.00494055e+00,  1.00544214e+00,  1.00591922e+00,  1.00637030e+00 ),
+    __C4(  1.00679393e+00,  1.00718935e+00,  1.00755557e+00,  1.00789267e+00 ),
+    __C4(  1.00820015e+00,  1.00847842e+00,  1.00872788e+00,  1.00894949e+00 ),
+    __C4(  1.00914411e+00,  1.00931322e+00,  1.00945824e+00,  1.00958128e+00 ),
+    __C4(  1.00968409e+00,  1.00976898e+00,  1.00983831e+00,  1.00989455e+00 ),
+    __C4(  1.00994034e+00,  1.00997792e+00,  1.01001023e+00,  1.01003945e+00 ),
+    __C4(  1.01006820e+00,  1.01009839e+00,  1.01013232e+00,  1.01017166e+00 ),
+    __C4(  1.01021810e+00,  1.01027252e+00,  1.01033649e+00,  1.01041022e+00 ),
+    __C4(  1.01049435e+00,  1.01058887e+00,  1.01069350e+00,  1.01080807e+00 ),
+    __C4(  1.01093144e+00,  1.01106288e+00,  1.01120107e+00,  1.01134470e+00 ),
+    __C4(  1.01149190e+00,  1.01164127e+00,  1.01179028e+00,  1.01193757e+00 ),
+    __C4(  1.01208013e+00,  1.01221624e+00,  1.01234291e+00,  1.01245818e+00 ),
+    __C4(  1.01255888e+00,  1.01264286e+00,  1.01270696e+00,  1.01274895e+00 ),
+    __C4(  1.01276580e+00,  1.01275501e+00,  1.01271380e+00,  1.01263978e+00 ),
+    __C4(  1.01253013e+00,  1.01238231e+00,  1.01219407e+00,  1.01196233e+00 ),
+    __C4(  1.01168517e+00,  1.01135914e+00,  1.01098214e+00,  1.01055072e+00 ),
+    __C4(  1.01006213e+00,  1.00951244e+00,  1.00889869e+00,  1.00821592e+00 ),
+    __C4(  1.00746086e+00,  1.00662774e+00,  1.00571234e+00,  1.00470868e+00 ),
+    __C4(  1.00361147e+00,  1.00241429e+00,  1.00111141e+00,  9.99696165e-01 ),
+    __C4(  9.98162595e-01,  9.96504102e-01,  9.94714888e-01,  9.92789191e-01 ),
+    __C4(  9.90720000e-01,  9.88479371e-01,  9.85534766e-01,  9.82376587e-01 ),
+    __C4(  9.78974733e-01,  9.75162381e-01,  9.70882175e-01,  9.66080552e-01 ),
+    __C4(  9.60697640e-01,  9.54673298e-01,  9.47947935e-01,  9.40460905e-01 ),
+    __C4(  9.32155386e-01,  9.22977548e-01,  9.12874535e-01,  9.01800368e-01 ),
+    __C4(  8.89716328e-01,  8.76590897e-01,  8.62398408e-01,  8.47120080e-01 ),
+    __C4(  8.30747973e-01,  8.13281737e-01,  7.94729145e-01,  7.75110884e-01 ),
+    __C4(  7.54455197e-01,  7.32796355e-01,  7.10179084e-01,  6.86658072e-01 ),
+    __C4(  6.62296243e-01,  6.37168412e-01,  6.11348804e-01,  5.84920660e-01 ),
+    __C4(  5.57974743e-01,  5.30618165e-01,  5.02952396e-01,  4.75086883e-01 ),
+    __C4(  4.47130985e-01,  4.19204992e-01,  3.91425291e-01,  3.63911468e-01 ),
+    __C4(  3.36783777e-01,  3.10162784e-01,  2.84164703e-01,  2.58903371e-01 ),
+    __C4(  2.34488060e-01,  2.11020945e-01,  1.88599764e-01,  1.67310081e-01 ),
+    __C4(  1.47228797e-01,  1.28422307e-01,  1.10942255e-01,  9.48266535e-02 ),
+    __C4(  8.00991437e-02,  6.67676585e-02,  5.48243661e-02,  4.42458885e-02 ),
+    __C4(  3.49936100e-02,  2.70146141e-02,  2.02437018e-02,  1.46079676e-02 ),
+    __C2(  9.99674359e-03,  5.30523510e-03                                   )
 };
 
-static const float mdct_win_10m_320[320+200] = {
-    -3.02115349e-04, -5.86773749e-04, -8.36650400e-04, -1.12663536e-03,
-    -1.47049294e-03, -1.87347339e-03, -2.33929236e-03, -2.87200807e-03,
-    -3.47625639e-03, -4.15596382e-03, -4.91456379e-03, -5.75517250e-03,
-    -6.68062338e-03, -7.69381692e-03, -8.79676075e-03, -9.99050307e-03,
-    -1.12757412e-02, -1.26533415e-02, -1.41243899e-02, -1.56888962e-02,
-    -1.73451209e-02, -1.90909737e-02, -2.09254671e-02, -2.28468479e-02,
-    -2.48520772e-02, -2.69374670e-02, -2.90995249e-02, -3.13350463e-02,
-    -3.36396073e-02, -3.60082097e-02, -3.84360174e-02, -4.09174603e-02,
-    -4.34465489e-02, -4.60178672e-02, -4.86259851e-02, -5.12647420e-02,
-    -5.39264475e-02, -5.66038431e-02, -5.92911675e-02, -6.19826820e-02,
-    -6.46702555e-02, -6.73454222e-02, -7.00009902e-02, -7.26305701e-02,
-    -7.52278496e-02, -7.77852594e-02, -8.02948025e-02, -8.27492454e-02,
-    -8.51412546e-02, -8.74637912e-02, -8.97106934e-02, -9.18756408e-02,
-    -9.39517698e-02, -9.59313774e-02, -9.78084326e-02, -9.95785130e-02,
-    -1.01236117e-01, -1.02774104e-01, -1.04186122e-01, -1.05468025e-01,
-    -1.06616088e-01, -1.07625538e-01, -1.08491230e-01, -1.09208742e-01,
-    -1.09773615e-01, -1.10180886e-01, -1.10427188e-01, -1.10510836e-01,
-    -1.10428147e-01, -1.10173922e-01, -1.09743736e-01, -1.09135313e-01,
-    -1.08346734e-01, -1.07373994e-01, -1.06213016e-01, -1.04860615e-01,
-    -1.03313240e-01, -1.01567316e-01, -9.96200551e-02, -9.74680323e-02,
-    -9.51072362e-02, -9.25330338e-02, -8.97412522e-02, -8.67287769e-02,
-    -8.34921384e-02, -8.00263990e-02, -7.63267954e-02, -7.23880616e-02,
-    -6.82057680e-02, -6.37761143e-02, -5.90938600e-02, -5.41531632e-02,
-    -4.89481272e-02, -4.34734711e-02, -3.77246130e-02, -3.16958761e-02,
-    -2.53817983e-02, -1.87768910e-02, -1.18746138e-02, -4.66909925e-03,
-     2.84409675e-03,  1.06697612e-02,  1.88135595e-02,  2.72815601e-02,
-     3.60781047e-02,  4.52070276e-02,  5.46723880e-02,  6.44786605e-02,
-     7.46286220e-02,  8.51249057e-02,  9.59698399e-02,  1.07165078e-01,
-     1.18711585e-01,  1.30610107e-01,  1.42859645e-01,  1.55458473e-01,
-     1.68404161e-01,  1.81694789e-01,  1.95327388e-01,  2.09296321e-01,
-     2.23594564e-01,  2.38216022e-01,  2.53152972e-01,  2.68396157e-01,
-     2.83936139e-01,  2.99762426e-01,  3.15861908e-01,  3.32221055e-01,
-     3.48826468e-01,  3.65664038e-01,  3.82715297e-01,  3.99961186e-01,
-     4.17384327e-01,  4.34966962e-01,  4.52687640e-01,  4.70524201e-01,
-     4.88453925e-01,  5.06454555e-01,  5.24500675e-01,  5.42567437e-01,
-     5.60631204e-01,  5.78667265e-01,  5.96647704e-01,  6.14545890e-01,
-     6.32336194e-01,  6.49992632e-01,  6.67487403e-01,  6.84793267e-01,
-     7.01883546e-01,  7.18732254e-01,  7.35312821e-01,  7.51600199e-01,
-     7.67569925e-01,  7.83197457e-01,  7.98458386e-01,  8.13329535e-01,
-     8.27789227e-01,  8.41817856e-01,  8.55396130e-01,  8.68506898e-01,
-     8.81133444e-01,  8.93259678e-01,  9.04874884e-01,  9.15965761e-01,
-     9.26521530e-01,  9.36533999e-01,  9.45997703e-01,  9.54908841e-01,
-     9.63265812e-01,  9.71068890e-01,  9.78320416e-01,  9.85022676e-01,
-     9.91179208e-01,  9.96798994e-01,  1.00189402e+00,  1.00647434e+00,
-     1.01055206e+00,  1.01414254e+00,  1.01726259e+00,  1.01992884e+00,
-     1.02215987e+00,  1.02397632e+00,  1.02540073e+00,  1.02645534e+00,
-     1.02716451e+00,  1.02755273e+00,  1.02764446e+00,  1.02746325e+00,
-     1.02703590e+00,  1.02638907e+00,  1.02554820e+00,  1.02453713e+00,
-     1.02338080e+00,  1.02210370e+00,  1.02072836e+00,  1.01927533e+00,
-     1.01776518e+00,  1.01621736e+00,  1.01466531e+00,  1.01324907e+00,
-     1.01194801e+00,  1.01018909e+00,  1.00855796e+00,  1.00701129e+00,
-     1.00554876e+00,  1.00416842e+00,  1.00286727e+00,  1.00164177e+00,
-     1.00048907e+00,  9.99406080e-01,  9.98389887e-01,  9.97437085e-01,
-     9.96544484e-01,  9.95709855e-01,  9.94930241e-01,  9.94202405e-01,
-     9.93524160e-01,  9.92893043e-01,  9.92306810e-01,  9.91763378e-01,
-     9.91259764e-01,  9.90795450e-01,  9.90367789e-01,  9.89975161e-01,
-     9.89616034e-01,  9.89289016e-01,  9.88992851e-01,  9.88726033e-01,
-     9.88486872e-01,  9.88275104e-01,  9.88089217e-01,  9.87927711e-01,
-     9.87789826e-01,  9.87674344e-01,  9.87580750e-01,  9.87507202e-01,
-     9.87452945e-01,  9.87416974e-01,  9.87398469e-01,  9.87395830e-01,
-     9.87408003e-01,  9.87434340e-01,  9.87473624e-01,  9.87524314e-01,
-     9.87585620e-01,  9.87656379e-01,  9.87735892e-01,  9.87822558e-01,
-     9.87915097e-01,  9.88013273e-01,  9.88115695e-01,  9.88221131e-01,
-     9.88328903e-01,  9.88437831e-01,  9.88547679e-01,  9.88656841e-01,
-     9.88764587e-01,  9.88870854e-01,  9.88974432e-01,  9.89074727e-01,
-     9.89171004e-01,  9.89263102e-01,  9.89350722e-01,  9.89433065e-01,
-     9.89509692e-01,  9.89581081e-01,  9.89646747e-01,  9.89706737e-01,
-     9.89760693e-01,  9.89809448e-01,  9.89853013e-01,  9.89891471e-01,
-     9.89925419e-01,  9.89955420e-01,  9.89982449e-01,  9.90006512e-01,
-     9.90028481e-01,  9.90049748e-01,  9.90070956e-01,  9.90092836e-01,
-     9.90116392e-01,  9.90142748e-01,  9.90173428e-01,  9.90208733e-01,
-     9.90249864e-01,  9.90298369e-01,  9.90354850e-01,  9.90420508e-01,
-     9.90495930e-01,  9.90582515e-01,  9.90681257e-01,  9.90792209e-01,
-     9.90916546e-01,  9.91055074e-01,  9.91208461e-01,  9.91376861e-01,
-     9.91560583e-01,  9.91760421e-01,  9.91976718e-01,  9.92209110e-01,
-     9.92457914e-01,  9.92723123e-01,  9.93004954e-01,  9.93302728e-01,
-     9.93616108e-01,  9.93945371e-01,  9.94289515e-01,  9.94648168e-01,
-     9.95020303e-01,  9.95405817e-01,  9.95803871e-01,  9.96213027e-01,
-     9.96632469e-01,  9.97061531e-01,  9.97499058e-01,  9.97943743e-01,
-     9.98394057e-01,  9.98849312e-01,  9.99308343e-01,  9.99768922e-01,
-     1.00023113e+00,  1.00069214e+00,  1.00115201e+00,  1.00160853e+00,
-     1.00206049e+00,  1.00250721e+00,  1.00294713e+00,  1.00337891e+00,
-     1.00380137e+00,  1.00421381e+00,  1.00461539e+00,  1.00500462e+00,
-     1.00538063e+00,  1.00574328e+00,  1.00609151e+00,  1.00642491e+00,
-     1.00674243e+00,  1.00704432e+00,  1.00733022e+00,  1.00759940e+00,
-     1.00785206e+00,  1.00808818e+00,  1.00830803e+00,  1.00851125e+00,
-     1.00869814e+00,  1.00886952e+00,  1.00902566e+00,  1.00916672e+00,
-     1.00929336e+00,  1.00940640e+00,  1.00950702e+00,  1.00959526e+00,
-     1.00967215e+00,  1.00973908e+00,  1.00979668e+00,  1.00984614e+00,
-     1.00988808e+00,  1.00992409e+00,  1.00995538e+00,  1.00998227e+00,
-     1.01000630e+00,  1.01002862e+00,  1.01005025e+00,  1.01007195e+00,
-     1.01009437e+00,  1.01011892e+00,  1.01014650e+00,  1.01017711e+00,
-     1.01021176e+00,  1.01025100e+00,  1.01029547e+00,  1.01034523e+00,
-     1.01040032e+00,  1.01046156e+00,  1.01052862e+00,  1.01060152e+00,
-     1.01067979e+00,  1.01076391e+00,  1.01085343e+00,  1.01094755e+00,
-     1.01104595e+00,  1.01114849e+00,  1.01125440e+00,  1.01136308e+00,
-     1.01147330e+00,  1.01158500e+00,  1.01169742e+00,  1.01180892e+00,
-     1.01191926e+00,  1.01202724e+00,  1.01213215e+00,  1.01223273e+00,
-     1.01232756e+00,  1.01241638e+00,  1.01249789e+00,  1.01257043e+00,
-     1.01263330e+00,  1.01268528e+00,  1.01272556e+00,  1.01275258e+00,
-     1.01276506e+00,  1.01276236e+00,  1.01274338e+00,  1.01270648e+00,
-     1.01265084e+00,  1.01257543e+00,  1.01247947e+00,  1.01236111e+00,
-     1.01221981e+00,  1.01205436e+00,  1.01186400e+00,  1.01164722e+00,
-     1.01140252e+00,  1.01112965e+00,  1.01082695e+00,  1.01049292e+00,
-     1.01012635e+00,  1.00972589e+00,  1.00929006e+00,  1.00881730e+00,
-     1.00830503e+00,  1.00775283e+00,  1.00715783e+00,  1.00651805e+00,
-     1.00583140e+00,  1.00509559e+00,  1.00430863e+00,  1.00346750e+00,
-     1.00256950e+00,  1.00161271e+00,  1.00059427e+00,  9.99511170e-01,
-     9.98360922e-01,  9.97140929e-01,  9.95848886e-01,  9.94481854e-01,
-     9.93037528e-01,  9.91514656e-01,  9.89913680e-01,  9.88193062e-01,
-     9.85942259e-01,  9.83566790e-01,  9.81142303e-01,  9.78521444e-01,
-     9.75663604e-01,  9.72545344e-01,  9.69145663e-01,  9.65440618e-01,
-     9.61404362e-01,  9.57011307e-01,  9.52236767e-01,  9.47054884e-01,
-     9.41440374e-01,  9.35369161e-01,  9.28819009e-01,  9.21766289e-01,
-     9.14189628e-01,  9.06069468e-01,  8.97389168e-01,  8.88133200e-01,
-     8.78289389e-01,  8.67846957e-01,  8.56797064e-01,  8.45133465e-01,
-     8.32854281e-01,  8.19959478e-01,  8.06451101e-01,  7.92334648e-01,
-     7.77620449e-01,  7.62320618e-01,  7.46448649e-01,  7.30020573e-01,
-     7.13056738e-01,  6.95580544e-01,  6.77617323e-01,  6.59195531e-01,
-     6.40348643e-01,  6.21107220e-01,  6.01504928e-01,  5.81578761e-01,
-     5.61367451e-01,  5.40918863e-01,  5.20273683e-01,  4.99478073e-01,
-     4.78577418e-01,  4.57617260e-01,  4.36649021e-01,  4.15722146e-01,
-     3.94885659e-01,  3.74190319e-01,  3.53686890e-01,  3.33426002e-01,
-     3.13458647e-01,  2.93833790e-01,  2.74599264e-01,  2.55803064e-01,
-     2.37490219e-01,  2.19703603e-01,  2.02485542e-01,  1.85874992e-01,
-     1.69906780e-01,  1.54613227e-01,  1.40023821e-01,  1.26163740e-01,
-     1.13053443e-01,  1.00708497e-01,  8.91402439e-02,  7.83561210e-02,
-     6.83582123e-02,  5.91421154e-02,  5.06989301e-02,  4.30171776e-02,
-     3.60802073e-02,  2.98631634e-02,  2.43372266e-02,  1.94767524e-02,
-     1.52571017e-02,  1.16378749e-02,  8.43308778e-03,  4.44966900e-03,
+static const lc3_intfloat_t mdct_win_10m_320[320+200] = {
+    __C4( -3.02115349e-04, -5.86773749e-04, -8.36650400e-04, -1.12663536e-03 ),
+    __C4( -1.47049294e-03, -1.87347339e-03, -2.33929236e-03, -2.87200807e-03 ),
+    __C4( -3.47625639e-03, -4.15596382e-03, -4.91456379e-03, -5.75517250e-03 ),
+    __C4( -6.68062338e-03, -7.69381692e-03, -8.79676075e-03, -9.99050307e-03 ),
+    __C4( -1.12757412e-02, -1.26533415e-02, -1.41243899e-02, -1.56888962e-02 ),
+    __C4( -1.73451209e-02, -1.90909737e-02, -2.09254671e-02, -2.28468479e-02 ),
+    __C4( -2.48520772e-02, -2.69374670e-02, -2.90995249e-02, -3.13350463e-02 ),
+    __C4( -3.36396073e-02, -3.60082097e-02, -3.84360174e-02, -4.09174603e-02 ),
+    __C4( -4.34465489e-02, -4.60178672e-02, -4.86259851e-02, -5.12647420e-02 ),
+    __C4( -5.39264475e-02, -5.66038431e-02, -5.92911675e-02, -6.19826820e-02 ),
+    __C4( -6.46702555e-02, -6.73454222e-02, -7.00009902e-02, -7.26305701e-02 ),
+    __C4( -7.52278496e-02, -7.77852594e-02, -8.02948025e-02, -8.27492454e-02 ),
+    __C4( -8.51412546e-02, -8.74637912e-02, -8.97106934e-02, -9.18756408e-02 ),
+    __C4( -9.39517698e-02, -9.59313774e-02, -9.78084326e-02, -9.95785130e-02 ),
+    __C4( -1.01236117e-01, -1.02774104e-01, -1.04186122e-01, -1.05468025e-01 ),
+    __C4( -1.06616088e-01, -1.07625538e-01, -1.08491230e-01, -1.09208742e-01 ),
+    __C4( -1.09773615e-01, -1.10180886e-01, -1.10427188e-01, -1.10510836e-01 ),
+    __C4( -1.10428147e-01, -1.10173922e-01, -1.09743736e-01, -1.09135313e-01 ),
+    __C4( -1.08346734e-01, -1.07373994e-01, -1.06213016e-01, -1.04860615e-01 ),
+    __C4( -1.03313240e-01, -1.01567316e-01, -9.96200551e-02, -9.74680323e-02 ),
+    __C4( -9.51072362e-02, -9.25330338e-02, -8.97412522e-02, -8.67287769e-02 ),
+    __C4( -8.34921384e-02, -8.00263990e-02, -7.63267954e-02, -7.23880616e-02 ),
+    __C4( -6.82057680e-02, -6.37761143e-02, -5.90938600e-02, -5.41531632e-02 ),
+    __C4( -4.89481272e-02, -4.34734711e-02, -3.77246130e-02, -3.16958761e-02 ),
+    __C4( -2.53817983e-02, -1.87768910e-02, -1.18746138e-02, -4.66909925e-03 ),
+    __C4(  2.84409675e-03,  1.06697612e-02,  1.88135595e-02,  2.72815601e-02 ),
+    __C4(  3.60781047e-02,  4.52070276e-02,  5.46723880e-02,  6.44786605e-02 ),
+    __C4(  7.46286220e-02,  8.51249057e-02,  9.59698399e-02,  1.07165078e-01 ),
+    __C4(  1.18711585e-01,  1.30610107e-01,  1.42859645e-01,  1.55458473e-01 ),
+    __C4(  1.68404161e-01,  1.81694789e-01,  1.95327388e-01,  2.09296321e-01 ),
+    __C4(  2.23594564e-01,  2.38216022e-01,  2.53152972e-01,  2.68396157e-01 ),
+    __C4(  2.83936139e-01,  2.99762426e-01,  3.15861908e-01,  3.32221055e-01 ),
+    __C4(  3.48826468e-01,  3.65664038e-01,  3.82715297e-01,  3.99961186e-01 ),
+    __C4(  4.17384327e-01,  4.34966962e-01,  4.52687640e-01,  4.70524201e-01 ),
+    __C4(  4.88453925e-01,  5.06454555e-01,  5.24500675e-01,  5.42567437e-01 ),
+    __C4(  5.60631204e-01,  5.78667265e-01,  5.96647704e-01,  6.14545890e-01 ),
+    __C4(  6.32336194e-01,  6.49992632e-01,  6.67487403e-01,  6.84793267e-01 ),
+    __C4(  7.01883546e-01,  7.18732254e-01,  7.35312821e-01,  7.51600199e-01 ),
+    __C4(  7.67569925e-01,  7.83197457e-01,  7.98458386e-01,  8.13329535e-01 ),
+    __C4(  8.27789227e-01,  8.41817856e-01,  8.55396130e-01,  8.68506898e-01 ),
+    __C4(  8.81133444e-01,  8.93259678e-01,  9.04874884e-01,  9.15965761e-01 ),
+    __C4(  9.26521530e-01,  9.36533999e-01,  9.45997703e-01,  9.54908841e-01 ),
+    __C4(  9.63265812e-01,  9.71068890e-01,  9.78320416e-01,  9.85022676e-01 ),
+    __C4(  9.91179208e-01,  9.96798994e-01,  1.00189402e+00,  1.00647434e+00 ),
+    __C4(  1.01055206e+00,  1.01414254e+00,  1.01726259e+00,  1.01992884e+00 ),
+    __C4(  1.02215987e+00,  1.02397632e+00,  1.02540073e+00,  1.02645534e+00 ),
+    __C4(  1.02716451e+00,  1.02755273e+00,  1.02764446e+00,  1.02746325e+00 ),
+    __C4(  1.02703590e+00,  1.02638907e+00,  1.02554820e+00,  1.02453713e+00 ),
+    __C4(  1.02338080e+00,  1.02210370e+00,  1.02072836e+00,  1.01927533e+00 ),
+    __C4(  1.01776518e+00,  1.01621736e+00,  1.01466531e+00,  1.01324907e+00 ),
+    __C4(  1.01194801e+00,  1.01018909e+00,  1.00855796e+00,  1.00701129e+00 ),
+    __C4(  1.00554876e+00,  1.00416842e+00,  1.00286727e+00,  1.00164177e+00 ),
+    __C4(  1.00048907e+00,  9.99406080e-01,  9.98389887e-01,  9.97437085e-01 ),
+    __C4(  9.96544484e-01,  9.95709855e-01,  9.94930241e-01,  9.94202405e-01 ),
+    __C4(  9.93524160e-01,  9.92893043e-01,  9.92306810e-01,  9.91763378e-01 ),
+    __C4(  9.91259764e-01,  9.90795450e-01,  9.90367789e-01,  9.89975161e-01 ),
+    __C4(  9.89616034e-01,  9.89289016e-01,  9.88992851e-01,  9.88726033e-01 ),
+    __C4(  9.88486872e-01,  9.88275104e-01,  9.88089217e-01,  9.87927711e-01 ),
+    __C4(  9.87789826e-01,  9.87674344e-01,  9.87580750e-01,  9.87507202e-01 ),
+    __C4(  9.87452945e-01,  9.87416974e-01,  9.87398469e-01,  9.87395830e-01 ),
+    __C4(  9.87408003e-01,  9.87434340e-01,  9.87473624e-01,  9.87524314e-01 ),
+    __C4(  9.87585620e-01,  9.87656379e-01,  9.87735892e-01,  9.87822558e-01 ),
+    __C4(  9.87915097e-01,  9.88013273e-01,  9.88115695e-01,  9.88221131e-01 ),
+    __C4(  9.88328903e-01,  9.88437831e-01,  9.88547679e-01,  9.88656841e-01 ),
+    __C4(  9.88764587e-01,  9.88870854e-01,  9.88974432e-01,  9.89074727e-01 ),
+    __C4(  9.89171004e-01,  9.89263102e-01,  9.89350722e-01,  9.89433065e-01 ),
+    __C4(  9.89509692e-01,  9.89581081e-01,  9.89646747e-01,  9.89706737e-01 ),
+    __C4(  9.89760693e-01,  9.89809448e-01,  9.89853013e-01,  9.89891471e-01 ),
+    __C4(  9.89925419e-01,  9.89955420e-01,  9.89982449e-01,  9.90006512e-01 ),
+    __C4(  9.90028481e-01,  9.90049748e-01,  9.90070956e-01,  9.90092836e-01 ),
+    __C4(  9.90116392e-01,  9.90142748e-01,  9.90173428e-01,  9.90208733e-01 ),
+    __C4(  9.90249864e-01,  9.90298369e-01,  9.90354850e-01,  9.90420508e-01 ),
+    __C4(  9.90495930e-01,  9.90582515e-01,  9.90681257e-01,  9.90792209e-01 ),
+    __C4(  9.90916546e-01,  9.91055074e-01,  9.91208461e-01,  9.91376861e-01 ),
+    __C4(  9.91560583e-01,  9.91760421e-01,  9.91976718e-01,  9.92209110e-01 ),
+    __C4(  9.92457914e-01,  9.92723123e-01,  9.93004954e-01,  9.93302728e-01 ),
+    __C4(  9.93616108e-01,  9.93945371e-01,  9.94289515e-01,  9.94648168e-01 ),
+    __C4(  9.95020303e-01,  9.95405817e-01,  9.95803871e-01,  9.96213027e-01 ),
+    __C4(  9.96632469e-01,  9.97061531e-01,  9.97499058e-01,  9.97943743e-01 ),
+    __C4(  9.98394057e-01,  9.98849312e-01,  9.99308343e-01,  9.99768922e-01 ),
+    __C4(  1.00023113e+00,  1.00069214e+00,  1.00115201e+00,  1.00160853e+00 ),
+    __C4(  1.00206049e+00,  1.00250721e+00,  1.00294713e+00,  1.00337891e+00 ),
+    __C4(  1.00380137e+00,  1.00421381e+00,  1.00461539e+00,  1.00500462e+00 ),
+    __C4(  1.00538063e+00,  1.00574328e+00,  1.00609151e+00,  1.00642491e+00 ),
+    __C4(  1.00674243e+00,  1.00704432e+00,  1.00733022e+00,  1.00759940e+00 ),
+    __C4(  1.00785206e+00,  1.00808818e+00,  1.00830803e+00,  1.00851125e+00 ),
+    __C4(  1.00869814e+00,  1.00886952e+00,  1.00902566e+00,  1.00916672e+00 ),
+    __C4(  1.00929336e+00,  1.00940640e+00,  1.00950702e+00,  1.00959526e+00 ),
+    __C4(  1.00967215e+00,  1.00973908e+00,  1.00979668e+00,  1.00984614e+00 ),
+    __C4(  1.00988808e+00,  1.00992409e+00,  1.00995538e+00,  1.00998227e+00 ),
+    __C4(  1.01000630e+00,  1.01002862e+00,  1.01005025e+00,  1.01007195e+00 ),
+    __C4(  1.01009437e+00,  1.01011892e+00,  1.01014650e+00,  1.01017711e+00 ),
+    __C4(  1.01021176e+00,  1.01025100e+00,  1.01029547e+00,  1.01034523e+00 ),
+    __C4(  1.01040032e+00,  1.01046156e+00,  1.01052862e+00,  1.01060152e+00 ),
+    __C4(  1.01067979e+00,  1.01076391e+00,  1.01085343e+00,  1.01094755e+00 ),
+    __C4(  1.01104595e+00,  1.01114849e+00,  1.01125440e+00,  1.01136308e+00 ),
+    __C4(  1.01147330e+00,  1.01158500e+00,  1.01169742e+00,  1.01180892e+00 ),
+    __C4(  1.01191926e+00,  1.01202724e+00,  1.01213215e+00,  1.01223273e+00 ),
+    __C4(  1.01232756e+00,  1.01241638e+00,  1.01249789e+00,  1.01257043e+00 ),
+    __C4(  1.01263330e+00,  1.01268528e+00,  1.01272556e+00,  1.01275258e+00 ),
+    __C4(  1.01276506e+00,  1.01276236e+00,  1.01274338e+00,  1.01270648e+00 ),
+    __C4(  1.01265084e+00,  1.01257543e+00,  1.01247947e+00,  1.01236111e+00 ),
+    __C4(  1.01221981e+00,  1.01205436e+00,  1.01186400e+00,  1.01164722e+00 ),
+    __C4(  1.01140252e+00,  1.01112965e+00,  1.01082695e+00,  1.01049292e+00 ),
+    __C4(  1.01012635e+00,  1.00972589e+00,  1.00929006e+00,  1.00881730e+00 ),
+    __C4(  1.00830503e+00,  1.00775283e+00,  1.00715783e+00,  1.00651805e+00 ),
+    __C4(  1.00583140e+00,  1.00509559e+00,  1.00430863e+00,  1.00346750e+00 ),
+    __C4(  1.00256950e+00,  1.00161271e+00,  1.00059427e+00,  9.99511170e-01 ),
+    __C4(  9.98360922e-01,  9.97140929e-01,  9.95848886e-01,  9.94481854e-01 ),
+    __C4(  9.93037528e-01,  9.91514656e-01,  9.89913680e-01,  9.88193062e-01 ),
+    __C4(  9.85942259e-01,  9.83566790e-01,  9.81142303e-01,  9.78521444e-01 ),
+    __C4(  9.75663604e-01,  9.72545344e-01,  9.69145663e-01,  9.65440618e-01 ),
+    __C4(  9.61404362e-01,  9.57011307e-01,  9.52236767e-01,  9.47054884e-01 ),
+    __C4(  9.41440374e-01,  9.35369161e-01,  9.28819009e-01,  9.21766289e-01 ),
+    __C4(  9.14189628e-01,  9.06069468e-01,  8.97389168e-01,  8.88133200e-01 ),
+    __C4(  8.78289389e-01,  8.67846957e-01,  8.56797064e-01,  8.45133465e-01 ),
+    __C4(  8.32854281e-01,  8.19959478e-01,  8.06451101e-01,  7.92334648e-01 ),
+    __C4(  7.77620449e-01,  7.62320618e-01,  7.46448649e-01,  7.30020573e-01 ),
+    __C4(  7.13056738e-01,  6.95580544e-01,  6.77617323e-01,  6.59195531e-01 ),
+    __C4(  6.40348643e-01,  6.21107220e-01,  6.01504928e-01,  5.81578761e-01 ),
+    __C4(  5.61367451e-01,  5.40918863e-01,  5.20273683e-01,  4.99478073e-01 ),
+    __C4(  4.78577418e-01,  4.57617260e-01,  4.36649021e-01,  4.15722146e-01 ),
+    __C4(  3.94885659e-01,  3.74190319e-01,  3.53686890e-01,  3.33426002e-01 ),
+    __C4(  3.13458647e-01,  2.93833790e-01,  2.74599264e-01,  2.55803064e-01 ),
+    __C4(  2.37490219e-01,  2.19703603e-01,  2.02485542e-01,  1.85874992e-01 ),
+    __C4(  1.69906780e-01,  1.54613227e-01,  1.40023821e-01,  1.26163740e-01 ),
+    __C4(  1.13053443e-01,  1.00708497e-01,  8.91402439e-02,  7.83561210e-02 ),
+    __C4(  6.83582123e-02,  5.91421154e-02,  5.06989301e-02,  4.30171776e-02 ),
+    __C4(  3.60802073e-02,  2.98631634e-02,  2.43372266e-02,  1.94767524e-02 ),
+    __C4(  1.52571017e-02,  1.16378749e-02,  8.43308778e-03,  4.44966900e-03 )
 };
 
-static const float mdct_win_10m_480[480+300] = {
-    -2.35303215e-04, -4.61989875e-04, -6.26293154e-04, -7.92918043e-04,
-    -9.74716672e-04, -1.18025689e-03, -1.40920904e-03, -1.66447310e-03,
-    -1.94659161e-03, -2.25708173e-03, -2.59710692e-03, -2.96760762e-03,
-    -3.37045488e-03, -3.80628516e-03, -4.27687377e-03, -4.78246990e-03,
-    -5.32460872e-03, -5.90340381e-03, -6.52041973e-03, -7.17588528e-03,
-    -7.87142282e-03, -8.60658604e-03, -9.38248086e-03, -1.01982718e-02,
-    -1.10552055e-02, -1.19527030e-02, -1.28920591e-02, -1.38726348e-02,
-    -1.48952816e-02, -1.59585662e-02, -1.70628856e-02, -1.82066640e-02,
-    -1.93906598e-02, -2.06135542e-02, -2.18757093e-02, -2.31752632e-02,
-    -2.45122745e-02, -2.58847194e-02, -2.72926374e-02, -2.87339090e-02,
-    -3.02086274e-02, -3.17144037e-02, -3.32509886e-02, -3.48159779e-02,
-    -3.64089241e-02, -3.80274232e-02, -3.96706799e-02, -4.13357542e-02,
-    -4.30220337e-02, -4.47269805e-02, -4.64502229e-02, -4.81889149e-02,
-    -4.99422586e-02, -5.17069080e-02, -5.34816204e-02, -5.52633479e-02,
-    -5.70512315e-02, -5.88427175e-02, -6.06371724e-02, -6.24310403e-02,
-    -6.42230355e-02, -6.60096152e-02, -6.77896227e-02, -6.95599687e-02,
-    -7.13196627e-02, -7.30658127e-02, -7.47975891e-02, -7.65117823e-02,
-    -7.82071142e-02, -7.98801069e-02, -8.15296401e-02, -8.31523735e-02,
-    -8.47472895e-02, -8.63113754e-02, -8.78437445e-02, -8.93416436e-02,
-    -9.08041129e-02, -9.22279576e-02, -9.36123287e-02, -9.49537776e-02,
-    -9.62515531e-02, -9.75028462e-02, -9.87073651e-02, -9.98627129e-02,
-    -1.00968022e-01, -1.02020268e-01, -1.03018380e-01, -1.03959636e-01,
-    -1.04843883e-01, -1.05668684e-01, -1.06434282e-01, -1.07138231e-01,
-    -1.07779996e-01, -1.08357063e-01, -1.08869014e-01, -1.09313559e-01,
-    -1.09690356e-01, -1.09996966e-01, -1.10233226e-01, -1.10397281e-01,
-    -1.10489847e-01, -1.10508642e-01, -1.10453743e-01, -1.10322584e-01,
-    -1.10114583e-01, -1.09827693e-01, -1.09462175e-01, -1.09016396e-01,
-    -1.08490885e-01, -1.07883429e-01, -1.07193718e-01, -1.06419636e-01,
-    -1.05561251e-01, -1.04616281e-01, -1.03584904e-01, -1.02465016e-01,
-    -1.01256900e-01, -9.99586457e-02, -9.85701457e-02, -9.70891114e-02,
-    -9.55154582e-02, -9.38468492e-02, -9.20830006e-02, -9.02217102e-02,
-    -8.82630999e-02, -8.62049382e-02, -8.40474215e-02, -8.17879272e-02,
-    -7.94262503e-02, -7.69598078e-02, -7.43878560e-02, -7.17079700e-02,
-    -6.89199478e-02, -6.60218980e-02, -6.30134942e-02, -5.98919191e-02,
-    -5.66565564e-02, -5.33040616e-02, -4.98342724e-02, -4.62445689e-02,
-    -4.25345569e-02, -3.87019577e-02, -3.47458578e-02, -3.06634152e-02,
-    -2.64542508e-02, -2.21158161e-02, -1.76474054e-02, -1.30458136e-02,
-    -8.31042570e-03, -3.43826866e-03,  1.57031548e-03,  6.71769764e-03,
-     1.20047702e-02,  1.74339832e-02,  2.30064206e-02,  2.87248142e-02,
-     3.45889635e-02,  4.06010646e-02,  4.67610292e-02,  5.30713391e-02,
-     5.95323909e-02,  6.61464781e-02,  7.29129318e-02,  7.98335419e-02,
-     8.69080741e-02,  9.41381377e-02,  1.01523314e-01,  1.09065152e-01,
-     1.16762655e-01,  1.24617139e-01,  1.32627295e-01,  1.40793819e-01,
-     1.49115252e-01,  1.57592141e-01,  1.66222480e-01,  1.75006740e-01,
-     1.83943194e-01,  1.93031818e-01,  2.02269985e-01,  2.11656743e-01,
-     2.21188852e-01,  2.30865538e-01,  2.40683799e-01,  2.50642064e-01,
-     2.60736512e-01,  2.70965907e-01,  2.81325902e-01,  2.91814469e-01,
-     3.02427028e-01,  3.13160350e-01,  3.24009570e-01,  3.34971959e-01,
-     3.46042294e-01,  3.57217518e-01,  3.68491565e-01,  3.79859512e-01,
-     3.91314689e-01,  4.02853287e-01,  4.14468833e-01,  4.26157164e-01,
-     4.37911390e-01,  4.49725632e-01,  4.61592545e-01,  4.73506703e-01,
-     4.85460018e-01,  4.97447159e-01,  5.09459723e-01,  5.21490984e-01,
-     5.33532682e-01,  5.45578981e-01,  5.57621716e-01,  5.69654673e-01,
-     5.81668558e-01,  5.93656062e-01,  6.05608382e-01,  6.17519206e-01,
-     6.29379661e-01,  6.41183084e-01,  6.52920354e-01,  6.64584079e-01,
-     6.76165350e-01,  6.87657395e-01,  6.99051154e-01,  7.10340055e-01,
-     7.21514933e-01,  7.32569177e-01,  7.43494372e-01,  7.54284633e-01,
-     7.64931365e-01,  7.75428189e-01,  7.85767017e-01,  7.95941465e-01,
-     8.05943723e-01,  8.15768707e-01,  8.25408622e-01,  8.34858937e-01,
-     8.44112583e-01,  8.53165119e-01,  8.62010834e-01,  8.70645634e-01,
-     8.79063156e-01,  8.87259971e-01,  8.95231329e-01,  9.02975168e-01,
-     9.10486312e-01,  9.17762555e-01,  9.24799743e-01,  9.31596250e-01,
-     9.38149486e-01,  9.44458839e-01,  9.50522086e-01,  9.56340292e-01,
-     9.61911452e-01,  9.67236671e-01,  9.72315664e-01,  9.77150119e-01,
-     9.81739750e-01,  9.86086587e-01,  9.90190638e-01,  9.94055718e-01,
-     9.97684240e-01,  1.00108096e+00,  1.00424751e+00,  1.00718858e+00,
-     1.00990665e+00,  1.01240743e+00,  1.01469470e+00,  1.01677466e+00,
-     1.01865099e+00,  1.02033046e+00,  1.02181733e+00,  1.02311884e+00,
-     1.02424026e+00,  1.02518972e+00,  1.02597245e+00,  1.02659694e+00,
-     1.02706918e+00,  1.02739752e+00,  1.02758790e+00,  1.02764895e+00,
-     1.02758583e+00,  1.02740852e+00,  1.02712299e+00,  1.02673867e+00,
-     1.02626166e+00,  1.02570100e+00,  1.02506178e+00,  1.02435398e+00,
-     1.02358239e+00,  1.02275651e+00,  1.02188060e+00,  1.02096387e+00,
-     1.02000914e+00,  1.01902729e+00,  1.01801944e+00,  1.01699650e+00,
-     1.01595743e+00,  1.01492344e+00,  1.01391595e+00,  1.01304757e+00,
-     1.01221613e+00,  1.01104487e+00,  1.00991459e+00,  1.00882489e+00,
-     1.00777386e+00,  1.00676170e+00,  1.00578665e+00,  1.00484875e+00,
-     1.00394608e+00,  1.00307885e+00,  1.00224501e+00,  1.00144473e+00,
-     1.00067619e+00,  9.99939317e-01,  9.99232085e-01,  9.98554813e-01,
-     9.97905542e-01,  9.97284268e-01,  9.96689095e-01,  9.96120338e-01,
-     9.95576126e-01,  9.95056572e-01,  9.94559753e-01,  9.94086038e-01,
-     9.93633779e-01,  9.93203161e-01,  9.92792187e-01,  9.92401518e-01,
-     9.92029727e-01,  9.91676778e-01,  9.91340877e-01,  9.91023065e-01,
-     9.90721643e-01,  9.90436680e-01,  9.90166895e-01,  9.89913101e-01,
-     9.89673564e-01,  9.89448837e-01,  9.89237484e-01,  9.89040193e-01,
-     9.88855636e-01,  9.88684347e-01,  9.88524761e-01,  9.88377852e-01,
-     9.88242327e-01,  9.88118564e-01,  9.88005163e-01,  9.87903202e-01,
-     9.87811174e-01,  9.87729546e-01,  9.87657198e-01,  9.87594984e-01,
-     9.87541274e-01,  9.87496906e-01,  9.87460625e-01,  9.87432981e-01,
-     9.87412641e-01,  9.87400475e-01,  9.87394992e-01,  9.87396916e-01,
-     9.87404906e-01,  9.87419705e-01,  9.87439972e-01,  9.87466328e-01,
-     9.87497321e-01,  9.87533893e-01,  9.87574654e-01,  9.87620124e-01,
-     9.87668980e-01,  9.87722156e-01,  9.87778192e-01,  9.87837649e-01,
-     9.87899199e-01,  9.87963798e-01,  9.88030030e-01,  9.88098468e-01,
-     9.88167801e-01,  9.88239030e-01,  9.88310769e-01,  9.88383520e-01,
-     9.88456016e-01,  9.88529420e-01,  9.88602222e-01,  9.88674940e-01,
-     9.88746626e-01,  9.88818277e-01,  9.88888248e-01,  9.88957438e-01,
-     9.89024798e-01,  9.89091125e-01,  9.89155170e-01,  9.89217866e-01,
-     9.89277956e-01,  9.89336519e-01,  9.89392368e-01,  9.89446283e-01,
-     9.89497212e-01,  9.89546334e-01,  9.89592362e-01,  9.89636265e-01,
-     9.89677201e-01,  9.89716220e-01,  9.89752029e-01,  9.89785920e-01,
-     9.89817027e-01,  9.89846207e-01,  9.89872536e-01,  9.89897514e-01,
-     9.89920005e-01,  9.89941079e-01,  9.89960061e-01,  9.89978226e-01,
-     9.89994556e-01,  9.90010350e-01,  9.90024832e-01,  9.90039402e-01,
-     9.90053211e-01,  9.90067475e-01,  9.90081472e-01,  9.90096693e-01,
-     9.90112245e-01,  9.90129379e-01,  9.90147465e-01,  9.90168060e-01,
-     9.90190227e-01,  9.90215190e-01,  9.90242442e-01,  9.90273445e-01,
-     9.90307127e-01,  9.90344891e-01,  9.90386228e-01,  9.90432448e-01,
-     9.90482565e-01,  9.90537983e-01,  9.90598060e-01,  9.90664037e-01,
-     9.90734883e-01,  9.90812038e-01,  9.90894786e-01,  9.90984259e-01,
-     9.91079525e-01,  9.91181924e-01,  9.91290512e-01,  9.91406471e-01,
-     9.91528801e-01,  9.91658694e-01,  9.91795272e-01,  9.91939622e-01,
-     9.92090615e-01,  9.92249503e-01,  9.92415240e-01,  9.92588721e-01,
-     9.92768871e-01,  9.92956911e-01,  9.93151653e-01,  9.93353924e-01,
-     9.93562689e-01,  9.93779087e-01,  9.94001643e-01,  9.94231202e-01,
-     9.94466818e-01,  9.94709344e-01,  9.94957285e-01,  9.95211663e-01,
-     9.95471264e-01,  9.95736795e-01,  9.96006862e-01,  9.96282303e-01,
-     9.96561799e-01,  9.96846133e-01,  9.97133827e-01,  9.97425669e-01,
-     9.97720337e-01,  9.98018509e-01,  9.98318587e-01,  9.98621352e-01,
-     9.98925543e-01,  9.99231731e-01,  9.99538258e-01,  9.99846116e-01,
-     1.00015391e+00,  1.00046196e+00,  1.00076886e+00,  1.00107561e+00,
-     1.00138055e+00,  1.00168424e+00,  1.00198543e+00,  1.00228487e+00,
-     1.00258098e+00,  1.00287441e+00,  1.00316385e+00,  1.00345006e+00,
-     1.00373157e+00,  1.00400915e+00,  1.00428146e+00,  1.00454934e+00,
-     1.00481138e+00,  1.00506827e+00,  1.00531880e+00,  1.00556397e+00,
-     1.00580227e+00,  1.00603455e+00,  1.00625986e+00,  1.00647902e+00,
-     1.00669054e+00,  1.00689557e+00,  1.00709305e+00,  1.00728380e+00,
-     1.00746662e+00,  1.00764273e+00,  1.00781104e+00,  1.00797244e+00,
-     1.00812588e+00,  1.00827260e+00,  1.00841147e+00,  1.00854357e+00,
-     1.00866802e+00,  1.00878601e+00,  1.00889653e+00,  1.00900077e+00,
-     1.00909776e+00,  1.00918888e+00,  1.00927316e+00,  1.00935176e+00,
-     1.00942394e+00,  1.00949118e+00,  1.00955240e+00,  1.00960889e+00,
-     1.00965997e+00,  1.00970709e+00,  1.00974924e+00,  1.00978774e+00,
-     1.00982209e+00,  1.00985371e+00,  1.00988150e+00,  1.00990696e+00,
-     1.00992957e+00,  1.00995057e+00,  1.00996902e+00,  1.00998650e+00,
-     1.01000236e+00,  1.01001789e+00,  1.01003217e+00,  1.01004672e+00,
-     1.01006081e+00,  1.01007567e+00,  1.01009045e+00,  1.01010656e+00,
-     1.01012323e+00,  1.01014176e+00,  1.01016113e+00,  1.01018264e+00,
-     1.01020559e+00,  1.01023108e+00,  1.01025795e+00,  1.01028773e+00,
-     1.01031948e+00,  1.01035408e+00,  1.01039064e+00,  1.01043047e+00,
-     1.01047227e+00,  1.01051710e+00,  1.01056410e+00,  1.01061427e+00,
-     1.01066629e+00,  1.01072136e+00,  1.01077842e+00,  1.01083825e+00,
-     1.01089966e+00,  1.01096373e+00,  1.01102919e+00,  1.01109699e+00,
-     1.01116586e+00,  1.01123661e+00,  1.01130817e+00,  1.01138145e+00,
-     1.01145479e+00,  1.01152919e+00,  1.01160368e+00,  1.01167880e+00,
-     1.01175301e+00,  1.01182748e+00,  1.01190094e+00,  1.01197388e+00,
-     1.01204489e+00,  1.01211499e+00,  1.01218284e+00,  1.01224902e+00,
-     1.01231210e+00,  1.01237303e+00,  1.01243046e+00,  1.01248497e+00,
-     1.01253506e+00,  1.01258168e+00,  1.01262347e+00,  1.01266098e+00,
-     1.01269276e+00,  1.01271979e+00,  1.01274058e+00,  1.01275575e+00,
-     1.01276395e+00,  1.01276592e+00,  1.01276030e+00,  1.01274782e+00,
-     1.01272696e+00,  1.01269861e+00,  1.01266140e+00,  1.01261590e+00,
-     1.01256083e+00,  1.01249705e+00,  1.01242289e+00,  1.01233923e+00,
-     1.01224492e+00,  1.01214046e+00,  1.01202430e+00,  1.01189756e+00,
-     1.01175881e+00,  1.01160845e+00,  1.01144516e+00,  1.01126996e+00,
-     1.01108126e+00,  1.01087961e+00,  1.01066368e+00,  1.01043418e+00,
-     1.01018968e+00,  1.00993075e+00,  1.00965566e+00,  1.00936525e+00,
-     1.00905825e+00,  1.00873476e+00,  1.00839308e+00,  1.00803431e+00,
-     1.00765666e+00,  1.00726014e+00,  1.00684335e+00,  1.00640701e+00,
-     1.00594915e+00,  1.00547001e+00,  1.00496799e+00,  1.00444353e+00,
-     1.00389477e+00,  1.00332190e+00,  1.00272313e+00,  1.00209885e+00,
-     1.00144728e+00,  1.00076851e+00,  1.00006069e+00,  9.99324268e-01,
-     9.98557350e-01,  9.97760020e-01,  9.96930604e-01,  9.96069427e-01,
-     9.95174643e-01,  9.94246644e-01,  9.93283713e-01,  9.92286108e-01,
-     9.91252309e-01,  9.90182742e-01,  9.89075787e-01,  9.87931302e-01,
-     9.86355322e-01,  9.84736245e-01,  9.83175095e-01,  9.81558334e-01,
-     9.79861353e-01,  9.78061749e-01,  9.76157432e-01,  9.74137862e-01,
-     9.71999011e-01,  9.69732741e-01,  9.67333198e-01,  9.64791512e-01,
-     9.62101150e-01,  9.59253976e-01,  9.56242718e-01,  9.53060091e-01,
-     9.49698408e-01,  9.46149812e-01,  9.42407161e-01,  9.38463416e-01,
-     9.34311297e-01,  9.29944987e-01,  9.25356797e-01,  9.20540463e-01,
-     9.15489628e-01,  9.10198679e-01,  9.04662060e-01,  8.98875519e-01,
-     8.92833832e-01,  8.86533719e-01,  8.79971272e-01,  8.73143784e-01,
-     8.66047653e-01,  8.58681252e-01,  8.51042044e-01,  8.43129723e-01,
-     8.34943514e-01,  8.26483991e-01,  8.17750537e-01,  8.08744982e-01,
-     7.99468149e-01,  7.89923516e-01,  7.80113773e-01,  7.70043128e-01,
-     7.59714574e-01,  7.49133097e-01,  7.38302860e-01,  7.27229876e-01,
-     7.15920192e-01,  7.04381434e-01,  6.92619693e-01,  6.80643883e-01,
-     6.68461648e-01,  6.56083014e-01,  6.43517927e-01,  6.30775533e-01,
-     6.17864165e-01,  6.04795463e-01,  5.91579959e-01,  5.78228937e-01,
-     5.64753589e-01,  5.51170316e-01,  5.37490509e-01,  5.23726350e-01,
-     5.09891542e-01,  4.96000807e-01,  4.82066294e-01,  4.68101711e-01,
-     4.54121700e-01,  4.40142182e-01,  4.26177297e-01,  4.12241789e-01,
-     3.98349961e-01,  3.84517234e-01,  3.70758372e-01,  3.57088679e-01,
-     3.43522867e-01,  3.30076376e-01,  3.16764033e-01,  3.03600465e-01,
-     2.90599616e-01,  2.77775850e-01,  2.65143468e-01,  2.52716188e-01,
-     2.40506985e-01,  2.28528397e-01,  2.16793343e-01,  2.05313990e-01,
-     1.94102191e-01,  1.83168087e-01,  1.72522195e-01,  1.62173542e-01,
-     1.52132068e-01,  1.42405280e-01,  1.33001524e-01,  1.23926066e-01,
-     1.15185830e-01,  1.06784043e-01,  9.87263751e-02,  9.10137900e-02,
-     8.36505724e-02,  7.66350831e-02,  6.99703341e-02,  6.36518811e-02,
-     5.76817602e-02,  5.20524422e-02,  4.67653841e-02,  4.18095054e-02,
-     3.71864025e-02,  3.28807275e-02,  2.88954850e-02,  2.52098057e-02,
-     2.18305756e-02,  1.87289619e-02,  1.59212782e-02,  1.33638143e-02,
-     1.10855888e-02,  8.94347419e-03,  6.75812489e-03,  3.50443813e-03,
+static const lc3_intfloat_t mdct_win_10m_480[480+300] = {
+    __C4( -2.35303215e-04, -4.61989875e-04, -6.26293154e-04, -7.92918043e-04 ),
+    __C4( -9.74716672e-04, -1.18025689e-03, -1.40920904e-03, -1.66447310e-03 ),
+    __C4( -1.94659161e-03, -2.25708173e-03, -2.59710692e-03, -2.96760762e-03 ),
+    __C4( -3.37045488e-03, -3.80628516e-03, -4.27687377e-03, -4.78246990e-03 ),
+    __C4( -5.32460872e-03, -5.90340381e-03, -6.52041973e-03, -7.17588528e-03 ),
+    __C4( -7.87142282e-03, -8.60658604e-03, -9.38248086e-03, -1.01982718e-02 ),
+    __C4( -1.10552055e-02, -1.19527030e-02, -1.28920591e-02, -1.38726348e-02 ),
+    __C4( -1.48952816e-02, -1.59585662e-02, -1.70628856e-02, -1.82066640e-02 ),
+    __C4( -1.93906598e-02, -2.06135542e-02, -2.18757093e-02, -2.31752632e-02 ),
+    __C4( -2.45122745e-02, -2.58847194e-02, -2.72926374e-02, -2.87339090e-02 ),
+    __C4( -3.02086274e-02, -3.17144037e-02, -3.32509886e-02, -3.48159779e-02 ),
+    __C4( -3.64089241e-02, -3.80274232e-02, -3.96706799e-02, -4.13357542e-02 ),
+    __C4( -4.30220337e-02, -4.47269805e-02, -4.64502229e-02, -4.81889149e-02 ),
+    __C4( -4.99422586e-02, -5.17069080e-02, -5.34816204e-02, -5.52633479e-02 ),
+    __C4( -5.70512315e-02, -5.88427175e-02, -6.06371724e-02, -6.24310403e-02 ),
+    __C4( -6.42230355e-02, -6.60096152e-02, -6.77896227e-02, -6.95599687e-02 ),
+    __C4( -7.13196627e-02, -7.30658127e-02, -7.47975891e-02, -7.65117823e-02 ),
+    __C4( -7.82071142e-02, -7.98801069e-02, -8.15296401e-02, -8.31523735e-02 ),
+    __C4( -8.47472895e-02, -8.63113754e-02, -8.78437445e-02, -8.93416436e-02 ),
+    __C4( -9.08041129e-02, -9.22279576e-02, -9.36123287e-02, -9.49537776e-02 ),
+    __C4( -9.62515531e-02, -9.75028462e-02, -9.87073651e-02, -9.98627129e-02 ),
+    __C4( -1.00968022e-01, -1.02020268e-01, -1.03018380e-01, -1.03959636e-01 ),
+    __C4( -1.04843883e-01, -1.05668684e-01, -1.06434282e-01, -1.07138231e-01 ),
+    __C4( -1.07779996e-01, -1.08357063e-01, -1.08869014e-01, -1.09313559e-01 ),
+    __C4( -1.09690356e-01, -1.09996966e-01, -1.10233226e-01, -1.10397281e-01 ),
+    __C4( -1.10489847e-01, -1.10508642e-01, -1.10453743e-01, -1.10322584e-01 ),
+    __C4( -1.10114583e-01, -1.09827693e-01, -1.09462175e-01, -1.09016396e-01 ),
+    __C4( -1.08490885e-01, -1.07883429e-01, -1.07193718e-01, -1.06419636e-01 ),
+    __C4( -1.05561251e-01, -1.04616281e-01, -1.03584904e-01, -1.02465016e-01 ),
+    __C4( -1.01256900e-01, -9.99586457e-02, -9.85701457e-02, -9.70891114e-02 ),
+    __C4( -9.55154582e-02, -9.38468492e-02, -9.20830006e-02, -9.02217102e-02 ),
+    __C4( -8.82630999e-02, -8.62049382e-02, -8.40474215e-02, -8.17879272e-02 ),
+    __C4( -7.94262503e-02, -7.69598078e-02, -7.43878560e-02, -7.17079700e-02 ),
+    __C4( -6.89199478e-02, -6.60218980e-02, -6.30134942e-02, -5.98919191e-02 ),
+    __C4( -5.66565564e-02, -5.33040616e-02, -4.98342724e-02, -4.62445689e-02 ),
+    __C4( -4.25345569e-02, -3.87019577e-02, -3.47458578e-02, -3.06634152e-02 ),
+    __C4( -2.64542508e-02, -2.21158161e-02, -1.76474054e-02, -1.30458136e-02 ),
+    __C4( -8.31042570e-03, -3.43826866e-03,  1.57031548e-03,  6.71769764e-03 ),
+    __C4(  1.20047702e-02,  1.74339832e-02,  2.30064206e-02,  2.87248142e-02 ),
+    __C4(  3.45889635e-02,  4.06010646e-02,  4.67610292e-02,  5.30713391e-02 ),
+    __C4(  5.95323909e-02,  6.61464781e-02,  7.29129318e-02,  7.98335419e-02 ),
+    __C4(  8.69080741e-02,  9.41381377e-02,  1.01523314e-01,  1.09065152e-01 ),
+    __C4(  1.16762655e-01,  1.24617139e-01,  1.32627295e-01,  1.40793819e-01 ),
+    __C4(  1.49115252e-01,  1.57592141e-01,  1.66222480e-01,  1.75006740e-01 ),
+    __C4(  1.83943194e-01,  1.93031818e-01,  2.02269985e-01,  2.11656743e-01 ),
+    __C4(  2.21188852e-01,  2.30865538e-01,  2.40683799e-01,  2.50642064e-01 ),
+    __C4(  2.60736512e-01,  2.70965907e-01,  2.81325902e-01,  2.91814469e-01 ),
+    __C4(  3.02427028e-01,  3.13160350e-01,  3.24009570e-01,  3.34971959e-01 ),
+    __C4(  3.46042294e-01,  3.57217518e-01,  3.68491565e-01,  3.79859512e-01 ),
+    __C4(  3.91314689e-01,  4.02853287e-01,  4.14468833e-01,  4.26157164e-01 ),
+    __C4(  4.37911390e-01,  4.49725632e-01,  4.61592545e-01,  4.73506703e-01 ),
+    __C4(  4.85460018e-01,  4.97447159e-01,  5.09459723e-01,  5.21490984e-01 ),
+    __C4(  5.33532682e-01,  5.45578981e-01,  5.57621716e-01,  5.69654673e-01 ),
+    __C4(  5.81668558e-01,  5.93656062e-01,  6.05608382e-01,  6.17519206e-01 ),
+    __C4(  6.29379661e-01,  6.41183084e-01,  6.52920354e-01,  6.64584079e-01 ),
+    __C4(  6.76165350e-01,  6.87657395e-01,  6.99051154e-01,  7.10340055e-01 ),
+    __C4(  7.21514933e-01,  7.32569177e-01,  7.43494372e-01,  7.54284633e-01 ),
+    __C4(  7.64931365e-01,  7.75428189e-01,  7.85767017e-01,  7.95941465e-01 ),
+    __C4(  8.05943723e-01,  8.15768707e-01,  8.25408622e-01,  8.34858937e-01 ),
+    __C4(  8.44112583e-01,  8.53165119e-01,  8.62010834e-01,  8.70645634e-01 ),
+    __C4(  8.79063156e-01,  8.87259971e-01,  8.95231329e-01,  9.02975168e-01 ),
+    __C4(  9.10486312e-01,  9.17762555e-01,  9.24799743e-01,  9.31596250e-01 ),
+    __C4(  9.38149486e-01,  9.44458839e-01,  9.50522086e-01,  9.56340292e-01 ),
+    __C4(  9.61911452e-01,  9.67236671e-01,  9.72315664e-01,  9.77150119e-01 ),
+    __C4(  9.81739750e-01,  9.86086587e-01,  9.90190638e-01,  9.94055718e-01 ),
+    __C4(  9.97684240e-01,  1.00108096e+00,  1.00424751e+00,  1.00718858e+00 ),
+    __C4(  1.00990665e+00,  1.01240743e+00,  1.01469470e+00,  1.01677466e+00 ),
+    __C4(  1.01865099e+00,  1.02033046e+00,  1.02181733e+00,  1.02311884e+00 ),
+    __C4(  1.02424026e+00,  1.02518972e+00,  1.02597245e+00,  1.02659694e+00 ),
+    __C4(  1.02706918e+00,  1.02739752e+00,  1.02758790e+00,  1.02764895e+00 ),
+    __C4(  1.02758583e+00,  1.02740852e+00,  1.02712299e+00,  1.02673867e+00 ),
+    __C4(  1.02626166e+00,  1.02570100e+00,  1.02506178e+00,  1.02435398e+00 ),
+    __C4(  1.02358239e+00,  1.02275651e+00,  1.02188060e+00,  1.02096387e+00 ),
+    __C4(  1.02000914e+00,  1.01902729e+00,  1.01801944e+00,  1.01699650e+00 ),
+    __C4(  1.01595743e+00,  1.01492344e+00,  1.01391595e+00,  1.01304757e+00 ),
+    __C4(  1.01221613e+00,  1.01104487e+00,  1.00991459e+00,  1.00882489e+00 ),
+    __C4(  1.00777386e+00,  1.00676170e+00,  1.00578665e+00,  1.00484875e+00 ),
+    __C4(  1.00394608e+00,  1.00307885e+00,  1.00224501e+00,  1.00144473e+00 ),
+    __C4(  1.00067619e+00,  9.99939317e-01,  9.99232085e-01,  9.98554813e-01 ),
+    __C4(  9.97905542e-01,  9.97284268e-01,  9.96689095e-01,  9.96120338e-01 ),
+    __C4(  9.95576126e-01,  9.95056572e-01,  9.94559753e-01,  9.94086038e-01 ),
+    __C4(  9.93633779e-01,  9.93203161e-01,  9.92792187e-01,  9.92401518e-01 ),
+    __C4(  9.92029727e-01,  9.91676778e-01,  9.91340877e-01,  9.91023065e-01 ),
+    __C4(  9.90721643e-01,  9.90436680e-01,  9.90166895e-01,  9.89913101e-01 ),
+    __C4(  9.89673564e-01,  9.89448837e-01,  9.89237484e-01,  9.89040193e-01 ),
+    __C4(  9.88855636e-01,  9.88684347e-01,  9.88524761e-01,  9.88377852e-01 ),
+    __C4(  9.88242327e-01,  9.88118564e-01,  9.88005163e-01,  9.87903202e-01 ),
+    __C4(  9.87811174e-01,  9.87729546e-01,  9.87657198e-01,  9.87594984e-01 ),
+    __C4(  9.87541274e-01,  9.87496906e-01,  9.87460625e-01,  9.87432981e-01 ),
+    __C4(  9.87412641e-01,  9.87400475e-01,  9.87394992e-01,  9.87396916e-01 ),
+    __C4(  9.87404906e-01,  9.87419705e-01,  9.87439972e-01,  9.87466328e-01 ),
+    __C4(  9.87497321e-01,  9.87533893e-01,  9.87574654e-01,  9.87620124e-01 ),
+    __C4(  9.87668980e-01,  9.87722156e-01,  9.87778192e-01,  9.87837649e-01 ),
+    __C4(  9.87899199e-01,  9.87963798e-01,  9.88030030e-01,  9.88098468e-01 ),
+    __C4(  9.88167801e-01,  9.88239030e-01,  9.88310769e-01,  9.88383520e-01 ),
+    __C4(  9.88456016e-01,  9.88529420e-01,  9.88602222e-01,  9.88674940e-01 ),
+    __C4(  9.88746626e-01,  9.88818277e-01,  9.88888248e-01,  9.88957438e-01 ),
+    __C4(  9.89024798e-01,  9.89091125e-01,  9.89155170e-01,  9.89217866e-01 ),
+    __C4(  9.89277956e-01,  9.89336519e-01,  9.89392368e-01,  9.89446283e-01 ),
+    __C4(  9.89497212e-01,  9.89546334e-01,  9.89592362e-01,  9.89636265e-01 ),
+    __C4(  9.89677201e-01,  9.89716220e-01,  9.89752029e-01,  9.89785920e-01 ),
+    __C4(  9.89817027e-01,  9.89846207e-01,  9.89872536e-01,  9.89897514e-01 ),
+    __C4(  9.89920005e-01,  9.89941079e-01,  9.89960061e-01,  9.89978226e-01 ),
+    __C4(  9.89994556e-01,  9.90010350e-01,  9.90024832e-01,  9.90039402e-01 ),
+    __C4(  9.90053211e-01,  9.90067475e-01,  9.90081472e-01,  9.90096693e-01 ),
+    __C4(  9.90112245e-01,  9.90129379e-01,  9.90147465e-01,  9.90168060e-01 ),
+    __C4(  9.90190227e-01,  9.90215190e-01,  9.90242442e-01,  9.90273445e-01 ),
+    __C4(  9.90307127e-01,  9.90344891e-01,  9.90386228e-01,  9.90432448e-01 ),
+    __C4(  9.90482565e-01,  9.90537983e-01,  9.90598060e-01,  9.90664037e-01 ),
+    __C4(  9.90734883e-01,  9.90812038e-01,  9.90894786e-01,  9.90984259e-01 ),
+    __C4(  9.91079525e-01,  9.91181924e-01,  9.91290512e-01,  9.91406471e-01 ),
+    __C4(  9.91528801e-01,  9.91658694e-01,  9.91795272e-01,  9.91939622e-01 ),
+    __C4(  9.92090615e-01,  9.92249503e-01,  9.92415240e-01,  9.92588721e-01 ),
+    __C4(  9.92768871e-01,  9.92956911e-01,  9.93151653e-01,  9.93353924e-01 ),
+    __C4(  9.93562689e-01,  9.93779087e-01,  9.94001643e-01,  9.94231202e-01 ),
+    __C4(  9.94466818e-01,  9.94709344e-01,  9.94957285e-01,  9.95211663e-01 ),
+    __C4(  9.95471264e-01,  9.95736795e-01,  9.96006862e-01,  9.96282303e-01 ),
+    __C4(  9.96561799e-01,  9.96846133e-01,  9.97133827e-01,  9.97425669e-01 ),
+    __C4(  9.97720337e-01,  9.98018509e-01,  9.98318587e-01,  9.98621352e-01 ),
+    __C4(  9.98925543e-01,  9.99231731e-01,  9.99538258e-01,  9.99846116e-01 ),
+    __C4(  1.00015391e+00,  1.00046196e+00,  1.00076886e+00,  1.00107561e+00 ),
+    __C4(  1.00138055e+00,  1.00168424e+00,  1.00198543e+00,  1.00228487e+00 ),
+    __C4(  1.00258098e+00,  1.00287441e+00,  1.00316385e+00,  1.00345006e+00 ),
+    __C4(  1.00373157e+00,  1.00400915e+00,  1.00428146e+00,  1.00454934e+00 ),
+    __C4(  1.00481138e+00,  1.00506827e+00,  1.00531880e+00,  1.00556397e+00 ),
+    __C4(  1.00580227e+00,  1.00603455e+00,  1.00625986e+00,  1.00647902e+00 ),
+    __C4(  1.00669054e+00,  1.00689557e+00,  1.00709305e+00,  1.00728380e+00 ),
+    __C4(  1.00746662e+00,  1.00764273e+00,  1.00781104e+00,  1.00797244e+00 ),
+    __C4(  1.00812588e+00,  1.00827260e+00,  1.00841147e+00,  1.00854357e+00 ),
+    __C4(  1.00866802e+00,  1.00878601e+00,  1.00889653e+00,  1.00900077e+00 ),
+    __C4(  1.00909776e+00,  1.00918888e+00,  1.00927316e+00,  1.00935176e+00 ),
+    __C4(  1.00942394e+00,  1.00949118e+00,  1.00955240e+00,  1.00960889e+00 ),
+    __C4(  1.00965997e+00,  1.00970709e+00,  1.00974924e+00,  1.00978774e+00 ),
+    __C4(  1.00982209e+00,  1.00985371e+00,  1.00988150e+00,  1.00990696e+00 ),
+    __C4(  1.00992957e+00,  1.00995057e+00,  1.00996902e+00,  1.00998650e+00 ),
+    __C4(  1.01000236e+00,  1.01001789e+00,  1.01003217e+00,  1.01004672e+00 ),
+    __C4(  1.01006081e+00,  1.01007567e+00,  1.01009045e+00,  1.01010656e+00 ),
+    __C4(  1.01012323e+00,  1.01014176e+00,  1.01016113e+00,  1.01018264e+00 ),
+    __C4(  1.01020559e+00,  1.01023108e+00,  1.01025795e+00,  1.01028773e+00 ),
+    __C4(  1.01031948e+00,  1.01035408e+00,  1.01039064e+00,  1.01043047e+00 ),
+    __C4(  1.01047227e+00,  1.01051710e+00,  1.01056410e+00,  1.01061427e+00 ),
+    __C4(  1.01066629e+00,  1.01072136e+00,  1.01077842e+00,  1.01083825e+00 ),
+    __C4(  1.01089966e+00,  1.01096373e+00,  1.01102919e+00,  1.01109699e+00 ),
+    __C4(  1.01116586e+00,  1.01123661e+00,  1.01130817e+00,  1.01138145e+00 ),
+    __C4(  1.01145479e+00,  1.01152919e+00,  1.01160368e+00,  1.01167880e+00 ),
+    __C4(  1.01175301e+00,  1.01182748e+00,  1.01190094e+00,  1.01197388e+00 ),
+    __C4(  1.01204489e+00,  1.01211499e+00,  1.01218284e+00,  1.01224902e+00 ),
+    __C4(  1.01231210e+00,  1.01237303e+00,  1.01243046e+00,  1.01248497e+00 ),
+    __C4(  1.01253506e+00,  1.01258168e+00,  1.01262347e+00,  1.01266098e+00 ),
+    __C4(  1.01269276e+00,  1.01271979e+00,  1.01274058e+00,  1.01275575e+00 ),
+    __C4(  1.01276395e+00,  1.01276592e+00,  1.01276030e+00,  1.01274782e+00 ),
+    __C4(  1.01272696e+00,  1.01269861e+00,  1.01266140e+00,  1.01261590e+00 ),
+    __C4(  1.01256083e+00,  1.01249705e+00,  1.01242289e+00,  1.01233923e+00 ),
+    __C4(  1.01224492e+00,  1.01214046e+00,  1.01202430e+00,  1.01189756e+00 ),
+    __C4(  1.01175881e+00,  1.01160845e+00,  1.01144516e+00,  1.01126996e+00 ),
+    __C4(  1.01108126e+00,  1.01087961e+00,  1.01066368e+00,  1.01043418e+00 ),
+    __C4(  1.01018968e+00,  1.00993075e+00,  1.00965566e+00,  1.00936525e+00 ),
+    __C4(  1.00905825e+00,  1.00873476e+00,  1.00839308e+00,  1.00803431e+00 ),
+    __C4(  1.00765666e+00,  1.00726014e+00,  1.00684335e+00,  1.00640701e+00 ),
+    __C4(  1.00594915e+00,  1.00547001e+00,  1.00496799e+00,  1.00444353e+00 ),
+    __C4(  1.00389477e+00,  1.00332190e+00,  1.00272313e+00,  1.00209885e+00 ),
+    __C4(  1.00144728e+00,  1.00076851e+00,  1.00006069e+00,  9.99324268e-01 ),
+    __C4(  9.98557350e-01,  9.97760020e-01,  9.96930604e-01,  9.96069427e-01 ),
+    __C4(  9.95174643e-01,  9.94246644e-01,  9.93283713e-01,  9.92286108e-01 ),
+    __C4(  9.91252309e-01,  9.90182742e-01,  9.89075787e-01,  9.87931302e-01 ),
+    __C4(  9.86355322e-01,  9.84736245e-01,  9.83175095e-01,  9.81558334e-01 ),
+    __C4(  9.79861353e-01,  9.78061749e-01,  9.76157432e-01,  9.74137862e-01 ),
+    __C4(  9.71999011e-01,  9.69732741e-01,  9.67333198e-01,  9.64791512e-01 ),
+    __C4(  9.62101150e-01,  9.59253976e-01,  9.56242718e-01,  9.53060091e-01 ),
+    __C4(  9.49698408e-01,  9.46149812e-01,  9.42407161e-01,  9.38463416e-01 ),
+    __C4(  9.34311297e-01,  9.29944987e-01,  9.25356797e-01,  9.20540463e-01 ),
+    __C4(  9.15489628e-01,  9.10198679e-01,  9.04662060e-01,  8.98875519e-01 ),
+    __C4(  8.92833832e-01,  8.86533719e-01,  8.79971272e-01,  8.73143784e-01 ),
+    __C4(  8.66047653e-01,  8.58681252e-01,  8.51042044e-01,  8.43129723e-01 ),
+    __C4(  8.34943514e-01,  8.26483991e-01,  8.17750537e-01,  8.08744982e-01 ),
+    __C4(  7.99468149e-01,  7.89923516e-01,  7.80113773e-01,  7.70043128e-01 ),
+    __C4(  7.59714574e-01,  7.49133097e-01,  7.38302860e-01,  7.27229876e-01 ),
+    __C4(  7.15920192e-01,  7.04381434e-01,  6.92619693e-01,  6.80643883e-01 ),
+    __C4(  6.68461648e-01,  6.56083014e-01,  6.43517927e-01,  6.30775533e-01 ),
+    __C4(  6.17864165e-01,  6.04795463e-01,  5.91579959e-01,  5.78228937e-01 ),
+    __C4(  5.64753589e-01,  5.51170316e-01,  5.37490509e-01,  5.23726350e-01 ),
+    __C4(  5.09891542e-01,  4.96000807e-01,  4.82066294e-01,  4.68101711e-01 ),
+    __C4(  4.54121700e-01,  4.40142182e-01,  4.26177297e-01,  4.12241789e-01 ),
+    __C4(  3.98349961e-01,  3.84517234e-01,  3.70758372e-01,  3.57088679e-01 ),
+    __C4(  3.43522867e-01,  3.30076376e-01,  3.16764033e-01,  3.03600465e-01 ),
+    __C4(  2.90599616e-01,  2.77775850e-01,  2.65143468e-01,  2.52716188e-01 ),
+    __C4(  2.40506985e-01,  2.28528397e-01,  2.16793343e-01,  2.05313990e-01 ),
+    __C4(  1.94102191e-01,  1.83168087e-01,  1.72522195e-01,  1.62173542e-01 ),
+    __C4(  1.52132068e-01,  1.42405280e-01,  1.33001524e-01,  1.23926066e-01 ),
+    __C4(  1.15185830e-01,  1.06784043e-01,  9.87263751e-02,  9.10137900e-02 ),
+    __C4(  8.36505724e-02,  7.66350831e-02,  6.99703341e-02,  6.36518811e-02 ),
+    __C4(  5.76817602e-02,  5.20524422e-02,  4.67653841e-02,  4.18095054e-02 ),
+    __C4(  3.71864025e-02,  3.28807275e-02,  2.88954850e-02,  2.52098057e-02 ),
+    __C4(  2.18305756e-02,  1.87289619e-02,  1.59212782e-02,  1.33638143e-02 ),
+    __C4(  1.10855888e-02,  8.94347419e-03,  6.75812489e-03,  3.50443813e-03 )
 };
 
-static const float mdct_win_7m5_60[60+46] = {
-     2.95060859e-03,  7.17541132e-03,  1.37695374e-02,  2.30953556e-02,
-     3.54036230e-02,  5.08289304e-02,  6.94696293e-02,  9.13884278e-02,
-     1.16604575e-01,  1.45073546e-01,  1.76711174e-01,  2.11342953e-01,
-     2.48768614e-01,  2.88701102e-01,  3.30823871e-01,  3.74814544e-01,
-     4.20308013e-01,  4.66904918e-01,  5.14185341e-01,  5.61710041e-01,
-     6.09026346e-01,  6.55671016e-01,  7.01218384e-01,  7.45240679e-01,
-     7.87369206e-01,  8.27223833e-01,  8.64513675e-01,  8.98977415e-01,
-     9.30407518e-01,  9.58599937e-01,  9.83447719e-01,  1.00488283e+00,
-     1.02285381e+00,  1.03740495e+00,  1.04859791e+00,  1.05656184e+00,
-     1.06149371e+00,  1.06362578e+00,  1.06325973e+00,  1.06074505e+00,
-     1.05643590e+00,  1.05069500e+00,  1.04392435e+00,  1.03647725e+00,
-     1.02872867e+00,  1.02106486e+00,  1.01400658e+00,  1.00727455e+00,
-     1.00172250e+00,  9.97309592e-01,  9.93985158e-01,  9.91683335e-01,
-     9.90325325e-01,  9.89822613e-01,  9.90074734e-01,  9.90975314e-01,
-     9.92412851e-01,  9.94273149e-01,  9.96439157e-01,  9.98791616e-01,
-     1.00120985e+00,  1.00357357e+00,  1.00575984e+00,  1.00764515e+00,
-     1.00910687e+00,  1.01002476e+00,  1.01028203e+00,  1.00976919e+00,
-     1.00838641e+00,  1.00605124e+00,  1.00269767e+00,  9.98280464e-01,
-     9.92777987e-01,  9.86186892e-01,  9.77634164e-01,  9.67447270e-01,
-     9.55129725e-01,  9.40389877e-01,  9.22959280e-01,  9.02607350e-01,
-     8.79202689e-01,  8.52641750e-01,  8.22881272e-01,  7.89971715e-01,
-     7.54030328e-01,  7.15255742e-01,  6.73936911e-01,  6.30414716e-01,
-     5.85078858e-01,  5.38398518e-01,  4.90833753e-01,  4.42885823e-01,
-     3.95091024e-01,  3.48004343e-01,  3.02196710e-01,  2.58227431e-01,
-     2.16641416e-01,  1.77922122e-01,  1.42480547e-01,  1.10652194e-01,
-     8.26995967e-02,  5.88334516e-02,  3.92030848e-02,  2.38629107e-02,
-     1.26976223e-02,  5.35665361e-03,
+static const lc3_intfloat_t mdct_win_7m5_60[60+46] = {
+    __C4(  2.95060859e-03,  7.17541132e-03,  1.37695374e-02,  2.30953556e-02 ),
+    __C4(  3.54036230e-02,  5.08289304e-02,  6.94696293e-02,  9.13884278e-02 ),
+    __C4(  1.16604575e-01,  1.45073546e-01,  1.76711174e-01,  2.11342953e-01 ),
+    __C4(  2.48768614e-01,  2.88701102e-01,  3.30823871e-01,  3.74814544e-01 ),
+    __C4(  4.20308013e-01,  4.66904918e-01,  5.14185341e-01,  5.61710041e-01 ),
+    __C4(  6.09026346e-01,  6.55671016e-01,  7.01218384e-01,  7.45240679e-01 ),
+    __C4(  7.87369206e-01,  8.27223833e-01,  8.64513675e-01,  8.98977415e-01 ),
+    __C4(  9.30407518e-01,  9.58599937e-01,  9.83447719e-01,  1.00488283e+00 ),
+    __C4(  1.02285381e+00,  1.03740495e+00,  1.04859791e+00,  1.05656184e+00 ),
+    __C4(  1.06149371e+00,  1.06362578e+00,  1.06325973e+00,  1.06074505e+00 ),
+    __C4(  1.05643590e+00,  1.05069500e+00,  1.04392435e+00,  1.03647725e+00 ),
+    __C4(  1.02872867e+00,  1.02106486e+00,  1.01400658e+00,  1.00727455e+00 ),
+    __C4(  1.00172250e+00,  9.97309592e-01,  9.93985158e-01,  9.91683335e-01 ),
+    __C4(  9.90325325e-01,  9.89822613e-01,  9.90074734e-01,  9.90975314e-01 ),
+    __C4(  9.92412851e-01,  9.94273149e-01,  9.96439157e-01,  9.98791616e-01 ),
+    __C4(  1.00120985e+00,  1.00357357e+00,  1.00575984e+00,  1.00764515e+00 ),
+    __C4(  1.00910687e+00,  1.01002476e+00,  1.01028203e+00,  1.00976919e+00 ),
+    __C4(  1.00838641e+00,  1.00605124e+00,  1.00269767e+00,  9.98280464e-01 ),
+    __C4(  9.92777987e-01,  9.86186892e-01,  9.77634164e-01,  9.67447270e-01 ),
+    __C4(  9.55129725e-01,  9.40389877e-01,  9.22959280e-01,  9.02607350e-01 ),
+    __C4(  8.79202689e-01,  8.52641750e-01,  8.22881272e-01,  7.89971715e-01 ),
+    __C4(  7.54030328e-01,  7.15255742e-01,  6.73936911e-01,  6.30414716e-01 ),
+    __C4(  5.85078858e-01,  5.38398518e-01,  4.90833753e-01,  4.42885823e-01 ),
+    __C4(  3.95091024e-01,  3.48004343e-01,  3.02196710e-01,  2.58227431e-01 ),
+    __C4(  2.16641416e-01,  1.77922122e-01,  1.42480547e-01,  1.10652194e-01 ),
+    __C4(  8.26995967e-02,  5.88334516e-02,  3.92030848e-02,  2.38629107e-02 ),
+    __C2(  1.26976223e-02,  5.35665361e-03                                   )
 };
 
-static const float mdct_win_7m5_120[120+92] = {
-     2.20824874e-03,  3.81014420e-03,  5.91552473e-03,  8.58361457e-03,
-     1.18759723e-02,  1.58335301e-02,  2.04918652e-02,  2.58883593e-02,
-     3.20415894e-02,  3.89616721e-02,  4.66742169e-02,  5.51849337e-02,
-     6.45038384e-02,  7.46411071e-02,  8.56000162e-02,  9.73846703e-02,
-     1.09993603e-01,  1.23419277e-01,  1.37655457e-01,  1.52690437e-01,
-     1.68513363e-01,  1.85093105e-01,  2.02410419e-01,  2.20450365e-01,
-     2.39167941e-01,  2.58526168e-01,  2.78498539e-01,  2.99038432e-01,
-     3.20104862e-01,  3.41658622e-01,  3.63660034e-01,  3.86062695e-01,
-     4.08815272e-01,  4.31871046e-01,  4.55176988e-01,  4.78676593e-01,
-     5.02324813e-01,  5.26060916e-01,  5.49831283e-01,  5.73576883e-01,
-     5.97241338e-01,  6.20770242e-01,  6.44099662e-01,  6.67176382e-01,
-     6.89958854e-01,  7.12379980e-01,  7.34396372e-01,  7.55966688e-01,
-     7.77036981e-01,  7.97558114e-01,  8.17490856e-01,  8.36796950e-01,
-     8.55447310e-01,  8.73400798e-01,  8.90635719e-01,  9.07128770e-01,
-     9.22848784e-01,  9.37763323e-01,  9.51860206e-01,  9.65130600e-01,
-     9.77556541e-01,  9.89126209e-01,  9.99846919e-01,  1.00970073e+00,
-     1.01868229e+00,  1.02681455e+00,  1.03408981e+00,  1.04051196e+00,
-     1.04610837e+00,  1.05088565e+00,  1.05486289e+00,  1.05807221e+00,
-     1.06053414e+00,  1.06227662e+00,  1.06333815e+00,  1.06375557e+00,
-     1.06356632e+00,  1.06282156e+00,  1.06155996e+00,  1.05981709e+00,
-     1.05765876e+00,  1.05512006e+00,  1.05223985e+00,  1.04908779e+00,
-     1.04569860e+00,  1.04210831e+00,  1.03838099e+00,  1.03455276e+00,
-     1.03067200e+00,  1.02679167e+00,  1.02295558e+00,  1.01920733e+00,
-     1.01587289e+00,  1.01221017e+00,  1.00884559e+00,  1.00577851e+00,
-     1.00300262e+00,  1.00051460e+00,  9.98309229e-01,  9.96378601e-01,
-     9.94718132e-01,  9.93316216e-01,  9.92166957e-01,  9.91258603e-01,
-     9.90581104e-01,  9.90123118e-01,  9.89873712e-01,  9.89818707e-01,
-     9.89946800e-01,  9.90243175e-01,  9.90695564e-01,  9.91288540e-01,
-     9.92009469e-01,  9.92842693e-01,  9.93775067e-01,  9.94790398e-01,
-     9.95875534e-01,  9.97014367e-01,  9.98192871e-01,  9.99394506e-01,
-     1.00060586e+00,  1.00181040e+00,  1.00299457e+00,  1.00414155e+00,
-     1.00523688e+00,  1.00626393e+00,  1.00720890e+00,  1.00805489e+00,
-     1.00878802e+00,  1.00939182e+00,  1.00985296e+00,  1.01015529e+00,
-     1.01028602e+00,  1.01022988e+00,  1.00997541e+00,  1.00950846e+00,
-     1.00881848e+00,  1.00789488e+00,  1.00672876e+00,  1.00530991e+00,
-     1.00363456e+00,  1.00169363e+00,  9.99485663e-01,  9.97006370e-01,
-     9.94254687e-01,  9.91231967e-01,  9.87937115e-01,  9.84375125e-01,
-     9.79890963e-01,  9.75269879e-01,  9.70180498e-01,  9.64580027e-01,
-     9.58425534e-01,  9.51684014e-01,  9.44320232e-01,  9.36290624e-01,
-     9.27580507e-01,  9.18153414e-01,  9.07976524e-01,  8.97050058e-01,
-     8.85351360e-01,  8.72857927e-01,  8.59579819e-01,  8.45502615e-01,
-     8.30619943e-01,  8.14946648e-01,  7.98489378e-01,  7.81262450e-01,
-     7.63291769e-01,  7.44590843e-01,  7.25199287e-01,  7.05153668e-01,
-     6.84490545e-01,  6.63245210e-01,  6.41477162e-01,  6.19235334e-01,
-     5.96559133e-01,  5.73519989e-01,  5.50173851e-01,  5.26568538e-01,
-     5.02781159e-01,  4.78860889e-01,  4.54877894e-01,  4.30898123e-01,
-     4.06993964e-01,  3.83234031e-01,  3.59680098e-01,  3.36408100e-01,
-     3.13496418e-01,  2.91010565e-01,  2.69019585e-01,  2.47584348e-01,
-     2.26788433e-01,  2.06677771e-01,  1.87310343e-01,  1.68739644e-01,
-     1.51012382e-01,  1.34171842e-01,  1.18254662e-01,  1.03290734e-01,
-     8.93117360e-02,  7.63429787e-02,  6.44077291e-02,  5.35243715e-02,
-     4.37084453e-02,  3.49667099e-02,  2.72984629e-02,  2.06895808e-02,
-     1.51125125e-02,  1.05228754e-02,  6.85547314e-03,  4.02351119e-03,
+static const lc3_intfloat_t mdct_win_7m5_120[120+92] = {
+    __C4(  2.20824874e-03,  3.81014420e-03,  5.91552473e-03,  8.58361457e-03 ),
+    __C4(  1.18759723e-02,  1.58335301e-02,  2.04918652e-02,  2.58883593e-02 ),
+    __C4(  3.20415894e-02,  3.89616721e-02,  4.66742169e-02,  5.51849337e-02 ),
+    __C4(  6.45038384e-02,  7.46411071e-02,  8.56000162e-02,  9.73846703e-02 ),
+    __C4(  1.09993603e-01,  1.23419277e-01,  1.37655457e-01,  1.52690437e-01 ),
+    __C4(  1.68513363e-01,  1.85093105e-01,  2.02410419e-01,  2.20450365e-01 ),
+    __C4(  2.39167941e-01,  2.58526168e-01,  2.78498539e-01,  2.99038432e-01 ),
+    __C4(  3.20104862e-01,  3.41658622e-01,  3.63660034e-01,  3.86062695e-01 ),
+    __C4(  4.08815272e-01,  4.31871046e-01,  4.55176988e-01,  4.78676593e-01 ),
+    __C4(  5.02324813e-01,  5.26060916e-01,  5.49831283e-01,  5.73576883e-01 ),
+    __C4(  5.97241338e-01,  6.20770242e-01,  6.44099662e-01,  6.67176382e-01 ),
+    __C4(  6.89958854e-01,  7.12379980e-01,  7.34396372e-01,  7.55966688e-01 ),
+    __C4(  7.77036981e-01,  7.97558114e-01,  8.17490856e-01,  8.36796950e-01 ),
+    __C4(  8.55447310e-01,  8.73400798e-01,  8.90635719e-01,  9.07128770e-01 ),
+    __C4(  9.22848784e-01,  9.37763323e-01,  9.51860206e-01,  9.65130600e-01 ),
+    __C4(  9.77556541e-01,  9.89126209e-01,  9.99846919e-01,  1.00970073e+00 ),
+    __C4(  1.01868229e+00,  1.02681455e+00,  1.03408981e+00,  1.04051196e+00 ),
+    __C4(  1.04610837e+00,  1.05088565e+00,  1.05486289e+00,  1.05807221e+00 ),
+    __C4(  1.06053414e+00,  1.06227662e+00,  1.06333815e+00,  1.06375557e+00 ),
+    __C4(  1.06356632e+00,  1.06282156e+00,  1.06155996e+00,  1.05981709e+00 ),
+    __C4(  1.05765876e+00,  1.05512006e+00,  1.05223985e+00,  1.04908779e+00 ),
+    __C4(  1.04569860e+00,  1.04210831e+00,  1.03838099e+00,  1.03455276e+00 ),
+    __C4(  1.03067200e+00,  1.02679167e+00,  1.02295558e+00,  1.01920733e+00 ),
+    __C4(  1.01587289e+00,  1.01221017e+00,  1.00884559e+00,  1.00577851e+00 ),
+    __C4(  1.00300262e+00,  1.00051460e+00,  9.98309229e-01,  9.96378601e-01 ),
+    __C4(  9.94718132e-01,  9.93316216e-01,  9.92166957e-01,  9.91258603e-01 ),
+    __C4(  9.90581104e-01,  9.90123118e-01,  9.89873712e-01,  9.89818707e-01 ),
+    __C4(  9.89946800e-01,  9.90243175e-01,  9.90695564e-01,  9.91288540e-01 ),
+    __C4(  9.92009469e-01,  9.92842693e-01,  9.93775067e-01,  9.94790398e-01 ),
+    __C4(  9.95875534e-01,  9.97014367e-01,  9.98192871e-01,  9.99394506e-01 ),
+    __C4(  1.00060586e+00,  1.00181040e+00,  1.00299457e+00,  1.00414155e+00 ),
+    __C4(  1.00523688e+00,  1.00626393e+00,  1.00720890e+00,  1.00805489e+00 ),
+    __C4(  1.00878802e+00,  1.00939182e+00,  1.00985296e+00,  1.01015529e+00 ),
+    __C4(  1.01028602e+00,  1.01022988e+00,  1.00997541e+00,  1.00950846e+00 ),
+    __C4(  1.00881848e+00,  1.00789488e+00,  1.00672876e+00,  1.00530991e+00 ),
+    __C4(  1.00363456e+00,  1.00169363e+00,  9.99485663e-01,  9.97006370e-01 ),
+    __C4(  9.94254687e-01,  9.91231967e-01,  9.87937115e-01,  9.84375125e-01 ),
+    __C4(  9.79890963e-01,  9.75269879e-01,  9.70180498e-01,  9.64580027e-01 ),
+    __C4(  9.58425534e-01,  9.51684014e-01,  9.44320232e-01,  9.36290624e-01 ),
+    __C4(  9.27580507e-01,  9.18153414e-01,  9.07976524e-01,  8.97050058e-01 ),
+    __C4(  8.85351360e-01,  8.72857927e-01,  8.59579819e-01,  8.45502615e-01 ),
+    __C4(  8.30619943e-01,  8.14946648e-01,  7.98489378e-01,  7.81262450e-01 ),
+    __C4(  7.63291769e-01,  7.44590843e-01,  7.25199287e-01,  7.05153668e-01 ),
+    __C4(  6.84490545e-01,  6.63245210e-01,  6.41477162e-01,  6.19235334e-01 ),
+    __C4(  5.96559133e-01,  5.73519989e-01,  5.50173851e-01,  5.26568538e-01 ),
+    __C4(  5.02781159e-01,  4.78860889e-01,  4.54877894e-01,  4.30898123e-01 ),
+    __C4(  4.06993964e-01,  3.83234031e-01,  3.59680098e-01,  3.36408100e-01 ),
+    __C4(  3.13496418e-01,  2.91010565e-01,  2.69019585e-01,  2.47584348e-01 ),
+    __C4(  2.26788433e-01,  2.06677771e-01,  1.87310343e-01,  1.68739644e-01 ),
+    __C4(  1.51012382e-01,  1.34171842e-01,  1.18254662e-01,  1.03290734e-01 ),
+    __C4(  8.93117360e-02,  7.63429787e-02,  6.44077291e-02,  5.35243715e-02 ),
+    __C4(  4.37084453e-02,  3.49667099e-02,  2.72984629e-02,  2.06895808e-02 ),
+    __C4(  1.51125125e-02,  1.05228754e-02,  6.85547314e-03,  4.02351119e-03 )
 };
 
-static const float mdct_win_7m5_180[180+138] = {
-     1.97084908e-03,  2.95060859e-03,  4.12447721e-03,  5.52688664e-03,
-     7.17541132e-03,  9.08757730e-03,  1.12819105e-02,  1.37695374e-02,
-     1.65600266e-02,  1.96650895e-02,  2.30953556e-02,  2.68612894e-02,
-     3.09632560e-02,  3.54036230e-02,  4.01915610e-02,  4.53331403e-02,
-     5.08289304e-02,  5.66815448e-02,  6.28935304e-02,  6.94696293e-02,
-     7.64106314e-02,  8.37160016e-02,  9.13884278e-02,  9.94294008e-02,
-     1.07834725e-01,  1.16604575e-01,  1.25736503e-01,  1.35226811e-01,
-     1.45073546e-01,  1.55273819e-01,  1.65822194e-01,  1.76711174e-01,
-     1.87928776e-01,  1.99473180e-01,  2.11342953e-01,  2.23524554e-01,
-     2.36003100e-01,  2.48768614e-01,  2.61813811e-01,  2.75129161e-01,
-     2.88701102e-01,  3.02514034e-01,  3.16558805e-01,  3.30823871e-01,
-     3.45295567e-01,  3.59963992e-01,  3.74814544e-01,  3.89831817e-01,
-     4.05001010e-01,  4.20308013e-01,  4.35739515e-01,  4.51277817e-01,
-     4.66904918e-01,  4.82609041e-01,  4.98375466e-01,  5.14185341e-01,
-     5.30021478e-01,  5.45869352e-01,  5.61710041e-01,  5.77528151e-01,
-     5.93304696e-01,  6.09026346e-01,  6.24674189e-01,  6.40227555e-01,
-     6.55671016e-01,  6.70995935e-01,  6.86184559e-01,  7.01218384e-01,
-     7.16078449e-01,  7.30756084e-01,  7.45240679e-01,  7.59515122e-01,
-     7.73561955e-01,  7.87369206e-01,  8.00923138e-01,  8.14211386e-01,
-     8.27223833e-01,  8.39952374e-01,  8.52386102e-01,  8.64513675e-01,
-     8.76324079e-01,  8.87814288e-01,  8.98977415e-01,  9.09803319e-01,
-     9.20284312e-01,  9.30407518e-01,  9.40169652e-01,  9.49567795e-01,
-     9.58599937e-01,  9.67260260e-01,  9.75545166e-01,  9.83447719e-01,
-     9.90971957e-01,  9.98119269e-01,  1.00488283e+00,  1.01125773e+00,
-     1.01724436e+00,  1.02285381e+00,  1.02808734e+00,  1.03293706e+00,
-     1.03740495e+00,  1.04150164e+00,  1.04523236e+00,  1.04859791e+00,
-     1.05160340e+00,  1.05425505e+00,  1.05656184e+00,  1.05853400e+00,
-     1.06017414e+00,  1.06149371e+00,  1.06249943e+00,  1.06320577e+00,
-     1.06362578e+00,  1.06376487e+00,  1.06363778e+00,  1.06325973e+00,
-     1.06264695e+00,  1.06180496e+00,  1.06074505e+00,  1.05948492e+00,
-     1.05804533e+00,  1.05643590e+00,  1.05466218e+00,  1.05274047e+00,
-     1.05069500e+00,  1.04853894e+00,  1.04627898e+00,  1.04392435e+00,
-     1.04149540e+00,  1.03901003e+00,  1.03647725e+00,  1.03390793e+00,
-     1.03131989e+00,  1.02872867e+00,  1.02614832e+00,  1.02358988e+00,
-     1.02106486e+00,  1.01856262e+00,  1.01655770e+00,  1.01400658e+00,
-     1.01162953e+00,  1.00938590e+00,  1.00727455e+00,  1.00529616e+00,
-     1.00344526e+00,  1.00172250e+00,  1.00012792e+00,  9.98657533e-01,
-     9.97309592e-01,  9.96083571e-01,  9.94976569e-01,  9.93985158e-01,
-     9.93107530e-01,  9.92341305e-01,  9.91683335e-01,  9.91130070e-01,
-     9.90678325e-01,  9.90325325e-01,  9.90067562e-01,  9.89901282e-01,
-     9.89822613e-01,  9.89827845e-01,  9.89913241e-01,  9.90074734e-01,
-     9.90308256e-01,  9.90609852e-01,  9.90975314e-01,  9.91400330e-01,
-     9.91880966e-01,  9.92412851e-01,  9.92991779e-01,  9.93613381e-01,
-     9.94273149e-01,  9.94966958e-01,  9.95690370e-01,  9.96439157e-01,
-     9.97208572e-01,  9.97994275e-01,  9.98791616e-01,  9.99596062e-01,
-     1.00040410e+00,  1.00120985e+00,  1.00200976e+00,  1.00279924e+00,
-     1.00357357e+00,  1.00432828e+00,  1.00505850e+00,  1.00575984e+00,
-     1.00642767e+00,  1.00705768e+00,  1.00764515e+00,  1.00818549e+00,
-     1.00867427e+00,  1.00910687e+00,  1.00947916e+00,  1.00978659e+00,
-     1.01002476e+00,  1.01018954e+00,  1.01027669e+00,  1.01028203e+00,
-     1.01020174e+00,  1.01003208e+00,  1.00976919e+00,  1.00940939e+00,
-     1.00894931e+00,  1.00838641e+00,  1.00771780e+00,  1.00694031e+00,
-     1.00605124e+00,  1.00504879e+00,  1.00393183e+00,  1.00269767e+00,
-     1.00134427e+00,  9.99872092e-01,  9.98280464e-01,  9.96566569e-01,
-     9.94731737e-01,  9.92777987e-01,  9.90701374e-01,  9.88504165e-01,
-     9.86186892e-01,  9.83711989e-01,  9.80584643e-01,  9.77634164e-01,
-     9.74455033e-01,  9.71062916e-01,  9.67447270e-01,  9.63593926e-01,
-     9.59491398e-01,  9.55129725e-01,  9.50501326e-01,  9.45592810e-01,
-     9.40389877e-01,  9.34886760e-01,  9.29080559e-01,  9.22959280e-01,
-     9.16509579e-01,  9.09724456e-01,  9.02607350e-01,  8.95155084e-01,
-     8.87356154e-01,  8.79202689e-01,  8.70699698e-01,  8.61847424e-01,
-     8.52641750e-01,  8.43077833e-01,  8.33154905e-01,  8.22881272e-01,
-     8.12257597e-01,  8.01285439e-01,  7.89971715e-01,  7.78318177e-01,
-     7.66337710e-01,  7.54030328e-01,  7.41407991e-01,  7.28477501e-01,
-     7.15255742e-01,  7.01751739e-01,  6.87975632e-01,  6.73936911e-01,
-     6.59652573e-01,  6.45139489e-01,  6.30414716e-01,  6.15483622e-01,
-     6.00365852e-01,  5.85078858e-01,  5.69649536e-01,  5.54084810e-01,
-     5.38398518e-01,  5.22614738e-01,  5.06756805e-01,  4.90833753e-01,
-     4.74866033e-01,  4.58876566e-01,  4.42885823e-01,  4.26906539e-01,
-     4.10970973e-01,  3.95091024e-01,  3.79291327e-01,  3.63587417e-01,
-     3.48004343e-01,  3.32563201e-01,  3.17287485e-01,  3.02196710e-01,
-     2.87309403e-01,  2.72643992e-01,  2.58227431e-01,  2.44072856e-01,
-     2.30208977e-01,  2.16641416e-01,  2.03398481e-01,  1.90486162e-01,
-     1.77922122e-01,  1.65726674e-01,  1.53906397e-01,  1.42480547e-01,
-     1.31453980e-01,  1.20841778e-01,  1.10652194e-01,  1.00891734e-01,
-     9.15718851e-02,  8.26995967e-02,  7.42815529e-02,  6.63242382e-02,
-     5.88334516e-02,  5.18140676e-02,  4.52698346e-02,  3.92030848e-02,
-     3.36144159e-02,  2.85023308e-02,  2.38629107e-02,  1.96894227e-02,
-     1.59720527e-02,  1.26976223e-02,  9.84937739e-03,  7.40724463e-03,
-     5.35665361e-03,  3.83226552e-03,
+static const lc3_intfloat_t mdct_win_7m5_180[180+138] = {
+    __C4(  1.97084908e-03,  2.95060859e-03,  4.12447721e-03,  5.52688664e-03 ),
+    __C4(  7.17541132e-03,  9.08757730e-03,  1.12819105e-02,  1.37695374e-02 ),
+    __C4(  1.65600266e-02,  1.96650895e-02,  2.30953556e-02,  2.68612894e-02 ),
+    __C4(  3.09632560e-02,  3.54036230e-02,  4.01915610e-02,  4.53331403e-02 ),
+    __C4(  5.08289304e-02,  5.66815448e-02,  6.28935304e-02,  6.94696293e-02 ),
+    __C4(  7.64106314e-02,  8.37160016e-02,  9.13884278e-02,  9.94294008e-02 ),
+    __C4(  1.07834725e-01,  1.16604575e-01,  1.25736503e-01,  1.35226811e-01 ),
+    __C4(  1.45073546e-01,  1.55273819e-01,  1.65822194e-01,  1.76711174e-01 ),
+    __C4(  1.87928776e-01,  1.99473180e-01,  2.11342953e-01,  2.23524554e-01 ),
+    __C4(  2.36003100e-01,  2.48768614e-01,  2.61813811e-01,  2.75129161e-01 ),
+    __C4(  2.88701102e-01,  3.02514034e-01,  3.16558805e-01,  3.30823871e-01 ),
+    __C4(  3.45295567e-01,  3.59963992e-01,  3.74814544e-01,  3.89831817e-01 ),
+    __C4(  4.05001010e-01,  4.20308013e-01,  4.35739515e-01,  4.51277817e-01 ),
+    __C4(  4.66904918e-01,  4.82609041e-01,  4.98375466e-01,  5.14185341e-01 ),
+    __C4(  5.30021478e-01,  5.45869352e-01,  5.61710041e-01,  5.77528151e-01 ),
+    __C4(  5.93304696e-01,  6.09026346e-01,  6.24674189e-01,  6.40227555e-01 ),
+    __C4(  6.55671016e-01,  6.70995935e-01,  6.86184559e-01,  7.01218384e-01 ),
+    __C4(  7.16078449e-01,  7.30756084e-01,  7.45240679e-01,  7.59515122e-01 ),
+    __C4(  7.73561955e-01,  7.87369206e-01,  8.00923138e-01,  8.14211386e-01 ),
+    __C4(  8.27223833e-01,  8.39952374e-01,  8.52386102e-01,  8.64513675e-01 ),
+    __C4(  8.76324079e-01,  8.87814288e-01,  8.98977415e-01,  9.09803319e-01 ),
+    __C4(  9.20284312e-01,  9.30407518e-01,  9.40169652e-01,  9.49567795e-01 ),
+    __C4(  9.58599937e-01,  9.67260260e-01,  9.75545166e-01,  9.83447719e-01 ),
+    __C4(  9.90971957e-01,  9.98119269e-01,  1.00488283e+00,  1.01125773e+00 ),
+    __C4(  1.01724436e+00,  1.02285381e+00,  1.02808734e+00,  1.03293706e+00 ),
+    __C4(  1.03740495e+00,  1.04150164e+00,  1.04523236e+00,  1.04859791e+00 ),
+    __C4(  1.05160340e+00,  1.05425505e+00,  1.05656184e+00,  1.05853400e+00 ),
+    __C4(  1.06017414e+00,  1.06149371e+00,  1.06249943e+00,  1.06320577e+00 ),
+    __C4(  1.06362578e+00,  1.06376487e+00,  1.06363778e+00,  1.06325973e+00 ),
+    __C4(  1.06264695e+00,  1.06180496e+00,  1.06074505e+00,  1.05948492e+00 ),
+    __C4(  1.05804533e+00,  1.05643590e+00,  1.05466218e+00,  1.05274047e+00 ),
+    __C4(  1.05069500e+00,  1.04853894e+00,  1.04627898e+00,  1.04392435e+00 ),
+    __C4(  1.04149540e+00,  1.03901003e+00,  1.03647725e+00,  1.03390793e+00 ),
+    __C4(  1.03131989e+00,  1.02872867e+00,  1.02614832e+00,  1.02358988e+00 ),
+    __C4(  1.02106486e+00,  1.01856262e+00,  1.01655770e+00,  1.01400658e+00 ),
+    __C4(  1.01162953e+00,  1.00938590e+00,  1.00727455e+00,  1.00529616e+00 ),
+    __C4(  1.00344526e+00,  1.00172250e+00,  1.00012792e+00,  9.98657533e-01 ),
+    __C4(  9.97309592e-01,  9.96083571e-01,  9.94976569e-01,  9.93985158e-01 ),
+    __C4(  9.93107530e-01,  9.92341305e-01,  9.91683335e-01,  9.91130070e-01 ),
+    __C4(  9.90678325e-01,  9.90325325e-01,  9.90067562e-01,  9.89901282e-01 ),
+    __C4(  9.89822613e-01,  9.89827845e-01,  9.89913241e-01,  9.90074734e-01 ),
+    __C4(  9.90308256e-01,  9.90609852e-01,  9.90975314e-01,  9.91400330e-01 ),
+    __C4(  9.91880966e-01,  9.92412851e-01,  9.92991779e-01,  9.93613381e-01 ),
+    __C4(  9.94273149e-01,  9.94966958e-01,  9.95690370e-01,  9.96439157e-01 ),
+    __C4(  9.97208572e-01,  9.97994275e-01,  9.98791616e-01,  9.99596062e-01 ),
+    __C4(  1.00040410e+00,  1.00120985e+00,  1.00200976e+00,  1.00279924e+00 ),
+    __C4(  1.00357357e+00,  1.00432828e+00,  1.00505850e+00,  1.00575984e+00 ),
+    __C4(  1.00642767e+00,  1.00705768e+00,  1.00764515e+00,  1.00818549e+00 ),
+    __C4(  1.00867427e+00,  1.00910687e+00,  1.00947916e+00,  1.00978659e+00 ),
+    __C4(  1.01002476e+00,  1.01018954e+00,  1.01027669e+00,  1.01028203e+00 ),
+    __C4(  1.01020174e+00,  1.01003208e+00,  1.00976919e+00,  1.00940939e+00 ),
+    __C4(  1.00894931e+00,  1.00838641e+00,  1.00771780e+00,  1.00694031e+00 ),
+    __C4(  1.00605124e+00,  1.00504879e+00,  1.00393183e+00,  1.00269767e+00 ),
+    __C4(  1.00134427e+00,  9.99872092e-01,  9.98280464e-01,  9.96566569e-01 ),
+    __C4(  9.94731737e-01,  9.92777987e-01,  9.90701374e-01,  9.88504165e-01 ),
+    __C4(  9.86186892e-01,  9.83711989e-01,  9.80584643e-01,  9.77634164e-01 ),
+    __C4(  9.74455033e-01,  9.71062916e-01,  9.67447270e-01,  9.63593926e-01 ),
+    __C4(  9.59491398e-01,  9.55129725e-01,  9.50501326e-01,  9.45592810e-01 ),
+    __C4(  9.40389877e-01,  9.34886760e-01,  9.29080559e-01,  9.22959280e-01 ),
+    __C4(  9.16509579e-01,  9.09724456e-01,  9.02607350e-01,  8.95155084e-01 ),
+    __C4(  8.87356154e-01,  8.79202689e-01,  8.70699698e-01,  8.61847424e-01 ),
+    __C4(  8.52641750e-01,  8.43077833e-01,  8.33154905e-01,  8.22881272e-01 ),
+    __C4(  8.12257597e-01,  8.01285439e-01,  7.89971715e-01,  7.78318177e-01 ),
+    __C4(  7.66337710e-01,  7.54030328e-01,  7.41407991e-01,  7.28477501e-01 ),
+    __C4(  7.15255742e-01,  7.01751739e-01,  6.87975632e-01,  6.73936911e-01 ),
+    __C4(  6.59652573e-01,  6.45139489e-01,  6.30414716e-01,  6.15483622e-01 ),
+    __C4(  6.00365852e-01,  5.85078858e-01,  5.69649536e-01,  5.54084810e-01 ),
+    __C4(  5.38398518e-01,  5.22614738e-01,  5.06756805e-01,  4.90833753e-01 ),
+    __C4(  4.74866033e-01,  4.58876566e-01,  4.42885823e-01,  4.26906539e-01 ),
+    __C4(  4.10970973e-01,  3.95091024e-01,  3.79291327e-01,  3.63587417e-01 ),
+    __C4(  3.48004343e-01,  3.32563201e-01,  3.17287485e-01,  3.02196710e-01 ),
+    __C4(  2.87309403e-01,  2.72643992e-01,  2.58227431e-01,  2.44072856e-01 ),
+    __C4(  2.30208977e-01,  2.16641416e-01,  2.03398481e-01,  1.90486162e-01 ),
+    __C4(  1.77922122e-01,  1.65726674e-01,  1.53906397e-01,  1.42480547e-01 ),
+    __C4(  1.31453980e-01,  1.20841778e-01,  1.10652194e-01,  1.00891734e-01 ),
+    __C4(  9.15718851e-02,  8.26995967e-02,  7.42815529e-02,  6.63242382e-02 ),
+    __C4(  5.88334516e-02,  5.18140676e-02,  4.52698346e-02,  3.92030848e-02 ),
+    __C4(  3.36144159e-02,  2.85023308e-02,  2.38629107e-02,  1.96894227e-02 ),
+    __C4(  1.59720527e-02,  1.26976223e-02,  9.84937739e-03,  7.40724463e-03 ),
+    __C2(  5.35665361e-03,  3.83226552e-03                                   )
 };
 
-static const float mdct_win_7m5_240[240+184] = {
-     1.84833037e-03,  2.56481839e-03,  3.36762118e-03,  4.28736617e-03,
-     5.33830143e-03,  6.52679223e-03,  7.86112587e-03,  9.34628179e-03,
-     1.09916868e-02,  1.28011172e-02,  1.47805911e-02,  1.69307043e-02,
-     1.92592307e-02,  2.17696937e-02,  2.44685983e-02,  2.73556543e-02,
-     3.04319230e-02,  3.36980464e-02,  3.71583577e-02,  4.08148180e-02,
-     4.46708068e-02,  4.87262995e-02,  5.29820633e-02,  5.74382470e-02,
-     6.20968580e-02,  6.69609767e-02,  7.20298364e-02,  7.73039146e-02,
-     8.27825574e-02,  8.84682102e-02,  9.43607566e-02,  1.00460272e-01,
-     1.06763824e-01,  1.13273679e-01,  1.19986420e-01,  1.26903521e-01,
-     1.34020853e-01,  1.41339557e-01,  1.48857211e-01,  1.56573685e-01,
-     1.64484622e-01,  1.72589077e-01,  1.80879090e-01,  1.89354320e-01,
-     1.98012244e-01,  2.06854141e-01,  2.15875319e-01,  2.25068672e-01,
-     2.34427407e-01,  2.43948314e-01,  2.53627993e-01,  2.63464061e-01,
-     2.73450494e-01,  2.83582189e-01,  2.93853469e-01,  3.04257373e-01,
-     3.14790914e-01,  3.25449123e-01,  3.36227410e-01,  3.47118760e-01,
-     3.58120177e-01,  3.69224663e-01,  3.80427793e-01,  3.91720023e-01,
-     4.03097022e-01,  4.14551955e-01,  4.26081719e-01,  4.37676318e-01,
-     4.49330196e-01,  4.61034855e-01,  4.72786043e-01,  4.84576777e-01,
-     4.96401707e-01,  5.08252458e-01,  5.20122078e-01,  5.32002077e-01,
-     5.43888090e-01,  5.55771601e-01,  5.67645739e-01,  5.79502786e-01,
-     5.91335035e-01,  6.03138367e-01,  6.14904172e-01,  6.26623941e-01,
-     6.38288834e-01,  6.49893375e-01,  6.61432360e-01,  6.72902514e-01,
-     6.84293750e-01,  6.95600460e-01,  7.06811784e-01,  7.17923425e-01,
-     7.28931386e-01,  7.39832773e-01,  7.50618982e-01,  7.61284053e-01,
-     7.71818919e-01,  7.82220992e-01,  7.92481330e-01,  8.02599448e-01,
-     8.12565230e-01,  8.22377129e-01,  8.32030518e-01,  8.41523208e-01,
-     8.50848313e-01,  8.60002412e-01,  8.68979881e-01,  8.77778347e-01,
-     8.86395904e-01,  8.94829421e-01,  9.03077626e-01,  9.11132652e-01,
-     9.18993585e-01,  9.26652937e-01,  9.34111420e-01,  9.41364344e-01,
-     9.48412967e-01,  9.55255630e-01,  9.61892013e-01,  9.68316363e-01,
-     9.74530156e-01,  9.80528338e-01,  9.86313928e-01,  9.91886049e-01,
-     9.97246345e-01,  1.00239190e+00,  1.00731946e+00,  1.01202707e+00,
-     1.01651654e+00,  1.02079430e+00,  1.02486082e+00,  1.02871471e+00,
-     1.03235170e+00,  1.03577375e+00,  1.03898432e+00,  1.04198786e+00,
-     1.04478564e+00,  1.04737818e+00,  1.04976743e+00,  1.05195405e+00,
-     1.05394290e+00,  1.05573463e+00,  1.05734177e+00,  1.05875726e+00,
-     1.05998674e+00,  1.06103672e+00,  1.06190651e+00,  1.06260369e+00,
-     1.06313289e+00,  1.06350237e+00,  1.06370981e+00,  1.06376322e+00,
-     1.06366765e+00,  1.06343012e+00,  1.06305656e+00,  1.06255421e+00,
-     1.06192235e+00,  1.06116702e+00,  1.06029469e+00,  1.05931469e+00,
-     1.05823465e+00,  1.05705891e+00,  1.05578948e+00,  1.05442979e+00,
-     1.05298793e+00,  1.05147505e+00,  1.04989930e+00,  1.04826213e+00,
-     1.04656691e+00,  1.04481699e+00,  1.04302125e+00,  1.04118768e+00,
-     1.03932339e+00,  1.03743168e+00,  1.03551757e+00,  1.03358511e+00,
-     1.03164371e+00,  1.02969955e+00,  1.02775944e+00,  1.02582719e+00,
-     1.02390791e+00,  1.02200805e+00,  1.02013910e+00,  1.01826310e+00,
-     1.01687901e+00,  1.01492195e+00,  1.01309662e+00,  1.01134205e+00,
-     1.00965912e+00,  1.00805036e+00,  1.00651754e+00,  1.00505799e+00,
-     1.00366956e+00,  1.00235327e+00,  1.00110981e+00,  9.99937523e-01,
-     9.98834524e-01,  9.97800606e-01,  9.96835756e-01,  9.95938881e-01,
-     9.95108459e-01,  9.94343411e-01,  9.93642921e-01,  9.93005832e-01,
-     9.92430984e-01,  9.91917493e-01,  9.91463898e-01,  9.91068214e-01,
-     9.90729218e-01,  9.90446225e-01,  9.90217819e-01,  9.90041963e-01,
-     9.89917085e-01,  9.89841975e-01,  9.89815048e-01,  9.89834329e-01,
-     9.89898211e-01,  9.90005403e-01,  9.90154189e-01,  9.90342427e-01,
-     9.90568459e-01,  9.90830953e-01,  9.91128038e-01,  9.91457566e-01,
-     9.91817881e-01,  9.92207559e-01,  9.92624757e-01,  9.93067358e-01,
-     9.93533398e-01,  9.94021410e-01,  9.94529685e-01,  9.95055964e-01,
-     9.95598351e-01,  9.96155580e-01,  9.96725627e-01,  9.97306092e-01,
-     9.97895214e-01,  9.98491441e-01,  9.99092890e-01,  9.99697063e-01,
-     1.00030303e+00,  1.00090793e+00,  1.00151084e+00,  1.00210923e+00,
-     1.00270118e+00,  1.00328513e+00,  1.00385926e+00,  1.00442111e+00,
-     1.00496860e+00,  1.00550040e+00,  1.00601455e+00,  1.00650869e+00,
-     1.00698104e+00,  1.00743004e+00,  1.00785364e+00,  1.00824962e+00,
-     1.00861604e+00,  1.00895138e+00,  1.00925390e+00,  1.00952134e+00,
-     1.00975175e+00,  1.00994371e+00,  1.01009550e+00,  1.01020488e+00,
-     1.01027007e+00,  1.01028975e+00,  1.01026227e+00,  1.01018562e+00,
-     1.01005820e+00,  1.00987882e+00,  1.00964593e+00,  1.00935753e+00,
-     1.00901228e+00,  1.00860959e+00,  1.00814837e+00,  1.00762674e+00,
-     1.00704343e+00,  1.00639775e+00,  1.00568877e+00,  1.00491559e+00,
-     1.00407768e+00,  1.00317429e+00,  1.00220424e+00,  1.00116684e+00,
-     1.00006248e+00,  9.98891422e-01,  9.97652252e-01,  9.96343856e-01,
-     9.94967462e-01,  9.93524663e-01,  9.92013927e-01,  9.90433283e-01,
-     9.88785147e-01,  9.87072681e-01,  9.85297443e-01,  9.83401161e-01,
-     9.80949418e-01,  9.78782729e-01,  9.76468238e-01,  9.74042850e-01,
-     9.71498848e-01,  9.68829968e-01,  9.66030974e-01,  9.63095104e-01,
-     9.60018198e-01,  9.56795738e-01,  9.53426267e-01,  9.49903482e-01,
-     9.46222115e-01,  9.42375820e-01,  9.38361702e-01,  9.34177798e-01,
-     9.29823124e-01,  9.25292320e-01,  9.20580120e-01,  9.15679793e-01,
-     9.10590604e-01,  9.05315030e-01,  8.99852756e-01,  8.94199497e-01,
-     8.88350152e-01,  8.82301631e-01,  8.76054874e-01,  8.69612385e-01,
-     8.62972799e-01,  8.56135198e-01,  8.49098179e-01,  8.41857024e-01,
-     8.34414055e-01,  8.26774617e-01,  8.18939244e-01,  8.10904891e-01,
-     8.02675318e-01,  7.94253751e-01,  7.85641662e-01,  7.76838609e-01,
-     7.67853193e-01,  7.58685181e-01,  7.49330658e-01,  7.39809171e-01,
-     7.30109944e-01,  7.20247781e-01,  7.10224161e-01,  7.00044326e-01,
-     6.89711890e-01,  6.79231154e-01,  6.68608179e-01,  6.57850997e-01,
-     6.46965718e-01,  6.35959617e-01,  6.24840336e-01,  6.13603503e-01,
-     6.02265091e-01,  5.90829083e-01,  5.79309408e-01,  5.67711124e-01,
-     5.56037416e-01,  5.44293664e-01,  5.32489768e-01,  5.20636084e-01,
-     5.08743273e-01,  4.96811166e-01,  4.84849881e-01,  4.72868107e-01,
-     4.60875918e-01,  4.48881081e-01,  4.36891039e-01,  4.24912022e-01,
-     4.12960603e-01,  4.01035896e-01,  3.89157867e-01,  3.77322199e-01,
-     3.65543767e-01,  3.53832356e-01,  3.42196115e-01,  3.30644820e-01,
-     3.19187559e-01,  3.07833309e-01,  2.96588182e-01,  2.85463717e-01,
-     2.74462409e-01,  2.63609584e-01,  2.52883101e-01,  2.42323489e-01,
-     2.31925746e-01,  2.21690837e-01,  2.11638058e-01,  2.01766920e-01,
-     1.92082236e-01,  1.82589160e-01,  1.73305997e-01,  1.64229200e-01,
-     1.55362654e-01,  1.46717079e-01,  1.38299391e-01,  1.30105078e-01,
-     1.22145310e-01,  1.14423458e-01,  1.06941076e-01,  9.97025893e-02,
-     9.27124283e-02,  8.59737427e-02,  7.94893311e-02,  7.32616579e-02,
-     6.72934102e-02,  6.15874081e-02,  5.61458003e-02,  5.09700747e-02,
-     4.60617047e-02,  4.14220117e-02,  3.70514189e-02,  3.29494666e-02,
-     2.91153327e-02,  2.55476401e-02,  2.22437711e-02,  1.92000659e-02,
-     1.64122205e-02,  1.38747611e-02,  1.15806353e-02,  9.52213664e-03,
-     7.69137380e-03,  6.07207833e-03,  4.62581217e-03,  3.60685164e-03,
+static const lc3_intfloat_t mdct_win_7m5_240[240+184] = {
+    __C4(  1.84833037e-03,  2.56481839e-03,  3.36762118e-03,  4.28736617e-03 ),
+    __C4(  5.33830143e-03,  6.52679223e-03,  7.86112587e-03,  9.34628179e-03 ),
+    __C4(  1.09916868e-02,  1.28011172e-02,  1.47805911e-02,  1.69307043e-02 ),
+    __C4(  1.92592307e-02,  2.17696937e-02,  2.44685983e-02,  2.73556543e-02 ),
+    __C4(  3.04319230e-02,  3.36980464e-02,  3.71583577e-02,  4.08148180e-02 ),
+    __C4(  4.46708068e-02,  4.87262995e-02,  5.29820633e-02,  5.74382470e-02 ),
+    __C4(  6.20968580e-02,  6.69609767e-02,  7.20298364e-02,  7.73039146e-02 ),
+    __C4(  8.27825574e-02,  8.84682102e-02,  9.43607566e-02,  1.00460272e-01 ),
+    __C4(  1.06763824e-01,  1.13273679e-01,  1.19986420e-01,  1.26903521e-01 ),
+    __C4(  1.34020853e-01,  1.41339557e-01,  1.48857211e-01,  1.56573685e-01 ),
+    __C4(  1.64484622e-01,  1.72589077e-01,  1.80879090e-01,  1.89354320e-01 ),
+    __C4(  1.98012244e-01,  2.06854141e-01,  2.15875319e-01,  2.25068672e-01 ),
+    __C4(  2.34427407e-01,  2.43948314e-01,  2.53627993e-01,  2.63464061e-01 ),
+    __C4(  2.73450494e-01,  2.83582189e-01,  2.93853469e-01,  3.04257373e-01 ),
+    __C4(  3.14790914e-01,  3.25449123e-01,  3.36227410e-01,  3.47118760e-01 ),
+    __C4(  3.58120177e-01,  3.69224663e-01,  3.80427793e-01,  3.91720023e-01 ),
+    __C4(  4.03097022e-01,  4.14551955e-01,  4.26081719e-01,  4.37676318e-01 ),
+    __C4(  4.49330196e-01,  4.61034855e-01,  4.72786043e-01,  4.84576777e-01 ),
+    __C4(  4.96401707e-01,  5.08252458e-01,  5.20122078e-01,  5.32002077e-01 ),
+    __C4(  5.43888090e-01,  5.55771601e-01,  5.67645739e-01,  5.79502786e-01 ),
+    __C4(  5.91335035e-01,  6.03138367e-01,  6.14904172e-01,  6.26623941e-01 ),
+    __C4(  6.38288834e-01,  6.49893375e-01,  6.61432360e-01,  6.72902514e-01 ),
+    __C4(  6.84293750e-01,  6.95600460e-01,  7.06811784e-01,  7.17923425e-01 ),
+    __C4(  7.28931386e-01,  7.39832773e-01,  7.50618982e-01,  7.61284053e-01 ),
+    __C4(  7.71818919e-01,  7.82220992e-01,  7.92481330e-01,  8.02599448e-01 ),
+    __C4(  8.12565230e-01,  8.22377129e-01,  8.32030518e-01,  8.41523208e-01 ),
+    __C4(  8.50848313e-01,  8.60002412e-01,  8.68979881e-01,  8.77778347e-01 ),
+    __C4(  8.86395904e-01,  8.94829421e-01,  9.03077626e-01,  9.11132652e-01 ),
+    __C4(  9.18993585e-01,  9.26652937e-01,  9.34111420e-01,  9.41364344e-01 ),
+    __C4(  9.48412967e-01,  9.55255630e-01,  9.61892013e-01,  9.68316363e-01 ),
+    __C4(  9.74530156e-01,  9.80528338e-01,  9.86313928e-01,  9.91886049e-01 ),
+    __C4(  9.97246345e-01,  1.00239190e+00,  1.00731946e+00,  1.01202707e+00 ),
+    __C4(  1.01651654e+00,  1.02079430e+00,  1.02486082e+00,  1.02871471e+00 ),
+    __C4(  1.03235170e+00,  1.03577375e+00,  1.03898432e+00,  1.04198786e+00 ),
+    __C4(  1.04478564e+00,  1.04737818e+00,  1.04976743e+00,  1.05195405e+00 ),
+    __C4(  1.05394290e+00,  1.05573463e+00,  1.05734177e+00,  1.05875726e+00 ),
+    __C4(  1.05998674e+00,  1.06103672e+00,  1.06190651e+00,  1.06260369e+00 ),
+    __C4(  1.06313289e+00,  1.06350237e+00,  1.06370981e+00,  1.06376322e+00 ),
+    __C4(  1.06366765e+00,  1.06343012e+00,  1.06305656e+00,  1.06255421e+00 ),
+    __C4(  1.06192235e+00,  1.06116702e+00,  1.06029469e+00,  1.05931469e+00 ),
+    __C4(  1.05823465e+00,  1.05705891e+00,  1.05578948e+00,  1.05442979e+00 ),
+    __C4(  1.05298793e+00,  1.05147505e+00,  1.04989930e+00,  1.04826213e+00 ),
+    __C4(  1.04656691e+00,  1.04481699e+00,  1.04302125e+00,  1.04118768e+00 ),
+    __C4(  1.03932339e+00,  1.03743168e+00,  1.03551757e+00,  1.03358511e+00 ),
+    __C4(  1.03164371e+00,  1.02969955e+00,  1.02775944e+00,  1.02582719e+00 ),
+    __C4(  1.02390791e+00,  1.02200805e+00,  1.02013910e+00,  1.01826310e+00 ),
+    __C4(  1.01687901e+00,  1.01492195e+00,  1.01309662e+00,  1.01134205e+00 ),
+    __C4(  1.00965912e+00,  1.00805036e+00,  1.00651754e+00,  1.00505799e+00 ),
+    __C4(  1.00366956e+00,  1.00235327e+00,  1.00110981e+00,  9.99937523e-01 ),
+    __C4(  9.98834524e-01,  9.97800606e-01,  9.96835756e-01,  9.95938881e-01 ),
+    __C4(  9.95108459e-01,  9.94343411e-01,  9.93642921e-01,  9.93005832e-01 ),
+    __C4(  9.92430984e-01,  9.91917493e-01,  9.91463898e-01,  9.91068214e-01 ),
+    __C4(  9.90729218e-01,  9.90446225e-01,  9.90217819e-01,  9.90041963e-01 ),
+    __C4(  9.89917085e-01,  9.89841975e-01,  9.89815048e-01,  9.89834329e-01 ),
+    __C4(  9.89898211e-01,  9.90005403e-01,  9.90154189e-01,  9.90342427e-01 ),
+    __C4(  9.90568459e-01,  9.90830953e-01,  9.91128038e-01,  9.91457566e-01 ),
+    __C4(  9.91817881e-01,  9.92207559e-01,  9.92624757e-01,  9.93067358e-01 ),
+    __C4(  9.93533398e-01,  9.94021410e-01,  9.94529685e-01,  9.95055964e-01 ),
+    __C4(  9.95598351e-01,  9.96155580e-01,  9.96725627e-01,  9.97306092e-01 ),
+    __C4(  9.97895214e-01,  9.98491441e-01,  9.99092890e-01,  9.99697063e-01 ),
+    __C4(  1.00030303e+00,  1.00090793e+00,  1.00151084e+00,  1.00210923e+00 ),
+    __C4(  1.00270118e+00,  1.00328513e+00,  1.00385926e+00,  1.00442111e+00 ),
+    __C4(  1.00496860e+00,  1.00550040e+00,  1.00601455e+00,  1.00650869e+00 ),
+    __C4(  1.00698104e+00,  1.00743004e+00,  1.00785364e+00,  1.00824962e+00 ),
+    __C4(  1.00861604e+00,  1.00895138e+00,  1.00925390e+00,  1.00952134e+00 ),
+    __C4(  1.00975175e+00,  1.00994371e+00,  1.01009550e+00,  1.01020488e+00 ),
+    __C4(  1.01027007e+00,  1.01028975e+00,  1.01026227e+00,  1.01018562e+00 ),
+    __C4(  1.01005820e+00,  1.00987882e+00,  1.00964593e+00,  1.00935753e+00 ),
+    __C4(  1.00901228e+00,  1.00860959e+00,  1.00814837e+00,  1.00762674e+00 ),
+    __C4(  1.00704343e+00,  1.00639775e+00,  1.00568877e+00,  1.00491559e+00 ),
+    __C4(  1.00407768e+00,  1.00317429e+00,  1.00220424e+00,  1.00116684e+00 ),
+    __C4(  1.00006248e+00,  9.98891422e-01,  9.97652252e-01,  9.96343856e-01 ),
+    __C4(  9.94967462e-01,  9.93524663e-01,  9.92013927e-01,  9.90433283e-01 ),
+    __C4(  9.88785147e-01,  9.87072681e-01,  9.85297443e-01,  9.83401161e-01 ),
+    __C4(  9.80949418e-01,  9.78782729e-01,  9.76468238e-01,  9.74042850e-01 ),
+    __C4(  9.71498848e-01,  9.68829968e-01,  9.66030974e-01,  9.63095104e-01 ),
+    __C4(  9.60018198e-01,  9.56795738e-01,  9.53426267e-01,  9.49903482e-01 ),
+    __C4(  9.46222115e-01,  9.42375820e-01,  9.38361702e-01,  9.34177798e-01 ),
+    __C4(  9.29823124e-01,  9.25292320e-01,  9.20580120e-01,  9.15679793e-01 ),
+    __C4(  9.10590604e-01,  9.05315030e-01,  8.99852756e-01,  8.94199497e-01 ),
+    __C4(  8.88350152e-01,  8.82301631e-01,  8.76054874e-01,  8.69612385e-01 ),
+    __C4(  8.62972799e-01,  8.56135198e-01,  8.49098179e-01,  8.41857024e-01 ),
+    __C4(  8.34414055e-01,  8.26774617e-01,  8.18939244e-01,  8.10904891e-01 ),
+    __C4(  8.02675318e-01,  7.94253751e-01,  7.85641662e-01,  7.76838609e-01 ),
+    __C4(  7.67853193e-01,  7.58685181e-01,  7.49330658e-01,  7.39809171e-01 ),
+    __C4(  7.30109944e-01,  7.20247781e-01,  7.10224161e-01,  7.00044326e-01 ),
+    __C4(  6.89711890e-01,  6.79231154e-01,  6.68608179e-01,  6.57850997e-01 ),
+    __C4(  6.46965718e-01,  6.35959617e-01,  6.24840336e-01,  6.13603503e-01 ),
+    __C4(  6.02265091e-01,  5.90829083e-01,  5.79309408e-01,  5.67711124e-01 ),
+    __C4(  5.56037416e-01,  5.44293664e-01,  5.32489768e-01,  5.20636084e-01 ),
+    __C4(  5.08743273e-01,  4.96811166e-01,  4.84849881e-01,  4.72868107e-01 ),
+    __C4(  4.60875918e-01,  4.48881081e-01,  4.36891039e-01,  4.24912022e-01 ),
+    __C4(  4.12960603e-01,  4.01035896e-01,  3.89157867e-01,  3.77322199e-01 ),
+    __C4(  3.65543767e-01,  3.53832356e-01,  3.42196115e-01,  3.30644820e-01 ),
+    __C4(  3.19187559e-01,  3.07833309e-01,  2.96588182e-01,  2.85463717e-01 ),
+    __C4(  2.74462409e-01,  2.63609584e-01,  2.52883101e-01,  2.42323489e-01 ),
+    __C4(  2.31925746e-01,  2.21690837e-01,  2.11638058e-01,  2.01766920e-01 ),
+    __C4(  1.92082236e-01,  1.82589160e-01,  1.73305997e-01,  1.64229200e-01 ),
+    __C4(  1.55362654e-01,  1.46717079e-01,  1.38299391e-01,  1.30105078e-01 ),
+    __C4(  1.22145310e-01,  1.14423458e-01,  1.06941076e-01,  9.97025893e-02 ),
+    __C4(  9.27124283e-02,  8.59737427e-02,  7.94893311e-02,  7.32616579e-02 ),
+    __C4(  6.72934102e-02,  6.15874081e-02,  5.61458003e-02,  5.09700747e-02 ),
+    __C4(  4.60617047e-02,  4.14220117e-02,  3.70514189e-02,  3.29494666e-02 ),
+    __C4(  2.91153327e-02,  2.55476401e-02,  2.22437711e-02,  1.92000659e-02 ),
+    __C4(  1.64122205e-02,  1.38747611e-02,  1.15806353e-02,  9.52213664e-03 ),
+    __C4(  7.69137380e-03,  6.07207833e-03,  4.62581217e-03,  3.60685164e-03 )
 };
 
-static const float mdct_win_7m5_360[360+276] = {
-     1.72152668e-03,  2.20824874e-03,  2.68901752e-03,  3.22613342e-03,
-     3.81014420e-03,  4.45371932e-03,  5.15369240e-03,  5.91552473e-03,
-     6.73869158e-03,  7.62861841e-03,  8.58361457e-03,  9.60938437e-03,
-     1.07060753e-02,  1.18759723e-02,  1.31190130e-02,  1.44390108e-02,
-     1.58335301e-02,  1.73063081e-02,  1.88584711e-02,  2.04918652e-02,
-     2.22061476e-02,  2.40057166e-02,  2.58883593e-02,  2.78552326e-02,
-     2.99059145e-02,  3.20415894e-02,  3.42610013e-02,  3.65680973e-02,
-     3.89616721e-02,  4.14435824e-02,  4.40140796e-02,  4.66742169e-02,
-     4.94214625e-02,  5.22588489e-02,  5.51849337e-02,  5.82005143e-02,
-     6.13059845e-02,  6.45038384e-02,  6.77913923e-02,  7.11707833e-02,
-     7.46411071e-02,  7.82028053e-02,  8.18549521e-02,  8.56000162e-02,
-     8.94357617e-02,  9.33642589e-02,  9.73846703e-02,  1.01496718e-01,
-     1.05698760e-01,  1.09993603e-01,  1.14378287e-01,  1.18853508e-01,
-     1.23419277e-01,  1.28075997e-01,  1.32820581e-01,  1.37655457e-01,
-     1.42578648e-01,  1.47590522e-01,  1.52690437e-01,  1.57878853e-01,
-     1.63152529e-01,  1.68513363e-01,  1.73957969e-01,  1.79484737e-01,
-     1.85093105e-01,  1.90784835e-01,  1.96556497e-01,  2.02410419e-01,
-     2.08345433e-01,  2.14359825e-01,  2.20450365e-01,  2.26617296e-01,
-     2.32856279e-01,  2.39167941e-01,  2.45550642e-01,  2.52003951e-01,
-     2.58526168e-01,  2.65118408e-01,  2.71775911e-01,  2.78498539e-01,
-     2.85284606e-01,  2.92132459e-01,  2.99038432e-01,  3.06004256e-01,
-     3.13026529e-01,  3.20104862e-01,  3.27237324e-01,  3.34423210e-01,
-     3.41658622e-01,  3.48944976e-01,  3.56279252e-01,  3.63660034e-01,
-     3.71085146e-01,  3.78554327e-01,  3.86062695e-01,  3.93610554e-01,
-     4.01195225e-01,  4.08815272e-01,  4.16468460e-01,  4.24155411e-01,
-     4.31871046e-01,  4.39614744e-01,  4.47384019e-01,  4.55176988e-01,
-     4.62990138e-01,  4.70824619e-01,  4.78676593e-01,  4.86545433e-01,
-     4.94428714e-01,  5.02324813e-01,  5.10229471e-01,  5.18142927e-01,
-     5.26060916e-01,  5.33982818e-01,  5.41906817e-01,  5.49831283e-01,
-     5.57751234e-01,  5.65667636e-01,  5.73576883e-01,  5.81476666e-01,
-     5.89364661e-01,  5.97241338e-01,  6.05102013e-01,  6.12946170e-01,
-     6.20770242e-01,  6.28572094e-01,  6.36348526e-01,  6.44099662e-01,
-     6.51820973e-01,  6.59513822e-01,  6.67176382e-01,  6.74806795e-01,
-     6.82400711e-01,  6.89958854e-01,  6.97475722e-01,  7.04950145e-01,
-     7.12379980e-01,  7.19765434e-01,  7.27103833e-01,  7.34396372e-01,
-     7.41638561e-01,  7.48829639e-01,  7.55966688e-01,  7.63049259e-01,
-     7.70072273e-01,  7.77036981e-01,  7.83941108e-01,  7.90781257e-01,
-     7.97558114e-01,  8.04271381e-01,  8.10914901e-01,  8.17490856e-01,
-     8.23997094e-01,  8.30432785e-01,  8.36796950e-01,  8.43089298e-01,
-     8.49305847e-01,  8.55447310e-01,  8.61511037e-01,  8.67496281e-01,
-     8.73400798e-01,  8.79227518e-01,  8.84972438e-01,  8.90635719e-01,
-     8.96217173e-01,  9.01716414e-01,  9.07128770e-01,  9.12456578e-01,
-     9.17697261e-01,  9.22848784e-01,  9.27909917e-01,  9.32882596e-01,
-     9.37763323e-01,  9.42553356e-01,  9.47252428e-01,  9.51860206e-01,
-     9.56376060e-01,  9.60800602e-01,  9.65130600e-01,  9.69366689e-01,
-     9.73508812e-01,  9.77556541e-01,  9.81507226e-01,  9.85364580e-01,
-     9.89126209e-01,  9.92794201e-01,  9.96367545e-01,  9.99846919e-01,
-     1.00322812e+00,  1.00651341e+00,  1.00970073e+00,  1.01279029e+00,
-     1.01578293e+00,  1.01868229e+00,  1.02148657e+00,  1.02419772e+00,
-     1.02681455e+00,  1.02933598e+00,  1.03176043e+00,  1.03408981e+00,
-     1.03632326e+00,  1.03846361e+00,  1.04051196e+00,  1.04246831e+00,
-     1.04433331e+00,  1.04610837e+00,  1.04779018e+00,  1.04938334e+00,
-     1.05088565e+00,  1.05229923e+00,  1.05362522e+00,  1.05486289e+00,
-     1.05601521e+00,  1.05708746e+00,  1.05807221e+00,  1.05897524e+00,
-     1.05979447e+00,  1.06053414e+00,  1.06119412e+00,  1.06177366e+00,
-     1.06227662e+00,  1.06270324e+00,  1.06305569e+00,  1.06333815e+00,
-     1.06354800e+00,  1.06368607e+00,  1.06375557e+00,  1.06375743e+00,
-     1.06369358e+00,  1.06356632e+00,  1.06337707e+00,  1.06312782e+00,
-     1.06282156e+00,  1.06245782e+00,  1.06203634e+00,  1.06155996e+00,
-     1.06102951e+00,  1.06044797e+00,  1.05981709e+00,  1.05914163e+00,
-     1.05842136e+00,  1.05765876e+00,  1.05685377e+00,  1.05600761e+00,
-     1.05512006e+00,  1.05419505e+00,  1.05323346e+00,  1.05223985e+00,
-     1.05121668e+00,  1.05016637e+00,  1.04908779e+00,  1.04798366e+00,
-     1.04685334e+00,  1.04569860e+00,  1.04452056e+00,  1.04332348e+00,
-     1.04210831e+00,  1.04087907e+00,  1.03963603e+00,  1.03838099e+00,
-     1.03711403e+00,  1.03583813e+00,  1.03455276e+00,  1.03326200e+00,
-     1.03196750e+00,  1.03067200e+00,  1.02937564e+00,  1.02808244e+00,
-     1.02679167e+00,  1.02550635e+00,  1.02422655e+00,  1.02295558e+00,
-     1.02169299e+00,  1.02044475e+00,  1.01920733e+00,  1.01799992e+00,
-     1.01716022e+00,  1.01587289e+00,  1.01461783e+00,  1.01339738e+00,
-     1.01221017e+00,  1.01105652e+00,  1.00993444e+00,  1.00884559e+00,
-     1.00778956e+00,  1.00676790e+00,  1.00577851e+00,  1.00482173e+00,
-     1.00389592e+00,  1.00300262e+00,  1.00214091e+00,  1.00131213e+00,
-     1.00051460e+00,  9.99748988e-01,  9.99013486e-01,  9.98309229e-01,
-     9.97634934e-01,  9.96991885e-01,  9.96378601e-01,  9.95795982e-01,
-     9.95242217e-01,  9.94718132e-01,  9.94222122e-01,  9.93755313e-01,
-     9.93316216e-01,  9.92905809e-01,  9.92522422e-01,  9.92166957e-01,
-     9.91837704e-01,  9.91535508e-01,  9.91258603e-01,  9.91007878e-01,
-     9.90781723e-01,  9.90581104e-01,  9.90404336e-01,  9.90252267e-01,
-     9.90123118e-01,  9.90017726e-01,  9.89934325e-01,  9.89873712e-01,
-     9.89834110e-01,  9.89816359e-01,  9.89818707e-01,  9.89841998e-01,
-     9.89884438e-01,  9.89946800e-01,  9.90027287e-01,  9.90126680e-01,
-     9.90243175e-01,  9.90377594e-01,  9.90528134e-01,  9.90695564e-01,
-     9.90878043e-01,  9.91076302e-01,  9.91288540e-01,  9.91515602e-01,
-     9.91755666e-01,  9.92009469e-01,  9.92275155e-01,  9.92553486e-01,
-     9.92842693e-01,  9.93143533e-01,  9.93454080e-01,  9.93775067e-01,
-     9.94104689e-01,  9.94443742e-01,  9.94790398e-01,  9.95145361e-01,
-     9.95506800e-01,  9.95875534e-01,  9.96249681e-01,  9.96629919e-01,
-     9.97014367e-01,  9.97403799e-01,  9.97796404e-01,  9.98192871e-01,
-     9.98591286e-01,  9.98992436e-01,  9.99394506e-01,  9.99798247e-01,
-     1.00020179e+00,  1.00060586e+00,  1.00100858e+00,  1.00141070e+00,
-     1.00181040e+00,  1.00220846e+00,  1.00260296e+00,  1.00299457e+00,
-     1.00338148e+00,  1.00376444e+00,  1.00414155e+00,  1.00451348e+00,
-     1.00487832e+00,  1.00523688e+00,  1.00558730e+00,  1.00593027e+00,
-     1.00626393e+00,  1.00658905e+00,  1.00690380e+00,  1.00720890e+00,
-     1.00750238e+00,  1.00778498e+00,  1.00805489e+00,  1.00831287e+00,
-     1.00855700e+00,  1.00878802e+00,  1.00900405e+00,  1.00920593e+00,
-     1.00939182e+00,  1.00956244e+00,  1.00971590e+00,  1.00985296e+00,
-     1.00997177e+00,  1.01007317e+00,  1.01015529e+00,  1.01021893e+00,
-     1.01026225e+00,  1.01028602e+00,  1.01028842e+00,  1.01027030e+00,
-     1.01022988e+00,  1.01016802e+00,  1.01008292e+00,  1.00997541e+00,
-     1.00984369e+00,  1.00968863e+00,  1.00950846e+00,  1.00930404e+00,
-     1.00907371e+00,  1.00881848e+00,  1.00853675e+00,  1.00822947e+00,
-     1.00789488e+00,  1.00753391e+00,  1.00714488e+00,  1.00672876e+00,
-     1.00628393e+00,  1.00581146e+00,  1.00530991e+00,  1.00478053e+00,
-     1.00422177e+00,  1.00363456e+00,  1.00301719e+00,  1.00237067e+00,
-     1.00169363e+00,  1.00098749e+00,  1.00025108e+00,  9.99485663e-01,
-     9.98689592e-01,  9.97863666e-01,  9.97006370e-01,  9.96119199e-01,
-     9.95201404e-01,  9.94254687e-01,  9.93277595e-01,  9.92270651e-01,
-     9.91231967e-01,  9.90163286e-01,  9.89064394e-01,  9.87937115e-01,
-     9.86779736e-01,  9.85592773e-01,  9.84375125e-01,  9.83129288e-01,
-     9.81348463e-01,  9.79890963e-01,  9.78400459e-01,  9.76860435e-01,
-     9.75269879e-01,  9.73627353e-01,  9.71931341e-01,  9.70180498e-01,
-     9.68372652e-01,  9.66506952e-01,  9.64580027e-01,  9.62592318e-01,
-     9.60540986e-01,  9.58425534e-01,  9.56244393e-01,  9.53998416e-01,
-     9.51684014e-01,  9.49301185e-01,  9.46846884e-01,  9.44320232e-01,
-     9.41718404e-01,  9.39042580e-01,  9.36290624e-01,  9.33464050e-01,
-     9.30560854e-01,  9.27580507e-01,  9.24519592e-01,  9.21378471e-01,
-     9.18153414e-01,  9.14844696e-01,  9.11451652e-01,  9.07976524e-01,
-     9.04417545e-01,  9.00776308e-01,  8.97050058e-01,  8.93238398e-01,
-     8.89338681e-01,  8.85351360e-01,  8.81274023e-01,  8.77109638e-01,
-     8.72857927e-01,  8.68519505e-01,  8.64092796e-01,  8.59579819e-01,
-     8.54976007e-01,  8.50285220e-01,  8.45502615e-01,  8.40630470e-01,
-     8.35667925e-01,  8.30619943e-01,  8.25482007e-01,  8.20258909e-01,
-     8.14946648e-01,  8.09546696e-01,  8.04059978e-01,  7.98489378e-01,
-     7.92831417e-01,  7.87090668e-01,  7.81262450e-01,  7.75353947e-01,
-     7.69363613e-01,  7.63291769e-01,  7.57139016e-01,  7.50901711e-01,
-     7.44590843e-01,  7.38205136e-01,  7.31738075e-01,  7.25199287e-01,
-     7.18588225e-01,  7.11905687e-01,  7.05153668e-01,  6.98332634e-01,
-     6.91444101e-01,  6.84490545e-01,  6.77470119e-01,  6.70388375e-01,
-     6.63245210e-01,  6.56045780e-01,  6.48788627e-01,  6.41477162e-01,
-     6.34114323e-01,  6.26702000e-01,  6.19235334e-01,  6.11720596e-01,
-     6.04161612e-01,  5.96559133e-01,  5.88914401e-01,  5.81234783e-01,
-     5.73519989e-01,  5.65770616e-01,  5.57988067e-01,  5.50173851e-01,
-     5.42330194e-01,  5.34460798e-01,  5.26568538e-01,  5.18656324e-01,
-     5.10728813e-01,  5.02781159e-01,  4.94819491e-01,  4.86845139e-01,
-     4.78860889e-01,  4.70869928e-01,  4.62875144e-01,  4.54877894e-01,
-     4.46882512e-01,  4.38889325e-01,  4.30898123e-01,  4.22918322e-01,
-     4.14950878e-01,  4.06993964e-01,  3.99052648e-01,  3.91134614e-01,
-     3.83234031e-01,  3.75354653e-01,  3.67502060e-01,  3.59680098e-01,
-     3.51887312e-01,  3.44130166e-01,  3.36408100e-01,  3.28728966e-01,
-     3.21090505e-01,  3.13496418e-01,  3.05951565e-01,  2.98454319e-01,
-     2.91010565e-01,  2.83621109e-01,  2.76285415e-01,  2.69019585e-01,
-     2.61812445e-01,  2.54659232e-01,  2.47584348e-01,  2.40578694e-01,
-     2.33647009e-01,  2.26788433e-01,  2.20001992e-01,  2.13301325e-01,
-     2.06677771e-01,  2.00140409e-01,  1.93683630e-01,  1.87310343e-01,
-     1.81027384e-01,  1.74839476e-01,  1.68739644e-01,  1.62737273e-01,
-     1.56825277e-01,  1.51012382e-01,  1.45298230e-01,  1.39687469e-01,
-     1.34171842e-01,  1.28762544e-01,  1.23455562e-01,  1.18254662e-01,
-     1.13159677e-01,  1.08171439e-01,  1.03290734e-01,  9.85202978e-02,
-     9.38600023e-02,  8.93117360e-02,  8.48752103e-02,  8.05523737e-02,
-     7.63429787e-02,  7.22489246e-02,  6.82699120e-02,  6.44077291e-02,
-     6.06620003e-02,  5.70343711e-02,  5.35243715e-02,  5.01334690e-02,
-     4.68610790e-02,  4.37084453e-02,  4.06748365e-02,  3.77612269e-02,
-     3.49667099e-02,  3.22919275e-02,  2.97357669e-02,  2.72984629e-02,
-     2.49787186e-02,  2.27762542e-02,  2.06895808e-02,  1.87178169e-02,
-     1.68593418e-02,  1.51125125e-02,  1.34757094e-02,  1.19462709e-02,
-     1.05228754e-02,  9.20130941e-03,  7.98124316e-03,  6.85547314e-03,
-     5.82657334e-03,  4.87838525e-03,  4.02351119e-03,  3.15418663e-03,
+static const lc3_intfloat_t mdct_win_7m5_360[360+276] = {
+    __C4(  1.72152668e-03,  2.20824874e-03,  2.68901752e-03,  3.22613342e-03 ),
+    __C4(  3.81014420e-03,  4.45371932e-03,  5.15369240e-03,  5.91552473e-03 ),
+    __C4(  6.73869158e-03,  7.62861841e-03,  8.58361457e-03,  9.60938437e-03 ),
+    __C4(  1.07060753e-02,  1.18759723e-02,  1.31190130e-02,  1.44390108e-02 ),
+    __C4(  1.58335301e-02,  1.73063081e-02,  1.88584711e-02,  2.04918652e-02 ),
+    __C4(  2.22061476e-02,  2.40057166e-02,  2.58883593e-02,  2.78552326e-02 ),
+    __C4(  2.99059145e-02,  3.20415894e-02,  3.42610013e-02,  3.65680973e-02 ),
+    __C4(  3.89616721e-02,  4.14435824e-02,  4.40140796e-02,  4.66742169e-02 ),
+    __C4(  4.94214625e-02,  5.22588489e-02,  5.51849337e-02,  5.82005143e-02 ),
+    __C4(  6.13059845e-02,  6.45038384e-02,  6.77913923e-02,  7.11707833e-02 ),
+    __C4(  7.46411071e-02,  7.82028053e-02,  8.18549521e-02,  8.56000162e-02 ),
+    __C4(  8.94357617e-02,  9.33642589e-02,  9.73846703e-02,  1.01496718e-01 ),
+    __C4(  1.05698760e-01,  1.09993603e-01,  1.14378287e-01,  1.18853508e-01 ),
+    __C4(  1.23419277e-01,  1.28075997e-01,  1.32820581e-01,  1.37655457e-01 ),
+    __C4(  1.42578648e-01,  1.47590522e-01,  1.52690437e-01,  1.57878853e-01 ),
+    __C4(  1.63152529e-01,  1.68513363e-01,  1.73957969e-01,  1.79484737e-01 ),
+    __C4(  1.85093105e-01,  1.90784835e-01,  1.96556497e-01,  2.02410419e-01 ),
+    __C4(  2.08345433e-01,  2.14359825e-01,  2.20450365e-01,  2.26617296e-01 ),
+    __C4(  2.32856279e-01,  2.39167941e-01,  2.45550642e-01,  2.52003951e-01 ),
+    __C4(  2.58526168e-01,  2.65118408e-01,  2.71775911e-01,  2.78498539e-01 ),
+    __C4(  2.85284606e-01,  2.92132459e-01,  2.99038432e-01,  3.06004256e-01 ),
+    __C4(  3.13026529e-01,  3.20104862e-01,  3.27237324e-01,  3.34423210e-01 ),
+    __C4(  3.41658622e-01,  3.48944976e-01,  3.56279252e-01,  3.63660034e-01 ),
+    __C4(  3.71085146e-01,  3.78554327e-01,  3.86062695e-01,  3.93610554e-01 ),
+    __C4(  4.01195225e-01,  4.08815272e-01,  4.16468460e-01,  4.24155411e-01 ),
+    __C4(  4.31871046e-01,  4.39614744e-01,  4.47384019e-01,  4.55176988e-01 ),
+    __C4(  4.62990138e-01,  4.70824619e-01,  4.78676593e-01,  4.86545433e-01 ),
+    __C4(  4.94428714e-01,  5.02324813e-01,  5.10229471e-01,  5.18142927e-01 ),
+    __C4(  5.26060916e-01,  5.33982818e-01,  5.41906817e-01,  5.49831283e-01 ),
+    __C4(  5.57751234e-01,  5.65667636e-01,  5.73576883e-01,  5.81476666e-01 ),
+    __C4(  5.89364661e-01,  5.97241338e-01,  6.05102013e-01,  6.12946170e-01 ),
+    __C4(  6.20770242e-01,  6.28572094e-01,  6.36348526e-01,  6.44099662e-01 ),
+    __C4(  6.51820973e-01,  6.59513822e-01,  6.67176382e-01,  6.74806795e-01 ),
+    __C4(  6.82400711e-01,  6.89958854e-01,  6.97475722e-01,  7.04950145e-01 ),
+    __C4(  7.12379980e-01,  7.19765434e-01,  7.27103833e-01,  7.34396372e-01 ),
+    __C4(  7.41638561e-01,  7.48829639e-01,  7.55966688e-01,  7.63049259e-01 ),
+    __C4(  7.70072273e-01,  7.77036981e-01,  7.83941108e-01,  7.90781257e-01 ),
+    __C4(  7.97558114e-01,  8.04271381e-01,  8.10914901e-01,  8.17490856e-01 ),
+    __C4(  8.23997094e-01,  8.30432785e-01,  8.36796950e-01,  8.43089298e-01 ),
+    __C4(  8.49305847e-01,  8.55447310e-01,  8.61511037e-01,  8.67496281e-01 ),
+    __C4(  8.73400798e-01,  8.79227518e-01,  8.84972438e-01,  8.90635719e-01 ),
+    __C4(  8.96217173e-01,  9.01716414e-01,  9.07128770e-01,  9.12456578e-01 ),
+    __C4(  9.17697261e-01,  9.22848784e-01,  9.27909917e-01,  9.32882596e-01 ),
+    __C4(  9.37763323e-01,  9.42553356e-01,  9.47252428e-01,  9.51860206e-01 ),
+    __C4(  9.56376060e-01,  9.60800602e-01,  9.65130600e-01,  9.69366689e-01 ),
+    __C4(  9.73508812e-01,  9.77556541e-01,  9.81507226e-01,  9.85364580e-01 ),
+    __C4(  9.89126209e-01,  9.92794201e-01,  9.96367545e-01,  9.99846919e-01 ),
+    __C4(  1.00322812e+00,  1.00651341e+00,  1.00970073e+00,  1.01279029e+00 ),
+    __C4(  1.01578293e+00,  1.01868229e+00,  1.02148657e+00,  1.02419772e+00 ),
+    __C4(  1.02681455e+00,  1.02933598e+00,  1.03176043e+00,  1.03408981e+00 ),
+    __C4(  1.03632326e+00,  1.03846361e+00,  1.04051196e+00,  1.04246831e+00 ),
+    __C4(  1.04433331e+00,  1.04610837e+00,  1.04779018e+00,  1.04938334e+00 ),
+    __C4(  1.05088565e+00,  1.05229923e+00,  1.05362522e+00,  1.05486289e+00 ),
+    __C4(  1.05601521e+00,  1.05708746e+00,  1.05807221e+00,  1.05897524e+00 ),
+    __C4(  1.05979447e+00,  1.06053414e+00,  1.06119412e+00,  1.06177366e+00 ),
+    __C4(  1.06227662e+00,  1.06270324e+00,  1.06305569e+00,  1.06333815e+00 ),
+    __C4(  1.06354800e+00,  1.06368607e+00,  1.06375557e+00,  1.06375743e+00 ),
+    __C4(  1.06369358e+00,  1.06356632e+00,  1.06337707e+00,  1.06312782e+00 ),
+    __C4(  1.06282156e+00,  1.06245782e+00,  1.06203634e+00,  1.06155996e+00 ),
+    __C4(  1.06102951e+00,  1.06044797e+00,  1.05981709e+00,  1.05914163e+00 ),
+    __C4(  1.05842136e+00,  1.05765876e+00,  1.05685377e+00,  1.05600761e+00 ),
+    __C4(  1.05512006e+00,  1.05419505e+00,  1.05323346e+00,  1.05223985e+00 ),
+    __C4(  1.05121668e+00,  1.05016637e+00,  1.04908779e+00,  1.04798366e+00 ),
+    __C4(  1.04685334e+00,  1.04569860e+00,  1.04452056e+00,  1.04332348e+00 ),
+    __C4(  1.04210831e+00,  1.04087907e+00,  1.03963603e+00,  1.03838099e+00 ),
+    __C4(  1.03711403e+00,  1.03583813e+00,  1.03455276e+00,  1.03326200e+00 ),
+    __C4(  1.03196750e+00,  1.03067200e+00,  1.02937564e+00,  1.02808244e+00 ),
+    __C4(  1.02679167e+00,  1.02550635e+00,  1.02422655e+00,  1.02295558e+00 ),
+    __C4(  1.02169299e+00,  1.02044475e+00,  1.01920733e+00,  1.01799992e+00 ),
+    __C4(  1.01716022e+00,  1.01587289e+00,  1.01461783e+00,  1.01339738e+00 ),
+    __C4(  1.01221017e+00,  1.01105652e+00,  1.00993444e+00,  1.00884559e+00 ),
+    __C4(  1.00778956e+00,  1.00676790e+00,  1.00577851e+00,  1.00482173e+00 ),
+    __C4(  1.00389592e+00,  1.00300262e+00,  1.00214091e+00,  1.00131213e+00 ),
+    __C4(  1.00051460e+00,  9.99748988e-01,  9.99013486e-01,  9.98309229e-01 ),
+    __C4(  9.97634934e-01,  9.96991885e-01,  9.96378601e-01,  9.95795982e-01 ),
+    __C4(  9.95242217e-01,  9.94718132e-01,  9.94222122e-01,  9.93755313e-01 ),
+    __C4(  9.93316216e-01,  9.92905809e-01,  9.92522422e-01,  9.92166957e-01 ),
+    __C4(  9.91837704e-01,  9.91535508e-01,  9.91258603e-01,  9.91007878e-01 ),
+    __C4(  9.90781723e-01,  9.90581104e-01,  9.90404336e-01,  9.90252267e-01 ),
+    __C4(  9.90123118e-01,  9.90017726e-01,  9.89934325e-01,  9.89873712e-01 ),
+    __C4(  9.89834110e-01,  9.89816359e-01,  9.89818707e-01,  9.89841998e-01 ),
+    __C4(  9.89884438e-01,  9.89946800e-01,  9.90027287e-01,  9.90126680e-01 ),
+    __C4(  9.90243175e-01,  9.90377594e-01,  9.90528134e-01,  9.90695564e-01 ),
+    __C4(  9.90878043e-01,  9.91076302e-01,  9.91288540e-01,  9.91515602e-01 ),
+    __C4(  9.91755666e-01,  9.92009469e-01,  9.92275155e-01,  9.92553486e-01 ),
+    __C4(  9.92842693e-01,  9.93143533e-01,  9.93454080e-01,  9.93775067e-01 ),
+    __C4(  9.94104689e-01,  9.94443742e-01,  9.94790398e-01,  9.95145361e-01 ),
+    __C4(  9.95506800e-01,  9.95875534e-01,  9.96249681e-01,  9.96629919e-01 ),
+    __C4(  9.97014367e-01,  9.97403799e-01,  9.97796404e-01,  9.98192871e-01 ),
+    __C4(  9.98591286e-01,  9.98992436e-01,  9.99394506e-01,  9.99798247e-01 ),
+    __C4(  1.00020179e+00,  1.00060586e+00,  1.00100858e+00,  1.00141070e+00 ),
+    __C4(  1.00181040e+00,  1.00220846e+00,  1.00260296e+00,  1.00299457e+00 ),
+    __C4(  1.00338148e+00,  1.00376444e+00,  1.00414155e+00,  1.00451348e+00 ),
+    __C4(  1.00487832e+00,  1.00523688e+00,  1.00558730e+00,  1.00593027e+00 ),
+    __C4(  1.00626393e+00,  1.00658905e+00,  1.00690380e+00,  1.00720890e+00 ),
+    __C4(  1.00750238e+00,  1.00778498e+00,  1.00805489e+00,  1.00831287e+00 ),
+    __C4(  1.00855700e+00,  1.00878802e+00,  1.00900405e+00,  1.00920593e+00 ),
+    __C4(  1.00939182e+00,  1.00956244e+00,  1.00971590e+00,  1.00985296e+00 ),
+    __C4(  1.00997177e+00,  1.01007317e+00,  1.01015529e+00,  1.01021893e+00 ),
+    __C4(  1.01026225e+00,  1.01028602e+00,  1.01028842e+00,  1.01027030e+00 ),
+    __C4(  1.01022988e+00,  1.01016802e+00,  1.01008292e+00,  1.00997541e+00 ),
+    __C4(  1.00984369e+00,  1.00968863e+00,  1.00950846e+00,  1.00930404e+00 ),
+    __C4(  1.00907371e+00,  1.00881848e+00,  1.00853675e+00,  1.00822947e+00 ),
+    __C4(  1.00789488e+00,  1.00753391e+00,  1.00714488e+00,  1.00672876e+00 ),
+    __C4(  1.00628393e+00,  1.00581146e+00,  1.00530991e+00,  1.00478053e+00 ),
+    __C4(  1.00422177e+00,  1.00363456e+00,  1.00301719e+00,  1.00237067e+00 ),
+    __C4(  1.00169363e+00,  1.00098749e+00,  1.00025108e+00,  9.99485663e-01 ),
+    __C4(  9.98689592e-01,  9.97863666e-01,  9.97006370e-01,  9.96119199e-01 ),
+    __C4(  9.95201404e-01,  9.94254687e-01,  9.93277595e-01,  9.92270651e-01 ),
+    __C4(  9.91231967e-01,  9.90163286e-01,  9.89064394e-01,  9.87937115e-01 ),
+    __C4(  9.86779736e-01,  9.85592773e-01,  9.84375125e-01,  9.83129288e-01 ),
+    __C4(  9.81348463e-01,  9.79890963e-01,  9.78400459e-01,  9.76860435e-01 ),
+    __C4(  9.75269879e-01,  9.73627353e-01,  9.71931341e-01,  9.70180498e-01 ),
+    __C4(  9.68372652e-01,  9.66506952e-01,  9.64580027e-01,  9.62592318e-01 ),
+    __C4(  9.60540986e-01,  9.58425534e-01,  9.56244393e-01,  9.53998416e-01 ),
+    __C4(  9.51684014e-01,  9.49301185e-01,  9.46846884e-01,  9.44320232e-01 ),
+    __C4(  9.41718404e-01,  9.39042580e-01,  9.36290624e-01,  9.33464050e-01 ),
+    __C4(  9.30560854e-01,  9.27580507e-01,  9.24519592e-01,  9.21378471e-01 ),
+    __C4(  9.18153414e-01,  9.14844696e-01,  9.11451652e-01,  9.07976524e-01 ),
+    __C4(  9.04417545e-01,  9.00776308e-01,  8.97050058e-01,  8.93238398e-01 ),
+    __C4(  8.89338681e-01,  8.85351360e-01,  8.81274023e-01,  8.77109638e-01 ),
+    __C4(  8.72857927e-01,  8.68519505e-01,  8.64092796e-01,  8.59579819e-01 ),
+    __C4(  8.54976007e-01,  8.50285220e-01,  8.45502615e-01,  8.40630470e-01 ),
+    __C4(  8.35667925e-01,  8.30619943e-01,  8.25482007e-01,  8.20258909e-01 ),
+    __C4(  8.14946648e-01,  8.09546696e-01,  8.04059978e-01,  7.98489378e-01 ),
+    __C4(  7.92831417e-01,  7.87090668e-01,  7.81262450e-01,  7.75353947e-01 ),
+    __C4(  7.69363613e-01,  7.63291769e-01,  7.57139016e-01,  7.50901711e-01 ),
+    __C4(  7.44590843e-01,  7.38205136e-01,  7.31738075e-01,  7.25199287e-01 ),
+    __C4(  7.18588225e-01,  7.11905687e-01,  7.05153668e-01,  6.98332634e-01 ),
+    __C4(  6.91444101e-01,  6.84490545e-01,  6.77470119e-01,  6.70388375e-01 ),
+    __C4(  6.63245210e-01,  6.56045780e-01,  6.48788627e-01,  6.41477162e-01 ),
+    __C4(  6.34114323e-01,  6.26702000e-01,  6.19235334e-01,  6.11720596e-01 ),
+    __C4(  6.04161612e-01,  5.96559133e-01,  5.88914401e-01,  5.81234783e-01 ),
+    __C4(  5.73519989e-01,  5.65770616e-01,  5.57988067e-01,  5.50173851e-01 ),
+    __C4(  5.42330194e-01,  5.34460798e-01,  5.26568538e-01,  5.18656324e-01 ),
+    __C4(  5.10728813e-01,  5.02781159e-01,  4.94819491e-01,  4.86845139e-01 ),
+    __C4(  4.78860889e-01,  4.70869928e-01,  4.62875144e-01,  4.54877894e-01 ),
+    __C4(  4.46882512e-01,  4.38889325e-01,  4.30898123e-01,  4.22918322e-01 ),
+    __C4(  4.14950878e-01,  4.06993964e-01,  3.99052648e-01,  3.91134614e-01 ),
+    __C4(  3.83234031e-01,  3.75354653e-01,  3.67502060e-01,  3.59680098e-01 ),
+    __C4(  3.51887312e-01,  3.44130166e-01,  3.36408100e-01,  3.28728966e-01 ),
+    __C4(  3.21090505e-01,  3.13496418e-01,  3.05951565e-01,  2.98454319e-01 ),
+    __C4(  2.91010565e-01,  2.83621109e-01,  2.76285415e-01,  2.69019585e-01 ),
+    __C4(  2.61812445e-01,  2.54659232e-01,  2.47584348e-01,  2.40578694e-01 ),
+    __C4(  2.33647009e-01,  2.26788433e-01,  2.20001992e-01,  2.13301325e-01 ),
+    __C4(  2.06677771e-01,  2.00140409e-01,  1.93683630e-01,  1.87310343e-01 ),
+    __C4(  1.81027384e-01,  1.74839476e-01,  1.68739644e-01,  1.62737273e-01 ),
+    __C4(  1.56825277e-01,  1.51012382e-01,  1.45298230e-01,  1.39687469e-01 ),
+    __C4(  1.34171842e-01,  1.28762544e-01,  1.23455562e-01,  1.18254662e-01 ),
+    __C4(  1.13159677e-01,  1.08171439e-01,  1.03290734e-01,  9.85202978e-02 ),
+    __C4(  9.38600023e-02,  8.93117360e-02,  8.48752103e-02,  8.05523737e-02 ),
+    __C4(  7.63429787e-02,  7.22489246e-02,  6.82699120e-02,  6.44077291e-02 ),
+    __C4(  6.06620003e-02,  5.70343711e-02,  5.35243715e-02,  5.01334690e-02 ),
+    __C4(  4.68610790e-02,  4.37084453e-02,  4.06748365e-02,  3.77612269e-02 ),
+    __C4(  3.49667099e-02,  3.22919275e-02,  2.97357669e-02,  2.72984629e-02 ),
+    __C4(  2.49787186e-02,  2.27762542e-02,  2.06895808e-02,  1.87178169e-02 ),
+    __C4(  1.68593418e-02,  1.51125125e-02,  1.34757094e-02,  1.19462709e-02 ),
+    __C4(  1.05228754e-02,  9.20130941e-03,  7.98124316e-03,  6.85547314e-03 ),
+    __C4(  5.82657334e-03,  4.87838525e-03,  4.02351119e-03,  3.15418663e-03 )
 };
 
-const float *lc3_mdct_win[LC3_NUM_DT][LC3_NUM_SRATE] = {
+const lc3_intfloat_t *lc3_mdct_win[LC3_NUM_DT][LC3_NUM_SRATE] = {
 
     [LC3_DT_7M5] = {
         [LC3_SRATE_8K ] = mdct_win_7m5_60,
@@ -1990,6 +1983,9 @@
     },
 };
 
+#undef __C2
+#undef __C4
+
 
 /**
  * Bands limits (cf. 3.7.1-2)
@@ -2099,222 +2095,239 @@
  * SNS Quantization (cf. 3.7.4)
  */
 
-const float lc3_sns_lfcb[32][8] = {
+#define __C(a, b, c, d, e, f, g, h) \
+  { LC3_INTFLOAT_C(a, 24), LC3_INTFLOAT_C(b, 24), \
+    LC3_INTFLOAT_C(c, 24), LC3_INTFLOAT_C(d, 24), \
+    LC3_INTFLOAT_C(e, 24), LC3_INTFLOAT_C(f, 24), \
+    LC3_INTFLOAT_C(g, 24), LC3_INTFLOAT_C(h, 24)  }
 
-    {  2.26283366e+00,  8.13311269e-01, -5.30193495e-01, -1.35664836e+00,
-      -1.59952177e+00, -1.44098768e+00, -1.14381648e+00, -7.55203768e-01 },
+const lc3_intfloat_t lc3_sns_lfcb[32][8] = {
 
-    {  2.94516479e+00,  2.41143318e+00,  9.60455106e-01, -4.43226488e-01,
-      -1.22913612e+00, -1.55590039e+00, -1.49688656e+00, -1.11689987e+00 },
+  __C(  2.26283366e+00,  8.13311269e-01, -5.30193495e-01, -1.35664836e+00,
+       -1.59952177e+00, -1.44098768e+00, -1.14381648e+00, -7.55203768e-01 ),
 
-    { -2.18610707e+00, -1.97152136e+00, -1.78718620e+00, -1.91865896e+00,
-      -1.79399122e+00, -1.35738404e+00, -7.05444279e-01, -4.78172945e-02 },
+  __C(  2.94516479e+00,  2.41143318e+00,  9.60455106e-01, -4.43226488e-01,
+       -1.22913612e+00, -1.55590039e+00, -1.49688656e+00, -1.11689987e+00 ),
 
-    {  6.93688237e-01,  9.55609857e-01,  5.75230787e-01, -1.14603419e-01,
-      -6.46050637e-01, -9.52351370e-01, -1.07405247e+00, -7.58087707e-01 },
+  __C( -2.18610707e+00, -1.97152136e+00, -1.78718620e+00, -1.91865896e+00,
+       -1.79399122e+00, -1.35738404e+00, -7.05444279e-01, -4.78172945e-02 ),
 
-    { -1.29752132e+00, -7.40369057e-01, -3.45372484e-01, -3.13285696e-01,
-      -4.02977243e-01, -3.72020853e-01, -7.83414177e-02,  9.70441304e-02 },
+  __C(  6.93688237e-01,  9.55609857e-01,  5.75230787e-01, -1.14603419e-01,
+       -6.46050637e-01, -9.52351370e-01, -1.07405247e+00, -7.58087707e-01 ),
 
-    {  9.14652038e-01,  1.74293043e+00,  1.90906627e+00,  1.54408484e+00,
-       1.09344961e+00,  6.47479550e-01,  3.61790752e-02, -2.97092807e-01 },
+  __C( -1.29752132e+00, -7.40369057e-01, -3.45372484e-01, -3.13285696e-01,
+       -4.02977243e-01, -3.72020853e-01, -7.83414177e-02,  9.70441304e-02 ),
 
-    { -2.51428813e+00, -2.89175271e+00, -2.00450667e+00, -7.50912274e-01,
-       4.41202105e-01,  1.20190988e+00,  1.32742857e+00,  1.22049081e+00 },
+  __C(  9.14652038e-01,  1.74293043e+00,  1.90906627e+00,  1.54408484e+00,
+        1.09344961e+00,  6.47479550e-01,  3.61790752e-02, -2.97092807e-01 ),
 
-    { -9.22188405e-01,  6.32495141e-01,  1.08736431e+00,  6.08628625e-01,
-       1.31174568e-01, -2.96149158e-01, -2.07013517e-01,  1.34924917e-01 },
+  __C( -2.51428813e+00, -2.89175271e+00, -2.00450667e+00, -7.50912274e-01,
+        4.41202105e-01,  1.20190988e+00,  1.32742857e+00,  1.22049081e+00 ),
 
-    {  7.90322288e-01,  6.28401262e-01,  3.93117924e-01,  4.80007711e-01,
-       4.47815138e-01,  2.09734215e-01,  6.56691996e-03, -8.61242342e-02 },
+  __C( -9.22188405e-01,  6.32495141e-01,  1.08736431e+00,  6.08628625e-01,
+        1.31174568e-01, -2.96149158e-01, -2.07013517e-01,  1.34924917e-01 ),
 
-    {  1.44775580e+00,  2.72399952e+00,  2.31083269e+00,  9.35051270e-01,
-      -2.74743911e-01, -9.02077697e-01, -9.40681512e-01, -6.33697039e-01 },
+  __C(  7.90322288e-01,  6.28401262e-01,  3.93117924e-01,  4.80007711e-01,
+        4.47815138e-01,  2.09734215e-01,  6.56691996e-03, -8.61242342e-02 ),
 
-    {  7.93354526e-01,  1.43931186e-02, -5.67834845e-01, -6.54760468e-01,
-      -4.79458998e-01, -1.73894662e-01,  6.80162706e-02,  2.95125948e-01 },
+  __C(  1.44775580e+00,  2.72399952e+00,  2.31083269e+00,  9.35051270e-01,
+       -2.74743911e-01, -9.02077697e-01, -9.40681512e-01, -6.33697039e-01 ),
 
-    {  2.72425347e+00,  2.95947572e+00,  1.84953559e+00,  5.63284922e-01,
-       1.39917088e-01,  3.59641093e-01,  6.89461355e-01,  6.39790177e-01 },
+  __C(  7.93354526e-01,  1.43931186e-02, -5.67834845e-01, -6.54760468e-01,
+       -4.79458998e-01, -1.73894662e-01,  6.80162706e-02,  2.95125948e-01 ),
 
-    { -5.30830198e-01, -2.12690683e-01,  5.76613628e-03,  4.24871484e-01,
-       4.73128952e-01,  8.58894199e-01,  1.19111161e+00,  9.96189670e-01 },
+  __C(  2.72425347e+00,  2.95947572e+00,  1.84953559e+00,  5.63284922e-01,
+        1.39917088e-01,  3.59641093e-01,  6.89461355e-01,  6.39790177e-01 ),
 
-    {  1.68728411e+00,  2.43614509e+00,  2.33019429e+00,  1.77983778e+00,
-       1.44411295e+00,  1.51995177e+00,  1.47199394e+00,  9.77682474e-01 },
+  __C( -5.30830198e-01, -2.12690683e-01,  5.76613628e-03,  4.24871484e-01,
+        4.73128952e-01,  8.58894199e-01,  1.19111161e+00,  9.96189670e-01 ),
 
-    { -2.95183273e+00, -1.59393497e+00, -1.09918773e-01,  3.88609073e-01,
-       5.12932650e-01,  6.28112597e-01,  8.22621796e-01,  8.75891425e-01 },
+  __C(  1.68728411e+00,  2.43614509e+00,  2.33019429e+00,  1.77983778e+00,
+        1.44411295e+00,  1.51995177e+00,  1.47199394e+00,  9.77682474e-01 ),
 
-    {  1.01878343e-01,  5.89857324e-01,  6.19047647e-01,  1.26731314e+00,
-       2.41961048e+00,  2.25174253e+00,  5.26537031e-01, -3.96591513e-01 },
+  __C( -2.95183273e+00, -1.59393497e+00, -1.09918773e-01,  3.88609073e-01,
+        5.12932650e-01,  6.28112597e-01,  8.22621796e-01,  8.75891425e-01 ),
 
-    {  2.68254575e+00,  1.32738011e+00,  1.30185274e-01, -3.38533089e-01,
-      -3.68219236e-01, -1.91689947e-01, -1.54782377e-01, -2.34207178e-01 },
+  __C(  1.01878343e-01,  5.89857324e-01,  6.19047647e-01,  1.26731314e+00,
+        2.41961048e+00,  2.25174253e+00,  5.26537031e-01, -3.96591513e-01 ),
 
-    {  4.82697924e+00,  3.11947804e+00,  1.39513671e+00,  2.50295316e-01,
-      -3.93613839e-01, -6.43458173e-01, -6.42570737e-01, -7.23193223e-01 },
+  __C(  2.68254575e+00,  1.32738011e+00,  1.30185274e-01, -3.38533089e-01,
+       -3.68219236e-01, -1.91689947e-01, -1.54782377e-01, -2.34207178e-01 ),
 
-    {  8.78419936e-02, -5.69586840e-01, -1.14506016e+00, -1.66968488e+00,
-      -1.84534418e+00, -1.56468027e+00, -1.11746759e+00, -5.33981663e-01 },
+  __C(  4.82697924e+00,  3.11947804e+00,  1.39513671e+00,  2.50295316e-01,
+       -3.93613839e-01, -6.43458173e-01, -6.42570737e-01, -7.23193223e-01 ),
 
-    {  1.39102308e+00,  1.98146479e+00,  1.11265796e+00, -2.20107509e-01,
-      -7.74965612e-01, -5.94063874e-01,  1.36937681e-01,  8.18242891e-01 },
+  __C(  8.78419936e-02, -5.69586840e-01, -1.14506016e+00, -1.66968488e+00,
+       -1.84534418e+00, -1.56468027e+00, -1.11746759e+00, -5.33981663e-01 ),
 
-    {  3.84585894e-01, -1.60588786e-01, -5.39366810e-01, -5.29309079e-01,
-       1.90433547e-01,  2.56062918e+00,  2.81896398e+00,  6.56670876e-01 },
+  __C(  1.39102308e+00,  1.98146479e+00,  1.11265796e+00, -2.20107509e-01,
+       -7.74965612e-01, -5.94063874e-01,  1.36937681e-01,  8.18242891e-01 ),
 
-    {  1.93227399e+00,  3.01030180e+00,  3.06543894e+00,  2.50110161e+00,
-       1.93089593e+00,  5.72153811e-01, -8.11741794e-01, -1.17641811e+00 },
+  __C(  3.84585894e-01, -1.60588786e-01, -5.39366810e-01, -5.29309079e-01,
+        1.90433547e-01,  2.56062918e+00,  2.81896398e+00,  6.56670876e-01 ),
 
-    {  1.75080463e-01, -7.50522832e-01, -1.03943893e+00, -1.13577509e+00,
-      -1.04197904e+00, -1.52060099e-02,  2.07048392e+00,  3.42948918e+00 },
+  __C(  1.93227399e+00,  3.01030180e+00,  3.06543894e+00,  2.50110161e+00,
+        1.93089593e+00,  5.72153811e-01, -8.11741794e-01, -1.17641811e+00 ),
 
-    { -1.18817020e+00,  3.66792874e-01,  1.30957830e+00,  1.68330687e+00,
-       1.25100924e+00,  9.42375752e-01,  8.26250483e-01,  4.39952741e-01 },
+  __C(  1.75080463e-01, -7.50522832e-01, -1.03943893e+00, -1.13577509e+00,
+       -1.04197904e+00, -1.52060099e-02,  2.07048392e+00,  3.42948918e+00 ),
 
-    {  2.53322203e+00,  2.11274643e+00,  1.26288412e+00,  7.61513512e-01,
-       5.22117938e-01,  1.18680070e-01, -4.52346828e-01, -7.00352426e-01 },
+  __C( -1.18817020e+00,  3.66792874e-01,  1.30957830e+00,  1.68330687e+00,
+        1.25100924e+00,  9.42375752e-01,  8.26250483e-01,  4.39952741e-01 ),
 
-    {  3.99889837e+00,  4.07901751e+00,  2.82285661e+00,  1.72607213e+00,
-       6.47144377e-01, -3.31148521e-01, -8.84042571e-01, -1.12697341e+00 },
+  __C(  2.53322203e+00,  2.11274643e+00,  1.26288412e+00,  7.61513512e-01,
+        5.22117938e-01,  1.18680070e-01, -4.52346828e-01, -7.00352426e-01 ),
 
-    {  5.07902593e-01,  1.58838450e+00,  1.72899024e+00,  1.00692230e+00,
-       3.77121232e-01,  4.76370767e-01,  1.08754740e+00,  1.08756266e+00 },
+  __C(  3.99889837e+00,  4.07901751e+00,  2.82285661e+00,  1.72607213e+00,
+        6.47144377e-01, -3.31148521e-01, -8.84042571e-01, -1.12697341e+00 ),
 
-    {  3.16856825e+00,  3.25853458e+00,  2.42230591e+00,  1.79446078e+00,
-       1.52177911e+00,  1.17196707e+00,  4.89394597e-01, -6.22795716e-02 },
+  __C(  5.07902593e-01,  1.58838450e+00,  1.72899024e+00,  1.00692230e+00,
+        3.77121232e-01,  4.76370767e-01,  1.08754740e+00,  1.08756266e+00 ),
 
-    {  1.89414767e+00,  1.25108695e+00,  5.90451211e-01,  6.08358583e-01,
-       8.78171010e-01,  1.11912511e+00,  1.01857662e+00,  6.20453891e-01 },
+  __C(  3.16856825e+00,  3.25853458e+00,  2.42230591e+00,  1.79446078e+00,
+        1.52177911e+00,  1.17196707e+00,  4.89394597e-01, -6.22795716e-02 ),
 
-    {  9.48880605e-01,  2.13239439e+00,  2.72345350e+00,  2.76986077e+00,
-       2.54286973e+00,  2.02046264e+00,  8.30045859e-01, -2.75569174e-02 },
+  __C(  1.89414767e+00,  1.25108695e+00,  5.90451211e-01,  6.08358583e-01,
+        8.78171010e-01,  1.11912511e+00,  1.01857662e+00,  6.20453891e-01 ),
 
-    { -1.88026757e+00, -1.26431073e+00,  3.11424977e-01,  1.83670210e+00,
-       2.25634192e+00,  2.04818998e+00,  2.19526837e+00,  2.02659614e+00 },
+  __C(  9.48880605e-01,  2.13239439e+00,  2.72345350e+00,  2.76986077e+00,
+        2.54286973e+00,  2.02046264e+00,  8.30045859e-01, -2.75569174e-02 ),
 
-    {  2.46375746e-01,  9.55621773e-01,  1.52046777e+00,  1.97647400e+00,
-       1.94043867e+00,  2.23375847e+00,  1.98835978e+00,  1.27232673e+00 },
+  __C( -1.88026757e+00, -1.26431073e+00,  3.11424977e-01,  1.83670210e+00,
+        2.25634192e+00,  2.04818998e+00,  2.19526837e+00,  2.02659614e+00 ),
+
+  __C(  2.46375746e-01,  9.55621773e-01,  1.52046777e+00,  1.97647400e+00,
+        1.94043867e+00,  2.23375847e+00,  1.98835978e+00,  1.27232673e+00 ),
 
 };
 
-const float lc3_sns_hfcb[32][8] = {
+const lc3_intfloat_t lc3_sns_hfcb[32][8] = {
 
-    {  2.32028419e-01, -1.00890271e+00, -2.14223503e+00, -2.37533814e+00,
-      -2.23041933e+00, -2.17595881e+00, -2.29065914e+00, -2.53286398e+00 },
+  __C(  2.32028419e-01, -1.00890271e+00, -2.14223503e+00, -2.37533814e+00,
+       -2.23041933e+00, -2.17595881e+00, -2.29065914e+00, -2.53286398e+00 ),
 
-    { -1.29503937e+00, -1.79929965e+00, -1.88703148e+00, -1.80991660e+00,
-      -1.76340038e+00, -1.83418428e+00, -1.80480981e+00, -1.73679545e+00 },
+  __C( -1.29503937e+00, -1.79929965e+00, -1.88703148e+00, -1.80991660e+00,
+       -1.76340038e+00, -1.83418428e+00, -1.80480981e+00, -1.73679545e+00 ),
 
-    {  1.39285716e-01, -2.58185126e-01, -6.50804573e-01, -1.06815732e+00,
-      -1.61928742e+00, -2.18762566e+00, -2.63757587e+00, -2.97897750e+00 },
+  __C(  1.39285716e-01, -2.58185126e-01, -6.50804573e-01, -1.06815732e+00,
+       -1.61928742e+00, -2.18762566e+00, -2.63757587e+00, -2.97897750e+00 ),
 
-    { -3.16513102e-01, -4.77747657e-01, -5.51162076e-01, -4.84788283e-01,
-      -2.38388394e-01, -1.43024507e-01,  6.83186674e-02,  8.83061717e-02 },
+  __C( -3.16513102e-01, -4.77747657e-01, -5.51162076e-01, -4.84788283e-01,
+       -2.38388394e-01, -1.43024507e-01,  6.83186674e-02,  8.83061717e-02 ),
 
-    {  8.79518405e-01,  2.98340096e-01, -9.15386396e-01, -2.20645975e+00,
-      -2.74142181e+00, -2.86139074e+00, -2.88841597e+00, -2.95182608e+00 },
+  __C(  8.79518405e-01,  2.98340096e-01, -9.15386396e-01, -2.20645975e+00,
+       -2.74142181e+00, -2.86139074e+00, -2.88841597e+00, -2.95182608e+00 ),
 
-    { -2.96701922e-01, -9.75004919e-01, -1.35857500e+00, -9.83721106e-01,
-      -6.52956939e-01, -9.89986993e-01, -1.61467225e+00, -2.40712302e+00 },
+  __C( -2.96701922e-01, -9.75004919e-01, -1.35857500e+00, -9.83721106e-01,
+       -6.52956939e-01, -9.89986993e-01, -1.61467225e+00, -2.40712302e+00 ),
 
-    {  3.40981100e-01,  2.68899789e-01,  5.63335685e-02,  4.99114047e-02,
-      -9.54130727e-02, -7.60166146e-01, -2.32758120e+00, -3.77155485e+00 },
+  __C(  3.40981100e-01,  2.68899789e-01,  5.63335685e-02,  4.99114047e-02,
+       -9.54130727e-02, -7.60166146e-01, -2.32758120e+00, -3.77155485e+00 ),
 
-    { -1.41229759e+00, -1.48522119e+00, -1.18603580e+00, -6.25001634e-01,
-       1.53902497e-01,  5.76386498e-01,  7.95092604e-01,  5.96564632e-01 },
+  __C( -1.41229759e+00, -1.48522119e+00, -1.18603580e+00, -6.25001634e-01,
+        1.53902497e-01,  5.76386498e-01,  7.95092604e-01,  5.96564632e-01 ),
 
-    { -2.28839512e-01, -3.33719070e-01, -8.09321359e-01, -1.63587877e+00,
-      -1.88486397e+00, -1.64496691e+00, -1.40515778e+00, -1.46666471e+00 },
+  __C( -2.28839512e-01, -3.33719070e-01, -8.09321359e-01, -1.63587877e+00,
+       -1.88486397e+00, -1.64496691e+00, -1.40515778e+00, -1.46666471e+00 ),
 
-    { -1.07148629e+00, -1.41767015e+00, -1.54891762e+00, -1.45296062e+00,
-      -1.03182970e+00, -6.90642640e-01, -4.28843805e-01, -4.94960215e-01 },
+  __C( -1.07148629e+00, -1.41767015e+00, -1.54891762e+00, -1.45296062e+00,
+       -1.03182970e+00, -6.90642640e-01, -4.28843805e-01, -4.94960215e-01 ),
 
-    { -5.90988511e-01, -7.11737759e-02,  3.45719523e-01,  3.00549461e-01,
-      -1.11865218e+00, -2.44089151e+00, -2.22854732e+00, -1.89509228e+00 },
+  __C( -5.90988511e-01, -7.11737759e-02,  3.45719523e-01,  3.00549461e-01,
+       -1.11865218e+00, -2.44089151e+00, -2.22854732e+00, -1.89509228e+00 ),
 
-    { -8.48434099e-01, -5.83226811e-01,  9.00423688e-02,  8.45025008e-01,
-       1.06572385e+00,  7.37582999e-01,  2.56590452e-01, -4.91963360e-01 },
+  __C( -8.48434099e-01, -5.83226811e-01,  9.00423688e-02,  8.45025008e-01,
+        1.06572385e+00,  7.37582999e-01,  2.56590452e-01, -4.91963360e-01 ),
 
-    {  1.14069146e+00,  9.64016892e-01,  3.81461206e-01, -4.82849341e-01,
-      -1.81632721e+00, -2.80279513e+00, -3.23385725e+00, -3.45908714e+00 },
+  __C(  1.14069146e+00,  9.64016892e-01,  3.81461206e-01, -4.82849341e-01,
+       -1.81632721e+00, -2.80279513e+00, -3.23385725e+00, -3.45908714e+00 ),
 
-    { -3.76283238e-01,  4.25675462e-02,  5.16547697e-01,  2.51716882e-01,
-      -2.16179968e-01, -5.34074091e-01, -6.40786096e-01, -8.69745032e-01 },
+  __C( -3.76283238e-01,  4.25675462e-02,  5.16547697e-01,  2.51716882e-01,
+       -2.16179968e-01, -5.34074091e-01, -6.40786096e-01, -8.69745032e-01 ),
 
-    {  6.65004121e-01,  1.09790765e+00,  1.38342667e+00,  1.34327359e+00,
-       8.22978837e-01,  2.15876799e-01, -4.04925753e-01, -1.07025606e+00 },
+  __C(  6.65004121e-01,  1.09790765e+00,  1.38342667e+00,  1.34327359e+00,
+        8.22978837e-01,  2.15876799e-01, -4.04925753e-01, -1.07025606e+00 ),
 
-    { -8.26265954e-01, -6.71181233e-01, -2.28495593e-01,  5.18980853e-01,
-       1.36721896e+00,  2.18023038e+00,  2.53596093e+00,  2.20121099e+00 },
+  __C( -8.26265954e-01, -6.71181233e-01, -2.28495593e-01,  5.18980853e-01,
+        1.36721896e+00,  2.18023038e+00,  2.53596093e+00,  2.20121099e+00 ),
 
-    {  1.41008327e+00,  7.54441908e-01, -1.30550585e+00, -1.87133711e+00,
-      -1.24008685e+00, -1.26712925e+00, -2.03670813e+00, -2.89685162e+00 },
+  __C(  1.41008327e+00,  7.54441908e-01, -1.30550585e+00, -1.87133711e+00,
+       -1.24008685e+00, -1.26712925e+00, -2.03670813e+00, -2.89685162e+00 ),
 
-    {  3.61386818e-01, -2.19991705e-02, -5.79368834e-01, -8.79427961e-01,
-      -8.50685023e-01, -7.79397050e-01, -7.32182927e-01, -8.88348515e-01 },
+  __C(  3.61386818e-01, -2.19991705e-02, -5.79368834e-01, -8.79427961e-01,
+       -8.50685023e-01, -7.79397050e-01, -7.32182927e-01, -8.88348515e-01 ),
 
-    {  4.37469239e-01,  3.05440420e-01, -7.38786566e-03, -4.95649855e-01,
-      -8.06651271e-01, -1.22431892e+00, -1.70157770e+00, -2.24491914e+00 },
+  __C(  4.37469239e-01,  3.05440420e-01, -7.38786566e-03, -4.95649855e-01,
+       -8.06651271e-01, -1.22431892e+00, -1.70157770e+00, -2.24491914e+00 ),
 
-    {  6.48100319e-01,  6.82299134e-01,  2.53247464e-01,  7.35842144e-02,
-       3.14216709e-01,  2.34729881e-01,  1.44600134e-01, -6.82120179e-02 },
+  __C(  6.48100319e-01,  6.82299134e-01,  2.53247464e-01,  7.35842144e-02,
+        3.14216709e-01,  2.34729881e-01,  1.44600134e-01, -6.82120179e-02 ),
 
-    {  1.11919833e+00,  1.23465533e+00,  5.89170238e-01, -1.37192460e+00,
-      -2.37095707e+00, -2.00779783e+00, -1.66688540e+00, -1.92631846e+00 },
+  __C(  1.11919833e+00,  1.23465533e+00,  5.89170238e-01, -1.37192460e+00,
+       -2.37095707e+00, -2.00779783e+00, -1.66688540e+00, -1.92631846e+00 ),
 
-    {  1.41847497e-01, -1.10660071e-01, -2.82824593e-01, -6.59813475e-03,
-       2.85929280e-01,  4.60445530e-02, -6.02596416e-01, -2.26568729e+00 },
+  __C(  1.41847497e-01, -1.10660071e-01, -2.82824593e-01, -6.59813475e-03,
+        2.85929280e-01,  4.60445530e-02, -6.02596416e-01, -2.26568729e+00 ),
 
-    {  5.04046955e-01,  8.26982163e-01,  1.11981236e+00,  1.17914044e+00,
-       1.07987429e+00,  6.97536239e-01, -9.12548817e-01, -3.57684747e+00 },
+  __C(  5.04046955e-01,  8.26982163e-01,  1.11981236e+00,  1.17914044e+00,
+        1.07987429e+00,  6.97536239e-01, -9.12548817e-01, -3.57684747e+00 ),
 
-    { -5.01076050e-01, -3.25678006e-01,  2.80798195e-02,  2.62054555e-01,
-       3.60590806e-01,  6.35623722e-01,  9.59012467e-01,  1.30745157e+00 },
+  __C( -5.01076050e-01, -3.25678006e-01,  2.80798195e-02,  2.62054555e-01,
+        3.60590806e-01,  6.35623722e-01,  9.59012467e-01,  1.30745157e+00 ),
 
-    {  3.74970983e+00,  1.52342612e+00, -4.57715662e-01, -7.98711008e-01,
-      -3.86819329e-01, -3.75901062e-01, -6.57836900e-01, -1.28163964e+00 },
+  __C(  3.74970983e+00,  1.52342612e+00, -4.57715662e-01, -7.98711008e-01,
+       -3.86819329e-01, -3.75901062e-01, -6.57836900e-01, -1.28163964e+00 ),
 
-    { -1.15258991e+00, -1.10800886e+00, -5.62615117e-01, -2.20562124e-01,
-      -3.49842880e-01, -7.53432770e-01, -9.88596593e-01, -1.28790472e+00 },
+  __C( -1.15258991e+00, -1.10800886e+00, -5.62615117e-01, -2.20562124e-01,
+       -3.49842880e-01, -7.53432770e-01, -9.88596593e-01, -1.28790472e+00 ),
 
-    {  1.02827246e+00,  1.09770519e+00,  7.68645546e-01,  2.06081978e-01,
-      -3.42805735e-01, -7.54939405e-01, -1.04196178e+00, -1.50335653e+00 },
+  __C(  1.02827246e+00,  1.09770519e+00,  7.68645546e-01,  2.06081978e-01,
+       -3.42805735e-01, -7.54939405e-01, -1.04196178e+00, -1.50335653e+00 ),
 
-    {  1.28831972e-01,  6.89439395e-01,  1.12346905e+00,  1.30934523e+00,
-       1.35511965e+00,  1.42311381e+00,  1.15706449e+00,  4.06319438e-01 },
+  __C(  1.28831972e-01,  6.89439395e-01,  1.12346905e+00,  1.30934523e+00,
+        1.35511965e+00,  1.42311381e+00,  1.15706449e+00,  4.06319438e-01 ),
 
-    {  1.34033030e+00,  1.38996825e+00,  1.04467922e+00,  6.35822746e-01,
-      -2.74733756e-01, -1.54923372e+00, -2.44239710e+00, -3.02457607e+00 },
+  __C(  1.34033030e+00,  1.38996825e+00,  1.04467922e+00,  6.35822746e-01,
+       -2.74733756e-01, -1.54923372e+00, -2.44239710e+00, -3.02457607e+00 ),
 
-    {  2.13843105e+00,  4.24711267e+00,  2.89734110e+00,  9.32730658e-01,
-      -2.92822250e-01, -8.10404297e-01, -7.88868099e-01, -9.35353149e-01 },
+  __C(  2.13843105e+00,  4.24711267e+00,  2.89734110e+00,  9.32730658e-01,
+       -2.92822250e-01, -8.10404297e-01, -7.88868099e-01, -9.35353149e-01 ),
 
-    {  5.64830487e-01,  1.59184978e+00,  2.39771699e+00,  3.03697344e+00,
-       2.66424350e+00,  1.39304485e+00,  4.03834024e-01, -6.56270971e-01 },
+  __C(  5.64830487e-01,  1.59184978e+00,  2.39771699e+00,  3.03697344e+00,
+        2.66424350e+00,  1.39304485e+00,  4.03834024e-01, -6.56270971e-01 ),
 
-    { -4.22460548e-01,  3.26149625e-01,  1.39171313e+00,  2.23146615e+00,
-       2.61179442e+00,  2.66540340e+00,  2.40103554e+00,  1.75920380e+00 },
+  __C( -4.22460548e-01,  3.26149625e-01,  1.39171313e+00,  2.23146615e+00,
+        2.61179442e+00,  2.66540340e+00,  2.40103554e+00,  1.75920380e+00 ),
 
 };
 
+#undef __C
+
+
 const struct lc3_sns_vq_gains lc3_sns_vq_gains[4] = {
 
-    { 2, (const float []){
-             8915.f / 4096, 12054.f / 4096 } },
+#define __C2(a, b)  LC3_INTFLOAT_C(a, 12), LC3_INTFLOAT_C(b, 12)
+#define __C4(a, b, c, d)  __C2(a, b), __C2(c, d)
 
-    { 4, (const float []){
-             6245.f / 4096, 15043.f / 4096, 17861.f / 4096, 21014.f / 4096 } },
+    { 2, (const lc3_intfloat_t []){
+      __C2(  8915. / 4096, 12054. / 4096 ) } },
 
-    { 4, (const float []){
-             7099.f / 4096,  9132.f / 4096, 11253.f / 4096, 14808.f / 4096 } },
+    { 4, (const lc3_intfloat_t []){
+      __C4(  6245. / 4096, 15043. / 4096, 17861. / 4096, 21014. / 4096 ) } },
 
-    { 8, (const float []){
-             4336.f / 4096,  5067.f / 4096,  5895.f / 4096,  8149.f / 4096,
-            10235.f / 4096, 12825.f / 4096, 16868.f / 4096, 19882.f / 4096 } }
+    { 4, (const lc3_intfloat_t []){
+      __C4(  7099. / 4096,  9132. / 4096, 11253. / 4096, 14808. / 4096 ) } },
+
+    { 8, (const lc3_intfloat_t []){
+      __C4(  4336. / 4096,  5067. / 4096,  5895. / 4096,  8149. / 4096 ),
+      __C4( 10235. / 4096, 12825. / 4096, 16868. / 4096, 19882. / 4096 ) } }
+
+#undef __C2
+#undef __C4
+
 };
 
+
 const int32_t lc3_sns_mpvq_offsets[][11] = {
     { 0, 1,  1,   1,    1,     1,      1,      1,      1,       1,       1 },
     { 0, 1,  3,   5,    7,     9,     11,     13,     15,      17,      19 },
diff --git a/src/tables.h b/src/tables.h
index 26bd48e..418fcb0 100644
--- a/src/tables.h
+++ b/src/tables.h
@@ -35,7 +35,7 @@
 extern const struct lc3_fft_bf2_twiddles *lc3_fft_twiddles_bf2[][3];
 extern const struct lc3_mdct_rot_def *lc3_mdct_rot[LC3_NUM_DT][LC3_NUM_SRATE];
 
-extern const float *lc3_mdct_win[LC3_NUM_DT][LC3_NUM_SRATE];
+extern const lc3_intfloat_t *lc3_mdct_win[LC3_NUM_DT][LC3_NUM_SRATE];
 
 
 /**
@@ -51,11 +51,11 @@
  * SNS Quantization
  */
 
-extern const float lc3_sns_lfcb[32][8];
-extern const float lc3_sns_hfcb[32][8];
+extern const lc3_intfloat_t lc3_sns_lfcb[32][8];
+extern const lc3_intfloat_t lc3_sns_hfcb[32][8];
 
 struct lc3_sns_vq_gains {
-    int count; const float *v;
+    int count; const lc3_intfloat_t *v;
 };
 
 extern const struct lc3_sns_vq_gains lc3_sns_vq_gains[4];
diff --git a/tables/fastmath.py b/tables/fastmath.py
index 202561a..68dcc1b 100755
--- a/tables/fastmath.py
+++ b/tables/fastmath.py
@@ -28,27 +28,52 @@
 
     return np.power(y.astype(np.float32), 16)
 
+def fast_exp2_fxp(x, p):
+    c = np.array([ p[0] * 2**59, p[1] * 2**52, p[2] * 2**45,
+                   p[3] * 2**38, p[4] * 2**31 ], dtype=np.int32)
+
+    x = (x * 2**24).astype(np.int32)
+
+    y = ((x.astype(np.int64) * (    c[0]) + (1 << 30)) >> 31).astype(np.int32)
+    y = ((x.astype(np.int64) * (y + c[1]) + (1 << 30)) >> 31).astype(np.int32)
+    y = ((x.astype(np.int64) * (y + c[2]) + (1 << 30)) >> 31).astype(np.int32)
+    y = ((x.astype(np.int64) * (y + c[3]) + (1 << 30)) >> 31).astype(np.int32)
+    y = ((x.astype(np.int64) * (y + c[4]) + (1 << 30)) >> 31).astype(np.int32)
+    y = y + (1 << 24)
+
+    y = (((y.astype(np.int64) * y) + (1 << 23)) >> 24).astype(np.int32)
+    y = (((y.astype(np.int64) * y) + (1 << 23)) >> 24).astype(np.int32)
+    y = (((y.astype(np.int64) * y) + (1 << 23)) >> 24).astype(np.int32)
+    y = (((y.astype(np.int64) * y) + (1 << 24)) >> 25).astype(np.int32)
+
+    return y.astype(np.float32) * 2**-23
+
+
 def approx_exp2():
 
     x = np.arange(-8, 8, step=1e-3)
 
-    p = np.polyfit(x, ((2 ** (x/16)) - 1) / x, 4)
-    y = [ fast_exp2(x[i], p) for i in range(len(x)) ]
-    e = np.abs(y - 2**x) / (2 ** x)
+    p  = np.polyfit(x, ((2 ** (x/16)) - 1) / x, 4)
+    y0 = [ fast_exp2(x[i], p) for i in range(len(x)) ]
+    y1 = [ fast_exp2_fxp(x[i], p) for i in range(len(x)) ]
+    e0  = np.abs(y0 - 2**x) / (2 ** x)
+    e1  = np.abs(y1 - 2**x) / (2 ** x)
 
     print('{{ {:14.8e}, {:14.8e}, {:14.8e}, {:14.8e}, {:14.8e} }}'
                 .format(p[0], p[1], p[2], p[3], p[4]))
-    print('Max relative error: ', np.max(e))
-    print('Max RMS error: ', np.sqrt(np.mean(e ** 2)))
+    print('Max relative error: ', np.max(e0))
+    print('Max RMS error: ', np.sqrt(np.mean(e0 ** 2)))
 
     if False:
         fig, (ax1, ax2) = plt.subplots(2)
 
         ax1.plot(x, 2**x, label='Reference')
-        ax1.plot(x, y, label='Approximation')
+        ax1.plot(x, y0, label='Floating point Approximation')
+        ax1.plot(x, y1, label='Fixed point Approximation')
         ax1.legend()
 
-        ax2.plot(x, e, label='Relative Error')
+        ax2.plot(x, e0, label='Floating point Relative Error')
+        ax2.plot(x, e1, label='Fixed point Relative Error')
         ax2.legend()
 
         plt.show()
diff --git a/tables/mktables.py b/tables/mktables.py
index 67d4312..40881f1 100755
--- a/tables/mktables.py
+++ b/tables/mktables.py
@@ -104,8 +104,8 @@
 
         kv = -2 * np.pi * np.arange(n // 2) / n
         for (i, k) in enumerate(kv):
-            print('{{ {:14.7e}, {:14.7e} }},'.format(np.cos(k), np.sin(k)),
-                  end = '\n' if i%2 == 1 else ' ')
+            print('{{ {:14.7e}, {:14.7e} }},'.format(
+                  np.cos(k) / np.sqrt(2), np.sin(k) / np.sqrt(2)))
 
     for n in (15, 45):
 
@@ -115,7 +115,8 @@
         for k in kv:
             print(('{{ {{ {:14.7e}, {:14.7e} }},' +
                      ' {{ {:14.7e}, {:14.7e} }} }},').format(
-                np.cos(k), np.sin(k), np.cos(2*k), np.sin(2*k)))
+                np.cos(  k) / np.sqrt(3), np.sin(  k) / np.sqrt(3),
+                np.cos(2*k) / np.sqrt(3), np.sin(2*k) / np.sqrt(3)))
 
 
 def mdct_rot_twiddles():
@@ -126,8 +127,7 @@
 
         kv = 2 * np.pi * (np.arange(n // 4) + 1/8) / n
         for (i, k) in enumerate(kv):
-            print('{{ {:14.7e}, {:14.7e} }},'.format(np.cos(k), np.sin(k)),
-                  end = '\n' if i%2 == 1 else ' ')
+            print('{{ {:14.7e}, {:14.7e} }},'.format(np.cos(k), np.sin(k)))
 
 
 def mdct_scaling():
diff --git a/test/mdct.py b/test/mdct.py
index 4e6d191..2fd1647 100644
--- a/test/mdct.py
+++ b/test/mdct.py
@@ -97,7 +97,7 @@
     nd = T.ND[dt][sr]
     ok = True
 
-    x = (2 * rng.random(ns)) - 1
+    x = ( (2 * rng.random(ns)) - 1 ) * 2**15
 
     y   = [ None ] * 2
     y_c = [ None ] * 2
@@ -109,8 +109,8 @@
     (y_c[0], d_c) = lc3.mdct_forward(dt, sr, x, np.zeros(nd))
     y_c[1] = lc3.mdct_forward(dt, sr, x, d_c)[0]
 
-    ok = ok and np.amax(np.abs(y[0] - y_c[0])) < 1e-5
-    ok = ok and np.amax(np.abs(y[1] - y_c[1])) < 1e-5
+    ok = ok and np.amax(np.abs(y[0] - y_c[0])) < 1e-1
+    ok = ok and np.amax(np.abs(y[1] - y_c[1])) < 1e-1
 
     return ok
 
@@ -137,7 +137,7 @@
     nd = [ (23 * ns) // 30, (5 * ns) // 8 ][dt]
     ok = True
 
-    x  = (2 * rng.random(ns)) - 1
+    x = ( (2 * rng.random(ns)) - 1 ) * 2**15
 
     y   = [ None ] * 2
     y_c = [ None ] * 2
@@ -149,8 +149,8 @@
     (y_c[0], d_c) = lc3.mdct_inverse(dt, sr, x, np.zeros(nd))
     y_c[1] = lc3.mdct_inverse(dt, sr, x, d_c)[0]
 
-    ok = ok and np.amax(np.abs(y[0] - y_c[0])) < 1e-5
-    ok = ok and np.amax(np.abs(y[1] - y_c[1])) < 1e-5
+    ok = ok and np.amax(np.abs(y[0] - y_c[0])) < 1e-1
+    ok = ok and np.amax(np.abs(y[1] - y_c[1])) < 1e-1
 
     return ok
 
diff --git a/test/mdct_py.c b/test/mdct_py.c
index 3479503..5b1da71 100644
--- a/test/mdct_py.c
+++ b/test/mdct_py.c
@@ -28,7 +28,7 @@
     PyObject *x_obj, *xd_obj, *y_obj, *d_obj;
     enum lc3_dt dt;
     enum lc3_srate sr;
-    float *x, *xd, *y, *d;
+    lc3_intfloat_t *x, *xd, *y, *d;
 
     if (!PyArg_ParseTuple(args, "iiOO", &dt, &sr, &x_obj, &xd_obj))
         return NULL;
@@ -45,8 +45,18 @@
 
     memcpy(d, xd, nd * sizeof(float));
 
+#ifdef CONFIG_FIXED_POINT
+    for (int i = 0; i < ns; i++) x[i] = ldexpf(((float *)x)[i], 8);
+    for (int i = 0; i < nd; i++) d[i] = ldexpf(((float *)d)[i], 8);
+#endif
+
     lc3_mdct_forward(dt, sr, sr, x, d, y);
 
+#ifdef CONFIG_FIXED_POINT
+    for (int i = 0; i < nd; i++) ((float *)d)[i] = ldexpf(d[i], -8);
+    for (int i = 0; i < ns; i++) ((float *)y)[i] = ldexpf(y[i], -8);
+#endif
+
     return Py_BuildValue("NN", y_obj, d_obj);
 }
 
@@ -55,7 +65,7 @@
     PyObject *x_obj, *xd_obj, *d_obj, *y_obj;
     enum lc3_dt dt;
     enum lc3_srate sr;
-    float *x, *xd, *d, *y;
+    lc3_intfloat_t *x, *xd, *d, *y;
 
     if (!PyArg_ParseTuple(args, "iiOO", &dt, &sr, &x_obj, &xd_obj))
         return NULL;
@@ -72,8 +82,18 @@
 
     memcpy(d, xd, nd * sizeof(float));
 
+#ifdef CONFIG_FIXED_POINT
+    for (int i = 0; i < ns; i++) x[i] = ldexpf(((float *)x)[i], 8);
+    for (int i = 0; i < nd; i++) d[i] = ldexpf(((float *)d)[i], 8);
+#endif
+
     lc3_mdct_inverse(dt, sr, sr, x, d, y);
 
+#ifdef CONFIG_FIXED_POINT
+    for (int i = 0; i < nd; i++) ((float *)d)[i] = ldexpf(d[i], -8);
+    for (int i = 0; i < ns; i++) ((float *)y)[i] = ldexpf(y[i], -8);
+#endif
+
     return Py_BuildValue("NN", y_obj, d_obj);
 }
 
diff --git a/test/sns.py b/test/sns.py
index 8740aab..ab5c270 100644
--- a/test/sns.py
+++ b/test/sns.py
@@ -535,7 +535,7 @@
         ok = ok and np.amax(np.abs(scf_q - C.SCF_Q[dt][i])) < 1e-5
 
         x = lc3.sns_spectral_shaping(dt, sr, C.SCF_Q[dt][i], False, C.X[dt][i])
-        ok = ok and np.amax(np.abs(1 - x/C.X_S[dt][i])) < 1e-5
+        ok = ok and np.amax(np.abs(x - C.X_S[dt][i])) < 1e-1
 
         (x, data) = lc3.sns_analyze(dt, sr, C.E_B[dt][i], False, C.X[dt][i])
         ok = ok and data['lfcb'] == C.IND_LF[dt][i]
@@ -549,7 +549,7 @@
             data['idx_b'] == C.IDX_B[dt][i])
         ok = ok and (C.LS_IND_B[dt][i] is None or
             data['ls_b'] == C.LS_IND_B[dt][i])
-        ok = ok and np.amax(np.abs(1 - x/C.X_S[dt][i])) < 1e-5
+        ok = ok and np.amax(np.abs(x - C.X_S[dt][i])) < 1e-1
 
     return ok
 
diff --git a/test/sns_py.c b/test/sns_py.c
index 2ef3e83..49b7ab0 100644
--- a/test/sns_py.c
+++ b/test/sns_py.c
@@ -92,7 +92,7 @@
     PyObject *y_obj, *scf_obj;
     int lfcb_idx, hfcb_idx;
     int shape, gain;
-    float *y, *scf;
+    lc3_intfloat_t *y, *scf;
 
     if (!PyArg_ParseTuple(args, "iiOii",
                 &lfcb_idx, &hfcb_idx, &y_obj, &shape, &gain))
@@ -107,8 +107,16 @@
 
     scf_obj = new_1d_ptr(NPY_FLOAT, 16, &scf);
 
+#ifdef CONFIG_FIXED_POINT
+    for (int i = 0; i < 16; i++) y[i] = ldexpf(((float *)y)[i], 24);
+#endif
+
     unquantize(lfcb_idx, hfcb_idx, y, shape, gain, scf);
 
+#ifdef CONFIG_FIXED_POINT
+    for (int i = 0; i < 16; i++) ((float *)scf)[i] = ldexpf(scf[i], -24);
+#endif
+
     return Py_BuildValue("N", scf_obj);
 }
 
@@ -116,7 +124,7 @@
 {
     PyObject *scf_q_obj, *x_obj;
     unsigned dt, sr;
-    float *scf_q, *x;
+    lc3_intfloat_t *scf_q, *x;
     int inv;
 
     if (!PyArg_ParseTuple(args, "IIOpO", &dt, &sr, &scf_q_obj, &inv, &x_obj))
@@ -130,8 +138,17 @@
     CTYPES_CHECK("scf_q", to_1d_ptr(scf_q_obj, NPY_FLOAT, 16, &scf_q));
     CTYPES_CHECK("x", x_obj = to_1d_ptr(x_obj, NPY_FLOAT, ne, &x));
 
+#ifdef CONFIG_FIXED_POINT
+    for (int i = 0; i < 16; i++) scf_q[i] = ldexpf(((float *)scf_q)[i], 24);
+    for (int i = 0; i < ne; i++) x[i] = ldexpf(((float *)x)[i], 8);
+#endif
+
     spectral_shaping(dt, sr, scf_q, inv, x, x);
 
+#ifdef CONFIG_FIXED_POINT
+    for (int i = 0; i < ne; i++) ((float *)x)[i] = ldexpf(x[i], -8);
+#endif
+
     return Py_BuildValue("O", x_obj);
 }
 
@@ -165,7 +182,7 @@
     PyObject *data_obj, *x_obj;
     struct lc3_sns_data data;
     unsigned dt, sr;
-    float *x;
+    lc3_intfloat_t *x;
 
     if (!PyArg_ParseTuple(args, "IIOO", &dt, &sr, &data_obj, &x_obj))
         return NULL;
@@ -178,8 +195,16 @@
 
     CTYPES_CHECK("x", x_obj = to_1d_ptr(x_obj, NPY_FLOAT, ne, &x));
 
+#ifdef CONFIG_FIXED_POINT
+    for (int i = 0; i < ne; i++) x[i] = ldexpf(((float *)x)[i], 8);
+#endif
+
     lc3_sns_synthesize(dt, sr, &data, x, x);
 
+#ifdef CONFIG_FIXED_POINT
+    for (int i = 0; i < ne; i++) ((float *)x)[i] = ldexpf(x[i], -8);
+#endif
+
     return Py_BuildValue("O", x_obj);
 }